dummy variable helper

This commit is contained in:
Jesse Bannon 2023-12-08 13:56:14 -08:00
parent 9d4398ed7a
commit f080554ff6
4 changed files with 29 additions and 26 deletions

View file

@ -184,13 +184,7 @@ class Preset(_PresetShell):
script = ScriptBuilder( script = ScriptBuilder(
Scriptable.add_sanitized_variables(self.overrides.dict_with_format_strings) Scriptable.add_sanitized_variables(self.overrides.dict_with_format_strings)
) )
script.add( script.add_resolved(Scriptable.add_dummy_variables(self._source_variables))
Scriptable.add_sanitized_variables(
{source_var: "dummy_string" for source_var in self._source_variables}
)
)
# updates any resolved variables
_ = script.partial_build()
return script return script
@functools.cached_property @functools.cached_property
@ -198,10 +192,8 @@ class Preset(_PresetShell):
""" """
Contains actualized script which should hold all Override variables Contains actualized script which should hold all Override variables
""" """
return self._script_builder.add( return self._script_builder.add_resolved(
Scriptable.add_sanitized_variables( Scriptable.add_dummy_variables(self._added_variables)
{source_var: "dummy_string" for source_var in self._added_variables}
)
).partial_build() ).partial_build()
def __validate_and_get_plugins(self) -> PresetPlugins: def __validate_and_get_plugins(self) -> PresetPlugins:
@ -221,10 +213,8 @@ class Preset(_PresetShell):
def __validate_added_variables(self): def __validate_added_variables(self):
script_builder = copy.deepcopy(self._script_builder) script_builder = copy.deepcopy(self._script_builder)
self.downloader_options.validate_with_variables(script=script_builder.partial_build()) self.downloader_options.validate_with_variables(script=script_builder.partial_build())
script_builder.add( script_builder.add_resolved(
Scriptable.add_sanitized_variables( Scriptable.add_dummy_variables(self.downloader_options.added_source_variables())
{name: "dummy_string" for name in self.downloader_options.added_source_variables()}
)
) )
for _, plugin_options in sorted( for _, plugin_options in sorted(
@ -232,13 +222,8 @@ class Preset(_PresetShell):
): ):
# Validate current plugin using source + added plugin variables # Validate current plugin using source + added plugin variables
plugin_options.validate_with_variables(script=script_builder.partial_build()) plugin_options.validate_with_variables(script=script_builder.partial_build())
script_builder.add( script_builder.add_resolved(
Scriptable.add_sanitized_variables( Scriptable.add_dummy_variables(self.downloader_options.added_source_variables())
{
name: "dummy_string"
for name in self.downloader_options.added_source_variables()
}
)
) )
@functools.cache @functools.cache

View file

@ -439,6 +439,12 @@ class ScriptBuilder:
) )
return self return self
def add_resolved(self, variables: Dict[str, Resolvable]) -> "ScriptBuilder":
for variable_name, resolvable in variables.items():
self._variables[variable_name] = SyntaxTree(ast=[resolvable])
return self
@property @property
def _missing_metadata(self) -> Tuple[Dict[str, Set[str]], Dict[str, Set[str]]]: def _missing_metadata(self) -> Tuple[Dict[str, Set[str]], Dict[str, Set[str]]]:
variables_missing_metadata: Dict[str, Set[str]] = defaultdict(set) variables_missing_metadata: Dict[str, Set[str]] = defaultdict(set)

View file

@ -3,14 +3,26 @@ import json
from abc import ABC from abc import ABC
from typing import Any from typing import Any
from typing import Dict from typing import Dict
from typing import Iterable
from typing import Set from typing import Set
from ytdl_sub.entries.script.variable_scripts import UNRESOLVED_VARIABLES from ytdl_sub.entries.script.variable_scripts import UNRESOLVED_VARIABLES
from ytdl_sub.entries.script.variable_scripts import VARIABLE_SCRIPTS from ytdl_sub.entries.script.variable_scripts import VARIABLE_SCRIPTS
from ytdl_sub.script.script import Script from ytdl_sub.script.script import Script
from ytdl_sub.script.types.resolvable import Resolvable
from ytdl_sub.script.types.resolvable import String
class Scriptable(ABC): class Scriptable(ABC):
@classmethod
def add_dummy_variables(cls, variables: Iterable[str]) -> Dict[str, Resolvable]:
dummy_variables: Dict[str, Resolvable] = {}
for var in variables:
dummy_variables[var] = String("dummy_string")
dummy_variables[f"{var}_sanitized"] = String("dummy_string")
return dummy_variables
@classmethod @classmethod
def add_sanitized_variables(cls, variables: Dict[str, str]) -> Dict[str, str]: def add_sanitized_variables(cls, variables: Dict[str, str]) -> Dict[str, str]:
sanitized_variables = { sanitized_variables = {

View file

@ -153,8 +153,8 @@ class TestPrebuiltTVShowPresets:
is_youtube_channel: bool, is_youtube_channel: bool,
is_many_urls: bool, is_many_urls: bool,
): ):
yappi.set_clock_type("wall") # Use set_clock_type("wall") for wall time # yappi.set_clock_type("wall") # Use set_clock_type("wall") for wall time
yappi.start() # yappi.start()
expected_summary_name = "unit/{}/{}/is_yt_{}{}".format( expected_summary_name = "unit/{}/{}/is_yt_{}{}".format(
media_player_preset, media_player_preset,
@ -225,8 +225,8 @@ class TestPrebuiltTVShowPresets:
) )
reformatted_transaction_log = reformatted_subscription.update_with_info_json(dry_run=False) reformatted_transaction_log = reformatted_subscription.update_with_info_json(dry_run=False)
yappi.get_func_stats().print_all() # yappi.get_func_stats().print_all()
#
assert_transaction_log_matches( assert_transaction_log_matches(
output_directory=output_directory, output_directory=output_directory,
transaction_log=reformatted_transaction_log, transaction_log=reformatted_transaction_log,