«json_schema_extra» и проблемы Pylance/PyrightPython

Программы на Python
Ответить
Anonymous
 «json_schema_extra» и проблемы Pylance/Pyright

Сообщение Anonymous »

Мне нужно добавить метаданные в поля модели pydantic таким образом, чтобы я мог изменять метаданные. В итоге я нашел следующее решение:

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

class Foo(BaseModel):
a: str = Field(
meta_field=("some extra data a"),  # pyright: ignore
)
b: str = Field(
meta_field=("some extra data b"),  # pyright: ignore
)
c: str = Field(
meta_field=("some extra data c"),  # pyright: ignore
)

@classmethod
def summarize_meta_fields(cls, **kwargs) -> dict[str, str]:
schema = cls.model_json_schema()
return {
k: schema["properties"][k]["meta_field"] for k in schema["properties"].keys()
}

def configure_meta_data(**kwargs) -> None:
for k in kwargs:
if k not in Foo.model_fields:
raise ValueError(f"Field {k} not found in SummeryTube model")
Foo.model_fields[k].json_schema_extra["meta_field"] = kwargs[k]
Моя проблема в том, что в VScode я получаю следующую ошибку:
[img]https: //i.sstatic.net/8MshlpvT.png[/img]

со следующим текстом:

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

Object of type "(JsonDict) -> None" is not subscriptablePylancereportIndexIssue
Object of type "None" is not subscriptablePylancereportOptionalSubscript
Как я могу реорганизовать код и смягчить это предупреждение? Или мне следует просто игнорировать это, поскольку код ведет себя так, как я ожидаю.

Подробнее здесь: https://stackoverflow.com/questions/791 ... ght-issues
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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