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.
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
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
config.read_all(
filename=None, # string, can be set to load an additional file
default_files=[
ConfigFile('config/default.yml'),
ConfigFile('config/local.yml'),
],
env_variable='CONFIG',
)
This will load the configuration in the following order:
./config/default.yml
- can be committed to the repository./config/local.yml
- should not be committed to allow custom config for devs- An additional YAML config file (if
filename
argument is defined) - YAML contents from the
CONFIG
environment variable (ifenv_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.0.2.tar.gz
(3.5 kB
view hashes)
Built Distribution
magnet-1.0.2-py3-none-any.whl
(4.0 kB
view hashes)