first example of plugin config based on another plugin config

This commit is contained in:
Nick Sweeting 2024-09-23 21:10:19 -07:00
parent 8df9480824
commit 1a58967e8c
No known key found for this signature in database
2 changed files with 17 additions and 15 deletions

View file

@ -20,7 +20,7 @@ from plugantic.base_hook import BaseHook
# Depends on Other Plugins: # Depends on Other Plugins:
from builtin_plugins.npm.apps import SYS_NPM_BINPROVIDER, LIB_NPM_BINPROVIDER from builtin_plugins.npm.apps import SYS_NPM_BINPROVIDER, LIB_NPM_BINPROVIDER
from builtin_plugins.base.apps import CORE_CONFIG
###################### Config ########################## ###################### Config ##########################
@ -33,12 +33,11 @@ class SinglefileToggleConfigs(BaseConfigSet):
class SinglefileOptionsConfigs(BaseConfigSet): class SinglefileOptionsConfigs(BaseConfigSet):
section: ClassVar[ConfigSectionName] = 'ARCHIVE_METHOD_OPTIONS' section: ClassVar[ConfigSectionName] = 'ARCHIVE_METHOD_OPTIONS'
# loaded from shared config SINGLEFILE_USER_AGENT: str = Field(default=lambda: CORE_CONFIG.USER_AGENT)
SINGLEFILE_USER_AGENT: str = Field(default='', alias='USER_AGENT') SINGLEFILE_TIMEOUT: int = Field(default=lambda: CORE_CONFIG.TIMEOUT)
SINGLEFILE_TIMEOUT: int = Field(default=60, alias='TIMEOUT') SINGLEFILE_CHECK_SSL_VALIDITY: bool = Field(default=lambda: CORE_CONFIG.CHECK_SSL_VALIDITY)
SINGLEFILE_CHECK_SSL_VALIDITY: bool = Field(default=True, alias='CHECK_SSL_VALIDITY') SINGLEFILE_RESTRICT_FILE_NAMES: str = Field(default=lambda: CORE_CONFIG.RESTRICT_FILE_NAMES)
SINGLEFILE_RESTRICT_FILE_NAMES: str = Field(default='windows', alias='RESTRICT_FILE_NAMES') SINGLEFILE_COOKIES_FILE: Optional[Path] = Field(default=lambda: CORE_CONFIG.COOKIES_FILE)
SINGLEFILE_COOKIES_FILE: Optional[Path] = Field(default=None, alias='COOKIES_FILE')
class SinglefileDependencyConfigs(BaseConfigSet): class SinglefileDependencyConfigs(BaseConfigSet):

View file

@ -201,18 +201,21 @@ class BaseConfigSet(ArchiveBoxBaseConfig, BaseHook): # type: ignore[type-ar
def register(self, settings, parent_plugin=None): def register(self, settings, parent_plugin=None):
# self._plugin = parent_plugin # for debugging only, never rely on this! # self._plugin = parent_plugin # for debugging only, never rely on this!
settings.FLAT_CONFIG = getattr(settings, "FLAT_CONFIG", None) or benedict({}) # settings.FLAT_CONFIG = benedict(getattr(settings, "FLAT_CONFIG", settings.CONFIG))
# # pass FLAT_CONFIG so far into our config model to load it
# loaded_config = self.__class__(**settings.FLAT_CONFIG)
# # then dump our parsed config back into FLAT_CONFIG for the next plugin to use
# settings.FLAT_CONFIG.merge(loaded_config.model_dump(include=set(self.model_fields.keys())))
settings.CONFIGS = getattr(settings, "CONFIGS", None) or benedict({}) settings.CONFIGS = getattr(settings, "CONFIGS", None) or benedict({})
settings.CONFIGS[self.id] = self
# pass FLAT_CONFIG so far into our config model to load it self._original_id = id(self)
loaded_config = self.__class__(**settings.FLAT_CONFIG)
# then dump our parsed config back into FLAT_CONFIG for the next plugin to use
settings.FLAT_CONFIG.merge(loaded_config.model_dump())
settings.CONFIGS[self.id] = loaded_config
super().register(settings, parent_plugin=parent_plugin) super().register(settings, parent_plugin=parent_plugin)
# def ready(self, settings):
# # reload config from environment, in case it's been changed by any other plugins
# self.__init__()
# class WgetToggleConfig(ConfigSet): # class WgetToggleConfig(ConfigSet):