function output error messages looking good, need more tests

This commit is contained in:
Jesse Bannon 2023-11-15 00:23:12 -08:00
parent 3174225f55
commit 8fe4460ea5
4 changed files with 18 additions and 2 deletions

View file

@ -18,6 +18,10 @@ from ytdl_sub.script.types.variable_dependency import VariableDependency
class Array(NonHashable): class Array(NonHashable):
value: List[Resolvable] value: List[Resolvable]
@classmethod
def human_readable_name(cls) -> str:
return "Array"
@dataclass(frozen=True) @dataclass(frozen=True)
class UnresolvedArray(Array, VariableDependency, FutureResolvable): class UnresolvedArray(Array, VariableDependency, FutureResolvable):

View file

@ -207,6 +207,12 @@ class BuiltInFunction(Function):
received_type_names: List[str] = [] received_type_names: List[str] = []
for arg in self.args: for arg in self.args:
if isinstance(arg, BuiltInFunction): if isinstance(arg, BuiltInFunction):
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__}") received_type_names.append(f"%{arg.name}(...)->{arg.output_type.__name__}")
else: else:
received_type_names.append(arg.__class__.__name__) received_type_names.append(arg.__class__.__name__)

View file

@ -20,6 +20,10 @@ from ytdl_sub.utils.exceptions import StringFormattingException
class Map(NonHashable): class Map(NonHashable):
value: Dict[Hashable, Resolvable] value: Dict[Hashable, Resolvable]
@classmethod
def human_readable_name(cls) -> str:
return "Map"
@dataclass(frozen=True) @dataclass(frozen=True)
class UnresolvedMap(Map, VariableDependency, FutureResolvable): class UnresolvedMap(Map, VariableDependency, FutureResolvable):

View file

@ -15,7 +15,9 @@ class ArgumentType(ABC):
Any possible argument type that has not been resolved yet 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): class AnyType_0(ABC):