Skip to main content

The tiny opinionated config loader.

Project description

NanoConf

NanoConf is a tiny, opinionated, and easy to use configuration library for Python. It is designed to be used in small to medium sized projects where a full blown configuration library is overkill.

Installation

pip install nanoconf

Usage

from nanoconf import NanoConf
# or if NanoConf if too long of a name
from nanoconf import NC

# Create a new configuration object
config = NanoConf("/path/to/config.nconf")

# Use the configuration object
print(config["key"])
# Since all values are also loaded as attributes, you can also do
print(config.key)

Configuration File Format

NanoConf uses a simple configuration file format that is easy to read and write. Each File is YAML formatted and contains a single top-level dictionary. Even though the top-level must be a dictionary, you can nest dictionaries and lists as deep as you want. Each config file also must have the .nconf extension. This ensures that NanoConf will only load files that are meant to be configuration files.

key: value
test: 1
overriden: false
things:
    - thing1
    - thing2
    - thing3
top:
    v1: 1
    middle:
        v2: 2
        inner:
            v3: 3
            deep:
                v4: 4

If you have multiple config files you want to load into a single config object, you can put them all in the same directory and pass that directory to NanoConf. NanoConf will automatically place sub-files by their filename as an attribute of the parent file. The contents of that file will be accessible as you'd expect under the corresponding filename attribute.

<project root>
conf_dir
  |__ cfg1.nconf
  |__ cfg2.nconf
  |__ cfg3.nconf
# load an entire directory
proj_config = NanoConf("/path/to/conf_dir")
print(proj_config.cfg1.test)

Or you can import additional files or directories from within any config file by using the _import keyword.

# main.nconf
_import:
    - /path/to/project/more_config
key: value
test: 1
<project root>
main.nconf
more_config
  |__ subcfg1.nconf
  |__ subcfg2.nconf
  |__ subcfg3.nconf
# loading the main config file will also load the sub-configs
proj_config = NanoConf("/path/to/project/main.nconf")
print(proj_config.more_config.subcfg1.test)

Notice how the directory structure was also maintained in the attribute path. This makes it easier to find the file that a value came from.

Environment Variables

NanoConf supports environment variables either as overrides to existing values or as additions to the loaded config. Envars are evaluated on a per-file basis, so you can have different envars for different config files. The way we manage this is by having a special _envar_prefix key in the config file. Note: NanoConf will not modify the case of any environment varable name or value. It is up to you to ensure that the case is correct.

_envar_prefix: myapp
key: value
overrideme: original
export myapp_overrideme=changed
config = NanoConf("/path/to/config.nconf")
print(config.overrideme)

You can also pass complex data structures as JSON strings in environment variables.

export myapp_abc='{"a": 1, "b": 2, "c": 3}'
config = NanoConf("/path/to/config.nconf")
print(config.abc.b)

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

nanoconf-1.0.0.tar.gz (6.9 kB view details)

Uploaded Source

Built Distribution

nanoconf-1.0.0-py3-none-any.whl (3.9 kB view details)

Uploaded Python 3

File details

Details for the file nanoconf-1.0.0.tar.gz.

File metadata

  • Download URL: nanoconf-1.0.0.tar.gz
  • Upload date:
  • Size: 6.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.6

File hashes

Hashes for nanoconf-1.0.0.tar.gz
Algorithm Hash digest
SHA256 b196caa30674ed94470137d1918e0c35fdce7b9ca9a98ba362c32e6191c7e7e2
MD5 4eb0bc2eb2c016737bb474ea5b43dfeb
BLAKE2b-256 2107af04f1aa914266a472cde6a8f4b9a6d9fe70622f6bc0da86c1b323ad92ce

See more details on using hashes here.

File details

Details for the file nanoconf-1.0.0-py3-none-any.whl.

File metadata

  • Download URL: nanoconf-1.0.0-py3-none-any.whl
  • Upload date:
  • Size: 3.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.6

File hashes

Hashes for nanoconf-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 f4846b1aa0bab538418d552e2cfd6b8210d1e73368c044f2d4aef921f112ef01
MD5 c039c84868de01c681231e91d3e13058
BLAKE2b-256 eba31f8d53a1d016b479ef0f6a185ad745c4f1beb44b56afcca56e46468b7743

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