Release Notes (v2.7.3)#
October 12, 2023
The v2.7.3 release fixes a bug in how _env and _eval get expanded
(Issue 21)
The expected behavior is something like the following:
cfg = Configuration(default={'database': {'user': 'bob', 'password_eval': 'echo secret'}})
assert cfg.database.password == 'secret'
The expansion does happen for top-level parameters, but not ones nested within sections (or sub-sections).
You instead get an AttributeError as you might expect from a normal dictionary.
With the 2.7.x release of cmdkit the Namespace (and underlying NSCoreMixin along with Environ) were
migrated to their own separate namespace module to allow for it to be used in the new platform module
without created a circular dependency with the original config module.
The implementation of this expansion functionality was pulled out of NSCoreMixin and implemented
instead directly in the Configuration class. This might make sense conceptional, as it’s the
configuration that needs this behavior. However, implementing it there destroys the recursive
nature of the structure. As soon as you access a section of the Configuration instead you get
a Namespace view, not another Configuration.
The expansion behavior was reverted back to its original home under NSCoreMixin.
All Namespace instances allow this sort of expansion, as in prior releases.