Skip to main content
Join the official 2019 Python Developers SurveyStart the survey!

Programmatic configuration library for Python 3.

Project description


Build Status PyPI version PyPI DailyDownloads Coverage Status

What is ConfigMaster?

ConfigMaster is a simple library for accessing config files programmatically. No longer will you have to mess with list lookups and dict lookups when you wish to load a config file.
Instead, objects in the file are accessed as simple class attributes.

What is supported

ConfigMaster supports the following formats built-in:

  • YAML Config Files (through the PyYAML module)
  • JSON Config Files (through json)
  • INI Config Files (through ConfigParser)
  • Networked versions of YAML/JSON files.

Support for different types of config files grows all the time - feel free to fork and add support!


  • [STRIKEOUT:Add in support for python ConfigParser formats] Added in version 1.4.0
  • [STRIKEOUT:Add in networked JSON support] Added in version 1.3.0
  • Add more docstrings
  • Make proper documentation
  • [STRIKEOUT:Add tests] Added in version 1.3.1

How to install

For the latest stable version uploaded to PyPI, use:
pip install configmaster
For the latest stable version uploaded to git, use:
pip install git+ssh://
For the latest dev version, use:
pip install git+ssh://

After installing, running the tests is recommended.

py.test -rfEsxXw -v --strict

How to use

ConfigMaster handles everything for you. Simply specify the location of your file, and the values will be automatically loaded for you.

>>> from configmaster import YAMLConfigFile
>>> cfg = YAMLConfigFile.YAMLConfigFile("test.yml") # Created automatically if it doesn't exist

Networked config files are supported too.

>>> from configmaster import JSONConfigFile
>>> cfg = JSONConfigFile.NetworkedJSONConfigFile("")

To access config values, get the attribute you want from the config object stored.

# YAML data is {"a": 1, "b": [1, 2], "c": {"d": 3}}
>>> cfg.config.a
>>> cfg.config.b[1]
>>> cfg.config.c.d

To populate your config data, just pass a dict to initial_populate. If the file is empty, this gives it default values, and returns True. If it isn’t, nothing happens. Note: This will fail with an exc.NetworkedFileException on networked files!

>>> pop = cfg.initial_populate({"a": 1, "b": [1, 2], "c": {"d": 3})
>>> if pop: cfg.dump() and cfg.reload() # Dump data and reload from disk.

To save your data, run .dump().

>>> cfg.dump()

Have a networked file that you need to save? Use the method save_to_file.

>>> cfg.save_to_file("example.json")

Need to get the raw dict form of a ConfigKey? Use .dump() on that!

>>> cfg.config.dump()
{"a": 1, "b": [1, 2], "c": {"d": 3}
>>> cfg.config.c.dump()
{"d": 3}

Project details

Download files

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

Files for ConfigMaster, version 2.3.6
Filename, size File type Python version Upload date Hashes
Filename, size ConfigMaster-2.3.6-py3.2.egg (24.6 kB) File type Egg Python version 3.2 Upload date Hashes View hashes
Filename, size ConfigMaster-2.3.6-py3.3.egg (25.0 kB) File type Egg Python version 3.3 Upload date Hashes View hashes
Filename, size ConfigMaster-2.3.6-py3.4.egg (24.7 kB) File type Egg Python version 3.4 Upload date Hashes View hashes
Filename, size ConfigMaster-2.3.6-py3.5.egg (24.7 kB) File type Egg Python version 3.5 Upload date Hashes View hashes
Filename, size ConfigMaster-2.3.6.tar.gz (8.8 kB) File type Source Python version None Upload date Hashes View hashes

Supported by

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