Overview
This is a module for reading configuration files.
Currently, the module only supports YAML-formatted files.
Features:
- Retrieve deeply nested values using dot notation, e.g.
section1.key1 - Retrieve values using wildcards, e.g.
section1.*.key2 - Configuration files can be templated (Jinja)
Prerequisites:
- Python 3.7+
Installation
- From pypi:
pip3 install btconfig - From this git repo:
pip3 install git+https://github.com/berttejeda/bert.config.git
Note: To install a specific version of the library from this git repo,
suffix the git URL in the above command with @{ tag name }, e.g.:
git+https://github.com/berttejeda/bert.config.git@3.0.0
Usage Examples
Load a configuration file and retrieve specified key value
Given:
- Config file at
/home/myuser/myconfig.yaml - with contents:
section1:
key1: value1
key2: value2
key3: value3
from btconfig import Config
# Initialize App Config
config = Config(config_file_uri='~/myconfig.yaml').read()
value = config.get('section1.key')
print(value)
The above should return value1
Load a configuration file and retrieve a deeply nested value
Given:
- Config file at
/home/myuser/myconfig.yaml - with contents:
section1:
subsection1:
item1:
subitem1: value1
item2: value2
item3: value3
subsection2:
item1: value1
item2: value2
item3: value3
key1: value1
key2: value2
key3: value3
section2:
item1: value1
from btconfig import Config
# Initialize App Config
config = Config(config_file_uri='~/myconfig.yaml').read()
value = config.get('section1.subsection1.item2')
print(value)
The above should return value2
Load a configuration file and retrieve specified key value using wildcard notation
Given:
- Config file at
/home/myuser/myconfig.yaml - with contents:
section1:
subsection1:
item1:
subitem1: value1
item2: value2
item3: value3
subsection2:
item1: value1
item2: value2
item3: value3
key1: value1
key2: value2
key3: value3
section2:
item1: value1
from btconfig import Config
# Initialize App Config
config = Config(config_file_uri='~/myconfig.yaml').read()
value = config.get('section1.*.item1')
print(value)
The above should return [{'subitem1': 'value1'}, 'value1']
Note: When retrieving values via wildcard, the return value is a list object.
Load a configuration file as a python object
Same as the above examples, just invoke the Config object
with as_object=True, as with
config = Config('~/myconfig.yaml', as_object=True).read()
In this case, retrieving values from the object can be done via dot-notation,
as with: print(config.section1.subsection1.item2), or via get method, as with
print(settings.section1.subsection1.item2)
Note: This approach does not support retrieving values via wildcard reference.
Release files for btconfig 6.0.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| btconfig-6.0.0.tar.gz | 7.7 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| btconfig-6.0.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 15.0 kB
Release files / btconfig-6.0.0.tar.gz
| Download URL | btconfig-6.0.0.tar.gz |
|---|---|
| Size | 7.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
d511dc7d558559295255e252c547d442de86fae25416ef223ed874879f673566
|
|
BLAKE2b-256 checksum How to use checksums |
cbafb01682548090ca3bf7144f7a8925b9d804bffc0366e3ccbcb86c102aef21
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.9.6
|
Release files / btconfig-6.0.0-py3-none-any.whl
| Download URL | btconfig-6.0.0-py3-none-any.whl |
|---|---|
| Size | 7.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
f45376f7e988d1c7081803c3b6849cce9a6daf6b45dc5d37a8a8bf5959c6b9c6
|
|
BLAKE2b-256 checksum How to use checksums |
25553bc0ba197c9d4bd1e17e33eed698d785fa624e964b2ff0ad598b0549ef8c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.9.6
|