Skip to content

tri.named_struct supplies classes that can be used like dictionaries, but with a predefined set of possible key values

License

Notifications You must be signed in to change notification settings

pombredanne/tri.named_struct

 
 

Repository files navigation

image

image

tri.named_struct

tri.named_struct supplies classes that can be used like dictionaries, but with a predefined set of possible key values.

Example

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:

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')

There is also a functional way to defined a NamedStruct subclass:

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 make test.

License

BSD

Documentation

http://trinamedstruct.readthedocs.org.

About

tri.named_struct supplies classes that can be used like dictionaries, but with a predefined set of possible key values

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Python 90.4%
  • Makefile 9.6%