From b0055d59da2f24432a7eb8d3b13ffeed1bb33f43 Mon Sep 17 00:00:00 2001 From: Jesse Bannon Date: Thu, 27 Nov 2025 01:38:26 -0800 Subject: [PATCH] [BACKEND] Optimize script interpreter --- src/ytdl_sub/script/types/function.py | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/src/ytdl_sub/script/types/function.py b/src/ytdl_sub/script/types/function.py index 7ecd1999..31c1b01c 100644 --- a/src/ytdl_sub/script/types/function.py +++ b/src/ytdl_sub/script/types/function.py @@ -58,26 +58,28 @@ class CustomFunction(Function, NamedCustomFunction): # Should be validated in the Script raise UNREACHABLE - resolved_variables_with_args = copy.deepcopy(resolved_variables) + function_args: List[FunctionArgument] = [] for i, arg in enumerate(resolved_args): function_arg = FunctionArgument.from_idx(idx=i, custom_function_name=self.name) - if function_arg in resolved_variables_with_args: + if function_arg in resolved_variables: # function args should always be unique since they are only defined once # in the custom function as %custom_function_name___idx # and returned as a set from each custom function. raise UNREACHABLE - resolved_variables_with_args[function_arg] = arg + resolved_variables[function_arg] = arg + function_args.append(function_arg) - return custom_functions[self.name].resolve( - resolved_variables=resolved_variables_with_args, + out = custom_functions[self.name].resolve( + resolved_variables=resolved_variables, custom_functions=custom_functions, ) - # Implies the custom function does not exist. This should have - # been checked in the parser with - raise UNREACHABLE + for function_arg in function_args: + del resolved_variables[function_arg] + + return out class BuiltInFunction(Function, BuiltInFunctionType):