| 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 |
|
|