Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
save_when = SaveWhen.ALWAYS
# Instructions how to parallelize
# False: never parallellize;
# 'process': use processpool;
# 'thread' (or just True): use threadpool.
parallel = False # For the computation itself
# Maximum number of output messages
max_messages = None # use default
# Do not specify attributes below
# Set using the takes_config decorator
takes_config = immutabledict()
# These are set on plugin initialization, which is done in the core
run_id: str
run_i: int
config: typing.Dict
deps: typing.Dict # Dictionary of dependency plugin instances
compute_takes_chunk_i = False # Autoinferred, no need to set yourself
compute_takes_start_end = False
def __init__(self):
if not hasattr(self, 'depends_on'):
raise ValueError('depends_on not provided for '
f'{self.__class__.__name__}')
self.depends_on = strax.to_str_tuple(self.depends_on)
result[opt.name] = opt
# For some reason the second condition is essential, I don't understand
# yet why...
if (hasattr(plugin_class, 'takes_config')
and len(plugin_class.takes_config)):
# Already have some options set, e.g. because of subclassing
# where both child and parent have a takes_config decorator
for opt in result.values():
if opt.name in plugin_class.takes_config:
raise RuntimeError(
f"Attempt to specify option {opt.name} twice")
plugin_class.takes_config = immutabledict({
**plugin_class.takes_config, **result})
else:
plugin_class.takes_config = immutabledict(result)
return plugin_class
if not isinstance(opt, Option):
raise RuntimeError("Specify config options by Option objects")
opt.taken_by = plugin_class.__name__
result[opt.name] = opt
# For some reason the second condition is essential, I don't understand
# yet why...
if (hasattr(plugin_class, 'takes_config')
and len(plugin_class.takes_config)):
# Already have some options set, e.g. because of subclassing
# where both child and parent have a takes_config decorator
for opt in result.values():
if opt.name in plugin_class.takes_config:
raise RuntimeError(
f"Attempt to specify option {opt.name} twice")
plugin_class.takes_config = immutabledict({
**plugin_class.takes_config, **result})
else:
plugin_class.takes_config = immutabledict(result)
return plugin_class
def can_rechunk(self, data_type):
if isinstance(self.rechunk_on_save, bool):
return self.rechunk_on_save
if isinstance(self.rechunk_on_save, (dict, immutabledict)):
return self.rechunk_on_save[data_type]
raise ValueError("rechunk_on_save must be a bool or an immutabledict")