Configuration proxy that enables specifying both source json path and / or environmental variable in order to get configuration value
Project description
config-proxy
This is a Python module that enables you to setup paths for both json configuration and configuration from env variables.
It automatically looks into environmental variables and either uses its value, or looks it up in json configuration file or falls back to default.
Install
Either clone from this repository or use pip
/ poetry
like so:
Via pip
pip install config-proxy
Using poetry
poetry add config-proxy
Usage
Basic usage
If your configuration file is either called config.json
and is expected in the current working directory or its location is set using CONFIG_PATH
environmental variable, the usage is fairly easy:
config.json
{
"database": {
"host": "mydbhost.databases.com"
}
}
main.py
from config_proxy import StringProperty
database_host = StringProperty(path="database.host", env="DATABASE_HOST", default="localhost")
print(database_host.value)
$ python main.py
mydbhost.databases.com
$ DATABASE_HOST="overridden.database.com" python main.py
overridden.database.com
Advanced usage
If you want to specify configuration file path and customize env variable that stores the path, you have to extend the ConfigProxy
class and overload attributes you wish to change.
my-special-config.json
{
"database": {
"host": "mydbhost.databases.com"
}
}
custom.py
from config_proxy import ConfigProxy as _ConfigProxy, StringProperty
class ConfigProxy(_ConfigProxy):
env_location = "ENV_VARIABLE_THAT_CONTAINS_MY_CONFIG_PATH"
config_file_names = ["my-special-config.json"]
Please note, that StringProperty
now does not know it should use your subclass instead, do not forget to specify it when creating the property:
database_host = StringProperty(path="database.host", env="DATABASE_HOST", default="localhost", proxy=ConfigProxy)
print(database_host.value)
If you want to specify a custom config file, you can use:
$ ENV_VARIABLE_THAT_CONTAINS_MY_CONFIG_PATH="/actual/path/to/my/config.json" python custom.py
mydbhost.databases.com
Project details
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 config-proxy-0.1.5.tar.gz
.
File metadata
- Download URL: config-proxy-0.1.5.tar.gz
- Upload date:
- Size: 4.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.1.4 CPython/3.9.1 Linux/5.9.12
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2cd19f88fa25c4674dbf12dc5902089b026fda2d4a3f007f6d4c552319e1fb1f |
|
MD5 | f42bcb7cba2086973ba98533037f0e60 |
|
BLAKE2b-256 | b2d03456faa06e5fb22126a0352ab0c1abaff39237767fe10de1db7f1e2794f7 |
File details
Details for the file config_proxy-0.1.5-py3-none-any.whl
.
File metadata
- Download URL: config_proxy-0.1.5-py3-none-any.whl
- Upload date:
- Size: 4.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.1.4 CPython/3.9.1 Linux/5.9.12
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | aba9cb46083ce7825b35ecffd9da5d5e7c2946cc985d874a520ed84909930b3b |
|
MD5 | a0c23e6c93a1a5d955144d55b76947ea |
|
BLAKE2b-256 | a1efed80d626f9c177de5273285931b04b2986382bbb915ebe04c0cecc7ad043 |