better usage
This commit is contained in:
parent
90f7f6e227
commit
5dad43f236
6 changed files with 25 additions and 19 deletions
|
|
@ -8,6 +8,7 @@ import mergedeep
|
|||
from ytdl_sub.entries.entry import Entry
|
||||
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 OverrideVariables
|
||||
from ytdl_sub.script.parser import parse
|
||||
from ytdl_sub.script.script import Script
|
||||
from ytdl_sub.script.utils.exceptions import ScriptVariableNotResolved
|
||||
|
|
@ -126,10 +127,13 @@ class Overrides(DictFormatterValidator, Scriptable):
|
|||
)
|
||||
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
|
||||
"""
|
||||
self.script.add({OverrideVariables.subscription_name(): subscription_name})
|
||||
self.script.add(
|
||||
self.initial_variables(
|
||||
unresolved_variables={
|
||||
|
|
|
|||
|
|
@ -198,7 +198,9 @@ class Preset(_PresetShell):
|
|||
downloader_options=self.downloader_options,
|
||||
output_options=self.output_options,
|
||||
plugins=self.plugins,
|
||||
).initialize_overrides(overrides=self.overrides).ensure_proper_usage()
|
||||
).initialize_overrides(
|
||||
subscription_name=self.name, overrides=self.overrides
|
||||
).ensure_proper_usage()
|
||||
|
||||
@property
|
||||
def name(self) -> str:
|
||||
|
|
|
|||
|
|
@ -88,7 +88,9 @@ class VariableValidation:
|
|||
self.resolved_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.
|
||||
"""
|
||||
|
|
@ -127,7 +129,9 @@ class VariableValidation:
|
|||
# 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
|
||||
# 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
|
||||
self.script = copy.deepcopy(overrides.script).add(_add_dummy_variables(entry_variables))
|
||||
|
|
|
|||
|
|
@ -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.utils.name_validation import is_valid_name
|
||||
|
||||
SUBSCRIPTION_NAME = "subscription_name"
|
||||
SUBSCRIPTION_VALUE = "subscription_value"
|
||||
SUBSCRIPTION_MAP = "subscription_map"
|
||||
# TODO: use this
|
||||
SUBSCRIPTION_ARRAY = "subscription_array"
|
||||
|
||||
|
||||
|
|
@ -15,7 +13,7 @@ class OverrideVariables:
|
|||
"""
|
||||
Name of the subscription
|
||||
"""
|
||||
return SUBSCRIPTION_NAME
|
||||
return "subscription_name"
|
||||
|
||||
@staticmethod
|
||||
def subscription_value() -> str:
|
||||
|
|
@ -28,7 +26,7 @@ class OverrideVariables:
|
|||
|
||||
``subscription_value`` gets set to ``https://...``.
|
||||
"""
|
||||
return SUBSCRIPTION_VALUE
|
||||
return "subscription_value"
|
||||
|
||||
@staticmethod
|
||||
def subscription_indent_i(index: int) -> str:
|
||||
|
|
@ -90,7 +88,7 @@ class OverrideVariables:
|
|||
]
|
||||
}
|
||||
"""
|
||||
return SUBSCRIPTION_MAP
|
||||
return "subscription_map"
|
||||
|
||||
|
||||
class OverrideHelpers:
|
||||
|
|
|
|||
|
|
@ -9,9 +9,6 @@ from typing import final
|
|||
|
||||
from ytdl_sub.config.config_file import ConfigFile
|
||||
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.utils.script import ScriptUtils
|
||||
from ytdl_sub.validators.string_formatter_validators import DictFormatterValidator
|
||||
|
|
@ -85,7 +82,6 @@ class SubscriptionPresetDictValidator(NamedSubscriptionValidator, DictValidator)
|
|||
output_dict["overrides"] = dict(
|
||||
output_dict.get("overrides", {}),
|
||||
**self._indent_overrides_dict(),
|
||||
**{SUBSCRIPTION_NAME: self.subscription_name},
|
||||
)
|
||||
return {self.subscription_name: output_dict}
|
||||
|
||||
|
|
@ -114,7 +110,7 @@ class SubscriptionLeafValidator(NamedSubscriptionValidator, ABC):
|
|||
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
|
||||
def subscription_dicts(self, global_presets_to_apply: List[str]) -> Dict[str, Dict]:
|
||||
|
|
@ -147,7 +143,7 @@ class SubscriptionValueValidator(SubscriptionLeafValidator, StringValidator):
|
|||
presets=presets,
|
||||
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):
|
||||
|
|
@ -172,7 +168,7 @@ class SubscriptionListValuesValidator(SubscriptionLeafValidator, StringListValid
|
|||
for idx, list_value in enumerate(self.list):
|
||||
# Write the first list value into subscription_value as well
|
||||
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[
|
||||
OverrideVariables.subscription_value_i(index=idx)
|
||||
|
|
@ -219,7 +215,9 @@ class SubscriptionMapValidator(SubscriptionLeafValidator, LiteralDictValidator):
|
|||
presets=presets,
|
||||
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):
|
||||
|
|
|
|||
|
|
@ -451,7 +451,7 @@ def test_advanced_tv_show_subscriptions(
|
|||
assert subs[5].name == "Gardening with Ciscoe"
|
||||
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 (
|
||||
overrides.apply_formatter(overrides.dict["url"])
|
||||
== "https://www.youtube.com/@gardeningwithciscoe4430"
|
||||
|
|
|
|||
Loading…
Reference in a new issue