CHANGELOG

v5.0.1 (2026-02-22)

🪲 Bug Fixes

  • FlatDict: Enable update() from another FlatDict object (PR#2, ac6d9fe)

  • FlatterDict: Enable update() from another FlatterDict or FlatDict object (PR#3, 936cfbd)

📖 Documentation

  • api: Adjust table-of-contents layout for classes (de313fb)

⚙️ Build System

  • deps: Specify typing_extensions package in range from v4.13 to < v5.0 (44ae99e)

v5.0.0 (2026-02-22)

✨ Features

  • FlatDict: Add constructor flexibility for passing a NamedTuple (2512a57)

  • typing: Add typing flag to package (8556507)

⚡ Performance Improvements

  • FlatDict: Optimize FlatDict implementation (5ba90d0)

  • FlatterDict: Optimize FlatterDict implementation (a63449c)

📖 Documentation

  • Refactor & enhance documentation (3f58958)

♻️ Refactoring

  • FlatDict: Change default delimiter to a period (8f29aaf)

  • FlatterDict: Change default delimiter to a period (bdc84da)

💥 Breaking Changes

  • FlatDict: The default delimiter has been changed to a period (.) instead of a colon (:). This is a stylistic change but it will impact users whom did not define a delimiter parameter in the FlatDict constructor and expect it to be a colon. If you do not desire this change, update your constructor to specify a colon as the delimiter for the FlatDict. Example: FlatDict(..., delimiter=":").

  • FlatterDict: The default delimiter has been changed to a period (.) instead of a colon (:). This is a stylistic change but it will impact users whom did not define a delimiter parameter in the FlatterDict constructor and expect it to be a colon. If you do not desire this change, update your constructor to specify a colon as the delimiter for the FlatterDict. Example: FlatterDict(..., delimiter=":").

v4.0.4 (2024-08-28)

🪲 Bug Fixes

  • move to main branch and update release (PR#10)

  • fix for versions and deploy trigger (PR#11)

  • update to use deploy key (PR#12)

v4.0.3 (2024-08-28)

🪲 Bug Fixes

  • update deployment (PR#03)

  • updating workflow (PR#04)

  • move to new pypi publish (PR#05)

  • updating configurations (PR#06)

  • updating project name (PR#07)

  • updating module name (PR#08)

  • final changes for 4.0.3 (PR#09)

v4.0.2 (2024-08-28)

🪲 Bug Fixes

  • Fixes for building wheel

v4.0.1 (2020-02-13)

🪲 Bug Fixes

  • Gracefully fail to install if setuptools is too old

v4.0.0 (2020-02-12)

  • FIXED deprecation warning from Python 3.9 (PR#40)

  • FIXED keep order of received dict and it’s nested objects (PR#38)

  • Removes compatibility with Python 2.7 and Python 3.4

v3.4.0 (2019-07-24)

  • FIXED sort order with regard to a nested list of dictionaries (PR#33)

v3.3.0 (2019-07-17)

  • FIXED FlatDict.setdefault() to match dict behavior (PR#32)

  • FIXED empty nested Flatterdict (PR#30)

  • CHANGED functionality to allow setting and updating nests within iterables (PR#29)

v3.2.1 (2019-06-10)

  • FIXED docs generation for readthedocs.io

v3.2.0 (2019-06-10)

  • FIXED List Flattening does not return list when an odd number of depth in the dictionary (PR#27)

  • CHANGED FlatterDict to allow for deeply nested dicts and lists when invoking FlatterDict.as_dict() (PR#28)

  • Flake8 cleanup/improvements

  • Distribution/packaging updates to put metadata into setup.cfg

v3.1.0 (2018-10-30)

  • FIXED FlatDict behavior with empty iteratable values

  • CHANGED behavior when casting to str or repr (PR#23)

v3.0.1 (2018-07-01)

  • Add 3.7 to Trove Classifiers

  • Add Python 2.7 unicode string compatibility (PR#22)

v3.0.0 (2018-03-06)

  • CHANGED FlatDict.as_dict to return the nested data structure based upon delimiters, coercing FlatDict objects to dict.

  • CHANGED FlatDict to extend collections.MutableMapping instead of dict

  • CHANGED dict(FlatDict()) to return a shallow dict instance with the delimited keys as strings

  • CHANGED FlatDict.__eq__ to only evaluate against dict or the same class

  • FIXED FlatterDict behavior to match expectations from pre-2.0 releases.

v2.0.1 (2018-01-18)

  • FIXED metadata for pypi upload

v2.0.0 (2018-01-18)

  • Code efficiency refactoring and cleanup

  • Rewrote a majority of the tests, now at 100% coverage

  • ADDED FlatDict.__eq__ and FlatDict.__ne__ (PR#13)

  • ADDED FlatterDict class that performs the list, set, and tuple coercion that was added in v1.20

  • REMOVED coercion of lists and tuples from FlatDict that was added in 1.2.0.

  • REMOVED FlatDict.has_key() as it duplicates of FlatDict.__contains__

  • ADDED Python 3.5 and 3.6 to support matrix

  • REMOVED support for Python 2.6 and Python 3.2, 3.3

  • CHANGED FlatDict.set_delimiter to raise a ValueError if a key already exists with the delimiter value in it. (PR#8)

v1.2.0 (2015-06-25)

  • ADDED Support lists and tuples as well as dicts. (PR#4)

v1.1.3 (2015-01-04)

  • ADDED Python wheel support

v1.1.2 (2013-10-09)

  • Documentation and CI updates

  • CHANGED use of dict() to a dict literal {}

v1.1.1 (2012-08-17)

  • ADDED FlatDict.as_dict()

  • ADDED Python 3 support

  • ADDED FlatDict.set_delimiter()

  • Bugfixes and improvements from naiquevin

v1.1.0 (2012-08-17)

  • ADDED FlatDict.as_dict()

v1.0.0 (2012-08-10)

  • Initial release