diff --git a/src/ytdl_sub/script/types/array.py b/src/ytdl_sub/script/types/array.py index 768aac38..182f575f 100644 --- a/src/ytdl_sub/script/types/array.py +++ b/src/ytdl_sub/script/types/array.py @@ -18,6 +18,10 @@ from ytdl_sub.script.types.variable_dependency import VariableDependency class Array(NonHashable): value: List[Resolvable] + @classmethod + def human_readable_name(cls) -> str: + return "Array" + @dataclass(frozen=True) class UnresolvedArray(Array, VariableDependency, FutureResolvable): diff --git a/src/ytdl_sub/script/types/function.py b/src/ytdl_sub/script/types/function.py index 4d23447a..7fc7d49a 100644 --- a/src/ytdl_sub/script/types/function.py +++ b/src/ytdl_sub/script/types/function.py @@ -207,7 +207,13 @@ class BuiltInFunction(Function): received_type_names: List[str] = [] for arg in self.args: if isinstance(arg, BuiltInFunction): - received_type_names.append(f"%{arg.name}(...)->{arg.output_type.__name__}") + if is_union(arg.output_type): + # TODO: Move naming to separate function, deal with Union input naming + received_type_names.append( + f"%{arg.name}(...)->Union[{', '.join(arg_type.human_readable_name() for arg_type in arg.output_type.__args__)}]" + ) + else: + received_type_names.append(f"%{arg.name}(...)->{arg.output_type.__name__}") else: received_type_names.append(arg.__class__.__name__) diff --git a/src/ytdl_sub/script/types/map.py b/src/ytdl_sub/script/types/map.py index b014228c..b29c91a2 100644 --- a/src/ytdl_sub/script/types/map.py +++ b/src/ytdl_sub/script/types/map.py @@ -20,6 +20,10 @@ from ytdl_sub.utils.exceptions import StringFormattingException class Map(NonHashable): value: Dict[Hashable, Resolvable] + @classmethod + def human_readable_name(cls) -> str: + return "Map" + @dataclass(frozen=True) class UnresolvedMap(Map, VariableDependency, FutureResolvable): diff --git a/src/ytdl_sub/script/types/resolvable.py b/src/ytdl_sub/script/types/resolvable.py index 3a475c79..463eb5e3 100644 --- a/src/ytdl_sub/script/types/resolvable.py +++ b/src/ytdl_sub/script/types/resolvable.py @@ -15,7 +15,9 @@ class ArgumentType(ABC): Any possible argument type that has not been resolved yet """ - pass + @classmethod + def human_readable_name(cls) -> str: + return cls.__name__ class AnyType_0(ABC):