Skip to main content

Parse configuration values from files, the environment, and elsewhere all in one place.

Project description

Here is a full working example of using easy_config. First, write your configuration class:

# config.py
from easy_config import EasyConfig

class MyProgramConfig(EasyConfig):
   FILES = ['myprogram.ini']
   NAME = 'MyProgram'  # the name for the .ini file section and the namespace prefix for environment variables

   # define the options like you would a dataclass
   number: int
   name: str
   check_bounds: bool = True  # options with defaults must all come after non-default options

A sample configuration file:

# myprogram.ini
[MyProgram]
# section name matches `NAME` from the configuration class
number = 3

And a sample program to illustrate the usage:

# test_config.py
import sys

from config import MyProgramConfig

print(MyProgramConfig.load(name=sys.argv[1])

Running this program with various options:

$ python test_config.py Scott
MyProgramConfig(number=3, name='Scott', check_bounds=True)

$ env MYPROGRAM_CHECK_BOUNDS=False python test_config.py Scott
# environment variable names are the all-uppercase transformation of the NAME concatenated with the option name and an underscore
MyProgramConfig(number=3, name='Scott', check_bounds=False)

$ env MYPROGRAM_NUMBER=10 MYPROGRAM_NAME=Charlie python test_config.py Scott
MyProgramConfig(number=10, name='Scott', check_bounds=True)

As you can see, values are taken in precedence, with arguments passed to load overriding values from the environment which, in turn, override values from configuration files.

Once you have the MyProgramConfig instance, you can use it just like any dataclass.

Project details


Download files

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

Source Distribution

easy_config-0.2.0.tar.gz (11.1 kB view details)

Uploaded Source

Built Distribution

easy_config-0.2.0-py36-none-any.whl (7.2 kB view details)

Uploaded Python 3.6

File details

Details for the file easy_config-0.2.0.tar.gz.

File metadata

  • Download URL: easy_config-0.2.0.tar.gz
  • Upload date:
  • Size: 11.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.19.1 setuptools/40.4.3 requests-toolbelt/0.8.0 tqdm/4.26.0 CPython/3.7.0

File hashes

Hashes for easy_config-0.2.0.tar.gz
Algorithm Hash digest
SHA256 8de3469b925c5c7f9426902520903f600466d0b648c373f82fce219730f3282b
MD5 4a9b83e74f87a470feca28cd105c49bf
BLAKE2b-256 9da1254f36f7876b8d41bf9493ff3a8a68befa51fdebb4b6862daa4135079845

See more details on using hashes here.

File details

Details for the file easy_config-0.2.0-py36-none-any.whl.

File metadata

  • Download URL: easy_config-0.2.0-py36-none-any.whl
  • Upload date:
  • Size: 7.2 kB
  • Tags: Python 3.6
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.19.1 setuptools/40.4.3 requests-toolbelt/0.8.0 tqdm/4.26.0 CPython/3.7.0

File hashes

Hashes for easy_config-0.2.0-py36-none-any.whl
Algorithm Hash digest
SHA256 6571155bce0c3875a0c410b994f16e03e65a7dcb866606d1df2531dfa93284d6
MD5 8ab7505408b27b44f5093f4a4d722846
BLAKE2b-256 be8a121dc8a5a5e805f68b988c14e1278211b75eb2b46f39b9447f309081f9cb

See more details on using hashes here.

Supported by

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