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.3.tar.gz (163.2 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.3-py3-none-any.whl (97.0 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for erbsland_conf-1.0.3.tar.gz
Algorithm Hash digest
SHA256 dff6625b7ee85def002d66818f5d0a146d172650e77d1596029e223507b1e401
MD5 5b9d2d10cbebfc34eecb726d302d4925
BLAKE2b-256 58ee2340869f818c642811e9e696ed2ff07fc4b1ac94b1fc68552e4f8ec059f1

See more details on using hashes here.

Provenance

The following attestation bundles were made for erbsland_conf-1.0.3.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.3-py3-none-any.whl.

File metadata

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

File hashes

Hashes for erbsland_conf-1.0.3-py3-none-any.whl
Algorithm Hash digest
SHA256 5385024da649b8b0751c1ec0c147b4e29a5f6c28195936a71746027c11c24d3a
MD5 ad282d973e127660b1cbaa4016f93b7a
BLAKE2b-256 454b7850a52ec06d31d92ffea2534494f675a6084d3f9aa92d8fe7a7295cc281

See more details on using hashes here.

Provenance

The following attestation bundles were made for erbsland_conf-1.0.3-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