separate func for variable checking, need to make it more advanced

This commit is contained in:
Jesse Bannon 2022-09-12 22:57:12 -07:00
parent db1af8bd5f
commit d9bca00bc4

View file

@ -186,7 +186,6 @@ class Preset(StrictDictValidator):
def __validate_and_get_plugins(self) -> PresetPlugins: def __validate_and_get_plugins(self) -> PresetPlugins:
preset_plugins = PresetPlugins() preset_plugins = PresetPlugins()
source_variables = copy.deepcopy(self._source_variables)
for key in self._keys: for key in self._keys:
if key not in PluginMapping.plugins(): if key not in PluginMapping.plugins():
@ -197,9 +196,19 @@ class Preset(StrictDictValidator):
preset_plugins.add(plugin_type=plugin, plugin_options=plugin_options) preset_plugins.add(plugin_type=plugin, plugin_options=plugin_options)
for plugin, plugin_options in sorted( return preset_plugins
preset_plugins.zipped(),
key=lambda _plugin_and_options: _plugin_and_options[0].priority.modify_entry, def __validate_added_variables(self):
source_variables = copy.deepcopy(self._source_variables)
# Validate added download option variables here since plugins could subsequently use them
self.downloader_options.validate_with_variables(
source_variables=source_variables, override_variables=self.overrides.keys
)
source_variables.extend(self.downloader_options.added_source_variables())
for plugin_options in sorted(
self.plugins.plugin_options, key=lambda pl_options: pl_options.priority.modify_entry
): ):
# Validate current plugin using source + added plugin variables # Validate current plugin using source + added plugin variables
plugin_options.validate_with_variables( plugin_options.validate_with_variables(
@ -209,8 +218,6 @@ class Preset(StrictDictValidator):
# Extend existing source variables with ones created from this plugin # Extend existing source variables with ones created from this plugin
source_variables.extend(plugin_options.added_source_variables()) source_variables.extend(plugin_options.added_source_variables())
return preset_plugins
def __validate_override_string_formatter_validator( def __validate_override_string_formatter_validator(
self, self,
formatter_validator: Union[StringFormatterValidator, OverridesStringFormatterValidator], formatter_validator: Union[StringFormatterValidator, OverridesStringFormatterValidator],
@ -330,6 +337,7 @@ class Preset(StrictDictValidator):
self.overrides = self._validate_key(key="overrides", validator=Overrides, default={}) self.overrides = self._validate_key(key="overrides", validator=Overrides, default={})
self.plugins: PresetPlugins = self.__validate_and_get_plugins() self.plugins: PresetPlugins = self.__validate_and_get_plugins()
self.__validate_added_variables()
# After all options are initialized, perform a recursive post-validate that requires # After all options are initialized, perform a recursive post-validate that requires
# values from multiple validators # values from multiple validators