Как исправить ошибку MyPy [return-value], когда тип на самом деле правильный

Я использую Django-Ninja + MyPy и получаю ошибку, что тип, который он получил tuple[int, dict[str, str]]" не является корректным, так как не соответствует ни одному из tuple[int, None] | tuple[int, DetailType] типов, а является именно вторым типом. Потому что в других частях кода он может правильно понять, что в качестве ключа у него "detail". Но как только я использую Union[...], он почему-то не может посмотреть рекурсивно?

apps/users/views.py:106: error: Incompatible return value type (got "tuple[int, Message]", expected "tuple[int, None] | tuple[int, DetailType]")  [return-value]

Вот как выглядят мои типы:

DetailType = TypedDict("DetailType", {"detail": str})
MessageType = tuple[int, DetailType]
NoContentType = tuple[int, None]

А это полный код, в котором mypy возвращает ошибку:

@post("me/password/change/", response={204: None, 401: Message}, url_name="users_me_password_change")
def change_password(request: HttpRequest, data: ChangePasswordRequest) -> Union[NoContentType, MessageType]: <<< THIS IS RETURN TYPE
    user = request.user
    if not user.check_password(data.password):
        return 401, {"detail": "Password is incorrect."} <<< IN THIS LINE IS MYPY ERROR
    user.set_password(data.new_password)
    user.save()
    return 204, None
Вернуться на верх