Skip to content

Task.Request should accept type[Request], not just str #221

@alessio-b2c2

Description

@alessio-b2c2

Description

Task.Request is currently typed as str:

# celery-stubs/app/task.pyi
Request: str

However, celery's own source code and documentation indicate it accepts either a string (dotted path) or a class:

# celery/app/task.py
#: Request class used, or the qualified name of one.
Request = 'celery.worker.request:Request'

Assigning a Request subclass directly is a common and documented pattern:

from celery import Task
from celery.worker.request import Request

class MyRequest(Request):
    ...

class MyTask(Task):
    Request = MyRequest  # type error: Incompatible types in assignment

Expected type

Request: str | type[Request]

Versions

  • celery-types: 0.26.0
  • celery: 5.6.x
  • mypy: 1.15.0

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions