Load configs from json files
Project description
ConfJ
Package is used to load config from json files. Path to config can lead either to directory with a bunch of json files, or to a single json file. Contents is parsed and stored into config object, allowing attribute-based access to different options.
Installation
Package can be installed with pip:
pip install confj
Usage
Usage of this utility is very simple: import Config class and load your config
with load method. Path to configs might be set via environment variable
JSON_CONFIG_PATH or passed directly to the load call:
from confj import Config
config = Config()
config.load('/path/to/config')
If path to config is a directory, each file will be available as an attribute
of config object. Otherwise, if path is a file, config object will store
parsed json from given file, allowing access to data via attributes.
Config can be loaded during initialization step, just set autoload parameter
to True. Optionally path to load configs from might be passed during
initialization.
from confj import Config
config = Config(default_config_path='/path/to/config', autoload=True)
After config is loaded, it's options are accessible via attributes of config
object, ot dict-like syntax:
>>> config.username
'user'
>>> config['username']
'user'
>>> config.get('username')
'user'
Config search precedence
- If you directly call
loadmethod withconfig_pathpassed as parameter, then this path is used. - If no
config_pathprovided orautoloadoption was used, thendefault_config_pathfrom initialization step is used. - The last option is to set
JSON_CONFIG_PATHenvironment value. If the search is failed on all three steps, thenConfigExceptionis raised.
Load from python object
Config may be loaded from python object:
from confj import Config
config = Config()
data = {'username': 'user', 'password': 'pass'}
config.load_from_obj(data)
assert config.username == 'username'
assert config.password == 'pass'
Set/change config data
Config data may be changed or added to current config with set method:
from confj import Config
config = Config()
data = {'username': 'user', 'password': 'pass'}
config.load_from_obj(data)
config.set('connection', {'port': 5432, 'host': 'localhost'})
assert config.connetcion.port == 5432
assert config.connection.host == 'localhost'
Available methods
All config object's method names are starting with c_, to avoid possible
clash with possible config options
c_formatreturns pretty formatted sting representing config;c_pprintoutputs formatted config to stdout;c_validatevalidates config against given json schema. SeeValidationsection below.
Validation
Config must be a valid json object, so we can validate it against provided
json schema. To use config validation jsonschema package must be installed.
It might be done as a separate step as
pip install jsonschema
or during confj installation time:
pip install confj[validation]
Then config validation can be done with c_validate method:
from confj import Config
config = Config(default_config_path='/path/to/config', autoload=True)
schema = {"type": "object"}
is_valid = config.c_validate(schema)
By default c_validate will return either True of False. To see actual
validation error just pass do_raise=True as additional parameter, and catch
ValidationError later:
from confj import Config
from jsonschema import ValidationError
config = Config(default_config_path='/path/to/config', autoload=True)
schema = {"type": "object"}
try:
config.c_validate(schema, do_raise=True)
except ValidationError as err:
print(f'Looks like config is invalid: {err}')
To read more on json validation one can at json-schema.org
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
File details
Details for the file confj-0.2.4.tar.gz.
File metadata
- Download URL: confj-0.2.4.tar.gz
- Upload date:
- Size: 5.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/46.1.3 requests-toolbelt/0.9.1 tqdm/4.45.0 CPython/3.7.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
342711edcdab3cd13911c86d54d408c91f8ff18b4dbb00687192796e8e1cf518
|
|
| MD5 |
c1ec383e1173018a195289e4a24e0be1
|
|
| BLAKE2b-256 |
16fbc0dfac5bd5ad7a8dd96e52e63542e6025182f1d93bd9653b6f7651d574be
|