Skip to main content

Trafaret Config

Status:

Stable

Documentation:

http://trafaret-config.readthedocs.io/

This is a wrapper that loads yaml and checks config using trafaret while keeping track of actual lines of file where error has happened. Additionally, it can pretty print the error.

Basic Usage:

import argparse
import trafaret
from trafaret_config import commandline

TRAFARET = trafaret.Dict({'x': trafaret.String()})

def main():
    ap = argparse.ArgumentParser()
    commandline.standard_argparse_options(ap, default_config='config.yaml')
    #
    # define your command-line arguments here
    #
    options = ap.parse_args()
    config = commandline.config_from_options(options, TRAFARET)
    pprint.pprint(config)

Example output when there is an error in config (from a example.py which has better trafaret than example above):

bad.yaml:3: smtp.port: value can't be converted to int
  -> 'unknown'
bad.yaml:4: smtp.ssl_port: value can't be converted to int
  -> 'NaN'
bad.yaml:5: port: value can't be converted to int
  -> '???'

Help looks like this:

usage: example.py [-h] [-c CONFIG] [--print-config] [--print-config-vars] [-C]

optional arguments:
  -h, --help            show this help message and exit
  -c CONFIG, --config CONFIG
                        Configuration file (default: 'config.yaml')
  --print-config        Print config as it is read after parsing and exit
  --print-config-vars   Print variables used in configuration file
  -C, --check-config    Check configuration and exit

Since trafaret-config 2.0 environment variables in the config are replaced by default, this means that config like this:

url: http://${HOST}:$PORT/

Will get HOST and PORT variables insert from the environment, and if variable does not exist, you will get the following error:

config.yaml:2: variable 'PORT' not found
  -> 'http://${HOST}:$PORT/'

Low-level interface, without relying on argparse:

import sys
import trafaret
from trafaret_config import ConfigError, read_and_validate

TRAFARET = trafaret.Dict({'x': trafaret.String()})

try:
    config = read_and_validate('config.yaml', TRAFARET)
except ConfigError as e:
    e.output()
    sys.exit(1)

Installation

pip install trafaret-config==2.0.2

License

Licensed under either of

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

Metadata

Release files for trafaret-config 2.0.2

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

Source distribution (sdist)

Source distribution for trafaret-config 2.0.2
File Size Uploaded
trafaret-config-2.0.2.tar.gz 6.2 kB Details

Release files / trafaret-config-2.0.2.tar.gz

Download URL trafaret-config-2.0.2.tar.gz
Size 6.2 kB
Tags Source
SHA-256 checksum
How to use checksums
440b6b49e5e975f9a640a2519abb2feddd96eb2aeb1715f87f947a7a079f20be
BLAKE2b-256 checksum
How to use checksums
086e4072cf1e3e04b703911c36603c08efc030d0b1b19bf2ad9c1e0fff691097
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/1.11.0 pkginfo/1.4.2 requests/2.19.1 setuptools/40.2.0 requests-toolbelt/0.8.0 tqdm/4.26.0 CPython/3.6.3

Release history Release notifications | RSS feed

This release

2.0.2 This release

1 release file

2.0.1

1 release file

2.0.0

1 release file

1.0.1

1 release file

1.0.0

1 release file

0.1.1

1 release file

0.1.0

1 release file

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