Skip to content

unused-coroutine mypy error when not using route handlers as a decorator #3159

@delfick

Description

@delfick

Is there an existing issue for this?

  • I have searched the existing issues

Describe the bug

Hello,

When I use the route handlers not as a decorator I get mypy errors being sad that I'm not awaiting my async function

class MyClassThatHasRoutes:
    def setup_routes(self, app: sanic.Sanic[sanic.Config, SimpleNamespace]) -> None:
        app.get("/api")(self.api) # error: Value of type "Coroutine[Any, Any, HTTPResponse | None]" must be used  [unused-coroutine]

    async def api(self, request: sanic.Request) -> sanic.response.HTTPResponse:
        return sanic.empty(200)

I get that it's designed to be used as a decorator, but it makes sense where I'm doing this that I'm not.

I believe this could be fixed if RouteHandler was changed to have a return annotation of Awaitable[HTTPResponse | None] rather than Coroutine.

Is that something that could be done or do you see problems with doing that?

Code snippet

No response

Expected Behavior

No response

How do you run Sanic?

ASGI

Operating System

Linux

Sanic Version

25.12.0

Additional context

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions