A simple way to turn objects into strings and vice-versa
Project description
Easy-Serialize
Turn custom python objects into strings and vice-versa.
Strengths
- no extra code to write in most cases
- supports json
- supports nested objects
- no dependencies outside of python's library (only pytest for developing)
- ability to add methods to control serializing and deserializing
Drawbacks
- objects like tuples are automatically turned into lists
- only supports json right now
- can't handle circular references
- if an object has references in many places, it will be present in the json repeatedly and after deserializing will be separate objects
- Because of this, it cannot handle linked lists or similar interconnected data structures well
- stores
__dict__of the object, so classes using__slots__will likely require overriding theserializemethod anddeserializeclassmethod. - Because it needs to create the object and then copy over all the values of
__dict__, it doesn't know the arguments used in__init__. Thus if the class requires arguments in__init__, the object will be created with__new__which avoids calling__init__. However, if__init__can take zero arguments, it will be called. A warning will be emitted if__init__is not called.
How to use
Extend Serializable
class A(Serializable):
...
or use the make_serializable decorator
@make_serializable
class A:
...
serialize using
serialize(object_to_serialize)
and deserialize using
deserialize(stringified_object)
Custom serializing
In the case that the standard method doesn't cut it, it is possible to add custom serializing and deserializing methods to a class
@make_serializable
class A:
def __init__(self, x):
self.x = x
def serialize(self) -> dict:
return {'x': self.x}
@classmethod
def deserialize(cls, data: dict) -> 'A':
return A(data['x'])
Future
Things to possibly add:
- other data formats like xml or the like
- support for objects with circular references
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 Distribution
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 easy-serialize-0.0.3.tar.gz.
File metadata
- Download URL: easy-serialize-0.0.3.tar.gz
- Upload date:
- Size: 4.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.4.1 importlib_metadata/4.0.1 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.60.0 CPython/3.8.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
030c0d0af36380779514a74fa3e8be20e8562d3790c3db30c78d7286c38dcf18
|
|
| MD5 |
a86157e60453d6711b71da6996d5a9a6
|
|
| BLAKE2b-256 |
ea877ba2938b49569f07922b19f7b79c0c8b8befc95091b5a3bc51bccd826023
|
File details
Details for the file easy_serialize-0.0.3-py3-none-any.whl.
File metadata
- Download URL: easy_serialize-0.0.3-py3-none-any.whl
- Upload date:
- Size: 5.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.4.1 importlib_metadata/4.0.1 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.60.0 CPython/3.8.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
237ef1087f4dce935162f52dc8e1adccc6ac5ed10216e0c93d7dacdbea50c4aa
|
|
| MD5 |
866c2cc5de4b08c0624fdc5a3ba38e12
|
|
| BLAKE2b-256 |
36b0fb1af4eee5973329ce55ec0d530b91d9ddda91c4040a909c954fa006ba82
|