diff --git a/src/ytdl_sub/config/overrides.py b/src/ytdl_sub/config/overrides.py index 623fc06d..b5225ed2 100644 --- a/src/ytdl_sub/config/overrides.py +++ b/src/ytdl_sub/config/overrides.py @@ -20,7 +20,6 @@ from ytdl_sub.utils.exceptions import StringFormattingException from ytdl_sub.utils.exceptions import ValidationException from ytdl_sub.utils.script import ScriptUtils from ytdl_sub.utils.scriptable import Scriptable -from ytdl_sub.validators.string_formatter_validators import OverridesStringFormatterValidator from ytdl_sub.validators.string_formatter_validators import StringFormatterValidator from ytdl_sub.validators.string_formatter_validators import UnstructuredDictFormatterValidator @@ -207,7 +206,7 @@ class Overrides(UnstructuredDictFormatterValidator, Scriptable): formatter: StringFormatterValidator, entry: Optional[Entry] = None, function_overrides: Optional[Dict[str, str]] = None, - ) -> str: + ) -> Any: """ Parameters ---------- @@ -228,33 +227,8 @@ class Overrides(UnstructuredDictFormatterValidator, Scriptable): If the formatter that is trying to be resolved cannot """ return formatter.post_process( - str( - self._apply_to_resolvable( - formatter=formatter, entry=entry, function_overrides=function_overrides - ) - ) - ) - - def apply_overrides_formatter_to_native( - self, - formatter: OverridesStringFormatterValidator, - function_overrides: Optional[Dict[str, str]] = None, - ) -> Any: - """ - Parameters - ---------- - formatter - Overrides formatter to apply - function_overrides - Optional. Explicit values to override the overrides themselves and source variables - - Returns - ------- - The native python form of the resolved variable - """ - return formatter.post_process_native( self._apply_to_resolvable( - formatter=formatter, entry=None, function_overrides=function_overrides + formatter=formatter, entry=entry, function_overrides=function_overrides ).native ) diff --git a/src/ytdl_sub/config/preset_options.py b/src/ytdl_sub/config/preset_options.py index 93f36453..db07ca02 100644 --- a/src/ytdl_sub/config/preset_options.py +++ b/src/ytdl_sub/config/preset_options.py @@ -62,10 +62,7 @@ class YTDLOptions(UnstructuredOverridesDictFormatterValidator): Materializes the entire ytdl-options dict from OverrideStringFormatters into native python. """ - out = { - key: overrides.apply_overrides_formatter_to_native(val) - for key, val in self.dict.items() - } + out = {key: overrides.apply_formatter(val) for key, val in self.dict.items()} if "cookiefile" in out: if not FileHandler.is_file_existent(out["cookiefile"]): raise ValidationException( diff --git a/src/ytdl_sub/downloaders/url/downloader.py b/src/ytdl_sub/downloaders/url/downloader.py index acb35895..ad9fe272 100644 --- a/src/ytdl_sub/downloaders/url/downloader.py +++ b/src/ytdl_sub/downloaders/url/downloader.py @@ -52,12 +52,12 @@ class UrlDownloaderBasePluginExtension(SourcePluginExtension[MultiUrlValidator]) if 0 <= input_url_idx < len(self.plugin_options.urls.list): validator = self.plugin_options.urls.list[input_url_idx] - if entry_input_url in self.overrides.apply_overrides_formatter_to_native(validator.url): + if entry_input_url in self.overrides.apply_formatter(validator.url): return validator # Match the first validator based on the URL, if one exists for validator in self.plugin_options.urls.list: - if entry_input_url in self.overrides.apply_overrides_formatter_to_native(validator.url): + if entry_input_url in self.overrides.apply_formatter(validator.url): return validator # Return the first validator if none exist @@ -487,7 +487,7 @@ class MultiUrlDownloader(SourcePlugin[MultiUrlValidator]): # download the bottom-most urls first since they are top-priority for idx, url_validator in reversed(list(enumerate(self.collection.urls.list))): # URLs can be empty. If they are, then skip - if not (urls := self.overrides.apply_overrides_formatter_to_native(url_validator.url)): + if not (urls := self.overrides.apply_formatter(url_validator.url)): continue assert isinstance(urls, list) diff --git a/src/ytdl_sub/downloaders/url/validators.py b/src/ytdl_sub/downloaders/url/validators.py index 551d7169..84c8ceab 100644 --- a/src/ytdl_sub/downloaders/url/validators.py +++ b/src/ytdl_sub/downloaders/url/validators.py @@ -44,7 +44,7 @@ class UrlThumbnailListValidator(ListValidator[UrlThumbnailValidator]): class OverridesOneOrManyUrlValidator(OverridesStringFormatterValidator): - def post_process_native(self, resolved: Any) -> Any: + def post_process(self, resolved: Any) -> Any: if isinstance(resolved, str): return [resolved] if isinstance(resolved, list): diff --git a/src/ytdl_sub/validators/string_formatter_validators.py b/src/ytdl_sub/validators/string_formatter_validators.py index 21715c03..aad6a413 100644 --- a/src/ytdl_sub/validators/string_formatter_validators.py +++ b/src/ytdl_sub/validators/string_formatter_validators.py @@ -82,21 +82,13 @@ class StringFormatterValidator(StringValidator): """ return self._parsed - def post_process(self, resolved: str) -> str: + def post_process(self, resolved: Any) -> Any: """ Returns ------- - Apply any post processing to the resolved value + Apply any post processing to the resolved value. Defaults to casting it to string. """ - return resolved - - def post_process_native(self, resolved: Any) -> Any: - """ - Returns - ------- - Apply any post processing to the resolved native value. - """ - return resolved + return str(resolved) class FloatFormatterValidator(StringFormatterValidator): diff --git a/tests/unit/config/test_subscription.py b/tests/unit/config/test_subscription.py index 35942f8d..930708ed 100644 --- a/tests/unit/config/test_subscription.py +++ b/tests/unit/config/test_subscription.py @@ -475,19 +475,6 @@ def test_advanced_tv_show_subscriptions( assert overrides.script.get("subscription_name").native == "Gardening with Ciscoe" - assert overrides.apply_overrides_formatter_to_native(overrides.dict["subscription_array"]) == [ - "https://www.youtube.com/@gardeningwithciscoe4430", - "https://www.youtube.com/playlist?list=PLi8V8UemxeG6lo5if5H5g5EbsteELcb0_", - "https://www.youtube.com/playlist?list=PLsJlQSR-KjmaQqqJ9jq18cF6XXXAR4kyn", - "https://www.youtube.com/watch?v=2vq-vPubS5I", - ] - assert overrides.apply_overrides_formatter_to_native(overrides.dict["urls"]) == [ - "https://www.youtube.com/@gardeningwithciscoe4430", - "https://www.youtube.com/playlist?list=PLi8V8UemxeG6lo5if5H5g5EbsteELcb0_", - "https://www.youtube.com/playlist?list=PLsJlQSR-KjmaQqqJ9jq18cF6XXXAR4kyn", - "https://www.youtube.com/watch?v=2vq-vPubS5I", - ] - def test_music_subscriptions(default_config: ConfigFile, music_subscriptions_path: Path): subs = Subscription.from_file_path( diff --git a/tests/unit/prebuilt_presets/test_tv_show_collection.py b/tests/unit/prebuilt_presets/test_tv_show_collection.py index 07e30006..b7f1a6e1 100644 --- a/tests/unit/prebuilt_presets/test_tv_show_collection.py +++ b/tests/unit/prebuilt_presets/test_tv_show_collection.py @@ -57,7 +57,7 @@ class TestTvShowCollectionPreset: # is_bilateral if i == 0: - url = sub.overrides.apply_overrides_formatter_to_native( + url = sub.overrides.apply_formatter( url_list[itr].url, function_overrides={ # mock so bilateral url gets enabled @@ -81,7 +81,7 @@ class TestTvShowCollectionPreset: # not bilateral else: for j in range(2): - url = sub.overrides.apply_overrides_formatter_to_native( + url = sub.overrides.apply_formatter( url_list[itr + j].url, function_overrides={ # mock so bilateral url gets enabled