Pydantic использует список из файла .env с BaseSettingsPython

Программы на Python
Anonymous
Pydantic использует список из файла .env с BaseSettings

Сообщение Anonymous »

После обновления pydantic с версии 1.9 до 2.6 списки в файле .env больше не работают. Мне интересно, есть ли новый синтаксис или другой параметр, который мне нужно включить, чтобы добиться такого же поведения.
Это то, что у меня было раньше

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

`my_list: list[str]`
С файлом .env как

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

MY_LIST=["a","b"]
Это работало должным образом в версии 1.9, теперь я получаю сообщение об ошибке

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

  Input should be a valid list [type=list_type, input_value='["a","b"]', input_type=str]
For further information visit https://errors.pydantic.dev/2.6/v/list_type
Мне не удалось найти никакой перестановки, позволяющей не интерпретировать ввод как строку. Другие переменные, не входящие в список, работают нормально
Подводя итог, следующий код работает в версии 1.9

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

from pydantic import BaseSettings, Field
import os
import logging
import sys

class Settings(BaseSettings):
my_list: list[str] = Field(..., env="MY_LIST")

class Config:
env_file = f'{os.environ.get("ENV")}.env'
env_file_encoding = 'utf-8'
env_prefix = f'{os.environ.get("ENV")}_'
extra='ignore'

try:
settings = Settings()
print(settings)
except Exception as e:
logging.critical(f"required settings not provided, shutting down - {e}")
sys.exit(1)

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

result - my_list=['a', 'b']
Обновите версию 2.6 и используйте pydantic_settings, появится ошибка

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

from pydantic import Field
from pydantic_settings import BaseSettings
import os
import logging
import sys

class Settings(BaseSettings):
my_list: list[str] = Field(..., env="MY_LIST")

class Config:
env_file = f'{os.environ.get("ENV")}.env'
env_file_encoding = 'utf-8'
env_prefix = f'{os.environ.get("ENV")}_'
extra='ignore'

try:
settings = Settings()
print(settings)
except Exception as e:
logging.critical(f"required settings not provided, shutting down - {e}")
sys.exit(1)

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

CRITICAL:root:required settings not provided, shutting down - 1 validation error for Settings
my_list
Input should be a valid list [type=list_type, input_value='["a","b"]', input_type=str]
For further information visit https://errors.pydantic.dev/2.6/v/list_type
Можно ли как-нибудь вернуть исходное поведение?

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