Skip to main content

Module for reading configuration files

Project description

Overview

This is a module for reading configuration files.

Currently, the module only supports YAML-formatted files.

Features:

  • Retrieve deeply nested values using dot notation, e.g. section1.key1
  • Retrieve values using wildcards, e.g. section1.*.key2
  • Configuration files can be templated (Jinja)

Prerequisites:

  • Python 3.7+

Installation

  • From pypi: pip3 install btconfig
  • From this git repo: pip3 install git+https://github.com/berttejeda/bert.config.git
    Note: To install a specific version of the library from this git repo,
    suffix the git URL in the above command with @{ tag name }, e.g.:
    git+https://github.com/berttejeda/bert.config.git@3.0.0

Usage Examples

Load a configuration file and retrieve specified key value

Given:

  • Config file at /home/myuser/myconfig.yaml
  • with contents:
section1:
  key1: value1
  key2: value2
  key3: value3
from btconfig import Config
# Initialize App Config
config = Config(config_file_uri='~/myconfig.yaml').read()
value = config.get('section1.key')
print(value)

The above should return value1

Load a configuration file and retrieve a deeply nested value

Given:

  • Config file at /home/myuser/myconfig.yaml
  • with contents:
section1:
  subsection1:
    item1:
      subitem1: value1
    item2: value2
    item3: value3
  subsection2:
    item1: value1
    item2: value2
    item3: value3
  key1: value1
  key2: value2
  key3: value3
section2:
  item1: value1
from btconfig import Config
# Initialize App Config
config = Config(config_file_uri='~/myconfig.yaml').read()
value = config.get('section1.subsection1.item2')
print(value)

The above should return value2

Load a configuration file and retrieve specified key value using wildcard notation

Given:

  • Config file at /home/myuser/myconfig.yaml
  • with contents:
section1:
  subsection1:
    item1:
      subitem1: value1
    item2: value2
    item3: value3
  subsection2:
    item1: value1
    item2: value2
    item3: value3
  key1: value1
  key2: value2
  key3: value3
section2:
  item1: value1
from btconfig import Config
# Initialize App Config
config = Config(config_file_uri='~/myconfig.yaml').read()
value = config.get('section1.*.item1')
print(value)

The above should return [{'subitem1': 'value1'}, 'value1']

Note: When retrieving values via wildcard, the return value is a list object.

Load a configuration file as a python object

Same as the above examples, just invoke the Config object with as_object=True, as with config = Config('~/myconfig.yaml', as_object=True).read()

In this case, retrieving values from the object can be done via dot-notation, as with: print(config.section1.subsection1.item2), or via get method, as with print(settings.section1.subsection1.item2)

Note: This approach does not support retrieving values via wildcard reference.

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

btconfig-6.0.0.tar.gz (7.7 kB view details)

Uploaded Source

Built Distribution

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

btconfig-6.0.0-py3-none-any.whl (7.3 kB view details)

Uploaded Python 3

File details

Details for the file btconfig-6.0.0.tar.gz.

File metadata

  • Download URL: btconfig-6.0.0.tar.gz
  • Upload date:
  • Size: 7.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.9.6

File hashes

Hashes for btconfig-6.0.0.tar.gz
Algorithm Hash digest
SHA256 d511dc7d558559295255e252c547d442de86fae25416ef223ed874879f673566
MD5 730cd103322162d9557bea597f653c07
BLAKE2b-256 cbafb01682548090ca3bf7144f7a8925b9d804bffc0366e3ccbcb86c102aef21

See more details on using hashes here.

File details

Details for the file btconfig-6.0.0-py3-none-any.whl.

File metadata

  • Download URL: btconfig-6.0.0-py3-none-any.whl
  • Upload date:
  • Size: 7.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.9.6

File hashes

Hashes for btconfig-6.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 f45376f7e988d1c7081803c3b6849cce9a6daf6b45dc5d37a8a8bf5959c6b9c6
MD5 4891efd8200d7299d9c7ebb5c9c55b1e
BLAKE2b-256 25553bc0ba197c9d4bd1e17e33eed698d785fa624e964b2ff0ad598b0549ef8c

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