Add a Scheduling Protocol

- Clearly delineate the required interface of schedulers
- Useful for typing
This commit is contained in:
Ran Benita
2024-04-05 14:38:21 +03:00
parent 91812bf5f9
commit bf2dcccfb0
6 changed files with 72 additions and 10 deletions

View File

@@ -0,0 +1,47 @@
from __future__ import annotations
from typing import Protocol
from typing import Sequence
from xdist.workermanage import WorkerController
class Scheduling(Protocol):
@property
def nodes(self) -> list[WorkerController]: ...
@property
def collection_is_completed(self) -> bool: ...
@property
def tests_finished(self) -> bool: ...
@property
def has_pending(self) -> bool: ...
def add_node(self, node: WorkerController) -> None: ...
def add_node_collection(
self,
node: WorkerController,
collection: Sequence[str],
) -> None: ...
def mark_test_complete(
self,
node: WorkerController,
item_index: int,
duration: float = 0,
) -> None: ...
def mark_test_pending(self, item: str) -> None: ...
def remove_pending_tests_from_node(
self,
node: WorkerController,
indices: Sequence[int],
) -> None: ...
def remove_node(self, node: WorkerController) -> str | None: ...
def schedule(self) -> None: ...