Skip to main content

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 the serialize method and deserialize classmethod.
  • 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


Download files

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

Source Distribution

easy-serialize-0.0.3.tar.gz (4.4 kB view details)

Uploaded Source

Built Distribution

easy_serialize-0.0.3-py3-none-any.whl (5.0 kB view details)

Uploaded Python 3

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

Hashes for easy-serialize-0.0.3.tar.gz
Algorithm Hash digest
SHA256 030c0d0af36380779514a74fa3e8be20e8562d3790c3db30c78d7286c38dcf18
MD5 a86157e60453d6711b71da6996d5a9a6
BLAKE2b-256 ea877ba2938b49569f07922b19f7b79c0c8b8befc95091b5a3bc51bccd826023

See more details on using hashes here.

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

Hashes for easy_serialize-0.0.3-py3-none-any.whl
Algorithm Hash digest
SHA256 237ef1087f4dce935162f52dc8e1adccc6ac5ed10216e0c93d7dacdbea50c4aa
MD5 866c2cc5de4b08c0624fdc5a3ba38e12
BLAKE2b-256 36b0fb1af4eee5973329ce55ec0d530b91d9ddda91c4040a909c954fa006ba82

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page