Skip to main content

A native Python parser for the Erbsland Configuration Language (ELCL)

Project description

Erbsland Configuration Parser for Python

Welcome to the implementation of the Erbsland Configuration Language Parser—a modern and robust configuration parser built for Python 3.12 and beyond. This implementation is designed to be secure, minimal in dependencies, and easy to integrate into your existing projects.

All you need is a Python 3.12 or newer – there are no external dependencies, no hassle.

Project Status

  • Fully implements the Erbsland Configuration Language.
  • Thoroughly tested and stable for use in productive development.
  • The API is stable.
  • The documentation covers the most important features.

Installation

pip install erbsland-conf

Quick Start

Minimal Example:

import erbsland.conf as elcl
doc = elcl.load("config.elcl")
print(doc.get_int("server.port"))

A More Realistic Example:

import erbsland.conf as elcl

def parse_configuration(file_name: str):
    doc = elcl.load(file_name)
    # Access required values and check the type.
    server_name = doc.get_text("main.server.name")
    # Provide a default if the value is optional.
    port = doc.get_int("main.server.port", default=8080)
    # Iterating over section lists naturally.
    for client_value in doc["client"]:
        name = client_value.get_text("name")
        ip = client_value.get_text("ip")
        port = client_value.get_int("port", default=9000)

        # Reading values from optional sections.
        if filter_value := client_value.get("filter", default=None):
            # Requiring lists of specific types.
            keywords = filter_value.get_list("keywords", str)
            # ...
        # ...
    # ...

def main():
    try:
        parse_configuration("quick-intro.elcl")
        # ... running the application ...
        exit(0)
    except elcl.Error as e:
        print("Error reading the configuration.")
        print(e.to_text(elcl.ErrorOutput.FILENAME_ONLY | elcl.ErrorOutput.USE_LINES))
        exit(1)

if __name__ == "__main__":
    main()

Documentation

Please read the documentation for more information about the parser and its features:

👉 Erbsland Configuration Parser Documentation

About the Erbsland Configuration Language

The Erbsland Configuration Language is a human-friendly format designed for writing clear and structured configuration files. It combines a strict, well-defined syntax with flexibility in formatting, making configurations easier to read and maintain.

Here’s an example of a configuration file in a more descriptive style:

# Comments are allowed almost everywhere.
---[ Main Settings ] -------------------- # A section 
App Name : "ELCL Demo"                    # Name-Value Pair with Text Value
Version  : 1                              # Name-Value Pair with Integer Value

And the same data in a minimal style:

[main_settings] 
app_name: "ELCL Demo"
version: 1

Supported data types include text, integer, floating-point, boolean, date, time, datetime, time-delta, regular expressions, code, and byte sequences. These can be grouped into sections, nested via name paths, or organized into lists.

A detailed language specification is available here:

👉 Erbsland Configuration Language Documentation

Requirements

  • Python 3.12 or newer.

License

Copyright © 2025 Tobias Erbsland / Erbsland DEV – https://erbsland.dev/

Licensed under the Apache License, Version 2.0. You may obtain a copy at: http://www.apache.org/licenses/LICENSE-2.0 Distributed on an “AS IS” basis, without warranties or conditions of any kind. See the LICENSE file for full details.

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

erbsland_conf-1.0.8.tar.gz (163.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

erbsland_conf-1.0.8-py3-none-any.whl (98.8 kB view details)

Uploaded Python 3

File details

Details for the file erbsland_conf-1.0.8.tar.gz.

File metadata

  • Download URL: erbsland_conf-1.0.8.tar.gz
  • Upload date:
  • Size: 163.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.13

File hashes

Hashes for erbsland_conf-1.0.8.tar.gz
Algorithm Hash digest
SHA256 e9bd90c89cfe76dcc0e021d769f27fded24c606a867540233164123dd67e36ff
MD5 02264e7a8d7e47a6a556de6d65c07241
BLAKE2b-256 9448d24d95db6dc2471824251c78d70308e8edaff30cec6b480ff276a6637520

See more details on using hashes here.

Provenance

The following attestation bundles were made for erbsland_conf-1.0.8.tar.gz:

Publisher: publish.yml on erbsland-dev/erbsland-py-conf

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file erbsland_conf-1.0.8-py3-none-any.whl.

File metadata

  • Download URL: erbsland_conf-1.0.8-py3-none-any.whl
  • Upload date:
  • Size: 98.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.13

File hashes

Hashes for erbsland_conf-1.0.8-py3-none-any.whl
Algorithm Hash digest
SHA256 cb51192079f1210e85bbc34fe8260e03e69e040ee2bef69a6430f0b472f162bd
MD5 4239233c0850fbafe378ebdfdbe6c3ee
BLAKE2b-256 b464cf6c33b60aa84aa6d557ba81786972e8eeac6b370391be0e491b85b415b3

See more details on using hashes here.

Provenance

The following attestation bundles were made for erbsland_conf-1.0.8-py3-none-any.whl:

Publisher: publish.yml on erbsland-dev/erbsland-py-conf

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page