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.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={
|
||||||
|
|
|
||||||
|
|
@ -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:
|
||||||
|
|
|
||||||
|
|
@ -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))
|
||||||
|
|
|
||||||
|
|
@ -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:
|
||||||
|
|
|
||||||
|
|
@ -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):
|
||||||
|
|
|
||||||
|
|
@ -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"
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue