dont warn about update_in_place config more than once per key

This commit is contained in:
Nick Sweeting 2024-10-21 01:30:42 -07:00
parent 354c1ede35
commit dd40f252ed
No known key found for this signature in database

View file

@ -29,6 +29,8 @@ ARCHIVEBOX_CONFIG_FILE_BAK = ARCHIVEBOX_CONFIG_FILE.parent / ".ArchiveBox.conf.b
AUTOFIXES_HEADER = "[AUTOFIXES]"
AUTOFIXES_SUBHEADER = "# The following config was added automatically to fix problems detected at startup:"
_ALREADY_WARNED_ABOUT_UPDATED_CONFIG = set()
class FlatTomlConfigSettingsSource(TomlConfigSettingsSource):
"""
@ -167,6 +169,10 @@ class BaseConfigSet(BaseSettings):
setattr(self, key, computed_default)
return self
def validate(self):
"""Manual validation method, to be called from plugin/__init__.py:get_CONFIG()"""
pass
def get_default_value(self, key):
"""Get the default value for a given config key"""
field = self.model_fields[key]
@ -198,9 +204,13 @@ class BaseConfigSet(BaseSettings):
"""
from archivebox.misc.toml_util import CustomTOMLEncoder
# silence warnings if they've already been shown once
if all(key in _ALREADY_WARNED_ABOUT_UPDATED_CONFIG for key in kwargs.keys()):
warn = False
if warn:
fix_scope = 'in ArchiveBox.conf' if persist else 'just for current run'
print(f'[yellow]:warning: WARNING: Some config cannot be used as-is, fixing automatically {fix_scope}:[/yellow] {hint}', file=sys.stderr)
print(f'\n[yellow]:warning: WARNING: Some config cannot be used as-is, fixing automatically {fix_scope}:[/yellow] {hint}', file=sys.stderr)
# set the new values in the environment
for key, value in kwargs.items():
@ -208,6 +218,7 @@ class BaseConfigSet(BaseSettings):
original_value = getattr(self, key)
if warn:
print(f' {key}={original_value} -> {value}')
_ALREADY_WARNED_ABOUT_UPDATED_CONFIG.add(key)
# if persist=True, write config changes to data/ArchiveBox.conf [AUTOFIXES] section
try: