Skip to content

Commit 8a976f4

Browse files
committed
feat: enhance AbstractDataContainer with isnone and improved show methods
1 parent d7f9543 commit 8a976f4

File tree

1 file changed

+22
-2
lines changed

1 file changed

+22
-2
lines changed

src/types.jl

+22-2
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,13 @@ end
1111
getindex(var::AbstractDataContainer, s::String) = SpeasyVariable(var.py[s])
1212
getindex(var::AbstractDataContainer, s::Symbol) = getindex(var, string(s))
1313

14-
name(var) = pyconvert(String, var.py.name)
14+
isnone(var::AbstractDataContainer) = pyisnone(var.py)
15+
Base.ismissing(var::AbstractDataContainer) = pyisnone(var.py)
16+
17+
function name(var)
18+
isnone(var) && return nothing
19+
pyconvert(String, var.py.name)
20+
end
1521
values(var) = pyconvert(Array, var.py.values)
1622
shape(var) = pyconvert(Tuple, var.py.shape)
1723
nbytes(var) = pyconvert(Int64, var.py.nbytes)
@@ -21,6 +27,7 @@ axes(var) = [axes(var, i) for i in 1:pylen(var.py.axes)]
2127
columns(var) = pyconvert(Vector{Symbol}, var.py.columns)
2228
meta(var) = pyconvert(Dict, var.py.meta)
2329
function units(var)
30+
isnone(var) && return ""
2431
u = var.py.unit
2532
pyisnone(u) ? "" : pyconvert(String, u)
2633
end
@@ -59,8 +66,21 @@ end
5966

6067
propertynames(var::VariableAxis) = union(fieldnames(VariableAxis), ax_properties)
6168

62-
# Add Base.show methods for pretty printing
6369
function Base.show(io::IO, var::T) where {T<:AbstractDataContainer}
70+
ismissing(var) && return
71+
println(io, "$T(")
72+
print(io, " Name: ", name(var))
73+
pyhasattr(var.py, "time") && println(io, " Time Range: ", time(var)[1], " to ", time(var)[end])
74+
print(io, " Units: ", var.py.unit)
75+
print(io, " Shape: ", var.py.shape)
76+
print(io, " Values: ")
77+
print(io, var.py.values)
78+
println(io, ")")
79+
end
80+
81+
# Add Base.show methods for pretty printing
82+
function Base.show(io::IO, m::MIME"text/plain", var::T) where {T<:AbstractDataContainer}
83+
ismissing(var) && return
6484
println(io, "$T:")
6585
println(io, " Name: ", name(var))
6686
pyhasattr(var.py, "time") && println(io, " Time Range: ", time(var)[1], " to ", time(var)[end])

0 commit comments

Comments
 (0)