Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
# removing elements that are connected to inner splitter
# (they will be taken into account in hlpst.splits anyway)
# _comb part will be used in prepare_states_combined_ind
# TODO: need tests in test_Workflow.py
elements_to_remove = []
elements_to_remove_comb = []
for name, (st, inp) in self.other_states.items():
if (
f"{self.name}.{inp}" in self.splitter_rpn
and f"_{name}" in self.splitter_rpn_compact
):
elements_to_remove.append(f"_{name}")
if f"{self.name}.{inp}" not in self.combiner:
elements_to_remove_comb.append(f"_{name}")
partial_rpn = hlpst.remove_inp_from_splitter_rpn(
deepcopy(self.splitter_rpn_compact), elements_to_remove
)
values_out_pr, keys_out_pr = hlpst.splits(
partial_rpn,
self.inputs,
inner_inputs=self.inner_inputs,
cont_dim=self.cont_dim,
)
values_pr = list(values_out_pr)
self.ind_l = values_pr
self.keys = keys_out_pr
self.states_ind = list(hlpst.iter_splits(values_pr, self.keys))
self.keys_final = self.keys
if self.combiner:
self.prepare_states_combined_ind(elements_to_remove_comb)
def splitter_rpn_final(self):
if self.combiner:
_splitter_rpn_final = hlpst.remove_inp_from_splitter_rpn(
deepcopy(self.splitter_rpn),
self.right_combiner_all + self.left_combiner_all,
)
return _splitter_rpn_final
else:
return self.splitter_rpn
def prepare_states_combined_ind(self, elements_to_remove_comb):
"""Prepare the final list of dictionaries with indices after combiner."""
partial_rpn_compact = hlpst.remove_inp_from_splitter_rpn(
deepcopy(self.splitter_rpn_compact), elements_to_remove_comb
)
# combiner can have parts from the left splitter, so have to have rpn with states
partial_rpn = hlpst.splitter2rpn(
hlpst.rpn2splitter(partial_rpn_compact), other_states=self.other_states
)
combined_rpn = hlpst.remove_inp_from_splitter_rpn(
deepcopy(partial_rpn), self.right_combiner_all + self.left_combiner_all
)
if combined_rpn:
val_r, key_r = hlpst.splits(
combined_rpn,
self.inputs,
inner_inputs=self.inner_inputs,
cont_dim=self.cont_dim,
)
values = list(val_r)
else:
values = []
key_r = []
keys_out = key_r
if values:
def prepare_states_combined_ind(self, elements_to_remove_comb):
"""Prepare the final list of dictionaries with indices after combiner."""
partial_rpn_compact = hlpst.remove_inp_from_splitter_rpn(
deepcopy(self.splitter_rpn_compact), elements_to_remove_comb
)
# combiner can have parts from the left splitter, so have to have rpn with states
partial_rpn = hlpst.splitter2rpn(
hlpst.rpn2splitter(partial_rpn_compact), other_states=self.other_states
)
combined_rpn = hlpst.remove_inp_from_splitter_rpn(
deepcopy(partial_rpn), self.right_combiner_all + self.left_combiner_all
)
if combined_rpn:
val_r, key_r = hlpst.splits(
combined_rpn,
self.inputs,
inner_inputs=self.inner_inputs,
cont_dim=self.cont_dim,
)