From d69f04295539962a21fe2cda98af2ba57f3e54a8 Mon Sep 17 00:00:00 2001 From: Jesse Bannon Date: Sun, 11 Jan 2026 18:07:18 -0800 Subject: [PATCH] better unresolvable support. By setting unresolvable to all built in ytld-sub variables, a nice output is shown --- src/ytdl_sub/script/script.py | 11 +++++++---- tests/unit/config/test_subscription.py | 3 +++ 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/src/ytdl_sub/script/script.py b/src/ytdl_sub/script/script.py index 55002218..a7ef5d9c 100644 --- a/src/ytdl_sub/script/script.py +++ b/src/ytdl_sub/script/script.py @@ -559,6 +559,8 @@ class Script: for definitions in [functions_to_add, variables_to_add]: for name, parsed in definitions.items(): + if isinstance(parsed, Variable): + print("huh") if parsed.maybe_resolvable is None: added_variables_to_validate.add(name) @@ -702,11 +704,9 @@ class Script: def _to_syntax_tree( self, maybe_resolved: SyntaxTree | Resolvable | VariableDependency ) -> SyntaxTree: - if isinstance(maybe_resolved, Resolvable): - return ResolvedSyntaxTree(ast=[maybe_resolved]) if isinstance(maybe_resolved, SyntaxTree): return maybe_resolved - if isinstance(maybe_resolved, VariableDependency): + if isinstance(maybe_resolved, (Variable, VariableDependency, Resolvable)): return SyntaxTree(ast=[maybe_resolved]) return maybe_resolved @@ -752,7 +752,10 @@ class Script: definition = unresolved[variable] if isinstance(definition, Variable): - maybe_resolved = resolved.get(definition, unresolved[definition]) + if definition in unresolvable: + maybe_resolved = definition + else: + maybe_resolved = resolved.get(definition, unresolved[definition]) else: assert isinstance(definition, VariableDependency) maybe_resolved = definition.partial_resolve( diff --git a/tests/unit/config/test_subscription.py b/tests/unit/config/test_subscription.py index a9b31425..cffb3bb0 100644 --- a/tests/unit/config/test_subscription.py +++ b/tests/unit/config/test_subscription.py @@ -8,6 +8,8 @@ import pytest import yaml from ytdl_sub.config.config_file import ConfigFile +from ytdl_sub.entries.script.variable_definitions import VARIABLES +from ytdl_sub.entries.script.variable_definitions import VariableDefinitions from ytdl_sub.plugins.nfo_tags import NfoTagsOptions from ytdl_sub.subscriptions.subscription import Subscription from ytdl_sub.utils.exceptions import ValidationException @@ -615,6 +617,7 @@ def test_default_docker_config_and_subscriptions( ) unresolvable.add("entry_metadata") unresolvable.add("sibling_metadata") + unresolvable.update(VARIABLES.scripts().keys()) out = default_subs[0].overrides.script.resolve_partial(unresolvable=unresolvable) test1 = ScriptUtils.to_native_script(out._variables["episode_file_name"])