Skip to main content

A pure-Python libconfig reader/writer with permissive license

Project description

libconf is a pure-Python reader/writer for configuration files in libconfig format, which is often used in C/C++ projects. It’s interface is similar to the json module: the four main methods are load(), loads(), dump(), and dumps().

Example usage:

import io, libconf
>>> with io.open('example.cfg') as f:
...     config = libconf.load(f)
>>> config
{'capabilities': {'can-do-arrays': [3, 'yes', True],
                  'can-do-lists': (True,
                                   14880,
                                   ('sublist',),
                                   {'subgroup': 'ok'})},
 'version': 7,
 'window': {'position': {'h': 600, 'w': 800, 'x': 375, 'y': 210},
            'title': 'libconfig example'}}

>>> config['window']['title']
'libconfig example'
>>> config.window.title
'libconfig example'

>>> print(libconf.dumps({'size': [10, 15], 'flag': True}))
flag = True;
size =
[
    10,
    15
];

The data can be accessed either via indexing (['title']) or via attribute access .title.

Character encoding and escape sequences

The recommended way to use libconf is with Unicode objects (unicode on Python2, str on Python3). Input strings or streams for load() and loads() should be Unicode, as should be all strings contained in data structures passed to dump() and dumps().

In load() and loads(), escape sequences (such as \n, \r, \t, or \xNN) are decoded. Hex escapes (\xNN) are mapped to Unicode characters U+0000 through U+00FF. All other characters are passed though as-is.

In dump() and dumps(), unprintable characters below U+0080 are escaped as \n, \r, \t, \f, or \xNN sequences. Characters U+0080 and above are passed through as-is.

Comparison to other Python libconfig libraries

Pylibconfig2 is another pure-Python libconfig reader. It’s API is based on the C++ interface, instead of the Python json module. It’s licensed under GPLv3, which makes it unsuitable for use in a large number of projects.

Python-libconfig is a library that provides Python bindings for the libconfig++ C++ library. While permissively licensed (BSD), it requires a compilation step upon installation, which can be a drawback.

I wrote libconf (this library) because both of the existing libraries didn’t fit my requirements. I had a work-related project which is not open source (ruling out pylibconfig2) and I didn’t want the deployment headache of python-libconfig. Further, I enjoy writing parsers and this seemed like a nice opportunity :-)

Release notes

  • 1.0.1, released on 2017-01-06

    • Drastically improve performance when reading larger files

    • Several smaller improvements and fixes

  • 1.0.0, released on 2016-10-26:

    • Add the ability to write libconf files (dump() and dumps(), thanks clarkli86 and eatsan)

    • Several smaller improvements and fixes

  • 0.9.2, released on 2016-09-09:

    • Fix compatibility with Python versions older than 2.7.6 (thanks AnandTella)

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

libconf-1.0.1.tar.gz (12.5 kB view details)

Uploaded Source

Built Distribution

libconf-1.0.1-py2.py3-none-any.whl (11.1 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file libconf-1.0.1.tar.gz.

File metadata

  • Download URL: libconf-1.0.1.tar.gz
  • Upload date:
  • Size: 12.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for libconf-1.0.1.tar.gz
Algorithm Hash digest
SHA256 6dd62847bb69ab5a09155cb8be2328cce01e7ef88a35e7c37bea2b1a70f8bd58
MD5 d37d355b3248f99802c46669ba38e406
BLAKE2b-256 7c70e7780ef82bf2ee05a74f192083209139cd5a75404c6d5ff5c26ef1f20a93

See more details on using hashes here.

Provenance

File details

Details for the file libconf-1.0.1-py2.py3-none-any.whl.

File metadata

File hashes

Hashes for libconf-1.0.1-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 06a7107729bce8df985cd98f5ca5c65e3238893252e9ae3c2aae6b7b71fc8c83
MD5 99621cbeeb14872f29a4b5d7883569a2
BLAKE2b-256 bf2aeebafba3819655fcfd03ce1fdee53726139eb30339b2db7ade29a75eb01f

See more details on using hashes here.

Provenance

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