Skip to main content

zen-config

tests PyPi python

Simple configuration loader for python.

Compared to other solutions, the goal is to bring:

  • simple usage for simple use cases
  • multiple format support
  • use objects rather than plain dict to interact with the config
  • optionally use the power of pydantic for validation

Simple usage

If you don't want to configure much, pass the config path through the env variable CONFIG, and simply use:

from dataclasses import dataclass
from zenconfig import Config

@dataclass
class MyConfig(Config):
    some_key: str
    some_optional_key: bool = False


cfg = MyConfig(some_key="hello")
cfg.save()
...
cfg = MyConfig.load()
cfg.some_optional_key = True
cfg.save()
...
cfg.clear()

Config file loading

When creating your config, you can specify at least one of those two attributes:

  • ENV_PATH the environment variable name containing the path to the config file, defaults to CONFIG
  • PATH directly the config path

[!TIP] When supplying both, if the env var is not set, it will use PATH.

User constructs will be expanded. If the file does not exist it will be created. You can specify the file mode via Config.FILE_MODE.

The config can be loaded from multiple files, see fnmatch for syntax. Note that you will not be able to save if not handling exactly one file.

Read only

If you do not want to be able to modify the config from your code, you can use ReadOnlyConfig.

Supported formats

Currently, those formats are supported:

  • JSON
  • YAML - requires the yaml extra
  • TOML - requires the toml extra

The format is automatically inferred from the config file extension. When loading from multiple files, files can be of multiple formats.

Other formats can be added by subclassing Format: Config.register_format(MyFormat(...), ".ext1", ".ext2").

[!TIP] You can re-register a format to change dumping options.

Supported schemas

Currently, those schemas are supported:

  • plain dict
  • dataclasses
  • pydantic models - requires the pydantic extra
  • attrs - requires the attrs extra

The schema is automatically inferred from the config class.

Other schemas can be added by subclassing Schema: Config.register_schema(MySchema(...)).

You can also force the schema by directly overriding the SCHEMA class attribute on your config. This can be used to disable auto selection, or pass arguments to the schema instance.

[!WARNING] When using pydantic, you have to supply the ClassVar type annotations to all class variable you override otherwise pydantic will treat those as its own fields and complain.

Conversions

For all schemas and formats, common built in types are handled when dumping.

[!IMPORTANT] Keep in mind that only attrs and pydantic support casting when loading the config.

You can add custom encoders with Config.ENCODERS. For pydantic, stick with the standard way of doing it.

Contributing

See contributing guide.

Metadata

Release files for zenconfig 2.2.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for zenconfig 2.2.0
File Size Uploaded Provenance Actions
zenconfig-2.2.0.tar.gz 7.9 kB With provenance Details for zenconfig-2.2.0.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for zenconfig 2.2.0
File Interpreter ABI Platform Actions
zenconfig-2.2.0-py3-none-any.whl Python 3 none any Details for zenconfig-2.2.0-py3-none-any.whl

Total release size: 21.2 kB

Release files / zenconfig-2.2.0.tar.gz

Download URL zenconfig-2.2.0.tar.gz
Size 7.9 kB
Tags Source
SHA-256 checksum
How to use checksums
f5c8b7470c2288fe3c44af50b83552f659380479834247a670ea3b9fc95d888e
BLAKE2b-256 checksum
How to use checksums
1dbb969caeead72816d4036597ef76dc0254010c170689ddd5a82dd24839d8ba
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 17, 2025.

Transparency log

Release files / zenconfig-2.2.0-py3-none-any.whl

Download URL zenconfig-2.2.0-py3-none-any.whl
Size 13.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
dffc90a4ad8a89654bed617383227ef59b7be0bc913e5254faa243df5eca0303
BLAKE2b-256 checksum
How to use checksums
56b91336db716ebb4b7964f3bc8344134f16b739e47c933c72dbe210b0469ed2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 17, 2025.

Transparency log

Security for zenconfig 2.2.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for zenconfig-2.2.0.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 17, 2025.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page