Skip to main content

omniconf

Gitlab Pipeline Status Gitlab Code Coverage License PyPI version Supported Python versions Supported Python implementations

A Python library that makes configuring your application independent from your configuration backend.

Documentation

Read the complete documentation on Read the Docs.

Why omniconf?

Configuring applications is hard, and it doesn’t help that there are many different (and valid) ways to do it:

  • cli arguments

  • config files: ConfigObj (.ini like), JSON, YAML, TOML

  • environment variables

Each of this methods are a valid way to configure an application, and each have their own strengths. Cli arguments are most suited for tools and daemons. Configuration files are suited for applications that have more complex requirements. Environment variables and key/value stores are handy when using containers. You may even want to use a combination of methods (not yet implemented).

This library aims to make configuring the application easier, and allows you to use multiple configuration backends transparently.

For up-to-date examples, take a look here.

Changes

For an up-to-date changelog, see ChangeLog.

  • Support for Python 3.13, 3.14 and 3.15-rc was added in version 1.6.0 .

  • Support for Python 3.8, 3.9 and 3.10 was dropped in version 1.6.0 .

  • Full typing support and experimental mypy plugin added in 1.5.0 .

  • Support for Python 3.9, 3.10, 3.11 and 3.12 was added in version 1.5.0 .

  • Support for Python 2.7, 3.5, 3.6 and 3.7 was dropped in version 1.5.0 .

  • Support for Vault backend was dropped in version 1.5.0 .

  • Support for Python 3.4 was dropped in version 1.4.0 .

  • Support for Jython was dropped in version 1.4.0 .

  • Support for Python 3.8 was added in version 1.3.1 .

  • Support for Python 3.3 was dropped in version 1.3.0 .

License

omniconf is licensed under LGPLv3. See the LICENSE file for details.

Contributing

To contribute, base your changes on the develop branch. Use init.sh to install the required Python version using pyenv and setup a virtualenv in vendor/. Activate the virtualenv using source vendor/bin/activate. After the initial setup, use init.sh at any time to bring your environment up-to-date with the latest requirements.

$ ./init.sh
Installing Python version 3.x.x using pyenv
Creating Python venv named 'vendor'
- Install uv
- Updating pip, setuptools
Resolved 2 packages in 2ms
Installed 1 package in 10ms
...
- Installing dev and docs dependencies
Installed 56 packages in 32ms
...
- Installing app in edit mode
...
Installed 1 package in 0ms
...
- Installing pre-commit hook
pre-commit installed at .git/hooks/pre-commit

Make sure your contribution doesn’t break any existing tests, and add relevant new tests. You can run the test suite using tox:

$ tox

To check for style issues, just run the test suite, ruff is automatically called for linting and formatting checks.

When you’re done, open a pull request on Github.

Metadata

Release files for omniconf 1.6.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 omniconf 1.6.0
File Size Uploaded
omniconf-1.6.0.tar.gz 145.2 kB Details

Built distribution (wheel)

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

Total release size: 175.0 kB

Release files / omniconf-1.6.0.tar.gz

Download URL omniconf-1.6.0.tar.gz
Size 145.2 kB
Tags Source
SHA-256 checksum
How to use checksums
b2c7e2fe301f825cbad596ada0b647a1b8ba24f60ed6dbffa28c282d60a9d1da
BLAKE2b-256 checksum
How to use checksums
270b4ad407b1fc15d9999a0f9754bc41199fc34be4a7904dd4d6513519474759
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.12.23 {"installer":{"name":"uv","version":"0.12.23","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Debian GNU/Linux","version":"13","id":"trixie","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release files / omniconf-1.6.0-py3-none-any.whl

Download URL omniconf-1.6.0-py3-none-any.whl
Size 29.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
171a092c2a79971bfd500fcb98734e15e9f2e0711ebe7bc4d10b146d1e0f5345
BLAKE2b-256 checksum
How to use checksums
c5c2b1d496a6d6fd92f421bd0afde8568c13ba7c500ea08469dbd25bdcc2ae6f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.12.23 {"installer":{"name":"uv","version":"0.12.23","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Debian GNU/Linux","version":"13","id":"trixie","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release history Release notifications | RSS feed

2.0.0

2 release files

This release

1.6.0 This release

2 release files

1.5.1

2 release files

1.5.0

2 release files

1.4.0

2 release files

1.3.1

2 release files

1.3.0

2 release files

1.2.1

2 release files

1.2.0

2 release files

1.1.0

2 release files

1.0.1

2 release files

1.0

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