Pythonic Object Serializer
Project description
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
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
diq-0.1.1.tar.gz
(3.4 kB
view details)
File details
Details for the file diq-0.1.1.tar.gz.
File metadata
- Download URL: diq-0.1.1.tar.gz
- Upload date:
- Size: 3.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.10.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4e0d99e9e9062efc02158ba39ae8a66e79edd58a48f933c369229269e035a881
|
|
| MD5 |
e55bf1f7f920a80f64645b932a5f79e5
|
|
| BLAKE2b-256 |
51d02f7eebdf842cf00f401dc054a066d40f5db6ddb8eccae6f72cd7be9eb3b1
|