Skip to content

Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, and this project attempts to adhere to Semantic Versioning.

Unreleased

Removed

  • pre-commit hooks for line-counting and version checking
    • Instead, will pull them from external gadzooks repo

0.4.1

2024-04-22

Added

  • DictConfig class for configs stored as untyped dict
  • DataclassAdaptable mixin to convert one dataclass to another
    • Can be used to handle field name collisions in DataclassMixin settings
  • save and load convenience methods for FileSerializable (includes JSONDataclass and TOMLDataclass)

Changed

  • Config.get_config returns reference instead of deepcopy
  • Class hierarchy of FileSerializable
    • Split into TextSerializable, BinarySerializable
    • TextFileSerializable subclasses BinaryFileSerializable

0.3.1

2024-04-16

Added

  • Documentation: Badges in README (workflow passing, coverage, docs, etc.)
  • CI:
    • More GH Actions code checks
    • Testing Python versions 3.8-3.12 via hatch matrix

Changed

  • Top-level *-imports mostly limited to mixin classes via __all__
  • Renamed Config.configure context manager to as_config
  • Renamed SubprocessDataclass.args method to get_args

Fixed

  • Support for Python 3.8, 3.9 (which lack some newer type annotation features)

0.3.0

2024-04-14

Added

  • TOMLDataclass for saving/loading TOML via tomlkit
    • Support for loading TOML configurations in ConfigDataclass
  • FileSerializable and DictFileSerializableDataclass mixins to factor out shared functionality between JSON/TOML serialization
  • Documentation
    • Usage examples for TOMLDataclass and ConfigDataclass
    • Hosting on Read the Docs here
  • CI: Github Actions to automate building/linting/testing

0.2.0

2024-04-13

Added

  • ConfigDataclass mixin for global configurations
  • Customization of DataclassMixin:
    • DataclassMixinSettings for mixin class configuration
    • FieldSettings for field-specific settings
    • __post_dataclass_wrap__ hook to customize behavior after dataclass decorator is applied (e.g. validating fields at definition time)
  • Documentation
  • Linting via ruff
  • Unit tests

Changed

  • Build via hatch
  • Better flattened/nested dataclass conversions

Fixed

  • More robust type handling

0.1.0

2022-06-06

Added

  • DataclassMixin class providing extra dataclass features
    • ArgparseDataclass: command-line argument parsing
    • CLIDataclass: command-line argument parsing and main function
    • DictDataclass: conversion to/from Python dict
    • JSONDataclass: conversion to/from JSON
    • SQLDataclass: SQL persistence via sqlalchemy
    • SubprocessDataclass: call out to another program via subprocess