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.