bunch container objects like Matlab structs
Project description
wavestate.bunch
Utility classes providing "Bunch" containers. These are dictionaries with attribute access of the elements. They wrap any lower level dictionaries they output, so the interface mimics the "struct" container from Matlab.
Bunch
The Bunch class is a lightweight wrapper for dictionaries to allow attribute access as a means to access elements with less syntax. Bunch does not copy assigned dictionaries, it wraps them. This is unlike some other implementations such as gwinc.Struct.
d = dict(A=1, B=2, d2=dict(C=1))
b1 = Bunch(d)
print(b1.A)
print(b1.d2.C)
or
b2 = dict(A=1, B=2, d2=dict(C=1))
print(b2.A)
print(b2.d2.C)
A useful pattern while developing and debugging code, particularly while refactoring large blocks of code into functions is
def code_block(arg1, arg2, arg3, ...):
...
a = 1
b = 2
...
return Bunch(locals())
ret = code_block(...)
ret.a
which is a lightweight way to access elements from the code_block that is promoted into a function.
DeepBunch
There are a collection of more advanced containers DeepBunch allows speculative access of elements, such that if it is missing an attribute, a temporary is created such that
A = DeepBunch()
A.B.C.D = 1
is acceptable.
and
if A.B.C.E:
raise Exception('The above test evaluates to False')
and in this case, no intermediate dictionaries are actually created until a value is assigned to a leaf.
HDFDeepBunch
h5py is not a required dependency of wavestate.bunch, but if it is installed
then one can import the HDFDeepBunch
, which provides a similar interface to
the DeepBunch, but uses HDF5 files as a back-end, with internal handling of
numpy arrays.
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.
Source Distribution
Built Distribution
File details
Details for the file wavestate.bunch-0.9.1.tar.gz
.
File metadata
- Download URL: wavestate.bunch-0.9.1.tar.gz
- Upload date:
- Size: 24.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/0.0.0 importlib_metadata/4.8.1 pkginfo/1.8.2 requests/2.23.0 requests-toolbelt/0.9.1 tqdm/4.45.0 CPython/3.8.12
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | ba25b7b342ff55dfc011feedca320e96920d84b0f75b38f2a9af43f4506aed03 |
|
MD5 | eaa063314b9d47c6ca78c2559fd0ea32 |
|
BLAKE2b-256 | 1fb833b813337fd609c4e245fa923b28789155a72f76cd80bc015caf8535b2a1 |
File details
Details for the file wavestate.bunch-0.9.1-py3-none-any.whl
.
File metadata
- Download URL: wavestate.bunch-0.9.1-py3-none-any.whl
- Upload date:
- Size: 21.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/0.0.0 importlib_metadata/4.8.1 pkginfo/1.8.2 requests/2.23.0 requests-toolbelt/0.9.1 tqdm/4.45.0 CPython/3.8.12
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 35a23b709e915db6a16eeccc563fa04cde16ace595955c0ee72b72259397a8ac |
|
MD5 | 024e5229b5b23f399c0756b9c2502044 |
|
BLAKE2b-256 | 6290ed35e454c74be020ee26125e8922086ba2826d978d0a9fb6d31339e15d26 |