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')
Default values can alternatively be provided by a factory method:
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 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
Changelog
1.2.0 (2020-04-24)
Upped dependency tri.declarative to 5.x
1.1.0 (2019-10-15)
Upped dependency tri.declarative to 4.x
1.0.0 (2019-06-10)
Renamed package from tri.named_struct to tri_named_struct
Dropped python2 support
0.12.0 (2016-08-30)
Fix class level override of named struct fields.
0.11.0 (2016-05-06)
Fix default 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.
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
File details
Details for the file tri.named-struct-1.2.0.tar.gz.
File metadata
- Download URL: tri.named-struct-1.2.0.tar.gz
- Upload date:
- Size: 5.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/46.1.3 requests-toolbelt/0.9.1 tqdm/4.45.0 CPython/3.6.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5737bc7d104b485f6ac0c33afb23e36048d3f7b73c5d5988026a34f21f83dd1e
|
|
| MD5 |
71265976fb4024f57b3f647f54754a9b
|
|
| BLAKE2b-256 |
c18c03b678ca460a82f9271deae384a406739ebc69b4e0425e2652621c694608
|