Diq: A Pythonic Object Serializer
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
- GitHub: https://github.com/Jyonn/diq
- PyPI: https://pypi.org/project/diq
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)
| 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
|