Changelog
=========

SunsetSettings 0.6.0 (2024-07-16)
---------------------------------

  - Dropped support for Python 3.9.
  - Fixed a race condition in NonHashableSet.
  - Added onLoadedCall() to Key, List and Bunch types, to call a callback after
    settings were just loaded. API is experimental, and may change.

SunsetSettings 0.5.6 (2024-06-17)
---------------------------------

  - Removed Self type workaround now that mypy handles it properly.
  - Fixed notification inhibitation issue that caused update notifications to fail
    to fire.

SunsetSettings 0.5.5 (2024-02-18)
---------------------------------

  - Moved some internal field properties into a new metadata attribute.
  - Major internals cleanup.

SunsetSettings 0.5.4 (2024-02-01)
---------------------------------

  - Added Python 3.12 to officially supported versions.
  - Fixed regression where changing a section's name might fail to be applied.

SunsetSettings 0.5.3 (2024-01-29)
---------------------------------

  - Made some internal methods private to de-clutter the API namespace.
  - Documented some internal methods where it may make to expose them publically.
  - Renamed internal method isPrivate() into skipOnSave().
  - onUpdateCall() callbacks are now called for entities for which skipOnSave()
    is true.
  - Improved notification logic when a section is renamed or reparented.
  - Added fallback() method to Key.

SunsetSettings 0.5.2 (2023-08-14)
---------------------------------

  - Added more logging when AutoSaver loads/saves.
  - Added ability to create Keys with an explicit runtime type.
  - Rolled back undocumented Bunch default value override feature. It's not
    dependable.

SunsetSettings 0.5.1 (2023-04-26)
---------------------------------

  - Made deserializing an enum case-insensitive when the result is
    non-ambiguous.
  - Added ability to instantiate Bunches with default value overrides. This is
    still experimental and undocumented.

SunsetSettings 0.5.0 (2023-04-22)
---------------------------------

  - Added ability to set a validator on Keys to limit their possible values.
  - Making a typo in a value when editing a settings file manually no longer
    causes the entry to be deleted on save.
  - Added ability to serialize Enum subclasses natively.
  - Deprecated now unnecessary SerializableEnum and -Flag classes.
  - Added ability to pass a custom serializer when instantiating a Key.
  - Added ability to store any type in a Key.
  - onUpdateCall() and onValueChangeCall() now accept callbacks with any return
    value.

SunsetSettings 0.4.0 (2023-03-22)
---------------------------------

  - Renamed Bundle to Bunch. Just makes more sense for something that holds
    Keys.
  - Added serializable Enum and Flag subclasses.
  - AutoSaver now expands '~' to the current user's home directory.
  - Added atomic updateValue() method to Keys.

SunsetSettings 0.3.2 (2022-12-22)
---------------------------------

  - Added AutoSaver context manager.

SunsetSettings 0.3.1 (2022-12-19)
---------------------------------

  - Updated documentation links.

SunsetSettings 0.3.0 (2022-12-19)
---------------------------------

  - Sphinx documentation added.
  - Renamed Setting class to Key.
  - Renamed Section class to Bundle.
  - List overhaul: it now supports both Bundle and Key instances.
  - Removed need for New* functions. Keys, Lists and Bundles can now be used
    directly in Settings definitions.
  - Removed need for explicit type annotations in Settings class definitions.
  - Renamed List.iterAll() to iter() and added order parameter.
  - Replaced derive() and deriveAs() with newSection() and assorted functions.
  - Renamed onKeyModifiedCall() to onUpdateCall().
  - Added float to supported Key value types.
  - Renamed Settings.name() to Settings.sectionName() and Settings.setName() to
    Settings.setSectionName().

SunsetSettings 0.2.0 (2022-08-03)
---------------------------------

  - Major docstring overhaul.
  - Minor API updates.

SunsetSettings 0.1.0 (2022-03-25)
---------------------------------

  - Initial release. Code-complete and functional, but undocumented.
