Simple cascading/nested scope/namespace manager
Delegatum walks a list of objects that can represent key/value mappings and returns the first match found for a key.
- Supports dictionaries, argparse, configparser, mapping functions
- Most dictionary-like objects should work as well
- Python json and yaml parsers return dictionaries, and so are supported
The following example searches, in order: command line arguments, a config file, a json string, a yaml string, and the output of a function.
import delegatum
import json
import yaml # Requires external package PyYAML
j = json.loads('{"verbose": true, "output": "file.txt"}')
y = yaml.safe_load(some_yaml_string)
some_f = lambda x: x * x
delegatus = delegatum.Delegatum([cmdline, configfile, j, y, some_f])
print(delegatus['verbose'])
print(delegatus['garbage'])
- default : object
- Default value to return if no lookup succeeds
- DelegatumError
- General library error; should only occur if misconfigured
- DelegatumMissError
- Used internally for flow control
Standard library:
- argparse
- configparser
- json
- tomllib
External modules:
This package was created with Cookiecutter and the audreyr/cookiecutter-pypackage project template.