Skip to main content

Configuration manager

Project description

kaptan
======

|pypi| |docs| |build-status| |coverage| |license|

configuration parser.

installation
------------

.. code-block:: console

$ 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**

.. code-block:: python

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**

.. code-block:: python

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

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

**yaml handler**

.. code-block:: python

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

.. code-block:: ini

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

[production]
database_uri = mysql://poor_user:poor_password@localhost/poor_posts

.. code-block:: python

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

.. code-block:: python

DATABASE = 'mysql://root:123456@localhost/posts'
DEBUG = False
PAGINATION = {
'per_page': 10,
'limit': 20,
}

.. code-block:: python

config = kaptan.Kaptan(handler="file")
config.import_config('config')

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

exporting configuration
-----------------------

.. code-block:: python

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**:

.. code-block:: yaml

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`.

.. _json.dumps: http://docs.python.org/2/library/json.html#json.dump

.. code-block:: python

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

**output**:

.. code-block:: json

{
"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`_.

.. _kwargs for pyyaml: http://pyyaml.org/wiki/PyYAMLDocumentation#Dumper

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

cli
---

exporting (defaults to json)

.. code-block:: console

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

getting a value

.. code-block:: console

$ kaptan config.yaml --key environment
DEV

specifying the handler

.. code-block:: console

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

config from stdin

.. code-block:: console

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

merging configs

.. code-block:: console

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

setting default handler

.. code-block:: console

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

writing json with yaml

.. code-block:: console

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

running tests
-------------

with ``py.test``:

.. code-block:: console

$ py.test

contributors
------------

- `Cenk Altı <http://github.com/cenkalti>`_
- `Wesley Bitter <http://github.com/Wessie>`_
- `Mark Steve <http://github.com/marksteve>`_
- `Tony Narlock <http://github.com/tony>`_
- `Berker Peksag <http://github.com/berkerpeksag>`_
- `Pradyun S. Gedam <https://github.com/pradyunsg>`_

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

.. |pypi| image:: https://img.shields.io/pypi/v/kaptan.svg
:alt: Python Package
:target: http://badge.fury.io/py/kaptan

.. |build-status| image:: https://img.shields.io/travis/emre/kaptan.svg
:alt: Build Status
:target: https://travis-ci.org/emre/kaptan

.. |coverage| image:: https://codecov.io/gh/emre/kaptan/branch/master/graph/badge.svg
:alt: Code Coverage
:target: https://codecov.io/gh/emre/kaptan

.. |license| image:: https://img.shields.io/github/license/emre/kaptan.svg
:alt: License

.. |docs| image:: https://readthedocs.org/projects/kaptan/badge/?version=latest
:alt: Documentation Status
:scale: 100%
:target: https://readthedocs.org/projects/kaptan/

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.10.tar.gz (10.1 kB view details)

Uploaded Source

File details

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

File metadata

  • Download URL: kaptan-0.5.10.tar.gz
  • Upload date:
  • Size: 10.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for kaptan-0.5.10.tar.gz
Algorithm Hash digest
SHA256 44df200d030975650a3a832c13b48cafdeb1a237b23de181d6a2346107e39da3
MD5 d8c9eab27e915b9aae5b65fdb7b0e834
BLAKE2b-256 521f1faa2c65aabaf685725586fc2c19b3b8bc70d2aa0eea39d480d2e4a55077

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