Django Rest Framework viewset mypy Ошибка: Отсутствует позиционный аргумент

Вот проблема, при тестировании метода из drf viewsets с декоратором @action(), mypy выдает ошибку, ожидая дополнительный аргумент (который является self param). Вот это:

# views.py


class UserViewSet(RetrieveModelMixin, ListModelMixin, UpdateModelMixin, GenericViewSet):
    serializer_class = UserSerializer
    queryset = User.objects.all()
    lookup_field = "username"

    def get_queryset(self, *args, **kwargs):
        assert isinstance(self.request.user.id, int)
        return self.queryset.filter(id=self.request.user.id)

    @action(detail=False)
    def me(self, request: WSGIRequest):
        serializer = UserSerializer(request.user, context={"request": request})
        return Response(status=status.HTTP_200_OK, data=serializer.data)

# test_views.py


def test_me(self, user: User, rf: RequestFactory):
        view = UserViewSet()
        request = Request(rf.get("/fake-url/"))
        request.user = user

        view.request = request

        response = view.me(request) # The problem is here

        assert response.data == {
            "username": user.username,
            "name": user.name,
            "url": f"http://testserver/api/users/{user.username}/",
        }

и журнал:

drf_project\users\tests\test_drf_views.py:25: error: Missing positional argument "request" in call to "me" of "UserViewSet"
drf_project\users\tests\test_drf_views.py:25: note: "__call__" is considered instance variable, to make it class variable use ClassVar[...]
drf_project\users\tests\test_drf_views.py:25: error: Argument 1 to "me" of "UserViewSet" has incompatible type "Request"; expected "UserViewSet"

Как я могу решить эту проблему, кроме игнорирования с помощью type: ignore[]?

Проблема в том, что декоратор @action во viewset меняет тип метода, без него mypy работает нормально. Однако @action() все портит. Мне нужно это преодолеть, есть предложения?

Вернуться на верх