Parse, verify and merge all ini files in a single directory
Project description
CONFINI
Configuration parser that process all sections and values in all ini
files in a directory.
Usage
import confini
c = confini.Config('/path/to/config/dir')
c.process()
print(c.get('FOO_BAR_BAZ'))
Value storage
The values are stored in a single key/value dictionary, with section and name separated by underscore and all letters transformed to uppercase.
Consider this value in an ini section:
[foO]
bar_baz = 42
This will be stored in the confini
store with FOO_BAR_BAZ
as the key.
Environment overrides
By default, the value of any environment variable matching a store key will overwrite the corresponding value in the store.
A prefix can be provided on instantiation to define a separate namespace for environment variable overrides:
>>> os.environ.set('FOO_BAZ_BAZ', 666)
>>> c = config.Config('/path/to/config/dir')
>>> c.process()
>>> print(c.get('FOO_BAR_BAZ'))
666
>>> c = config.Config('/path/to/config/dir', 'XXX')
>>> c.process()
>>> print(c.get('FOO_BAR_BAZ'))
42
>>> os.environ.set('XXX_FOO_BAZ_BAZ', 13)
>>> c = config.Config('/path/to/config/dir', 'XXX')
>>> c.process()
>>> print(c.get('FOO_BAR_BAZ'))
13
Required values
Keys can be set as required, and after processing independently validated:
>>> c = config.Config('/path/to/config/dir')
>>> c.require('BAR_BAZ', 'FOO')
>>> c.process()
>>> c.validate()
True
>>> c = config.Config('/path/to/config/dir')
>>> c.require('BAR_BAZ_BAZ', 'FOO')
>>> c.process()
>>> c.validate()
False
Censoring logs
The string representation of the confini object is a list of all stored values, one on each line.
Display of individual values can be suppressed:
>>> c = config.Config('/path/to/config/dir')
>>> c.process()
>>> print(c)
FOO_BAR_BAZ = 666
>>> c.censor('BAR_BAZ', 'FOO')
>>> print(c)
***
Encryption
Values can be GNUPG encrypted by saving them in individual encrypted files providing the filename as value argument wrapped in a gpg directve:
[foo]
BAR_BAZ = !gpg(foo_bar_baz.asc)
Decryption mode is on by default, and can be deactivated on instantiation:
>>> c = config.Config('/path/to/config/dir')
>>> c.process()
>>> c.get()
666
>>> c = config.Config('/path/to/config/dir', decrypt=False)
>>> c.process()
>>> c.get()
!gpg(foo_bar_baz.asc)
The user keyring in the default location is used for decryption, which may be overridden as usual with the GNUPGHOME
environment variable.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file confini-0.2.7.tar.gz
.
File metadata
- Download URL: confini-0.2.7.tar.gz
- Upload date:
- Size: 17.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/50.3.2 requests-toolbelt/0.9.1 tqdm/4.50.2 CPython/3.8.6
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7bd050fb534d89ab1bd8a5009a20036c44a0f162fd72dbfe7ceb1cb62601f32c |
|
MD5 | aa7e41021a8b59b89f75a08de9638aab |
|
BLAKE2b-256 | 580271977a5c646434f89f0361baa61ceef9dc6dd78df7c78926d3fca8e02084 |
File details
Details for the file confini-0.2.7-py3-none-any.whl
.
File metadata
- Download URL: confini-0.2.7-py3-none-any.whl
- Upload date:
- Size: 17.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/50.3.2 requests-toolbelt/0.9.1 tqdm/4.50.2 CPython/3.8.6
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | e33ecc135d06e502b127b08a888984dfb3696fc1c7a79390899715ed31d0b79b |
|
MD5 | 31cea0ae2a7685a872e0bafc3052ca7c |
|
BLAKE2b-256 | 06beafe0a50857f3fda041f602084d25a65e3ef0a6f519af3e7c0eb07eaf251e |