Skip to main content

Hierarchical YAML config reader that reads from multiple files and an environment variable

Project description


A library that makes it easy to load YAML config files in a hierarchical manner. Also loads YAML content from CONFIG environment variable.


Consider the following yaml file config/default.yml:

    pem: /path/to/cert.pem
    key: /path/to/cert.key
    - a
    - b
from magnet import Config

config = Config().read_all()

config.get['app.certs.pem']  # ==> /path/to/cert.pem
config.get['non.existing.key']  # ==> raises KeyError

Additional options:

from magnet import Config, ConfigFile

config = Config({
  # set default configuration here

# here are the default parameters 
  filename=None,  # string, can be set to load an additional file

This will load the configuration in the following order:

  1. ./config/default.yml - can be committed to the repository
  2. ./config/local.yml - should not be committed to allow custom config for devs
  3. An additional YAML config file (if filename argument is defined)
  4. YAML contents from the CONFIG environment variable (if env_variable is defined)

All of these files are optional, but the key lookups will result with KeyError if a key is missing. If filename is defined, but the file is not found, it will raise a FileNotFoundError.


make ci            - Run the CI pipeline (deps, lint, test-coverage)
make lint          - Lint all project files
make test          - Run all tests
make test-watch    - Run all tests and re-run on file changes
make test-coverage - Run all tests and calculate test coverage
make deps          - Create a virtual environment and install dependencies
make freeze        - Freeze the requirements
make env           - Create a virtual environment

Project details

Download files

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

Files for magnet, version 1.0.2
Filename, size File type Python version Upload date Hashes
Filename, size magnet-1.0.2-py3-none-any.whl (4.0 kB) File type Wheel Python version py3 Upload date Hashes View
Filename, size magnet-1.0.2.tar.gz (3.5 kB) File type Source Python version None Upload date Hashes View

Supported by

AWS AWS Cloud computing Datadog Datadog Monitoring DigiCert DigiCert EV certificate Facebook / Instagram Facebook / Instagram PSF Sponsor Fastly Fastly CDN Google Google Object Storage and Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Salesforce Salesforce PSF Sponsor Sentry Sentry Error logging StatusPage StatusPage Status page