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

Handles configuration saved as JSON files.

Project description

ConfigViper is a set of Python classes for handling configuration files saved in JSON format. For example:

from configviper import ConfigViper


conf = ConfigViper()
conf.set('spam.ham.eggs', 'sausage')

And the JSON file will looks like:

    "spam": {
        "ham": {
            "eggs": "sausage"


  1. Simple to define default values (avoiding “defaults” everywhere);
  2. Simple to write converters between Python and JSON types (even for complex Python types);
  3. Human editable format (JSON is readable enough);
  4. Portable configuration format (JSON is portable enough);
  5. Easy to add configuration options without destroying existing ones;
  6. Accessible anywhere in the app code (avoiding singleton’s boring discussions);
  7. Small and really simple.


Install ConfigViper using pip install ConfigViper command. If you downloaded the sources from PyPI go to ConfigViper-<version> directory and type python install command. You can also get the sources from BitBucket repository (you will need Mercurial SCM installed on your system):

hg clone

More Documentation

For usage example and more information, please refer to the documentation available on-line.


ConfigViper is licensed under GNU’s LGPL.

Change History

Version 0.1

  • Released 12 march 2012.

Version 0.2

  • Released 18 march 2012;
  • Documentation hosted on PyPI.

Version 0.3

  • Released 14 april 2012;

  • Default config-path separator changed from / to .;

  • Configuration values can be accessed like object attributes:

    # using the get() method
    # or like object attributes

Version 0.3.1

  • Released 18 april 2012;
  • [FIXED] No conversion was happening when config-paths are accessed like object attributes;
  • Only one proxy instance is created when accessing config-paths like object attributes;
  • Some more unit tests added.

Version 0.4

  • Released 25 april 2012;
  • [ADDED] Stop saving (or bulk set) feature;
  • [ADDED] Backup before save with automatic restore on failure (optional).

Version 0.5

  • Released 24 august 2013;
  • [ADDED] Sub-package to support cross-platform file locking based on fcntl on POSIX systems or using ctypes on Windows (no support for 95/98/ME);
  • [ADDED] File lock on write operations;
  • [ADDED] Support for logging;
  • [ADDED] Support for file encodings (or no explicit encoding);
  • [ADDED] Use UTF-8 as default file encoding;
  • [CHANGED] Re-implementation of save operation attempting to minimize concurrent-access issues;
  • [REMOVED] Backup options;

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 ConfigViper, version 0.5
Filename, size File type Python version Upload date Hashes
Filename, size ConfigViper-0.5.tar.gz (39.1 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