* Added `functools.once`, a rudimentary caching function to ensure an expensive or non-idempotent function is not expensive on subsequent calls and is idempotent.
5.0
===
* Renamed method in KeyTransformingDict from `key_transform` to `transform_key`. * Fixed critical NameErrors in jaraco.util.logging. * Enabled custom parameters in logging.setup.
4.4
===
* Extracted KeyTransformingDict from FoldedCaseKeyedDict with much more complete handling of key transformation.
4.3
===
* Added `jaraco.filesystem.recursive_glob`, which acts like a regular glob, but recurses into sub-directories.
4.2
===
* Added `dictlib.DictStack` for stacking dictionaries on one another. * Added `string.global_format` and `string.namespace_format` for formatting a string with globals and with both globals and locals.