from __future__ import annotations
from contextlib import contextmanager
from typing import Any, Iterator, Literal
try:
from net import ( CortexError,
MemoriesAdapter,
Memory,
MemoryWatchIter,
Redex,
Task,
TasksAdapter,
TaskWatchIter,
)
except ImportError as e: raise ImportError(
"CortEX SDK symbols not present in `net._net`. Rebuild the wheel "
"with `--features cortex`, e.g. `maturin develop --features cortex`."
) from e
TaskStatus = Literal["pending", "completed"]
__all__ = [
"CortexError",
"MemoriesAdapter",
"Memory",
"MemoryWatchIter",
"Task",
"TaskStatus",
"TasksAdapter",
"TaskWatchIter",
"tasks_cm",
"memories_cm",
]
@contextmanager
def tasks_cm(
redex: Redex, *, channel: str, origin_hash: int, **config: Any
) -> Iterator[TasksAdapter]:
adapter = TasksAdapter.open(
redex, channel=channel, origin_hash=origin_hash, **config
)
try:
yield adapter
finally:
try:
adapter.close()
except CortexError:
pass
@contextmanager
def memories_cm(
redex: Redex, *, channel: str, origin_hash: int, **config: Any
) -> Iterator[MemoriesAdapter]:
adapter = MemoriesAdapter.open(
redex, channel=channel, origin_hash=origin_hash, **config
)
try:
yield adapter
finally:
try:
adapter.close()
except CortexError:
pass