Skip to main content

Serializable IPython Traitlets

Project description

Serializable IPython Traitlets

serializable-traitlets (imported as straitlets) is a Python 2/3 compatible library providing a restricted subset of the classes from IPython Traitlets. Within our restricted subset, we inherit all the benefits of using regular traitlets, including static type declarations, dynamic default generators, and attribute observers/validators.

By supporting only a limited (though still expressive) subset of Python objects, however, we gain the ability to serialize and deserialize instances of Serializable to and from various formats, including:

  1. JSON

  2. YAML

  3. base64-encoded strings

These properties make Serializables well-suited for configuration in environments where objects need to be transferred between processes.

straitlets also provides users the ability to specify example values for traits. If all traits of a Serializable class have examples (or default values) provided, then we can auto-generate an example for the parent class, and we can resursively generate examples for nested classes.

Usage

Basic Usage:

In [1]: from straitlets import Serializable, Integer, Dict, List
In [2]: class Foo(Serializable):
   ...:     my_int = Integer()
   ...:     my_dict = Dict()
   ...:     my_list = List()

In [3]: instance = Foo(my_int=3, my_dict={'a': [1, 2], 'b': (3, 4)}, my_list=[5, None])

In [4]: print(instance.to_json())
{"my_int": 3, "my_dict": {"a": [1, 2], "b": [3, 4]}, "my_list": [5, null]}

In [5]: print(instance.to_yaml())
my_dict:
a:
- 1
- 2
b:
- 3
- 4
my_int: 3
my_list:
- 5
- null

Autogenerating Example Values:

from straitlets import Serializable, Integer, Instance

class Point(Serializable):
    x = Integer().example(0)
    y = Integer().example(0)


class Vector(Serializable):
    # We can automatically generate example values for attributes
    # declared as Instances of Serializable.
    head = Instance(Point)

    # Per-attribute overrides are still supported.
    tail = Instance(Point).example(Point(x=1, y=3))

print(Vector.example_instance().to_yaml())
# head:
#   x: 0
#   y: 0
# tail:
#   x: 1
#   y: 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

straitlets-0.2.0.tar.gz (12.7 kB view details)

Uploaded Source

Built Distribution

straitlets-0.2.0-py2-none-any.whl (17.5 kB view details)

Uploaded Python 2

File details

Details for the file straitlets-0.2.0.tar.gz.

File metadata

  • Download URL: straitlets-0.2.0.tar.gz
  • Upload date:
  • Size: 12.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for straitlets-0.2.0.tar.gz
Algorithm Hash digest
SHA256 99c63a4c53e1eebe1a713d023bf8798645b760f0af1fa06fc58737b666ac84c9
MD5 928778337ac8fee2e2b73879326cca89
BLAKE2b-256 6e84e892da223e637319ad3f758c0aa6fb138ae723ce4694734b602a8790ba39

See more details on using hashes here.

Provenance

File details

Details for the file straitlets-0.2.0-py2-none-any.whl.

File metadata

File hashes

Hashes for straitlets-0.2.0-py2-none-any.whl
Algorithm Hash digest
SHA256 41b0da7beb120a8a0c76833e0704ae9c463c9206d9b411272004f74aef94a953
MD5 870ec1e0d5abc1f0335d70bb8ea3800c
BLAKE2b-256 f99b530c67fdafc831f2b04de305c06d68347bbd128f74bd84cf41afc400b790

See more details on using hashes here.

Provenance

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