Skip to main content

Self-conscious items of configuration in Python

Project description

Self-conscious items of configuration in Python.

https://travis-ci.org/jbasko/configmanager.svg?branch=master

Interface Status

This is being actively tested before the public interface gets finalised. Any code reviewers welcome!

Public methods of Config and Item classes that don’t start with cm__ aren’t expected to change.

Features

  • Manager of configuration items when they have to be more than just key-value pairs.
  • Configuration is organised into sections which contain items and other sections.
  • Every configuration item is an object which knows its type, default value, custom value, the section it has been added to, whether it is required.
  • Configuration item and section classes are designed for extension: easy to implement things like value override via environment variables, command-line prompt message to ask for a missing value, custom type conversions, etc.
  • INI format file support through ConfigParser integration
  • JSON format file support
  • Easy to add YAML and any other dictionary-like format support

Quick Tour

More documentation at http://pythonhosted.org/configmanager

from configmanager import Config, Item

# Declare defaults (or load from a file)
config = Config({
    'uploads': {
        'threads': 1,  # type will be set to int
        'tmp_dir': Item(required=True),
    },
})

# Load customisation
config.configparser.read('user-config.ini')
>>> config.uploads.threads.value = '5'  # attribute-based access to any section or item, type conversion
>>> config.uploads.threads.value
5
>>> config['uploads']['threads'].value  # key-based access is fine too
5

>>> config.uploads.tmp_dir.has_value
False
>>> config.uploads.tmp_dir.get('/tmp')  # when an item has no default and you want to supply a fallback
'/tmp'
>>> config.uploads.tmp_dir.set('/tmp/uploads')  # if there is a get, there must be set!
>>> config.uploads.tmp_dir.default
'/tmp'
>>> config.uploads.tmp_dir.is_default
False

>>> config.to_dict()
{
    'uploads': {
        'threads': 5,
        'tmp_dir': '/tmp/uploads',
    }
}
>>> config.reset()
>>> config.to_dict()
{}

>>> config.uploads.read_dict({'threads': '2'})
>>> config.uploads.to_dict(with_defaults=False)
{'threads': 2}

>>> config.to_dict(with_defaults=False)
{
    'uploads': {
        'threads': 2
    }
}

>>> config.uploads.db = Config({'user': 'root'})
>>> config.uploads.db.user.value
'root'

>>> new_config = Config({'legacy': config})
>>> new_config.legacy.uploads.db.user.value
'root'

Project details


Release history Release notifications

History Node

1.34.0

History Node

1.32.1

History Node

1.32.0

History Node

1.31.0

History Node

1.30.0

History Node

1.29.2

History Node

1.29.1

History Node

1.29.0

History Node

1.28.0

History Node

1.27.0

History Node

1.26.2

History Node

1.26.0

History Node

1.25.0

History Node

1.24.3

History Node

1.24.2

History Node

1.24.1

History Node

1.24.0

History Node

1.23.0

History Node

1.20.1

History Node

1.20.0

History Node

1.19.0

History Node

1.18.0

History Node

1.17.0

History Node

1.16.0

History Node

1.15.0

History Node

1.14.4

History Node

1.14.3

History Node

1.14.2

History Node

1.14.1

History Node

1.14.0

History Node

1.13.0

History Node

1.12.1

History Node

1.12.0

History Node

1.11.2

History Node

1.11.1

History Node

1.11.0

History Node

1.10.0

History Node

1.9.1

History Node

1.9.0

History Node

1.8.7

History Node

1.8.6

History Node

1.8.5

History Node

1.8.4

History Node

1.8.3

History Node

1.8.2

History Node

1.8.1

History Node

1.7.0

History Node

1.6.2

History Node

1.6.1

History Node

1.6.0

History Node

1.5.4

History Node

1.5.3

History Node

1.5.2

History Node

1.5.1

History Node

1.5.0

History Node

1.4.0

History Node

1.3.0

This version
History Node

1.2.0

History Node

1.1.14

History Node

1.1.13

History Node

1.1.12

History Node

1.1.0

History Node

1.0.0

History Node

0.0.24

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Filename, size & hash SHA256 hash help File type Python version Upload date
configmanager-1.2.0.tar.gz (21.6 kB) Copy SHA256 hash SHA256 Source None May 19, 2017

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging CloudAMQP CloudAMQP RabbitMQ AWS AWS Cloud computing Fastly Fastly CDN DigiCert DigiCert EV certificate StatusPage StatusPage Status page