Changelog

SunsetSettings 0.7.1 (2026-02-09)

  • Added Python 3.14 to supported versions.

  • Added temporary workaround to let List indexing and slicing typecheck correctly with ty.

  • Switched to dynamic versioning from git tags.

SunsetSettings 0.7.0 (2025-06-29)

  • Added AutoLoader context manager, which reloads the settings file when it is modified.

  • Removed onLoadedCall() methods. Use the regular onUpdateCall() methods instead.

  • Methods that returned Iterators now return Iterables. Usage of Iterators was an implementation details that doesn’t need to be exposed.

  • Switched to Pyright for automated type checks.

SunsetSettings 0.6.1 (2024-11-17)

  • Added Python 3.13 to officially supported versions.

  • Migrated to Hatch as the build and environment management system.

  • Arguments after the first position in Settings.save() and Settings.autosave() methods are now keyword-only arguments.

  • Fixed several subtle bugs that could occur when creating a Bunch as a subclass of another Bunch.

  • Deprecated Bunch.__post_init__() and Settings.__post_init__().

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 inhibition 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 silently fail.

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 a Key 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 Bunch with default value overrides. This is still experimental and undocumented.

SunsetSettings 0.5.0 (2023-04-22)

  • Added ability to set a validator on a Key to restrict its 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 SerializableFlag 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 Key.

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. Key, List and Bundle instances 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.