Skip to main content

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

config-proxy-0.1.5.tar.gz (4.7 kB view details)

Uploaded Source

Built Distribution

config_proxy-0.1.5-py3-none-any.whl (4.6 kB view details)

Uploaded Python 3

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

Hashes for config-proxy-0.1.5.tar.gz
Algorithm Hash digest
SHA256 2cd19f88fa25c4674dbf12dc5902089b026fda2d4a3f007f6d4c552319e1fb1f
MD5 f42bcb7cba2086973ba98533037f0e60
BLAKE2b-256 b2d03456faa06e5fb22126a0352ab0c1abaff39237767fe10de1db7f1e2794f7

See more details on using hashes here.

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

Hashes for config_proxy-0.1.5-py3-none-any.whl
Algorithm Hash digest
SHA256 aba9cb46083ce7825b35ecffd9da5d5e7c2946cc985d874a520ed84909930b3b
MD5 a0c23e6c93a1a5d955144d55b76947ea
BLAKE2b-256 a1efed80d626f9c177de5273285931b04b2986382bbb915ebe04c0cecc7ad043

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page