Skip to content

Commit 1668347

Browse files
committed
Add types for celery.contrib.django.task.DjangoTask
1 parent 7f42183 commit 1668347

File tree

4 files changed

+51
-0
lines changed

4 files changed

+51
-0
lines changed

celery-stubs/contrib/__init__.pyi

Whitespace-only changes.

celery-stubs/contrib/django/__init__.pyi

Whitespace-only changes.
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
from collections.abc import Mapping
2+
from datetime import datetime
3+
from typing import Any, ParamSpec, TypeVar
4+
5+
import celery
6+
import kombu
7+
from celery.app.task import Task
8+
from celery.canvas import Signature
9+
10+
_P = ParamSpec("_P")
11+
_R = TypeVar("_R", covariant=True)
12+
13+
class DjangoTask(Task[_P, _R]):
14+
def delay_on_commit(
15+
self, *args: _P.args, **kwargs: _P.kwargs
16+
) -> celery.result.AsyncResult[_R]: ...
17+
def apply_async_on_commit(
18+
self,
19+
args: tuple[Any, ...] | None = ...,
20+
kwargs: dict[str, Any] | None = ...,
21+
task_id: str | None = ...,
22+
producer: kombu.Producer | None = ...,
23+
link: Signature[Any] | list[Signature[Any]] | None = ...,
24+
link_error: Signature[Any] | list[Signature[Any]] | None = ...,
25+
shadow: str | None = ...,
26+
*,
27+
# options
28+
countdown: float = ...,
29+
eta: datetime = ...,
30+
expires: float | datetime = ...,
31+
retry: bool = ...,
32+
retry_policy: Mapping[str, Any] = ...,
33+
queue: str | kombu.Queue = ...,
34+
exchange: str | kombu.Exchange = ...,
35+
routing_key: str = ...,
36+
priority: int = ...,
37+
serializer: str = ...,
38+
compression: str = ...,
39+
add_to_parent: bool = ...,
40+
publisher: kombu.Producer = ...,
41+
headers: dict[str, str] = ...,
42+
ignore_result: bool = ...,
43+
time_limit: int = ...,
44+
soft_time_limit: int = ...,
45+
) -> celery.result.AsyncResult[_R]: ...

tests/test_celery.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
from celery import Celery, shared_task, signature
1010
from celery.app.task import Task
1111
from celery.canvas import Signature, chord
12+
from celery.contrib.django import DjangoTask
1213
from celery.exceptions import Reject
1314
from celery.result import AsyncResult, allow_join_result, denied_join_result
1415
from celery.schedules import crontab
@@ -289,3 +290,8 @@ def test_celery_top_level_exports() -> None:
289290
celery.uuid
290291
celery.xmap
291292
celery.xstarmap
293+
294+
295+
def test_djangotask(task: DjangoTask[Any, Any]) -> None:
296+
task.delay_on_commit(1, 2)
297+
task.apply_async_on_commit((1, 2), countdown=10.0)

0 commit comments

Comments
 (0)