better unresolvable support. By setting unresolvable to all built in ytld-sub variables, a nice output is shown

This commit is contained in:
Jesse Bannon 2026-01-11 18:07:18 -08:00
parent ce0d9e0669
commit d69f042955
2 changed files with 10 additions and 4 deletions

View file

@ -559,6 +559,8 @@ class Script:
for definitions in [functions_to_add, variables_to_add]: for definitions in [functions_to_add, variables_to_add]:
for name, parsed in definitions.items(): for name, parsed in definitions.items():
if isinstance(parsed, Variable):
print("huh")
if parsed.maybe_resolvable is None: if parsed.maybe_resolvable is None:
added_variables_to_validate.add(name) added_variables_to_validate.add(name)
@ -702,11 +704,9 @@ class Script:
def _to_syntax_tree( def _to_syntax_tree(
self, maybe_resolved: SyntaxTree | Resolvable | VariableDependency self, maybe_resolved: SyntaxTree | Resolvable | VariableDependency
) -> SyntaxTree: ) -> SyntaxTree:
if isinstance(maybe_resolved, Resolvable):
return ResolvedSyntaxTree(ast=[maybe_resolved])
if isinstance(maybe_resolved, SyntaxTree): if isinstance(maybe_resolved, SyntaxTree):
return maybe_resolved return maybe_resolved
if isinstance(maybe_resolved, VariableDependency): if isinstance(maybe_resolved, (Variable, VariableDependency, Resolvable)):
return SyntaxTree(ast=[maybe_resolved]) return SyntaxTree(ast=[maybe_resolved])
return maybe_resolved return maybe_resolved
@ -752,7 +752,10 @@ class Script:
definition = unresolved[variable] definition = unresolved[variable]
if isinstance(definition, 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: else:
assert isinstance(definition, VariableDependency) assert isinstance(definition, VariableDependency)
maybe_resolved = definition.partial_resolve( maybe_resolved = definition.partial_resolve(

View file

@ -8,6 +8,8 @@ import pytest
import yaml import yaml
from ytdl_sub.config.config_file import ConfigFile 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.plugins.nfo_tags import NfoTagsOptions
from ytdl_sub.subscriptions.subscription import Subscription from ytdl_sub.subscriptions.subscription import Subscription
from ytdl_sub.utils.exceptions import ValidationException from ytdl_sub.utils.exceptions import ValidationException
@ -615,6 +617,7 @@ def test_default_docker_config_and_subscriptions(
) )
unresolvable.add("entry_metadata") unresolvable.add("entry_metadata")
unresolvable.add("sibling_metadata") unresolvable.add("sibling_metadata")
unresolvable.update(VARIABLES.scripts().keys())
out = default_subs[0].overrides.script.resolve_partial(unresolvable=unresolvable) out = default_subs[0].overrides.script.resolve_partial(unresolvable=unresolvable)
test1 = ScriptUtils.to_native_script(out._variables["episode_file_name"]) test1 = ScriptUtils.to_native_script(out._variables["episode_file_name"])