Changelog

This is a record of BatConf releases and what went into them, in reverse chronological order. All previous releases should still be available on PyPI.

BatConf 0.x

0.4.0 - TBD

Breaking changes:

  • Remove batconf.sources.file.FileConfig (deprecated since 0.2.0 — use IniConfig or YamlConfig instead)

Features:

  • ConfigSingleton: global singleton proxy for sharing a Configuration instance across an application

  • insert_source(): add a configuration source to a running Configuration or ConfigSingleton at runtime

  • Subscript access on Configuration: cfg['key'] is equivalent to cfg.key

  • IniSource — standardised INI file source implementing FileSourceP; replaces IniConfig

  • TomlSource — standardised TOML file source implementing FileSourceP; replaces TomlConfig

  • YamlSource — standardised YAML file source implementing FileSourceP; replaces YamlConfig

  • New top-level public API — Configuration, SourceList, NamespaceSource, EnvSource, IniSource, TomlSource, YamlSource are now importable directly from batconf

0.3.1 - 2025-11-13

Bug Fixes:

  • Fix Python version shields in readme and pypi

  • Update supported version classifiers

Project management:

  • Add release issue template

0.3.0 - 2025-10-30

Supported versions:

  • Drop support for python 3.9

  • Add support for python 3.13t

  • Add support for python 3.14 and 3.14t

Features:

  • Support for free-threading/nogil

0.2.1 - 2025-09-18

Project maintenance

  • Updated links on docs page

  • Updated example code in readme

  • Changed build backend to Hatchling

0.2.0 - 2025-07-07

Supported versions:

  • Drop support for python 3.8

  • Add support for python 3.13

Documentation:

  • Extensive additions and improvements

  • Update Example Project

  • Add Legacy Example

  • Add dynamic copyright year (thanks @jgafnea)

  • Add spiffy config composition diagram

Code:

  • Freeform Schemas: Config schemas no longer depend on module names.

  • Add YamlConfig to replace FileConfig

    • Deprecate FileConfig <batconf.sources.file.FileConfig>

  • Add .ini config source IniConfig

  • Add .toml config source TomlConfig

  • Make the pyyaml dependency optional

  • Make [toml] an optional extra for Python version < 3.11

  • Docs: added a migration guide for v0.1 -> v0.2

  • Added Example Jupyter Notebook to notebooks

  • Modify :Example Project to use .ini instead of .yaml

  • Update Example Project to use freeform Schemas, instead of schemas bound to module namespaces.

  • Add default parameters to Configuration class:

    • The Configuration class now handles default values set in Config dataclasses. As a result, we no longer need the DataclassConfig source to lookup default values.

    • Improve Configuration repr for paths and child-configs

    • Remove DataclassConfig from example code and docs

  • Add _path attribute to Configuration

  • Lint with Ruff

0.1.8 - 2024-08-09

Observability improvements

  • Add expressive repr to Configuration class

Project maintenance

  • Improve documentation

  • Add security policy

  • Add project logo

  • Add optional extras for dev and docs

0.1.7 - 2024-06-13

  • Add support for python3.12

  • Various improvements to type hints

  • Add design principles section to README

0.1.6 - 2023-07-19

  • Unpin pyyaml dependency