DecoratingSetters

class PlasmaCalcs.quantities.quantity_tools.DecoratingSetters(known_setters=None)

Bases: object

Decorating functions to put them into a dict (self.known_setters).

known_setters: None or dict

will store known settables; dict of {name: callable}
Example: known_setter = DecoratingCalcs(storage_dict)
@known_setter
def set_var1(…):
@known_setter
def set_var2(…):
@known_setter(aliases=[‘myalias’])
def set_var3(…):
# at this point, we have known_setter.known_setters ==
# {‘var1’: set_var1, ‘var2’: set_var2, ‘var3’: set_var3, ‘myalias’: set_var3}.

Methods

__call__([f, name])

if f is provided, return self.decorator(**kw)(f).

decorator([name, aliases])

returns decorator for quant setter f(self, *args, **kw), which returns f unchanged...

__call__(f=None, *, name=None, **kw_decorator)

if f is provided, return self.decorator(**kw)(f). Otherwise, return self.decorator(**kw).

This enables instances to be used as decorators directly, i.e. “@self”,
or used as decorators after providing kwargs, e.g. “@self(aliases=[‘varalias’])”
See help(type(self)) for examples.
decorator(name=None, *, aliases=[])

returns decorator for quant setter f(self, *args, **kw), which returns f unchanged…

but also, tracks things appropriately:
add name to self.known_setters,
if name is not provided, use {name} from f.__name__ which looks like “set_{name}”.
aliases: list
if any aliases are provided, also add, for alias in aliases:
self.known_setters[alias] = self.known_setters[name]