4 executorStepSuffix =
'ExecutorStep'
8 """Remove executor step suffix from executor name."""
9 if executorStepSuffix
in name:
10 name, _sep, _tail = name.rpartition(executorStepSuffix)
15 """Load splitting configuration from file."""
16 parts = config.split(
'.')
18 raise ValueError(
'Splitting config should be of the form Package.Module.Function or Package.Function if defined in __init__.py')
21 module =
'.'.
join(parts[:-1])
23 from importlib
import import_module
24 loaded_module = import_module(module)
25 function_def = getattr(loaded_module, function)
30 """Get total executor steps from executor."""
32 argdict = executor.conf.argdict
33 if 'splitConfig' not in argdict:
36 splitConfig = argdict[
'splitConfig'].returnMyValue(exe=executor)
45 """Get executor step event counts from executor config."""
47 argdict = executor.conf.argdict
48 if 'splitConfig' not in argdict:
51 maxEvents = argdict[
'maxEvents'].returnMyValue(exe=executor)
52 skipEvents = argdict[
'skipEvents'].returnMyValue(exe=executor)
53 splitConfig = argdict[
'splitConfig'].returnMyValue(exe=executor)
59 if sum(fractions) != 1:
60 raise ValueError(
'Event fractions should total to 1!')
63 for i
in range(len(fractions) - 1):
64 counts.append(
round(maxEvents * fractions[i]))
65 counts.append(maxEvents -
sum(counts))
68 for i
in range(len(fractions)):
69 sums.append(skipEvents +
sum(counts[:i]))