-
Notifications
You must be signed in to change notification settings - Fork 34
Description
The comment in schema.jl says "A Schema behaves for all intents and purposes like an immutable Dict" and the user documentation says something similar. But it's not really true. The comment goes on to note
, and delegates the constructor as well as
getindex,get,merge!,merge,
keys, andhaskeyto the wrappedDict.
which translates to "behaves like a Dict if you call those methods and otherwise not."
I noticed this because about a year ago, with v 0.6.5 I was able to use values to pull out members of the schema, but now this produces an undefined function error. https://discourse.julialang.org/t/statsmodels-values-schema-no-longer-works/46659 provides more background. As noted there it is not clear to me why it stopped working, because even the old version did not define values.
My particular problem can be solved by defining
Base.values(schema::Schema) = values(schema.schema)but that doesn't solve the general problem that Schema does not act like a Dict in many ways (e.g., my sample code on discourse also shows a failure because iterate is not defined, triggered by the use of foreach).
I don't understand the design goals well enough to know whether implementing the full Dict protocol is a good idea, but the current implementation seems to be at an uncomfortable part-way there point.