Введите подсказку объекта JSON в PythonPython

Программы на Python
Anonymous
 Введите подсказку объекта JSON в Python

Сообщение Anonymous »

Я хотел бы ввести подсказки для объектов JSON с неизвестной или изменяющейся структурой (полученной из внешнего API). Я хотел бы избегать использования Any или таких решений, как cast(), насколько это возможно.
Я считаю, что правильный совет:

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

Json: TypeAlias = dict[str, "Json"] | list["Json"] | str | int | float | bool | None
Проблема
Я считаю, что этот совет часто не работает. Следующий пример кода воссоздает проблему.

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

import requests
from typing_extensions import TypeAlias

Json: TypeAlias = dict[str, "Json"] | list["Json"] | str | int | float | bool | None

res: requests.models.Response = requests.get(
"https://randomuser.me/api/?results=5&nat=gb"
)

data: Json = res.json()

results: Json = data["results"]
По данным["results:] я получаю следующие жалобы от mypy:

Ни один вариант перегрузки "getitem" из "list" не соответствует типу аргумента "str" ​​[call-overload]


Возможные варианты перегрузки:
def getitem(self, SupportsIndex, /) -> Json
def getitem(self, срез, /) -> list[Json]


Значение типа "dict[str, Json] | список[Json] | ул | интервал | плавать | бул | «Нет» не индексируется [index]

Вопрос
Что я делаю не так? Мне удалось найти эту проблему на GitHub, которая вполне может содержать решение, но если да, то я еще недостаточно хорошо разбираюсь в типах, чтобы ее увидеть.
Спасибо!

Подробнее здесь: https://stackoverflow.com/questions/767 ... -in-python

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