Skip to main content
This is a pre-production deployment of Warehouse. Changes made here affect the production instance of PyPI (
Help us improve Python packaging - Donate today!

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.


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())
- 1
- 2
- 3
- 4
my_int: 3
- 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))

# head:
#   x: 0
#   y: 0
# tail:
#   x: 1
#   y: 3

Release History

This version
History Node


History Node


History Node


History Node


History Node


History Node


History Node


History Node


History Node


History Node


Download Files

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

Filename, Size & Hash SHA256 Hash Help File Type Python Version Upload Date
(17.1 kB) Copy SHA256 Hash SHA256
Source None Jun 1, 2017

Supported By

Elastic Elastic Search Pingdom Pingdom Monitoring Dyn Dyn DNS Sentry Sentry Error Logging CloudAMQP CloudAMQP RabbitMQ Heroku Heroku PaaS Kabu Creative Kabu Creative UX & Design Fastly Fastly CDN DigiCert DigiCert EV Certificate Google Google Cloud Servers DreamHost DreamHost Log Hosting