def test_filter_inputs_dynamic_keys(self): mapping = {'node1': {'out11': 'inp11', 'out12': 'inp12'}, 'node2': {'out22': 'inp22', 'out21': '_'}} nucleotide = Nucleotide( inbound_nodes=['node1', 'node2', 'node3'], incoming_keys_mapping=mapping) nucleotide.incoming_keys = ['inp11'] nucleotide.dynamic_incoming_keys = True data = {'node1': {'out11': 'value11', 'out12': 'value12'}, 'node2': {'out21': 'value21', 'out22': 'value22', 'out': 'value23'}, 'node3': {'out31': 'value31', 'out32': 'value32', 'out': 'value33'}, 'node4': {'out41': 'value41'}} data_remapped_must = {'inp11': 'value11', 'inp12': 'value12', 'inp22': 'value22', 'out31': 'value31', 'out32': 'value32', 'out': ['value23', 'value33']} data_remapped = nucleotide.filter_inputs(data) self.assertDictEqual(data_remapped_must, data_remapped)
def _draw_key_connections_for_nucleotide_pair( nucleotide: Nucleotide, inbound_nucleotide: Nucleotide, nucleotide_plots: Dict[Nucleotide, _NUCLEOTIDE_PLOT] ) -> List[patches.FancyArrowPatch]: nucleotide_plot = nucleotide_plots[nucleotide] incoming_nucleotide_plot = nucleotide_plots[inbound_nucleotide] inputs_to_nucleotide = {each_inbound_node: {"": None} for each_inbound_node in nucleotide.inbound_nodes} inputs_to_nucleotide[inbound_nucleotide.name] = { k: k for k in inbound_nucleotide.generated_keys_all} inputs_to_nucleotide_filtered = nucleotide.filter_inputs( inputs_to_nucleotide) if "" in inputs_to_nucleotide_filtered: del inputs_to_nucleotide_filtered[""] edge_patches = [] for each_incoming_key, each_generated_key in ( inputs_to_nucleotide_filtered.items()): edge_patch = _draw_edge_between_keys( nucleotide, inbound_nucleotide, each_incoming_key, each_generated_key, nucleotide_plot, incoming_nucleotide_plot) edge_patches.append(edge_patch) return edge_patches
def test_filter_inputs_empty(self): mapping = {'node1': {'out11': 'inp11', 'out12': 'inp12'}, 'node2': {'out22': 'inp22'}} nucleotide = Nucleotide( inbound_nodes=['node1', 'node2', 'node3'], incoming_keys_mapping=mapping) nucleotide.incoming_keys = ['inp11', 'inp12', 'inp22', 'out31'] data = {'node1': {'out11': 'value11', 'out12': 'value12'}, 'node2': {'out21': 'value21', 'out22': 'value22'}, 'node3': None, 'node4': {'out41': 'value41'}} self.assertIsNone(nucleotide.filter_inputs(data))
def test_filter_inputs_nested_input_mapping(self): mapping = {'node1': {'out11:out111': 'inp11', 'out12': 'inp12'}, 'node2': {'out22:2': 'inp22'}} nucleotide = Nucleotide( inbound_nodes=['node1', 'node2', 'node3'], incoming_keys_mapping=mapping) nucleotide.incoming_keys = ['inp11', 'inp12', 'inp22', 'out31'] data = {'node1': {'out11': {'out111': 'value11', 'out112': 'value112'}, 'out12': 'value12'}, 'node2': {'out21': 'value21', 'out22': ['value220', 'value221', 'value22', 'value223']}, 'node3': {'out31': 'value31'}, 'node4': {'out41': 'value41'}} data_remapped_must = {'inp11': 'value11', 'inp12': 'value12', 'inp22': 'value22', 'out31': 'value31'} data_remapped = nucleotide.filter_inputs(data) self.assertDictEqual(data_remapped_must, data_remapped)