Skip to main content

Stringly: Human Readable Object Serialization

Project description

Stringly: Human Readable Object Serialization

Stringly aims to facilitate foreign function calls into Python by providing human readable serialization and de-serialization of arbitrary Python objects.

Stringly is similar to Python's pickle protocol in that the serialized form follows directly from class introspection. This as opposed to serialization technologies such as JSON and YAML, which are self contained but support only a predefined set of data types. Similar to those technologies, however, and unlike pickle, the resulting strings are human readible and human writable.

A typical use case of stringly is as part of a command line parser, using the stringly representation to instantiate objects direcly from the command line.

Example

Stringly requires type hints to infer object types. Since these are getting more and more common, chances are that stringly will work directly out of the box. In case extra work is required, the reward is double as this effort should also benefit static type checkers such as mypy.

The following is an example of a class that is suitable for stringlification:

>>> import typing, dataclasses, stringly
>>>
>>> @dataclasses.dataclass
... class A:
...   name: str
...   data: typing.Dict[str,int]

Objects are serialized using stringly.dumps:

>>> a = A('hi', {'foo': 1, 'bar': 2})
>>> stringly.dumps(A, a)
# 'name=hi,data={foo=1,bar=2}'

Objects are de-serialized using stringly.loads:

>>> a = stringly.loads(A, 'name=bye,data={baz=3}')
>>> a.name
# 'bye'
>>> a.data
# {'baz': 3}

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

stringly-1.0b3.tar.gz (12.7 kB view details)

Uploaded Source

Built Distribution

stringly-1.0b3-py3-none-any.whl (10.6 kB view details)

Uploaded Python 3

File details

Details for the file stringly-1.0b3.tar.gz.

File metadata

  • Download URL: stringly-1.0b3.tar.gz
  • Upload date:
  • Size: 12.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: python-requests/2.25.1

File hashes

Hashes for stringly-1.0b3.tar.gz
Algorithm Hash digest
SHA256 77c37d2ee075a03e7336d620ac658830956a14329da808540393daec62db3b71
MD5 daedb5e046cc48482e01765bad999b44
BLAKE2b-256 ac8e59630fee909c40c5887a6c94d22c5d5b0170dd7bba1ef4930fc2f0aa9fcc

See more details on using hashes here.

File details

Details for the file stringly-1.0b3-py3-none-any.whl.

File metadata

  • Download URL: stringly-1.0b3-py3-none-any.whl
  • Upload date:
  • Size: 10.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: python-requests/2.25.1

File hashes

Hashes for stringly-1.0b3-py3-none-any.whl
Algorithm Hash digest
SHA256 175cf9676bffb642b78e1514b5f8b88d7860d2dd3923ca21fc8f8d11c334cd71
MD5 2180fe5ff84cda6782ed2edf1d3e585e
BLAKE2b-256 264d911eefbf82211598679c7ff849b7416ac43a7d48a82fb35e0affa3d5dc7e

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