Add common stuff and week 1 materials
This commit is contained in:
@@ -0,0 +1,81 @@
|
||||
# Python API for AnySystem 0.3.0 (IDE/type checking only).
|
||||
# Source: https://github.com/osukhoroslov/anysystem/blob/v0.3.0/python/anysystem.py
|
||||
# The executable module is embedded in the Rust crate; keep these declarations
|
||||
# in sync with the pinned crate when upgrading AnySystem.
|
||||
from __future__ import annotations
|
||||
|
||||
from abc import ABC, abstractmethod
|
||||
from typing import Any, Dict, List, Tuple, Union
|
||||
|
||||
JSON = Union[Dict[str, "JSON"], List["JSON"], str, int, float, bool, None]
|
||||
|
||||
class Message:
|
||||
_type: str
|
||||
_data: Dict[str, Any]
|
||||
|
||||
def __init__(self, message_type: str, data: Dict[str, Any]) -> None: ...
|
||||
@property
|
||||
def type(self) -> str: ...
|
||||
def get(self, key: str, default: Any = None) -> Any: ...
|
||||
def remove(self, key: str) -> None: ...
|
||||
def __contains__(self, key: str) -> bool: ...
|
||||
def __getitem__(self, key: str) -> Any: ...
|
||||
def __setitem__(self, key: str, value: Any) -> None: ...
|
||||
@staticmethod
|
||||
def from_json(message_type: str, json_str: str) -> Message: ...
|
||||
|
||||
class Context:
|
||||
_time: float
|
||||
_sent_messages: List[Tuple[str, str, str]]
|
||||
_sent_local_messages: List[tuple[str, str]]
|
||||
_timer_actions: List[Tuple[str, float, bool]]
|
||||
|
||||
def __init__(self, time: float) -> None: ...
|
||||
def send(self, msg: Message, to: str) -> None:
|
||||
"""Sends a message to the specified process."""
|
||||
...
|
||||
def send_local(self, msg: Message) -> None:
|
||||
"""Sends a _local_ message."""
|
||||
...
|
||||
def set_timer(self, timer_name: str, delay: float) -> None:
|
||||
"""
|
||||
Sets a timer that will trigger on_timer callback after the specified delay.
|
||||
If there is an active timer with this name, its delay is overridden.
|
||||
"""
|
||||
...
|
||||
def set_timer_once(self, timer_name: str, delay: float) -> None:
|
||||
"""
|
||||
Sets a timer that will trigger on_timer callback after the specified delay.
|
||||
If there is an active timer with this name, this call is ignored.
|
||||
"""
|
||||
...
|
||||
def cancel_timer(self, timer_name: str) -> None:
|
||||
"""Cancels timer with the specified name."""
|
||||
...
|
||||
def time(self) -> float:
|
||||
"""Returns the current system time."""
|
||||
...
|
||||
|
||||
class Process(ABC):
|
||||
@abstractmethod
|
||||
def on_start(self, ctx: Context) -> None:
|
||||
"""This method is called when the process is started on a node."""
|
||||
...
|
||||
@abstractmethod
|
||||
def on_local_message(self, msg: Message, ctx: Context) -> None:
|
||||
"""This method is called when a _local_ message is received."""
|
||||
...
|
||||
@abstractmethod
|
||||
def on_message(self, msg: Message, sender: str, ctx: Context) -> None:
|
||||
"""This method is called when a message is received."""
|
||||
...
|
||||
@abstractmethod
|
||||
def on_timer(self, timer_name: str, ctx: Context) -> None:
|
||||
"""This method is called when a timer fires."""
|
||||
...
|
||||
def get_state(self) -> str:
|
||||
"""This method returns the string representation of process state."""
|
||||
...
|
||||
def set_state(self, state_encoded: str) -> None:
|
||||
"""This method restores the process state by its string representation."""
|
||||
...
|
||||
Reference in New Issue
Block a user