Add your description here
Project description
TOMLSerializer 📝
A powerful and flexible Python library for serializing Python objects to TOML format with robust type handling support.
✨ Features
- 🔄 Serializes Python dataclasses to TOML format and back
- 🏷️ Preserves type information during serialization
- 📦 Supports complex data types including:
- 🔢 Basic types (int, float, str, bool)
- 📚 Collections (list, dict, set, tuple)
- 📂 Path objects
- 🎯 Callable functions
- ❓ Optional fields
- 🔀 Union types
- 🪢 Nested data structures
- 🕳️ Empty collections
- 👨👦 Inheritance hierarchies
🚀 Installation
pip install tomlserializer # Package name may vary
🏃 Quick Start
from dataclasses import dataclass
from pathlib import Path
from tomlserializer import TOMLSerializer
@dataclass
class Config:
name: str
values: list[int]
output_path: Path
enabled: bool
# Create an instance
config = Config(
name="example",
values=[1, 2, 3],
output_path=Path("/tmp/output"),
enabled=True
)
# Save to TOML
TOMLSerializer.save(config, "config.toml")
# Load from TOML
loaded_data = TOMLSerializer.load_typed_dict("config.toml")
🔧 Advanced Usage
🛠️ Custom Type Registration
You can register custom type handlers for serialization and deserialization:
def custom_type_to_toml(value):
return str(value)
def custom_type_from_toml(value):
return CustomType(value)
TOMLSerializer.register_type(CustomType, custom_type_to_toml, custom_type_from_toml)
🌟 Supporting Complex Types
The library handles various complex scenarios:
@dataclass
class ComplexConfig:
# Optional fields
optional_value: Optional[int] = None
# Union types
flexible_field: Union[str, int]
# Nested collections
nested_dict: Dict[str, Dict[str, int]]
# Function references
callback: Callable
👨👦 Inheritance Support
@dataclass
class BaseConfig:
base_field: str
@dataclass
class DerivedConfig(BaseConfig):
derived_field: int
# Both base and derived fields are preserved during serialization
📋 Type Support
The library includes built-in support for:
- 🔢 Basic types (int, float, str, bool)
- 📚 Collection types (list, dict, set, tuple)
- 📂 Pathlib Path objects
- 🎯 Python functions (via module path resolution)
- ❌ None values
- ❓ Optional fields
- 🔀 Union types
⚠️ Error Handling
The library includes robust error handling for:
- 🚫 Invalid file paths
- 🔄 Type conversion errors
- ❗ Missing required fields
- 🏗️ Invalid TOML syntax
🤝 Contributing
Contributions are welcome! Please feel free to submit pull requests.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
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 tomlserializer-0.1.0-py3-none-any.whl.
File metadata
- Download URL: tomlserializer-0.1.0-py3-none-any.whl
- Upload date:
- Size: 5.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.5.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
19f5a2d9d45aa0a6f286f983c19175c6a4f548ccafd2ab6a3cd36877ecc7a25d
|
|
| MD5 |
0dae4c0a436b700eff08daf538a96b17
|
|
| BLAKE2b-256 |
a4daa93549616de0ef450288fe028d04d50a921095bf06a4596a280342ab54dc
|