better usage

This commit is contained in:
Jesse Bannon 2023-12-29 15:04:11 -08:00
parent 90f7f6e227
commit 5dad43f236
6 changed files with 25 additions and 19 deletions

View file

@ -8,6 +8,7 @@ import mergedeep
from ytdl_sub.entries.entry import Entry from ytdl_sub.entries.entry import Entry
from ytdl_sub.entries.script.variable_definitions import VARIABLES from ytdl_sub.entries.script.variable_definitions import VARIABLES
from ytdl_sub.entries.variables.override_variables import OverrideHelpers from ytdl_sub.entries.variables.override_variables import OverrideHelpers
from ytdl_sub.entries.variables.override_variables import OverrideVariables
from ytdl_sub.script.parser import parse from ytdl_sub.script.parser import parse
from ytdl_sub.script.script import Script from ytdl_sub.script.script import Script
from ytdl_sub.script.utils.exceptions import ScriptVariableNotResolved from ytdl_sub.script.utils.exceptions import ScriptVariableNotResolved
@ -126,10 +127,13 @@ class Overrides(DictFormatterValidator, Scriptable):
) )
return ScriptUtils.add_sanitized_variables(initial_variables) return ScriptUtils.add_sanitized_variables(initial_variables)
def initialize_script(self, unresolved_variables: Set[str]) -> "Overrides": def initialize_script(
self, subscription_name: str, unresolved_variables: Set[str]
) -> "Overrides":
""" """
Initialize the override script with override variables + any unresolved variables Initialize the override script with override variables + any unresolved variables
""" """
self.script.add({OverrideVariables.subscription_name(): subscription_name})
self.script.add( self.script.add(
self.initial_variables( self.initial_variables(
unresolved_variables={ unresolved_variables={

View file

@ -198,7 +198,9 @@ class Preset(_PresetShell):
downloader_options=self.downloader_options, downloader_options=self.downloader_options,
output_options=self.output_options, output_options=self.output_options,
plugins=self.plugins, plugins=self.plugins,
).initialize_overrides(overrides=self.overrides).ensure_proper_usage() ).initialize_overrides(
subscription_name=self.name, overrides=self.overrides
).ensure_proper_usage()
@property @property
def name(self) -> str: def name(self) -> str:

View file

@ -88,7 +88,9 @@ class VariableValidation:
self.resolved_variables: Set[str] = set() self.resolved_variables: Set[str] = set()
self.unresolved_variables: Set[str] = set() self.unresolved_variables: Set[str] = set()
def initialize_overrides(self, overrides: Overrides) -> "VariableValidation": def initialize_overrides(
self, subscription_name: str, overrides: Overrides
) -> "VariableValidation":
""" """
Do some gymnastics to initialize the Overrides script. Do some gymnastics to initialize the Overrides script.
""" """
@ -127,7 +129,9 @@ class VariableValidation:
# Initialize overrides with unresolved variables + modified variables to throw an error. # Initialize overrides with unresolved variables + modified variables to throw an error.
# For modified variables, this is to prevent a resolve(update=True) to setting any # For modified variables, this is to prevent a resolve(update=True) to setting any
# dependencies until it has been explicitly added # dependencies until it has been explicitly added
overrides = overrides.initialize_script(unresolved_variables=self.unresolved_variables) overrides = overrides.initialize_script(
subscription_name=subscription_name, unresolved_variables=self.unresolved_variables
)
# copy the script and mock entry variables # copy the script and mock entry variables
self.script = copy.deepcopy(overrides.script).add(_add_dummy_variables(entry_variables)) self.script = copy.deepcopy(overrides.script).add(_add_dummy_variables(entry_variables))

View file

@ -3,9 +3,7 @@ from ytdl_sub.entries.script.variable_definitions import VARIABLE_SCRIPTS
from ytdl_sub.script.functions import Functions from ytdl_sub.script.functions import Functions
from ytdl_sub.script.utils.name_validation import is_valid_name from ytdl_sub.script.utils.name_validation import is_valid_name
SUBSCRIPTION_NAME = "subscription_name" # TODO: use this
SUBSCRIPTION_VALUE = "subscription_value"
SUBSCRIPTION_MAP = "subscription_map"
SUBSCRIPTION_ARRAY = "subscription_array" SUBSCRIPTION_ARRAY = "subscription_array"
@ -15,7 +13,7 @@ class OverrideVariables:
""" """
Name of the subscription Name of the subscription
""" """
return SUBSCRIPTION_NAME return "subscription_name"
@staticmethod @staticmethod
def subscription_value() -> str: def subscription_value() -> str:
@ -28,7 +26,7 @@ class OverrideVariables:
``subscription_value`` gets set to ``https://...``. ``subscription_value`` gets set to ``https://...``.
""" """
return SUBSCRIPTION_VALUE return "subscription_value"
@staticmethod @staticmethod
def subscription_indent_i(index: int) -> str: def subscription_indent_i(index: int) -> str:
@ -90,7 +88,7 @@ class OverrideVariables:
] ]
} }
""" """
return SUBSCRIPTION_MAP return "subscription_map"
class OverrideHelpers: class OverrideHelpers:

View file

@ -9,9 +9,6 @@ from typing import final
from ytdl_sub.config.config_file import ConfigFile from ytdl_sub.config.config_file import ConfigFile
from ytdl_sub.config.overrides import Overrides from ytdl_sub.config.overrides import Overrides
from ytdl_sub.entries.variables.override_variables import SUBSCRIPTION_MAP
from ytdl_sub.entries.variables.override_variables import SUBSCRIPTION_NAME
from ytdl_sub.entries.variables.override_variables import SUBSCRIPTION_VALUE
from ytdl_sub.entries.variables.override_variables import OverrideVariables from ytdl_sub.entries.variables.override_variables import OverrideVariables
from ytdl_sub.utils.script import ScriptUtils from ytdl_sub.utils.script import ScriptUtils
from ytdl_sub.validators.string_formatter_validators import DictFormatterValidator from ytdl_sub.validators.string_formatter_validators import DictFormatterValidator
@ -85,7 +82,6 @@ class SubscriptionPresetDictValidator(NamedSubscriptionValidator, DictValidator)
output_dict["overrides"] = dict( output_dict["overrides"] = dict(
output_dict.get("overrides", {}), output_dict.get("overrides", {}),
**self._indent_overrides_dict(), **self._indent_overrides_dict(),
**{SUBSCRIPTION_NAME: self.subscription_name},
) )
return {self.subscription_name: output_dict} return {self.subscription_name: output_dict}
@ -114,7 +110,7 @@ class SubscriptionLeafValidator(NamedSubscriptionValidator, ABC):
f"used as a subscription name" f"used as a subscription name"
) )
self._overrides_to_add: Dict[str, str] = {SUBSCRIPTION_NAME: self.subscription_name} self._overrides_to_add: Dict[str, str] = {}
@final @final
def subscription_dicts(self, global_presets_to_apply: List[str]) -> Dict[str, Dict]: def subscription_dicts(self, global_presets_to_apply: List[str]) -> Dict[str, Dict]:
@ -147,7 +143,7 @@ class SubscriptionValueValidator(SubscriptionLeafValidator, StringValidator):
presets=presets, presets=presets,
indent_overrides=indent_overrides, indent_overrides=indent_overrides,
) )
self._overrides_to_add[SUBSCRIPTION_VALUE] = self.value self._overrides_to_add[OverrideVariables.subscription_value()] = self.value
class SubscriptionListValuesValidator(SubscriptionLeafValidator, StringListValidator): class SubscriptionListValuesValidator(SubscriptionLeafValidator, StringListValidator):
@ -172,7 +168,7 @@ class SubscriptionListValuesValidator(SubscriptionLeafValidator, StringListValid
for idx, list_value in enumerate(self.list): for idx, list_value in enumerate(self.list):
# Write the first list value into subscription_value as well # Write the first list value into subscription_value as well
if idx == 0: if idx == 0:
self._overrides_to_add[SUBSCRIPTION_VALUE] = list_value.value self._overrides_to_add[OverrideVariables.subscription_value()] = list_value.value
self._overrides_to_add[ self._overrides_to_add[
OverrideVariables.subscription_value_i(index=idx) OverrideVariables.subscription_value_i(index=idx)
@ -219,7 +215,9 @@ class SubscriptionMapValidator(SubscriptionLeafValidator, LiteralDictValidator):
presets=presets, presets=presets,
indent_overrides=indent_overrides, indent_overrides=indent_overrides,
) )
self._overrides_to_add[SUBSCRIPTION_MAP] = ScriptUtils.to_script(self.dict) self._overrides_to_add[OverrideVariables.subscription_map()] = ScriptUtils.to_script(
self.dict
)
class SubscriptionValidator(SubscriptionOutput): class SubscriptionValidator(SubscriptionOutput):

View file

@ -451,7 +451,7 @@ def test_advanced_tv_show_subscriptions(
assert subs[5].name == "Gardening with Ciscoe" assert subs[5].name == "Gardening with Ciscoe"
overrides = subs[5].overrides overrides = subs[5].overrides
assert overrides.apply_formatter(overrides.dict["subscription_name"]) == "Gardening with Ciscoe" assert overrides.script.get("subscription_name").native == "Gardening with Ciscoe"
assert ( assert (
overrides.apply_formatter(overrides.dict["url"]) overrides.apply_formatter(overrides.dict["url"])
== "https://www.youtube.com/@gardeningwithciscoe4430" == "https://www.youtube.com/@gardeningwithciscoe4430"