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
0.5.0
2024-06-02
Added
- Explicit
required
metadata flag inArgparseDataclass
- More details in web docs for
JSONDataclass
,TOMLDataclass
Changed
- (Breaking)
JSONDataclass
methodsjson_encoder
andjson_key_decoder
now public
Fixed
- Bugs in
ArgparseDataclass
0.4.5
2024-05-30
Changed
ArgparseDataclass
subcommand
property tosubcommand_name
Fixed
-
ArgparseDataclass
- Preserve snake case for positional arguments instead of replacing
_
with-
- Preserve snake case for positional arguments instead of replacing
-
DictDataclass
- Support
numpy
scalars and arrays - Handle string type annotations (see PEP 563)
- Support
0.4.4
2024-05-06
Added
- Groups, mutually exclusive groups, and subparsers for
ArgparseDataclass
- Nested
ArgparseDataclass
can be used as subparser ifsubcommand=True
is set in field metadata CLIDataclass.run
will invoke subcommand if applicable
- Nested
Fixed
ArgparseDataclass
boolean flag field properly handlesaction="store_false"
with field defaultTrue
- Field
suppress=False
overridessuppress_defaults=True
0.4.3
2024-04-30
Added
fancy_dataclass.func
module withfunc_dataclass
wrapper- Converts an ordinary function into a parametrized dataclass type
- Documentation and tests for the above
0.4.2
2024-04-29
Added
fancy_dataclass/docs
subfolder containing HTML documentation (accessible without Internet access)
Changed
- Using
gadzooks
repo for the followingpre-commit
hooks:build-docs
: rebuild docs if any source markdown files changedloc-summarize
: print lines of code summarycheck-version
: check version consistency (package, Git tag, built distribution, changelog)
0.4.1
2024-04-22
Added
DictConfig
class for configs stored as untyped dictDataclassAdaptable
mixin to convert one dataclass to another- Can be used to handle field name collisions in
DataclassMixin
settings
- Can be used to handle field name collisions in
save
andload
convenience methods forFileSerializable
(includesJSONDataclass
andTOMLDataclass
)
Changed
Config.get_config
returns reference instead of deepcopy- Class hierarchy of
FileSerializable
- Split into
TextSerializable
,BinarySerializable
TextFileSerializable
subclassesBinaryFileSerializable
- Split into
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 toas_config
- Renamed
SubprocessDataclass.args
method toget_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 viatomlkit
- Support for loading TOML configurations in
ConfigDataclass
- Support for loading TOML configurations in
FileSerializable
andDictFileSerializableDataclass
mixins to factor out shared functionality between JSON/TOML serialization- Documentation
- Usage examples for
TOMLDataclass
andConfigDataclass
- Hosting on Read the Docs here
- Usage examples for
- 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 configurationFieldSettings
for field-specific settings__post_dataclass_wrap__
hook to customize behavior afterdataclass
decorator is applied (e.g. validating fields at definition time)
- Documentation
- Reference pages via
mkdocs-material
andmkdocstrings
- Basic usage examples for main mixin classes
- CHANGELOG
- Reference pages via
- Linting via
ruff
- Unit tests
- Over 90% code coverage, via
pytest-cov
- Over 90% code coverage, via
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 featuresArgparseDataclass
: command-line argument parsingCLIDataclass
: command-line argument parsing andmain
functionDictDataclass
: conversion to/from Python dictJSONDataclass
: conversion to/from JSONSQLDataclass
: SQL persistence viasqlalchemy
SubprocessDataclass
: call out to another program viasubprocess