This commit is contained in:
Evan
2026-03-19 14:51:08 +00:00
parent a3ce437fd4
commit f538b44211
22 changed files with 5506 additions and 346 deletions
View File
+14
View File
@@ -0,0 +1,14 @@
[project]
name = "exo-core"
version = "0.1.0"
description = "Add your description here"
readme = "README.md"
authors = [
{ name = "Evan", email = "[email protected]" }
]
requires-python = ">=3.13"
dependencies = []
[build-system]
requires = ["uv_build>=0.9.24,<0.10.0"]
build-backend = "uv_build"
+65
View File
@@ -0,0 +1,65 @@
from abc import ABC, abstractmethod
from collections.abc import Callable, Iterable
from typing import Self
class TaskId(str): ...
class Cancelled: ...
class Finished: ...
CANCEL_ALL_TASKS = TaskId("CANCEL_TALL_TASKS")
class Engine[TaskType, ResponseType](ABC):
_cancelled_tasks: set[TaskId]
def should_cancel(self, task_id: TaskId) -> bool:
return (
task_id in self._cancelled_tasks
or CANCEL_ALL_TASKS in self._cancelled_tasks
)
def cancel_task(self, task_id: TaskId):
self._cancelled_tasks.add(task_id)
@abstractmethod
def warmup(self) -> None: ...
@abstractmethod
def submit(
self,
task: TaskType,
) -> None: ...
@abstractmethod
def step(
self,
) -> Iterable[
tuple[TaskId, ResponseType | Cancelled | Finished]
]: ...
@abstractmethod
def close(self) -> None: ...
class EngineBuilder[SetupType, TaskType, ResponseType](ABC):
@classmethod
@abstractmethod
def create(
cls,
bound_instance: SetupType,
) -> Self: ...
@abstractmethod
def connect(self) -> None: ...
@abstractmethod
def load(
self,
on_timeout: Callable[[], None],
on_layer_loaded: Callable[[int, int], None],
) -> None: ...
@abstractmethod
def build(self) -> Engine[TaskType, ResponseType]: ...
@abstractmethod
def close(self) -> None: ...