Skip to main content

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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

tomlserializer-0.3.tar.gz (64.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

tomlserializer-0.3-py3-none-any.whl (5.2 kB view details)

Uploaded Python 3

File details

Details for the file tomlserializer-0.3.tar.gz.

File metadata

  • Download URL: tomlserializer-0.3.tar.gz
  • Upload date:
  • Size: 64.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.8 {"installer":{"name":"uv","version":"0.11.8","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for tomlserializer-0.3.tar.gz
Algorithm Hash digest
SHA256 af24cbcd9935a9711f94ac505390ca0912eb9b1c9364d61e9e4cac1003d8b05b
MD5 5b7978106b5b68752925dc58d4c2768e
BLAKE2b-256 b65c4a789baec9fac0eb514fbf46839f5c0064848a31ec956aae2fb04cd47acf

See more details on using hashes here.

File details

Details for the file tomlserializer-0.3-py3-none-any.whl.

File metadata

  • Download URL: tomlserializer-0.3-py3-none-any.whl
  • Upload date:
  • Size: 5.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.8 {"installer":{"name":"uv","version":"0.11.8","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for tomlserializer-0.3-py3-none-any.whl
Algorithm Hash digest
SHA256 02b24d6f61e725e009b1741a8c40a4a1ee3df9c729bc0b14fbedfb456c219270
MD5 5a67a611aab29cf76a1c36d62350e93d
BLAKE2b-256 15df89d6685330ed71d3566a14c27ac8aa7dd025f8695efc91e68377c6eb889b

See more details on using hashes here.

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