Source code for app.util.config.models.base

# SPDX-License-Identifier: GPLv3-or-later
# Copyright © 2025 pygaindalf Rui Pinheiro

import logging

from reprlib import Repr
from typing import ClassVar

from pydantic import Field

from ...logging.config import LoggingConfig
from ...requests.config import RequestsConfig
from .app_info import AppInfo
from .base_model import BaseConfigModel


[docs] class ConfigLoggingOnly(BaseConfigModel): PROPAGATE_FROM_PARENT: ClassVar[bool] = False logging: LoggingConfig = Field(default=LoggingConfig(), description="Logging configuration")
[docs] class ConfigBase(ConfigLoggingOnly): PROPAGATE_FROM_PARENT: ClassVar[bool] = True app: AppInfo = Field(description="Application information, automatically gathered at startup") requests: RequestsConfig = Field(default_factory=RequestsConfig, description="HTTP requests configuration, including rate limiting and caching")
[docs] def debug(self) -> None: model_dump = None # TTY if self.log.isEnabledForTty(logging.DEBUG): if self.logging.rich: from rich import pretty pretty.pprint(self, indent_guides=True, expand_all=True) else: model_dump = self.model_dump() self.log.debug(Repr(indent=4).repr(model_dump), extra={"handler": "tty"}) # File if self.log.isEnabledForFile(logging.DEBUG): if model_dump is None: model_dump = self.model_dump() self.log.debug("Configuration: %s", Repr(indent=4).repr(model_dump), extra={"handler": "file"})