From ba824177ba81ffeb239e1792bb2691d8f84efaf7 Mon Sep 17 00:00:00 2001 From: Jesse Bannon Date: Sun, 23 Jul 2023 22:42:51 -0700 Subject: [PATCH] [REFACTOR] OptionsValidator + OptionsDictValidator --- src/ytdl_sub/config/preset_options.py | 7 ++++++- src/ytdl_sub/downloaders/base_downloader.py | 4 ++-- src/ytdl_sub/downloaders/url/validators.py | 4 ++-- src/ytdl_sub/plugins/plugin.py | 4 ++-- 4 files changed, 12 insertions(+), 7 deletions(-) diff --git a/src/ytdl_sub/config/preset_options.py b/src/ytdl_sub/config/preset_options.py index 72f1b281..d9ba7f9c 100644 --- a/src/ytdl_sub/config/preset_options.py +++ b/src/ytdl_sub/config/preset_options.py @@ -18,11 +18,12 @@ from ytdl_sub.validators.string_formatter_validators import OverridesStringForma from ytdl_sub.validators.string_formatter_validators import StringFormatterValidator from ytdl_sub.validators.validators import BoolValidator from ytdl_sub.validators.validators import LiteralDictValidator +from ytdl_sub.validators.validators import Validator # pylint: disable=no-self-use # pylint: disable=unused-argument -class OptionsValidator(StrictDictValidator, ABC): +class OptionsValidator(Validator, ABC): """ Abstract class that validates options for preset sections (plugins, downloaders) """ @@ -70,6 +71,10 @@ class OptionsValidator(StrictDictValidator, ABC): return None +class OptionsDictValidator(StrictDictValidator, OptionsValidator, ABC): + pass + + # pylint: enable=no-self-use # pylint: enable=unused-argument diff --git a/src/ytdl_sub/downloaders/base_downloader.py b/src/ytdl_sub/downloaders/base_downloader.py index 73759af0..dd105fb7 100644 --- a/src/ytdl_sub/downloaders/base_downloader.py +++ b/src/ytdl_sub/downloaders/base_downloader.py @@ -6,7 +6,7 @@ from typing import List from typing import Type from typing import TypeVar -from ytdl_sub.config.preset_options import OptionsValidator +from ytdl_sub.config.preset_options import OptionsDictValidator from ytdl_sub.config.preset_options import Overrides from ytdl_sub.downloaders.ytdl_options_builder import YTDLOptionsBuilder from ytdl_sub.entries.entry import Entry @@ -14,7 +14,7 @@ from ytdl_sub.plugins.plugin import Plugin from ytdl_sub.ytdl_additions.enhanced_download_archive import DownloadArchiver from ytdl_sub.ytdl_additions.enhanced_download_archive import EnhancedDownloadArchive -BaseDownloaderValidator = OptionsValidator +BaseDownloaderValidator = OptionsDictValidator BaseDownloaderOptionsT = TypeVar("BaseDownloaderOptionsT", bound=BaseDownloaderValidator) diff --git a/src/ytdl_sub/downloaders/url/validators.py b/src/ytdl_sub/downloaders/url/validators.py index 52e5f367..53486117 100644 --- a/src/ytdl_sub/downloaders/url/validators.py +++ b/src/ytdl_sub/downloaders/url/validators.py @@ -3,7 +3,7 @@ from typing import Dict from typing import List from typing import Optional -from ytdl_sub.config.preset_options import OptionsValidator +from ytdl_sub.config.preset_options import OptionsDictValidator from ytdl_sub.validators.strict_dict_validator import StrictDictValidator from ytdl_sub.validators.string_formatter_validators import DictFormatterValidator from ytdl_sub.validators.string_formatter_validators import OverridesStringFormatterValidator @@ -172,7 +172,7 @@ class UrlListValidator(ListValidator[UrlValidator]): collection_variables[var] = added_variables[var] -class MultiUrlValidator(OptionsValidator): +class MultiUrlValidator(OptionsDictValidator): """ Downloads from multiple URLs. If an entry is returned from more than one URL, it will resolve to the bottom-most URL settings. diff --git a/src/ytdl_sub/plugins/plugin.py b/src/ytdl_sub/plugins/plugin.py index 35488dfd..0bee6c55 100644 --- a/src/ytdl_sub/plugins/plugin.py +++ b/src/ytdl_sub/plugins/plugin.py @@ -7,7 +7,7 @@ from typing import Tuple from typing import Type from typing import TypeVar -from ytdl_sub.config.preset_options import OptionsValidator +from ytdl_sub.config.preset_options import OptionsDictValidator from ytdl_sub.config.preset_options import Overrides from ytdl_sub.entries.entry import Entry from ytdl_sub.utils.file_handler import FileMetadata @@ -40,7 +40,7 @@ class PluginPriority: return self.modify_entry >= PluginPriority.MODIFY_ENTRY_AFTER_SPLIT -PluginOptions = OptionsValidator +PluginOptions = OptionsDictValidator PluginOptionsT = TypeVar("PluginOptionsT", bound=PluginOptions)