Skip to main content

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

Project description

magnet

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

Minimal Python version is Python 3.5.

Installation

pip install magnet

Usage

Consider the following yaml file config/default.yml:

app:
  url: https://www.example.com/app
  certs:
    pem: /path/to/cert.pem
    key: /path/to/cert.key
  clients:
    - a
    - b

And the following config/local.yml file:

app:
  url: https://app.example.com/
from magnet import Config

config = Config().read_all()

config['app.url']           # ==> "https://app.example.com"
config['app.certs.pem']     # ==> "/path/to/cert.pem"
config['non.existing.key']  # ==> raises KeyError

Additional options:

from magnet import Config

# Listed below are the default parameters 
config = Config(
    config={
        # set default configuration here
    },
    filenames=(
       'config/default.yml',
       'config/local.yml',
    ),
    env_variable='CONFIG',
    separator='.',
)

config.read_all(
  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.

Development

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.

Source Distribution

magnet-1.1.1.tar.gz (3.7 kB view details)

Uploaded Source

Built Distribution

magnet-1.1.1-py3-none-any.whl (4.2 kB view details)

Uploaded Python 3

File details

Details for the file magnet-1.1.1.tar.gz.

File metadata

  • Download URL: magnet-1.1.1.tar.gz
  • Upload date:
  • Size: 3.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for magnet-1.1.1.tar.gz
Algorithm Hash digest
SHA256 018ef8324b5c228a6a62c163f0f720e97c2d8c65e4a72721074900c715c4e0c7
MD5 f32acae6b61c8c6f14e8698dfe3c7e57
BLAKE2b-256 af711414849fb235df70d88ef998a11476b410c642988f2c5ddbdb5ca7832108

See more details on using hashes here.

File details

Details for the file magnet-1.1.1-py3-none-any.whl.

File metadata

File hashes

Hashes for magnet-1.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 089d198391bd415224d30677354116195a6193dcfaf902b6b141ab994e77fede
MD5 12da14acb3e0b61b36e02a05381c60fa
BLAKE2b-256 84cec0680770c4ff7c5db7b5e2388571d720c76616c860b09a41e0b02b2a89fa

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