Decorator for handling in-place data selections via select keyword
func (callable) – Typically a Syncopy metafunction such as
wrapper_select – Wrapped function; wrapper_select extracts select from keywords provided to func and uses it to set the ._selector property of the input object(s). After successfully calling func with the modified input, wrapper_select modifies func itself:
The “Parameters” section in the docstring of func is amended by an entry explaining the usage of select (that mostly points to
selectdata()). Note: func’s docstring is only extended if it has a “Parameters” section.
If not already present, select is added as optional keyword (with default value None) to the signature of func.
- Return type
This decorator assumes that func has already been processed by
unwrap_cfg()and hence expects func to obey standard Python call signature
func(*args, **kwargs). In other words,
unwrap_select()is intended as “inner” decorator of metafunctions, for instance
@unwrap_cfg @unwrap_select def somefunction(data, kw1="default", kw2=None, **kwargs): ...
Important The metafunction func must accept “anonymous” keywords via a
**kwargsdictionary. This requirement is due to the fact that
unwrap_cfg()cowardly refuses to change the byte-code of func, that is, select is not actually added as a new keyword to func, only the corresponding signature is manipulated. Thus, if func does not support a kwargs parameter dictionary, using this decorator will have strange consequences. Specifically, select will show up in func’s signature but it won’t be actually usable:
@unwrap_cfg @unwrap_select def somefunction(data, kw1="default", kw2=None): ... >>> help(somefunction) somefunction(data, kw1="default", kw2=None, select=None) ... >>> somefunction(data, select=None) TypeError: somefunction() got an unexpected keyword argument 'select'