Metadata-Version: 2.5
Name: omniconf
Version: 2.0.0
Summary: A Python library that makes configuring your application independent from your configuration backend.
Author-email: Nick Douma <n.douma@nekoconeko.nl>
License-Expression: LGPL-3.0-or-later
License-File: LICENSE
Keywords: config,configuration,omniconf
Classifier: Development Status :: 5 - Production/Stable
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: Information Technology
Classifier: Intended Audience :: System Administrators
Classifier: License :: OSI Approved :: GNU Lesser General Public License v3 or later (LGPLv3+)
Classifier: Operating System :: POSIX
Classifier: Operating System :: POSIX :: Linux
Classifier: Operating System :: Unix
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Classifier: Programming Language :: Python :: Implementation :: CPython
Classifier: Programming Language :: Python :: Implementation :: PyPy
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Classifier: Topic :: Software Development :: User Interfaces
Classifier: Topic :: System :: Installation/Setup
Classifier: Topic :: Utilities
Requires-Python: >=3.11
Provides-Extra: configobj
Requires-Dist: configobj; extra == 'configobj'
Provides-Extra: toml
Provides-Extra: yaml
Requires-Dist: pyyaml; extra == 'yaml'
Description-Content-Type: text/x-rst

omniconf
========

.. image:: https://img.shields.io/gitlab/pipeline-status/CYSO%2Fopen-source%2Fomniconf?branch=develop&logo=gitlab
   :alt: Gitlab Pipeline Status

.. image:: https://img.shields.io/gitlab/pipeline-coverage/CYSO%2Fopen-source%2Fomniconf?branch=develop&logo=gitlab
   :alt: Gitlab Code Coverage

.. image:: https://img.shields.io/pypi/l/omniconf
   :alt: License
   :target: https://pypi.python.org/pypi/omniconf

.. image:: https://img.shields.io/pypi/v/omniconf
   :alt: PyPI version
   :target: https://pypi.python.org/pypi/omniconf

.. image:: https://img.shields.io/pypi/pyversions/omniconf
   :alt: Supported Python versions
   :target: https://pypi.python.org/pypi/omniconf

.. image:: https://img.shields.io/pypi/implementation/omniconf
   :alt: Supported Python implementations
   :target: https://pypi.python.org/pypi/omniconf

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

Documentation
-------------

Read the complete documentation on `Read the Docs <http://omniconf.readthedocs.io/en/latest/>`_.

Why omniconf?
-------------

Configuring applications can be 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 these methods are a valid way to configure an application, and each have their own strengths. This library aims to make configuring the application easier, and allows you to use multiple configuration backends
transparently.

To get started, take a look `here <http://omniconf.readthedocs.io/en/latest/getting_started.html>`_.

Changes
-------

For an up-to-date changelog, see `ChangeLog <ChangeLog>`_.

See the `docs <http://omniconf.readthedocs.io/en/latest/getting_started.html>`_ for supported Python versions.

License
-------

omniconf is licensed under LGPLv3. See the `LICENSE <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 ``uv`` to manage a virtualenv. Activate the virtualenv using ``source .venv/bin/activate``.

After the initial setup, use ``init.sh`` at any time to bring your environment up-to-date with the latest requirements.

.. code-block:: bash

   $ ./init.sh
   Installing Python version 3.x.x using pyenv
   - Install dependencies using uv
   Using CPython 3.x.x interpreter at: /home/user/.pyenv/versions/3.x.x/bin/python3.x
   Creating virtual environment at: .venv
   ...
   - Installing pre-commit hook
   pre-commit installed at .git/hooks/pre-commit

   $ source .venv/bin/activate
   # Start developing

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

.. code-block:: bash

   $ just pytest # run full test suite
   $ just mypy   # check typing with both mypy and basedpyright

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

When you're done, open a merge request.
