Skip to main content

A library for parsing configuration files, including .env, .ini, .yaml, .json, .toml, and .xml formats.

Project description

 _                    _          _
| |    ___   __ _  __| |   __  _| |
| |   / _ \ / _` |/ _` |   \ \/ / |
| |__| (_) | (_| | (_| |    >  <| |
|_____\___/ \__,_|\__,_|   /_/\_\_|

   Configuration Parser Extraordinaire

load_xl

PyPI version License: MIT Python Versions

load_xl is a versatile Python library for parsing various configuration file formats, including .env, .ini, .yaml, .json, .toml, and .xml. It provides a unified interface for loading and validating configuration data, making it easy to work with different file formats in your projects.

✨ Features

┌─────────────────────────────────────────────┐
│ ⚙️  Multiple configuration file formats      │
│ 🔄 Automatic environment variable substition │
│ 🛡️  JSON Schema validation                   │
│ 🔍 File watching for auto config reloading   │
│ 🖥️  Command-line interface (CLI)             │
│ 🐍 Compatible with Python 3.6+               │
└─────────────────────────────────────────────┘

🚀 Installation

Install load_xl using pip:

pip install load_xl

💻 Usage

As a Library

from load_xl import load_config

# Load a configuration file
config = load_config('path/to/your/config.yaml')

# Load with schema validation
schema = {...}  # Your JSON schema
config = load_config('path/to/your/config.json', schema=schema)

# Access configuration data
print(config['some_key'])

Command-line Interface

load_xl path/to/your/config.yaml --output
load_xl path/to/your/config.json --validate --schema path/to/schema.json

📁 Supported File Formats

┌─────┬───────────────────────────────┐
│.env │ Environment variables         │
│.ini │ INI configuration files       │
│.yaml│ YAML configuration files      │
│.json│ JSON configuration files      │
│.toml│ TOML configuration files      │
│.xml │ XML configuration files       │
└─────┴───────────────────────────────┘

🔬 Testing

The load_xl library includes a comprehensive test suite. You can find the test script in the test directory. Here's a snippet of the test.py file:

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
from load_xl import load_config, FileParsingError

# Test .env file parsing and loading
try:
    print("\n[+] Loading .env file...")
    env_config = load_config(".env")
    print(env_config.get("TEST"))
    print(env_config.get("TEST_ENV"))
except FileParsingError as e:
    print(f"Error in parsing .env file: {e}")

# ... (tests for other file formats)

# Test .xml file parsing and returning as dict
try:
    print("\n[+] Loading .xml file...")
    xml_config = load_config("test.xml")
    print(xml_config)
except FileParsingError as e:
    print(f"Error in parsing .xml file: {e}")

To run the tests, navigate to the test directory and execute:

python test.py

🔧 Advanced Features

Environment Variable Substitution

load_xl automatically replaces ${VAR} patterns in your configuration files with the corresponding environment variable values.

File Watching

from load_xl import ConfigFileWatcher, YamlFileParser

watcher = ConfigFileWatcher('config.yaml', YamlFileParser)
watcher.start()

# Your application logic here

watcher.stop()

Note: There are example schema files provided in schemas folder.

🤝 Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

📜 License

This project is licensed under the MIT License - see the LICENSE file for details.

👨‍💻 Author

🙏 Acknowledgments

  • Thanks to all contributors and users of load_xl
  • Inspired by the need for a unified configuration parsing solution
  • This project was developed with some assistance from ChatGPT 4.0 , showcasing the potential of AI-assisted coding and for my peronal experience too

For more information and updates, please visit the GitHub repository.

 ______________________________
< Thank you for using load_xl! >
 ------------------------------
        \   ^__^
         \  (oo)\_______
            (__)\       )\/\
                ||----w |
                ||     ||

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

load_xl-1.0.1.tar.gz (8.0 kB view details)

Uploaded Source

Built Distribution

load_xl-1.0.1-py3-none-any.whl (7.2 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: load_xl-1.0.1.tar.gz
  • Upload date:
  • Size: 8.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.12.5

File hashes

Hashes for load_xl-1.0.1.tar.gz
Algorithm Hash digest
SHA256 2a90227d8e0ec743dc92c3260d7580ef37750975a6d518cae7b12555da77114e
MD5 35ae11817ef7179caac73680a7b4aa4b
BLAKE2b-256 c32dbb68e4a62dc11d2e2da52bc037cd725f6f57c4a91e916001ebe797faa751

See more details on using hashes here.

File details

Details for the file load_xl-1.0.1-py3-none-any.whl.

File metadata

  • Download URL: load_xl-1.0.1-py3-none-any.whl
  • Upload date:
  • Size: 7.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.12.5

File hashes

Hashes for load_xl-1.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 cc4d5b656ec900b32e04bcb4c0d09e394b2f208a63a2f299b15a8cca97bc7679
MD5 f48086d46320041e5ea53f549bb8bf9e
BLAKE2b-256 0e06dd4e8c1312250ca23b1081cfb33569d459a218d3ff5a7dde4d49e31af044

See more details on using hashes here.

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