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
load
method withconfig_path
passed as parameter, then this path is used. - If no
config_path
provided orautoload
option was used, thendefault_config_path
from initialization step is used. - The last option is to set
JSON_CONFIG_PATH
environment value. If the search is failed on all three steps, thenConfigException
is 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_format
returns pretty formatted sting representing config;c_pprint
outputs formatted config to stdout;c_validate
validates config against given json schema. SeeValidation
section 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 |