Skip to main content

bunch container objects like Matlab structs

Project description

wield.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 wield.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


Download files

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

Source Distribution

wield.bunch-0.9.9.tar.gz (23.1 kB view hashes)

Uploaded Source

Built Distribution

wield.bunch-0.9.9-py3-none-any.whl (28.5 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page