From 21e58dbb250626a7e55ee6edb6eae2087e987812 Mon Sep 17 00:00:00 2001 From: Jesse Bannon Date: Thu, 7 Dec 2023 13:32:05 -0800 Subject: [PATCH] sorted union --- src/ytdl_sub/script/utils/exception_formatters.py | 6 ++++-- tests/unit/script/types/test_function.py | 2 +- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/ytdl_sub/script/utils/exception_formatters.py b/src/ytdl_sub/script/utils/exception_formatters.py index 2cdd2244..7cda126a 100644 --- a/src/ytdl_sub/script/utils/exception_formatters.py +++ b/src/ytdl_sub/script/utils/exception_formatters.py @@ -113,7 +113,9 @@ class FunctionArgumentsExceptionFormatter: if is_optional(python_type): return f"Optional[{cls._to_human_readable_name(get_optional_type(python_type))}]" if is_union(python_type): - return ", ".join(cls._to_human_readable_name(arg) for arg in python_type.__args__) + return ", ".join( + sorted(cls._to_human_readable_name(arg) for arg in python_type.__args__) + ) return python_type.type_name() def _expected_args_str(self) -> str: @@ -130,7 +132,7 @@ class FunctionArgumentsExceptionFormatter: if is_union(arg.output_type()): received_type_names.append( f"%{arg.name}(...)->Union[" - f"{', '.join(type_.type_name() for type_ in arg.output_type().__args__)}" + f"{', '.join(sorted(type_.type_name() for type_ in arg.output_type().__args__))}" f"]" ) else: diff --git a/tests/unit/script/types/test_function.py b/tests/unit/script/types/test_function.py index 372d7d9c..7dc07edc 100644 --- a/tests/unit/script/types/test_function.py +++ b/tests/unit/script/types/test_function.py @@ -41,7 +41,7 @@ class TestFunction: IncompatibleFunctionArguments, match=_incompatible_arguments_match( expected="Map, Hashable, Optional[AnyArgument]", - recieved="%if(...)->Union[Map, Array], String", + recieved="%if(...)->Union[Array, Map], String", ), ): Script({"func": function_str}).resolve()