Как получить тип модели внутри PydanticBaseSettingsSource?Python

Программы на Python
Anonymous
Как получить тип модели внутри PydanticBaseSettingsSource?

Сообщение Anonymous »

Я пишу собственный PydanticBaseSettingsSource и обрабатываю поля определенного типа MyModel

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

class CustomSettingsSource(PydanticBaseSettingsSource):
# Must implement
def get_field_value(
self, field: FieldInfo, field_name: str
) -> Tuple[Any, str, bool]:
return ({}, "", False)

def __call__(self) -> Dict[str, Any]:
d: Dict[str, Any] = {}

for field_name, field in self.settings_cls.model_fields.items():
# If a field is of type MyModel I do custom processing/fetching

# This returns 
print(field.annotation)

# This does not work
if isinstance(field.annotation, MyModel):
# do stuff...
return d
Я создаю конфигурацию, присваивающую полю тип MyModel:

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

class Test(MyConfig):
test: MyModel = MyModel(blah="sdfsdf")
Как правильно это сделать? Мне действительно не хочется делать что-то вроде if «MyModel» в str(field.annotation): ..., потому что это похоже на хак.

Подробнее здесь: https://stackoverflow.com/questions/784 ... ingssource

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