Skip to main content

Gen3 Configuration Library

Project description

gen3config

Handle YAML configurations with a given default/expected configuration. Library will overlay a provided configration over the default and ignore unknown values.

Quickstart

Example config-default.yaml for your application:

---
SOME_VALUE: 'default'

EXAMPLE:
    nested:
        key: 'value'
        is_boolean: true

Example config.py in your application:

from gen3config import Config

class AppConfig(Config):
    def __init__(self, *args, **kwargs):
        super(AppConfig, self).__init__(*args, **kwargs)

    def post_process(self):
        # do custom stuff here after parsing config
        pass

default_cfg_path = os.path.join(
    os.path.dirname(os.path.abspath(__file__)), "config-default.yaml"
)

config = AppConfig(default_cfg_path)

Now we want to get a specific configuration.

Example file ~/path/to/app-config.yaml:

SOME_VALUE: 'app-specific configuration'

EXAMPLE:
    nested:
        is_boolean: true

Example initialization function in your application:

from app.config import config

config.load('~/path/to/app-config.yaml')

Then from other files:

from app.config import config

print(config["SOME_VALUE"])  # 'app-specific configuration'
print(config["EXAMPLE"]["nested"]["key"])  # 'value'

NOTE: config["EXAMPLE"]["nested"]["key"] does not exist in the provided configuration, but it does exist in the default configuration. Therefore, the default value, 'value' is retrieved.

Details:

  • Create a config-default.yaml and config.py in the top-level folder your app
  • Inside config-default.yaml add keys and reasonable default values
  • Inside config.py, create a class that inherits from this Config class
    • See above example
  • Add a final line to your config.py that instantiates your custom class:
    • Ensure that you provide the default config path
      • If placed in same directory as config.py you can use something like:
        default_cfg_path = os.path.join(
            os.path.dirname(os.path.abspath(__file__)), "config-default.yaml"
        )
        config = FenceConfig(default_cfg_path)
        
  • Import your instaniated object whenever you need to get configuration
    • Example: from fence.config import config
  • Load in application configuration during init of your app
    • Example: config.load('path/to/fence-config.yaml')
  • Now you can safely access anything that was in your config-default.yaml from this object as if it were a dictionary
    • Example: storage_creds = config["STORAGE_CREDENTIALS"]
    • Example: if config["SOME_BOOLEAN"]: ...
    • Example: nested_value = config["TOP_LEVEL"]["nested"]
  • And of course you can import that into any file you want and will have access to keys/values
    • Example: from fence.config import config

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

gen3config-2.1.0.tar.gz (9.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

gen3config-2.1.0-py3-none-any.whl (11.5 kB view details)

Uploaded Python 3

File details

Details for the file gen3config-2.1.0.tar.gz.

File metadata

  • Download URL: gen3config-2.1.0.tar.gz
  • Upload date:
  • Size: 9.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.2.1 CPython/3.13.11 Linux/6.11.0-1018-azure

File hashes

Hashes for gen3config-2.1.0.tar.gz
Algorithm Hash digest
SHA256 ef31d679b841ca30cd3c285f720b1701024bb27911d327023d9fb6aa559bdef3
MD5 64633730f275c83abc754d34622f0514
BLAKE2b-256 3e37d082d7288326cfe93062d71e1712977a86b13c929d35fa0ce07f3c79677c

See more details on using hashes here.

File details

Details for the file gen3config-2.1.0-py3-none-any.whl.

File metadata

  • Download URL: gen3config-2.1.0-py3-none-any.whl
  • Upload date:
  • Size: 11.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.2.1 CPython/3.13.11 Linux/6.11.0-1018-azure

File hashes

Hashes for gen3config-2.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 7cb088127eb9598ec954c10e083f50d19f6d7360780f4bbf3344443ce83a27e0
MD5 89a72ce4b218c3a1f21591b5045652a8
BLAKE2b-256 36ba139930a1daad7d29f64a6e55810675f06ee32573c7ae23d3cec99371d02d

See more details on using hashes here.

Supported by

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