Skip to main content

Diq: A Pythonic Object Serializer

PyPI License

Diq is a lightweight and flexible Python library that enables easy serialization of class instances into dictionaries. It supports renaming fields dynamically, custom serialization logic, and automatic attribute extraction.


✨ Features

  • 🔹 Convert class instances into dictionaries with dictify()
  • 🔹 Rename attributes dynamically using field->new_name
  • 🔹 Custom serialization via _dictify_{field}() methods
  • 🔹 Automatic attribute detection (no need to list fields manually)
  • 🔹 Lightweight and dependency-free

📦 Installation

pip install diq

🚀 Quick Start

1️⃣ Basic Usage

from diq import Dictify

class User(Dictify):
    def __init__(self, username, email):
        self.username = username
        self.email = email

user = User("john_doe", "john@example.com")
print(user.dictify())  # {'username': 'john_doe', 'email': 'john@example.com'}

2️⃣ Select Specific Fields

print(user.dictify("username"))  
# {'username': 'john_doe'}

3️⃣ Rename Fields

print(user.dictify("username->user", "email->contact"))
# {'user': 'john_doe', 'contact': 'john@example.com'}

4️⃣ Custom Serialization for Specific Fields

from datetime import datetime

from diq import Dictify

class User(Dictify):
    def __init__(self, username, created_at):
        self.username = username
        self.created_at = created_at

    def _dictify_created_at(self):
        return self.created_at.strftime('%Y-%m-%d')

user = User("john_doe", datetime(2025, 3, 15))
print(user.dictify())  
# {'username': 'john_doe', 'created_at': '2025-03-15'}

📝 License

Diq is released under the MIT License.

🤝 Contributing

Contributions are welcome! Feel free to submit issues or pull requests.

📮 Contact

Metadata

Release files for diq 0.1.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for diq 0.1.1
File Size Uploaded
diq-0.1.1.tar.gz 3.4 kB Details

Release files / diq-0.1.1.tar.gz

Download URL diq-0.1.1.tar.gz
Size 3.4 kB
Tags Source
SHA-256 checksum
How to use checksums
4e0d99e9e9062efc02158ba39ae8a66e79edd58a48f933c369229269e035a881
BLAKE2b-256 checksum
How to use checksums
51d02f7eebdf842cf00f401dc054a066d40f5db6ddb8eccae6f72cd7be9eb3b1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.10.6

Release history Release notifications | RSS feed

This release

0.1.1 This release

1 release file

0.1.0

1 release file

0.0.3

1 release file

0.0.2

1 release file

0.0.1

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page