DimensionalData.jl icon indicating copy to clipboard operation
DimensionalData.jl copied to clipboard

display error for 0-dim array wrapped by Dimension

Open haakon-e opened this issue 1 year ago • 1 comments

I came across the following when experimenting with ways to reconstruct interpolated DimArrays over scalar values, so it's possible it doesn't make sense to construct Dimensions in this way anyways, but would be nice to minimize display errors in the code.

julia> using DimensionalData

julia> x = fill(1.0, ())
0-dimensional Array{Float64, 0}:
1.0

julia> X(x)
XError showing value of type X{Array{Float64, 0}}:
ERROR: MethodError: no method matching print_index(::IOContext{Base.TTY}, ::MIME{Symbol("text/plain")}, ::Array{Float64, 0}, ::Int64)

Closest candidates are:
  print_index(::Any, ::Any, ::AbstractRange, ::Any)
   @ DimensionalData ~/.julia/packages/DimensionalData/VxDQB/src/Lookups/show.jl:82
  print_index(::Any, ::Any, ::AbstractVector, ::Any)
   @ DimensionalData ~/.julia/packages/DimensionalData/VxDQB/src/Lookups/show.jl:86
  print_index(::Any, ::Any, ::AbstractRange)
   @ DimensionalData ~/.julia/packages/DimensionalData/VxDQB/src/Lookups/show.jl:82
  ...

Stacktrace:
  [1] print_dimval(io::IOContext{Base.TTY}, mime::MIME{Symbol("text/plain")}, lookup::Array{Float64, 0}, nchars::Int64)
    @ DimensionalData.Dimensions ~/.julia/packages/DimensionalData/VxDQB/src/Dimensions/show.jl:121
  [2] show(io::IOContext{Base.TTY}, mime::MIME{Symbol("text/plain")}, dim::X{Array{Float64, 0}})
    @ DimensionalData.Dimensions ~/.julia/packages/DimensionalData/VxDQB/src/Dimensions/show.jl:64
  [3] (::OhMyREPL.var"#7#8"{REPL.REPLDisplay{REPL.LineEditREPL}, MIME{Symbol("text/plain")}, Base.RefValue{Any}})(io::IOContext{Base.TTY})
    @ OhMyREPL ~/.julia/packages/OhMyREPL/bkUhZ/src/output_prompt_overwrite.jl:23
  [4] with_repl_linfo(f::Any, repl::REPL.LineEditREPL)
    @ REPL /central/groups/esm/software/julia/julia-1.10.3/share/julia/stdlib/v1.10/REPL/src/REPL.jl:569
  [5] display
    @ ~/.julia/packages/OhMyREPL/bkUhZ/src/output_prompt_overwrite.jl:6 [inlined]
  [6] display(d::REPL.REPLDisplay, x::Any)
    @ REPL /central/groups/esm/software/julia/julia-1.10.3/share/julia/stdlib/v1.10/REPL/src/REPL.jl:278
  [7] display(x::Any)
    @ Base.Multimedia ./multimedia.jl:340
  [8] #invokelatest#2
    @ ./essentials.jl:892 [inlined]
  [9] invokelatest
    @ ./essentials.jl:889 [inlined]
 [10] print_response(errio::IO, response::Any, show_value::Bool, have_color::Bool, specialdisplay::Union{Nothing, AbstractDisplay})
    @ REPL /central/groups/esm/software/julia/julia-1.10.3/share/julia/stdlib/v1.10/REPL/src/REPL.jl:315
 [11] (::REPL.var"#57#58"{REPL.LineEditREPL, Pair{Any, Bool}, Bool, Bool})(io::Any)
    @ REPL /central/groups/esm/software/julia/julia-1.10.3/share/julia/stdlib/v1.10/REPL/src/REPL.jl:284
 [12] with_repl_linfo(f::Any, repl::REPL.LineEditREPL)
    @ REPL /central/groups/esm/software/julia/julia-1.10.3/share/julia/stdlib/v1.10/REPL/src/REPL.jl:569
 [13] print_response(repl::REPL.AbstractREPL, response::Any, show_value::Bool, have_color::Bool)
    @ REPL /central/groups/esm/software/julia/julia-1.10.3/share/julia/stdlib/v1.10/REPL/src/REPL.jl:282
 [14] (::REPL.var"#do_respond#80"{Bool, Bool, REPL.var"#93#103"{REPL.LineEditREPL, REPL.REPLHistoryProvider}, REPL.LineEditREPL, REPL.LineEdit.Prompt})(s::REPL.LineEdit.MIState, buf::Any, ok::Bool)
    @ REPL /central/groups/esm/software/julia/julia-1.10.3/share/julia/stdlib/v1.10/REPL/src/REPL.jl:911
 [15] (::VSCodeServer.var"#103#106"{REPL.var"#do_respond#80"{Bool, Bool, REPL.var"#93#103"{REPL.LineEditREPL, REPL.REPLHistoryProvider}, REPL.LineEditREPL, REPL.LineEdit.Prompt}})(mi::REPL.LineEdit.MIState, buf::IOBuffer, ok::Bool)
    @ VSCodeServer ~/.vscode-server/extensions/julialang.language-julia-1.120.2/scripts/packages/VSCodeServer/src/repl.jl:122
 [16] #invokelatest#2
    @ ./essentials.jl:892 [inlined]
 [17] invokelatest
    @ ./essentials.jl:889 [inlined]
 [18] run_interface(terminal::REPL.Terminals.TextTerminal, m::REPL.LineEdit.ModalInterface, s::REPL.LineEdit.MIState)
    @ REPL.LineEdit /central/groups/esm/software/julia/julia-1.10.3/share/julia/stdlib/v1.10/REPL/src/LineEdit.jl:2656
 [19] run_frontend(repl::REPL.LineEditREPL, backend::REPL.REPLBackendRef)
    @ REPL /central/groups/esm/software/julia/julia-1.10.3/share/julia/stdlib/v1.10/REPL/src/REPL.jl:1312
 [20] (::REPL.var"#62#68"{REPL.LineEditREPL, REPL.REPLBackendRef})()
    @ REPL /central/groups/esm/software/julia/julia-1.10.3/share/julia/stdlib/v1.10/REPL/src/REPL.jl:386

haakon-e avatar Sep 15 '24 23:09 haakon-e

Right, it just needs to treat that like a scalar

rafaqz avatar Sep 15 '24 23:09 rafaqz