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.7.tar.gz (15.5 kB view details)

Uploaded Source

File details

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

File metadata

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

File hashes

Hashes for straitlets-0.2.7.tar.gz
Algorithm Hash digest
SHA256 a2f7343c2567364de83fd31937cff5834d85b729995d764cc9524bdeae215746
MD5 180bf008e7fce0c59049fa9d0c9616ff
BLAKE2b-256 1364b33138a05c5d3aaea86b5c19f048f60894b5df7cd74be78db2349c294f4b

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