Skip to main content

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

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.

Release history Release notifications | RSS feed

This release

2.1.0 This release

2 files

2.0.0

2 files

1.1.0

1 file

1.0.0

1 file

0.1.9

1 file

0.1.8

1 file

0.1.7

1 file

0.1.6

1 file

0.1.5

1 file

0.1.4

1 file

0.1.3

1 file

0.1.2

1 file

0.1.1

1 file

Supported by

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