Pydantic_settings неправильно вызывает валидаторы «до»Python

Программы на Python
Anonymous
Pydantic_settings неправильно вызывает валидаторы «до»

Сообщение Anonymous »

Я пишу класс pydantic_settings для чтения данных из файла .env/переменных среды. Соответствующие части выглядят следующим образом:

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

from pydantic_settings import BaseSettings
from pydantic import Field, field_validator
from typing import Tuple

class JobSettings(BaseSettings):
wp_generate_funnel_box: bool = Field(True)
wp_funnel_box_dims_mm: Tuple[int, int, int] = Field((380, 90, 380))

@field_validator('wp_funnel_box_dims_mm', mode='before')
@classmethod
def parse_int_tuple(cls, v) -> tuple[int, int, int]:
output = tuple(int(x.strip()) for x in v.split(','))
assert len(output) == 3
return output

model_config = {
"env_file": ".env",
"env_file_encoding": "utf-8",
"extra": "ignore",
}

Мне нужно создать кортеж из трех целых чисел из строки в переменной среды:

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

wp_generate_funnel_box="True"
wp_funnel_box_dims_mm="380, 90, 380"
Похоже, что у Pydantic нет собственного синтаксического анализатора для этого типа данных, поэтому я внедрил этот валидатор полей для правильного анализа и проверки данных. Однако Pydantic, похоже, не запускает код метода; Операторы печати не производят никакого вывода, и простой возврат кортежа(1, 2, 3) тоже ничего не делает. Кажется, я неправильно понимаю, как Pydantic обрабатывает поля, валидаторы и порядок. Конкретная ошибка:

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

SettingsError: error parsing value for field "wp_funnel_box_dims_mm" from source "DotEnvSettingsSource"
Я пробовал различные конфигурации декораторов, режимов и логических структур. До сих пор ничто не изменило тип возникающей ошибки. Pydantic не запускает валидатор перед своей внутренней логикой.

Подробнее здесь: https://stackoverflow.com/questions/788 ... s-properly

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