def resolve_port_type(port_types, port_spec): port_types_set = set(p for p in port_types if p is not None) was_set = False if port_spec.port_type is not None: port_types_set.add(port_spec.port_type) if len(port_types_set) == 1: port_spec.port_type = next(iter(port_types_set)) was_set = True elif len(port_types_set) == 2: if 'basic:Float' in port_types_set and \ 'basic:Integer' in port_types_set: port_spec.port_type = 'basic:Float' was_set = True elif 'basic:List' in port_types_set: port_spec.port_type = 'basic:List' base_name = port_spec.name port_spec.name = base_name + "Sequence" port_types_set.discard('basic:List') alternate_spec = \ AlternatePortSpec(name=base_name + "Scalar", port_type=next(iter(port_types_set))) port_spec.alternate_specs.append(alternate_spec) was_set = True if not was_set: if "color" in port_spec.name: port_spec.port_type = "basic:Color" port_spec.translations = "translate_color" elif port_spec.name == "x": port_spec.port_type = "basic:List" elif port_spec.name == "y": port_spec.port_type = "basic:List" else: port_spec.port_type = None