A typed configparser
Project description
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
configparserincludes sensible defaults options which allows you to declare a[DEFAULT]section in the config file for fallback values.typed_configparsergoes a step further and allows you to set a final (last) level of defaults at dataclass level.
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0a0ab47965151d095e0ad5f00aeb59a7ef95a5f9b6f045ac8d4417d91ba46d4d
|
|
| MD5 |
a352cfa7bd9507ee807092176b06aba9
|
|
| BLAKE2b-256 |
0c3abf80bb8cd2d97e5df46553fe03259c5ca1e8f75cab4682670a329f17554c
|
File details
Details for the file typed_configparser-1.1.0-py3-none-any.whl.
File metadata
- Download URL: typed_configparser-1.1.0-py3-none-any.whl
- Upload date:
- Size: 22.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.0.0 CPython/3.11.8
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
07ac120849267129c9228e3bbcb458113a5c3efddb771f7c930b8902ce185acc
|
|
| MD5 |
7cefabaf53630705a3947b0249e761b3
|
|
| BLAKE2b-256 |
07003cc3bc0c450ca30b8f85795129ee704db3231323c5880d7989b9a9c91744
|