Предотвратить утечку переменных среды pdoc в настройках pydanticPython

Программы на Python
Anonymous
Предотвратить утечку переменных среды pdoc в настройках pydantic

Сообщение Anonymous »

Я использую pydantic-settings для сбора параметров конфигурации из различных источников (config.yaml, .env, переменные среды и т. д.). Объект настроек сохраняется как переменная модуля аналогично тому, как это показано здесь для FastAPI:

Код: Выделить всё

from pydantic_settings import BaseSettings

class Settings(BaseSettings):
app_name: str = "Awesome API"
admin_email: str
items_per_user: int = 50

settings = Settings()
Единственное отличие состоит в том, что метка пишется с заглавной буквы и импортируется другими модулями (

Код: Выделить всё

from my_app.config import SETTINGS). Это работает довольно хорошо. Однако когда я использую pdoc
для создания документации, он будет использовать __repr__/ для документирования значения SETTINGS:

Код: Выделить всё

SETTINGS: Settings =
Settings(api=APIConfig(token=SecretStr('**********'), endpoint=SecretStr('**********')), logging=LoggingConfig(level=), uid=501, device_info=None)
При этом происходит утечка информации о среде, а в худшем случае — даже учетных данных, URL-адресов или токенов сеанса, которые были набраны с помощью str вместо SecretStr. Я не хочу переопределять __repr__, так как может быть полезно регистрировать настройки во время выполнения. Однако для целей документации SETTINGS: Settings без значения должно быть достаточно, поскольку фактическое значение зависит от среды пользователя. Однако SETTINGS должен быть задокументирован, чтобы читатели знали, что он существует и к нему можно получить доступ.
Есть ли способ указать pdoc или pydantic(-settings) не документировать переменную модуля ценить? Или есть лучший шаблон для загрузки и обмена настройками между модулями?

Подробнее здесь: https://stackoverflow.com/questions/786 ... c-settings

Вернуться в «Python»