Skip to main content

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.

Release files for btconfig 6.0.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for btconfig 6.0.0
File Size Uploaded
btconfig-6.0.0.tar.gz 7.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for btconfig 6.0.0
File Interpreter ABI Platform
btconfig-6.0.0-py3-none-any.whl Python 3 none any Details

Total release size: 15.0 kB

Release files / btconfig-6.0.0.tar.gz

Download URL btconfig-6.0.0.tar.gz
Size 7.7 kB
Tags Source
SHA-256 checksum
How to use checksums
d511dc7d558559295255e252c547d442de86fae25416ef223ed874879f673566
BLAKE2b-256 checksum
How to use checksums
cbafb01682548090ca3bf7144f7a8925b9d804bffc0366e3ccbcb86c102aef21
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.9.6

Release files / btconfig-6.0.0-py3-none-any.whl

Download URL btconfig-6.0.0-py3-none-any.whl
Size 7.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
f45376f7e988d1c7081803c3b6849cce9a6daf6b45dc5d37a8a8bf5959c6b9c6
BLAKE2b-256 checksum
How to use checksums
25553bc0ba197c9d4bd1e17e33eed698d785fa624e964b2ff0ad598b0549ef8c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.9.6

Release history Release notifications | RSS feed

This release

6.0.0 This release

2 release files

5.1.0

2 release files

5.0.0

2 release files

4.6.3

2 release files

4.6.2

2 release files

4.6.1

2 release files

4.6.0

2 release files

4.5.0

2 release files

4.4.6

2 release files

4.4.5

2 release files

4.4.4

2 release files

4.4.3

2 release files

4.4.2

2 release files

4.4.1

2 release files

4.4.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page