Skip to content

Commit 078cce2

Browse files
authored
fix: declare sync_every and sync_every_tasks as class attributes, not properties (#217)
## Summary `Scheduler.sync_every` and `Scheduler.sync_every_tasks` are declared as `@property` in `celery-stubs/beat.pyi`, but in celery's source code ([`celery/beat.py` lines 242-245](https://github.com/celery/celery/blob/main/celery/beat.py#L242-L245)) they are plain class attributes: ```python class Scheduler: sync_every = 3 * 60 sync_every_tasks = None ``` This causes `reportAssignmentType` errors in pyright when subclasses override them as class variables, which is the intended usage pattern: ```python class MyScheduler(Scheduler): sync_every = 60 # error: Type "Literal[60]" is not assignable to declared type "property" ``` ## Fix Changed both from `@property` to plain class attribute declarations: ```python # Before @Property def sync_every(self) -> int: ... @Property def sync_every_tasks(self) -> int | None: ... # After sync_every: int sync_every_tasks: int | None ``` Related: #216
1 parent 8dd6242 commit 078cce2

1 file changed

Lines changed: 2 additions & 4 deletions

File tree

celery-stubs/beat.pyi

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -123,10 +123,8 @@ class Scheduler:
123123
def send_task(self, *args: Any, **kwargs: Any) -> Any: ...
124124
def set_schedule(self, schedule: dict[str, ScheduleEntry]) -> None: ...
125125
def should_sync(self) -> bool: ...
126-
@property
127-
def sync_every(self) -> int: ...
128-
@property
129-
def sync_every_tasks(self) -> int | None: ...
126+
sync_every: int
127+
sync_every_tasks: int | None
130128
def tick(
131129
self,
132130
event_t: type[event_t] = ...,

0 commit comments

Comments
 (0)