From 91c45fe17611a83d84d1091161c8ac26c74ac7c6 Mon Sep 17 00:00:00 2001 From: Jesse Bannon Date: Thu, 27 Nov 2025 10:13:02 -0800 Subject: [PATCH] reuse dict for checking subset --- src/ytdl_sub/script/script.py | 4 ++-- src/ytdl_sub/script/types/function.py | 5 ++++- src/ytdl_sub/script/types/variable_dependency.py | 8 ++++---- 3 files changed, 10 insertions(+), 7 deletions(-) diff --git a/src/ytdl_sub/script/script.py b/src/ytdl_sub/script/script.py index ab506318..45846278 100644 --- a/src/ytdl_sub/script/script.py +++ b/src/ytdl_sub/script/script.py @@ -398,8 +398,8 @@ class Script: # Otherwise, if it has dependencies that are all resolved, then # resolve the definition - elif not definition.is_subset_of( - variables=resolved.keys(), custom_function_definitions=self._functions + elif definition.is_subset_of( + variables=resolved, custom_function_definitions=self._functions ): resolved[variable] = unresolved[variable].resolve( resolved_variables=resolved, diff --git a/src/ytdl_sub/script/types/function.py b/src/ytdl_sub/script/types/function.py index 31c1b01c..5f33006e 100644 --- a/src/ytdl_sub/script/types/function.py +++ b/src/ytdl_sub/script/types/function.py @@ -1,4 +1,3 @@ -import copy import functools from abc import ABC from dataclasses import dataclass @@ -81,6 +80,10 @@ class CustomFunction(Function, NamedCustomFunction): return out + # Implies the custom function does not exist. This should have + # been checked in the parser with + raise UNREACHABLE + class BuiltInFunction(Function, BuiltInFunctionType): def validate_args(self) -> "BuiltInFunction": diff --git a/src/ytdl_sub/script/types/variable_dependency.py b/src/ytdl_sub/script/types/variable_dependency.py index eb5f646e..21716124 100644 --- a/src/ytdl_sub/script/types/variable_dependency.py +++ b/src/ytdl_sub/script/types/variable_dependency.py @@ -162,7 +162,7 @@ class VariableDependency(ABC): @final def is_subset_of( self, - variables: Iterable[Variable], + variables: Dict[Variable, Resolvable], custom_function_definitions: Dict[str, "VariableDependency"], ) -> bool: """ @@ -171,12 +171,12 @@ class VariableDependency(ABC): True if it contains all input variables as a dependency. False otherwise. """ for custom_function in self.custom_functions: - if custom_function_definitions[custom_function.name].is_subset_of( + if not custom_function_definitions[custom_function.name].is_subset_of( variables=variables, custom_function_definitions=custom_function_definitions ): - return True + return False - return not self.variables.issubset(variables) + return all(var in variables for var in self.variables) @final def contains(