Skip to main content

Configuration manager

Project description

Python Package Documentation Status Build Status Code Coverage License

configuration parser.

installation

$ pip install kaptan

Also available as a package on FreeBSD, Debian, Arch Linux and Slackware.

usage

supported handlers

  • dict

  • json

  • yaml

  • .ini

  • python file

default (dict) handler

config = kaptan.Kaptan()
config.import_config({
    'environment': 'DEV',
    'redis_uri': 'redis://localhost:6379/0',
    'debug': False,
    'pagination': {
        'per_page': 10,
        'limit': 20,
    }
})

print config.get("pagination.limit")

# output: 20

json handler

config = kaptan.Kaptan(handler="json")
config.import_config('{"everything": 42}')

print config.get("everything")
# output: 42

yaml handler

config = kaptan.Kaptan(handler="yaml")
config.import_config("""
product:
  price:
    value: 12.65
    currency_list:
      1. TL
      2. EURO
""")
print config.get("product.price.currency_list.0")
# output: TL

or you can get from directly from the filename:

config.import_config("configuration.yaml")

.ini handler

config.ini

[development]
database_uri = mysql://root:123456@localhost/posts

[production]
database_uri = mysql://poor_user:poor_password@localhost/poor_posts
config = kaptan.Kaptan(handler="ini")
config.import_config('config.ini')

print config.get("production.database_uri")
# output: mysql://poor_user:poor_password@localhost/poor_posts

file handler

config.py

DATABASE = 'mysql://root:123456@localhost/posts'
DEBUG = False
PAGINATION = {
    'per_page': 10,
    'limit': 20,
}
config = kaptan.Kaptan(handler="file")
config.import_config('config')

print config.get("DEBUG")
# output: False

exporting configuration

config = kaptan.Kaptan(handler="file")
config.import_config({
    'environment': 'DEV',
    'redis_uri': 'redis://localhost:6379/0',
    'debug': False,
    'pagination': {
        'per_page': 10,
        'limit': 20,
    }
})

print config.export("yaml")

output:

debug: false
environment: DEV
pagination: {limit: 20, per_page: 10}
redis_uri: redis://localhost:6379/0

print config.export("json")

outputs unindented json. .export accepts kwargs which pass into json.dumps.

print config.export("json", indent=4)

output:

{
    "environment": "DEV",
    "debug": false,
    "pagination": {
        "per_page": 10,
        "limit": 20
    },
    "redis_uri": "redis://localhost:6379/0"
}

config.export('yaml') also supports the kwargs for pyyaml.

New in Version 0.5.7: config.export('yaml', safe=True) will use .safe_dump.

cli

exporting (defaults to json)

$ echo "environment: DEV" > config.yaml
$ kaptan config.yaml --export json > config.json
$ cat config.json
{"environment": "DEV"}

getting a value

$ kaptan config.yaml --key environment
DEV

specifying the handler

$ mv config.yaml config.settings
$ kaptan config.settings:yaml --export json
{"environment": "DEV"}

config from stdin

$ echo '{"source": "stdin"}' | kaptan -
{"source": "stdin"}
$ echo 'source: stdin' | kaptan -:yaml
{"source": "stdin"}

merging configs

$ echo "environment: PROD" > config.settings
$ echo '{"source": "stdin"}' | kaptan - config.json config.settings:yaml
{"environment": "PROD", "source": "stdin"}

setting default handler

$ echo "source: stdin" | kaptan --handler yaml - config.settings
{"environment": "PROD", "source": "stdin"}

writing json with yaml

$ kaptan -:yaml -e json
<type yaml here>
<Ctrl + D>
<get json here>

running tests

with py.test:

$ py.test

contributors

see more at https://github.com/emre/kaptan/graphs/contributors.

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

kaptan-0.5.12.tar.gz (10.5 kB view details)

Uploaded Source

File details

Details for the file kaptan-0.5.12.tar.gz.

File metadata

  • Download URL: kaptan-0.5.12.tar.gz
  • Upload date:
  • Size: 10.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/41.0.1 requests-toolbelt/0.9.1 tqdm/4.31.1 CPython/3.7.1

File hashes

Hashes for kaptan-0.5.12.tar.gz
Algorithm Hash digest
SHA256 1abd1f56731422fce5af1acc28801677a51e56f5d3c3e8636db761ed143c3dd2
MD5 a58cba3a3f975d5765ce0befef7d8825
BLAKE2b-256 9464f492edfcac55d4748014b5c9f9a90497325df7d97a678c5d56443f881b7a

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