tri.named-struct supplies a class that can be used like dictionaries (or via attribute access), but with a predefined set of possible key values
Project description
.. image:: https://travis-ci.org/TriOptima/tri.named_struct.svg?branch=master
:target: https://travis-ci.org/TriOptima/tri.named_struct
.. image:: http://codecov.io/github/TriOptima/tri.named_struct/coverage.svg?branch=master
:target: http://codecov.io/github/TriOptima/tri.named_struct?branch=master
tri.named_struct
================
tri.named_struct supplies classes that can be used like dictionaries, but with a predefined set of possible key values.
Example
-------
.. code:: python
from tri.named_struct import NamedStruct
class MyNamedStruct(NamedStruct):
foo = NamedStructField()
bar = NamedStructField()
m = MyNamedStruct(17, 42)
assert m['foo'] == 17
assert m.foo == 17
assert m == dict(foo=17, bar=42)
m.not_foo # Will raise an AttributeError
Default values can be provided:
.. code:: python
from tri.named_struct import NamedStruct
class MyNamedStruct(NamedStruct):
foo = NamedStructField()
bar = NamedStructField()
baz = NamedStructField(default='default')
assert MyNamedStruct(17) == dict(foo=17, bar=None, baz='default')
Default values can alternatively be provided by a factory method:
.. code:: python
from tri.named_struct import NamedStruct
class MyNamedStruct(NamedStruct):
foo = NamedStructField(default_factory=list)
assert MyNamedStruct().foo == []
There is also a functional way to defined a :code:`NamedStruct` subclass:
.. code:: python
from tri.named_struct import named_struct
MyNamedStruct = named_struct('foo, bar')
m = MyNamedStruct(17, 42)
assert m.foo == 17
assert m.bar == 42
Running tests
-------------
You need tox installed then just :code:`make test`.
License
-------
BSD
Documentation
-------------
http://trinamedstruct.readthedocs.org.
Changelog
=========
0.11.0 (2016-05-06)
~~~~~~~~~~~~~~~~~~~
* Fix deafult values shadowing values set explicitly in subclass __init__ method.
0.10.0 (2016-01-12)
~~~~~~~~~~~~~~~~~~~
* Added `default_factory` argument to specify default values via a callback.
:target: https://travis-ci.org/TriOptima/tri.named_struct
.. image:: http://codecov.io/github/TriOptima/tri.named_struct/coverage.svg?branch=master
:target: http://codecov.io/github/TriOptima/tri.named_struct?branch=master
tri.named_struct
================
tri.named_struct supplies classes that can be used like dictionaries, but with a predefined set of possible key values.
Example
-------
.. code:: python
from tri.named_struct import NamedStruct
class MyNamedStruct(NamedStruct):
foo = NamedStructField()
bar = NamedStructField()
m = MyNamedStruct(17, 42)
assert m['foo'] == 17
assert m.foo == 17
assert m == dict(foo=17, bar=42)
m.not_foo # Will raise an AttributeError
Default values can be provided:
.. code:: python
from tri.named_struct import NamedStruct
class MyNamedStruct(NamedStruct):
foo = NamedStructField()
bar = NamedStructField()
baz = NamedStructField(default='default')
assert MyNamedStruct(17) == dict(foo=17, bar=None, baz='default')
Default values can alternatively be provided by a factory method:
.. code:: python
from tri.named_struct import NamedStruct
class MyNamedStruct(NamedStruct):
foo = NamedStructField(default_factory=list)
assert MyNamedStruct().foo == []
There is also a functional way to defined a :code:`NamedStruct` subclass:
.. code:: python
from tri.named_struct import named_struct
MyNamedStruct = named_struct('foo, bar')
m = MyNamedStruct(17, 42)
assert m.foo == 17
assert m.bar == 42
Running tests
-------------
You need tox installed then just :code:`make test`.
License
-------
BSD
Documentation
-------------
http://trinamedstruct.readthedocs.org.
Changelog
=========
0.11.0 (2016-05-06)
~~~~~~~~~~~~~~~~~~~
* Fix deafult values shadowing values set explicitly in subclass __init__ method.
0.10.0 (2016-01-12)
~~~~~~~~~~~~~~~~~~~
* Added `default_factory` argument to specify default values via a callback.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.