Skip to content

Commit d53050c

Browse files
committed
Convert TaskCallable to dataclass
1 parent 614607e commit d53050c

File tree

1 file changed

+25
-22
lines changed

1 file changed

+25
-22
lines changed

tasktiger/tasktiger.py

Lines changed: 25 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
from dataclasses import dataclass
12
import datetime
23
import functools
34
import importlib
@@ -97,29 +98,31 @@
9798
R = TypeVar("R")
9899

99100

101+
102+
@dataclass
100103
class TaskCallable(Generic[P, R]):
101-
def __init__(self, func: Callable[P, R], tiger: "TaskTiger"):
102-
functools.update_wrapper(self, func)
103-
self._func = func
104-
self._tiger = tiger
105-
106-
# Default values for attributes
107-
self._task_hard_timeout: float | None = None
108-
self._task_queue: str | None = None
109-
self._task_unique: bool | None = None
110-
self._task_unique_key: Collection[str] | None = None
111-
self._task_lock: bool | None = None
112-
self._task_lock_key: Collection[str] | None = None
113-
self._task_retry: int | None = None
114-
self._task_retry_on: Collection[type[BaseException]] | None = None
115-
self._task_retry_method: Callable[[int], float] | Tuple[
116-
Callable[..., float], Tuple
117-
] | None = None
118-
self._task_batch: bool | None = None
119-
self._task_schedule: Callable | None = None
120-
self._task_max_queue_size: int | None = None
121-
self._task_max_stored_executions: int | None = None
122-
self._task_runner_class: type | None = None
104+
_func: Callable[P, R]
105+
_tiger: "TaskTiger"
106+
107+
_task_hard_timeout: float | None = None
108+
_task_queue: str | None = None
109+
_task_unique: bool | None = None
110+
_task_unique_key: Collection[str] | None = None
111+
_task_lock: bool | None = None
112+
_task_lock_key: Collection[str] | None = None
113+
_task_retry: int | None = None
114+
_task_retry_on: Collection[type[BaseException]] | None = None
115+
_task_retry_method: Callable[[int], float] | Tuple[
116+
Callable[..., float], Tuple
117+
] | None = None
118+
_task_batch: bool | None = None
119+
_task_schedule: Callable | None = None
120+
_task_max_queue_size: int | None = None
121+
_task_max_stored_executions: int | None = None
122+
_task_runner_class: type | None = None
123+
124+
def __post_init__(self):
125+
functools.update_wrapper(self, self._func)
123126

124127
def __call__(self, *args: P.args, **kwargs: P.kwargs) -> R:
125128
return self._func(*args, **kwargs)

0 commit comments

Comments
 (0)