Skip to main content

A Python library that makes configuring your application

Project description

Travis build status Coveralls 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 documentation on Read the Docs.

Design choices

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

  • environment variables

  • key/value stores: etcd, consul (not yet implemented).

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.

To do this, configuration keys are defined as simple key / value pairs:

key=value

Sections and subsections are also supported, by using dot notated syntax:

section.subsection.key=value

To use a configuration key in your application, simply use:

from omniconf import config

variable = config.get("section.key")

omniconf needs to be told what keys to expect, define these as follows:

from omniconf import setting
# Simplest way to define a key
setting('key')

# A more complex example
setting('section.subsection.key', _type=dict, default={"foo": "bar"}, help="This is a very import key")

License

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

Contributing

To contribute, base your changes on the develop branch. Make sure your contribution doesn’t break any existing tests, and add relevant new tests.

You can run the test suite using tox, which by default will run tests for all supported Python versions. You probably want to run just a few of them at a time, use the -e switch for that:

$ tox -e py27
$ tox -e py34

To check for style issues, run flake8:

$ tox -e flake8

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

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

omniconf-1.0.1.tar.gz (12.3 kB view details)

Uploaded Source

Built Distribution

omniconf-1.0.1-py2.py3-none-any.whl (33.4 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file omniconf-1.0.1.tar.gz.

File metadata

  • Download URL: omniconf-1.0.1.tar.gz
  • Upload date:
  • Size: 12.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for omniconf-1.0.1.tar.gz
Algorithm Hash digest
SHA256 9bc22f4b6616b1bb509ec2fe9d1867c38d3d309072533a8c2b363aca1339fb48
MD5 d7c7a5752bfffacdecd3f91ab5b4263d
BLAKE2b-256 3d5b962927cd5ffd06e287745df96faa29e5a5f24c54167b34774f62b9238b3c

See more details on using hashes here.

File details

Details for the file omniconf-1.0.1-py2.py3-none-any.whl.

File metadata

File hashes

Hashes for omniconf-1.0.1-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 21d6dfc2b80323e099e6bbc81f63231fbce77697448a913df0698ef9d52c3954
MD5 8d2ef37b46d14cc8c841735e5af75ccd
BLAKE2b-256 882f963dde0486575c29ba5aa05858bb1c892cc777b731aa0750f7f6aae7f07c

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page