Skip to main content

A typed configparser

Project description

Description of the image

Test Coverage Package version Supported Python versions

typed-configparser

typed-configparser is an extension of the standard configparser module with support for typed configurations using dataclasses. It leverages Python's type hints and dataclasses to provide a convenient way of parsing and validating configuration files.

Features

✓ Fully typed.
✓ Use dataclasses to parse the configuration file.
✓ Support for almost all python built-in data types - int, float, str, list, tuple, dict and complex data types using Union and Optional.
✓ Supports almost all features of dataclasses including field level init flag, post_init method, InitVars and more.
✓ Built on top of configparser, hence retains all functionalities of configparser.
✓ Support for optional values (optional values are automatically set to None if not provided).
✓ Smarter defaults (see below).

Installation

You can install typed_configparser using pip:

pip install typed-configparser

Usage

examples/basic.py

# This is a complete example and should work as is

from typing import List
from typed_configparser import ConfigParser
from dataclasses import dataclass


@dataclass
class BASIC:
    option1: int
    option2: str
    option3: float
    option4: List[str]


config = """
[BASIC]
option1 = 10
option2 = value2
option3 = 5.2
option4 = [foo,bar]
"""

parser = ConfigParser()
parser.read_string(config)
section = parser.parse_section(using_dataclass=BASIC)

print(section)
BASIC(option1=10, option2=value2, option3=5.2, option4=['foo', 'bar'])

examples/unions_and_optionals.py

# This is a complete example and should work as is

from typing import List, Union, Optional, Dict, Tuple
from typed_configparser import ConfigParser
from dataclasses import dataclass, field


@dataclass
class DEFAULT_EXAMPLE:
    option1: int
    option2: Union[List[Tuple[str, str]], List[int]]
    option3: Dict[str, str] = field(default_factory=lambda: {"default_key": "default_value"})
    option4: Optional[float] = None


config = """
[DEFAULT]
option1 = 20
option2 = default_value2

[MY_SECTION_1]
option2 = [10,20]
option4 = 5.2

[MY_SECTION_2]
option2 = [(value2a, value2b), (value2c, value2b), (value2c, value2d)]
option3 = {key: value}
option4 = none
"""

parser = ConfigParser()
parser.read_string(config)
my_section_1 = parser.parse_section(using_dataclass=DEFAULT_EXAMPLE, section_name="MY_SECTION_1")
my_section_2 = parser.parse_section(using_dataclass=DEFAULT_EXAMPLE, section_name="MY_SECTION_2")

print(my_section_1)
print(my_section_2)
DEFAULT_EXAMPLE(option1=20, option2=[10, 20], option3={'default_key': 'default_value'}, option4=5.2)
DEFAULT_EXAMPLE(option1=20, option2=[('value2a', 'value2b'), ('value2c', 'value2b'), ('value2c', 'value2d')], option3={'key': 'value'}, option4=None)

Check example directory for more examples.

Defaults

  • configparser includes sensible defaults options which allows you to declare a [DEFAULT] section in the config file for fallback values.
  • typed_configparser goes a step further and allows you to set a final (last) level of defaults at dataclass level.

License

MIT License

Contribution

If you are interested in contributing to typed_configparser, please take a look at the contributing guidelines.

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

typed_configparser-1.1.0.tar.gz (27.2 kB view details)

Uploaded Source

Built Distribution

typed_configparser-1.1.0-py3-none-any.whl (22.1 kB view details)

Uploaded Python 3

File details

Details for the file typed_configparser-1.1.0.tar.gz.

File metadata

  • Download URL: typed_configparser-1.1.0.tar.gz
  • Upload date:
  • Size: 27.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.11.8

File hashes

Hashes for typed_configparser-1.1.0.tar.gz
Algorithm Hash digest
SHA256 0a0ab47965151d095e0ad5f00aeb59a7ef95a5f9b6f045ac8d4417d91ba46d4d
MD5 a352cfa7bd9507ee807092176b06aba9
BLAKE2b-256 0c3abf80bb8cd2d97e5df46553fe03259c5ca1e8f75cab4682670a329f17554c

See more details on using hashes here.

File details

Details for the file typed_configparser-1.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for typed_configparser-1.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 07ac120849267129c9228e3bbcb458113a5c3efddb771f7c930b8902ce185acc
MD5 7cefabaf53630705a3947b0249e761b3
BLAKE2b-256 07003cc3bc0c450ca30b8f85795129ee704db3231323c5880d7989b9a9c91744

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