Skip to content

Commit 0077510

Browse files
committed
undo protocol/other scheduler changes, add asserts for mypy check
1 parent b809187 commit 0077510

File tree

6 files changed

+10
-37
lines changed

6 files changed

+10
-37
lines changed

src/xdist/dsession.py

+7
Original file line numberDiff line numberDiff line change
@@ -187,13 +187,15 @@ def is_node_finishing(self, node: WorkerController) -> bool:
187187
Evaluate whether it's on its last test, or if no tests are pending.
188188
"""
189189
assert self.sched is not None
190+
assert type(self.sched) is CustomGroup
190191
pending = self.sched.node2pending.get(node)
191192
return pending is not None and len(pending) < 2
192193

193194

194195
def is_node_clear(self, node: WorkerController) -> bool:
195196
"""Check if a test worker has no pending tests."""
196197
assert self.sched is not None
198+
assert type(self.sched) is CustomGroup
197199
pending = self.sched.node2pending.get(node)
198200
return pending is None or len(pending) == 0
199201

@@ -218,13 +220,15 @@ def are_all_active_nodes_collected(self) -> bool:
218220

219221
def reset_nodes_if_needed(self) -> None:
220222
assert self.sched is not None
223+
assert type(self.sched) is CustomGroup
221224
if self.are_all_nodes_finishing() and self.ready_to_run_tests and not self.sched.do_resched:
222225
self.reset_nodes()
223226

224227

225228
def reset_nodes(self) -> None:
226229
"""Issue shutdown notices to workers for rescheduling purposes."""
227230
assert self.sched is not None
231+
assert type(self.sched) is CustomGroup
228232
if len(self.sched.pending) != 0:
229233
self.remake_nodes = True
230234
for node in self.sched.nodes:
@@ -235,12 +239,14 @@ def reset_nodes(self) -> None:
235239
def reschedule(self) -> None:
236240
"""Reschedule tests."""
237241
assert self.sched is not None
242+
assert type(self.sched) is CustomGroup
238243
self.sched.do_resched = False
239244
self.sched.check_schedule(self.sched.nodes[0], 1.0, True)
240245

241246

242247
def prepare_for_reschedule(self) -> None:
243248
"""Update test workers and their status tracking so rescheduling is ready."""
249+
assert type(self.sched) is CustomGroup
244250
assert self.sched is not None
245251
self.remake_nodes = False
246252
num_workers = self.sched.dist_groups[self.sched.pending_groups[0]]['group_workers']
@@ -251,6 +257,7 @@ def prepare_for_reschedule(self) -> None:
251257
self._active_nodes = set()
252258
self._active_nodes.update(new_nodes)
253259
self.sched.node2pending = {}
260+
assert type(self.sched) is CustomGroup
254261
self.sched.do_resched = True
255262

256263
#

src/xdist/scheduler/each.py

-8
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
from __future__ import annotations
22

3-
from typing import Any
43
from typing import Sequence
54

65
import pytest
@@ -30,10 +29,6 @@ def __init__(self, config: pytest.Config, log: Producer | None = None) -> None:
3029
self.numnodes = len(parse_spec_config(config))
3130
self.node2collection: dict[WorkerController, list[str]] = {}
3231
self.node2pending: dict[WorkerController, list[int]] = {}
33-
self.do_resched: bool = False
34-
self.pending: list[int] = []
35-
self.dist_groups: dict[str, Any] = {}
36-
self.pending_groups: list[str] = []
3732
self._started: list[WorkerController] = []
3833
self._removed2pending: dict[WorkerController, list[int]] = {}
3934
if log is None:
@@ -111,9 +106,6 @@ def add_node_collection(
111106
self.node2pending[node] = pending
112107
break
113108

114-
def check_schedule(self, node: WorkerController, duration: float = 0, from_dsession: bool = False) -> None:
115-
raise NotImplementedError()
116-
117109
def mark_test_complete(
118110
self, node: WorkerController, item_index: int, duration: float = 0
119111
) -> None:

src/xdist/scheduler/load.py

+1-5
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
from __future__ import annotations
22

33
from itertools import cycle
4-
from typing import Any
54
from typing import Sequence
65

76
import pytest
@@ -63,9 +62,6 @@ def __init__(self, config: pytest.Config, log: Producer | None = None) -> None:
6362
self.node2collection: dict[WorkerController, list[str]] = {}
6463
self.node2pending: dict[WorkerController, list[int]] = {}
6564
self.pending: list[int] = []
66-
self.do_resched: bool = False
67-
self.dist_groups: dict[str, Any] = {}
68-
self.pending_groups: list[str] = []
6965
self.collection: list[str] | None = None
7066
if log is None:
7167
self.log = Producer("loadsched")
@@ -181,7 +177,7 @@ def remove_pending_tests_from_node(
181177
raise NotImplementedError()
182178

183179

184-
def check_schedule(self, node: WorkerController, duration: float = 0, from_dsession: bool = False) -> None:
180+
def check_schedule(self, node: WorkerController, duration: float = 0) -> None:
185181
"""Maybe schedule new items on the node.
186182
187183
If there are any globally pending nodes left then this will

src/xdist/scheduler/loadscope.py

+1-9
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
from __future__ import annotations
22

33
from collections import OrderedDict
4-
from typing import Any
54
from typing import NoReturn
65
from typing import Sequence
76

@@ -94,14 +93,10 @@ class LoadScopeScheduling:
9493
def __init__(self, config: pytest.Config, log: Producer | None = None) -> None:
9594
self.numnodes = len(parse_spec_config(config))
9695
self.collection: list[str] | None = None
97-
self.node2pending: dict[WorkerController, list[int]] = {}
9896
self.workqueue: OrderedDict[str, dict[str, bool]] = OrderedDict()
9997
self.assigned_work: dict[WorkerController, dict[str, dict[str, bool]]] = {}
10098
self.registered_collections: dict[WorkerController, list[str]] = {}
101-
self.do_resched: bool = False
102-
self.pending: list[int] = []
103-
self.dist_groups: dict[str, Any] = {}
104-
self.pending_groups: list[str] = []
99+
105100
if log is None:
106101
self.log = Producer("loadscopesched")
107102
else:
@@ -167,9 +162,6 @@ def add_node(self, node: WorkerController) -> None:
167162
assert node not in self.assigned_work
168163
self.assigned_work[node] = {}
169164

170-
def check_schedule(self, node: WorkerController, duration: float = 0, from_dsession: bool = False) -> None:
171-
raise NotImplementedError()
172-
173165
def remove_node(self, node: WorkerController) -> str | None:
174166
"""Remove a node from the scheduler.
175167

src/xdist/scheduler/protocol.py

-9
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,12 @@
11
from __future__ import annotations
22

3-
from typing import Any
43
from typing import Protocol
54
from typing import Sequence
65

76
from xdist.workermanage import WorkerController
87

98

109
class Scheduling(Protocol):
11-
node2pending: Any
12-
do_resched: bool
13-
pending: list[int]
14-
dist_groups: dict[str, Any]
15-
pending_groups: list[str]
16-
1710
@property
1811
def nodes(self) -> list[WorkerController]: ...
1912

@@ -34,8 +27,6 @@ def add_node_collection(
3427
collection: Sequence[str],
3528
) -> None: ...
3629

37-
def check_schedule(self, node: WorkerController, duration: float = 0, from_dsession: bool = False) -> None: ...
38-
3930
def mark_test_complete(
4031
self,
4132
node: WorkerController,

src/xdist/scheduler/worksteal.py

+1-6
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
from __future__ import annotations
22

3-
from typing import Any
43
from typing import NamedTuple
54
from typing import Sequence
65

@@ -71,9 +70,6 @@ def __init__(self, config: pytest.Config, log: Producer | None = None) -> None:
7170
self.node2pending: dict[WorkerController, list[int]] = {}
7271
self.pending: list[int] = []
7372
self.collection: list[str] | None = None
74-
self.do_resched: bool = False
75-
self.dist_groups: dict[str, Any] = {}
76-
self.pending_groups: list[str] = []
7773
if log is None:
7874
self.log = Producer("workstealsched")
7975
else:
@@ -197,8 +193,7 @@ def remove_pending_tests_from_node(
197193
self.pending.extend(indices)
198194
self.check_schedule()
199195

200-
def check_schedule(self, node: WorkerController | None = None, duration: float = 0, from_dsession: bool = False
201-
) -> None:
196+
def check_schedule(self) -> None:
202197
"""Reschedule tests/perform load balancing."""
203198
nodes_up = [
204199
NodePending(node, pending)

0 commit comments

Comments
 (0)