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.2.tar.gz (163.3 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.2-py3-none-any.whl (97.2 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: erbsland_conf-1.0.2.tar.gz
  • Upload date:
  • Size: 163.3 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.2.tar.gz
Algorithm Hash digest
SHA256 04c23e7b4eb9c31effc6ab6580471063e67e1d96af0b5a62130d3665f856214f
MD5 a505f526ed860004f28e69df4254e99c
BLAKE2b-256 221f1ae984d492ff4ce0e14b42026e004a239d89be3c2d3b507feb0fa9812e46

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: erbsland_conf-1.0.2-py3-none-any.whl
  • Upload date:
  • Size: 97.2 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.2-py3-none-any.whl
Algorithm Hash digest
SHA256 1d2ee88dab14df54cf88076c7589db421ae63fff9c3c05f82ec06a80fdfd236b
MD5 e374a276094600a70681341afc8a9e4d
BLAKE2b-256 72d882da6e3af7850aae4afb8293aecea5dc63a11c2f91e58ba4c1d45089b0d5

See more details on using hashes here.

Provenance

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