Типы, несовместимые с Python (mypy), при работе с typeVars и вызываемым аргументомPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Типы, несовместимые с Python (mypy), при работе с typeVars и вызываемым аргументом

Сообщение Anonymous »

В настоящее время я пытаюсь создать типизированную оболочку запросов, позволяющую предоставить обработчик ответов. Этот обработчик ответа может изменить возвращаемое значение HTTP-запроса.
К сожалению, я не могу решить некоторые проблемы с набором текста (я новичок в наборе текста с помощью Python). Похоже, это общая проблема или недопонимание с моей стороны, поэтому я создаю этот пост. Я ознакомился с несколькими концепциями, такими как дженерики или протоколы, но мне не удалось создать работающее решение, и я не думаю, что полностью понимаю, какое решение может быть лучшим для этого.
Вот мой пример кода:

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

from collections.abc import Callable
from typing import TypeVar

from requests import Response

_T = TypeVar("_T", default=Response)

def identity(response: Response) -> Response:
return response

def extract_text(response: Response) -> str:
return response.text

class HTTPRequestsAPI:

def fake_request(self, response_handler: Callable[[Response], _T] = identity) -> _T:
response = Response()
processed_response = response_handler(response)
return processed_response

if __name__ == "__main__":
request_api = HTTPRequestsAPI()
resp = request_api.fake_request()
print(type(resp))

resp_text = request_api.fake_request(response_handler=extract_text)
print(type(resp_text))
Я могу без проблем запустить основной файл и получить следующие выходные данные (типы), которые соответствуют ожиданиям: При попытке запустить mypy получаю ошибку, и не понимаю, почему это происходит, так как предполагаю, что типы должны быть правильно выведены:

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

error: Incompatible default for argument "response_handler" (default has type "Callable[[Response], Response]", argument has type "Callable[[Response], _T]")  [assignment]
Чего я здесь не понимаю? Может быть, это проблема, связанная с mypy? Я еще не пробовал другую проверку типов, такую ​​​​как «pyright». Большое спасибо за помощь!
**В этом примере я использую python = 3.13 и mypy = 1.13.0. Я также пробовал использовать TypeVar без значения «по умолчанию», но это не имело никакого значения, и я подумал, что значение по умолчанию может помочь машинисту.

Подробнее здесь: https://stackoverflow.com/questions/792 ... able-argum
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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