| | from __future__ import annotations
|
| |
|
| |
|
| | def validate_node_input(
|
| | received_type: str, input_type: str, strict: bool = False
|
| | ) -> bool:
|
| | """
|
| | received_type and input_type are both strings of the form "T1,T2,...".
|
| |
|
| | If strict is True, the input_type must contain the received_type.
|
| | For example, if received_type is "STRING" and input_type is "STRING,INT",
|
| | this will return True. But if received_type is "STRING,INT" and input_type is
|
| | "INT", this will return False.
|
| |
|
| | If strict is False, the input_type must have overlap with the received_type.
|
| | For example, if received_type is "STRING,BOOLEAN" and input_type is "STRING,INT",
|
| | this will return True.
|
| |
|
| | Supports pre-union type extension behaviour of ``__ne__`` overrides.
|
| | """
|
| |
|
| |
|
| | if not received_type != input_type:
|
| | return True
|
| |
|
| |
|
| | if not isinstance(received_type, str) or not isinstance(input_type, str):
|
| | return False
|
| |
|
| |
|
| | received_types = set(t.strip() for t in received_type.split(","))
|
| | input_types = set(t.strip() for t in input_type.split(","))
|
| |
|
| | if strict:
|
| |
|
| | return received_types.issubset(input_types)
|
| | else:
|
| |
|
| | return len(received_types.intersection(input_types)) > 0
|
| |
|