diff --git a/pyproject.toml b/pyproject.toml index 191e0c2..177aa59 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "hatchling.build" [project] name = "sati-ac" -version = "0.1.0" +version = "0.1.1" authors = [ { name="sati.ac", email="sati.ac@proton.me" } ] @@ -19,4 +19,4 @@ classifiers = [ dependencies = ["websockets"] [project.urls] -"Homepage" = "https://git.sati.ac/sati.ac/sati-py" \ No newline at end of file +"Homepage" = "https://git.sati.ac/sati.ac/sati-py" diff --git a/sati/sati.py b/sati/sati.py index aa38b31..d61ee66 100644 --- a/sati/sati.py +++ b/sati/sati.py @@ -25,7 +25,7 @@ class Sati: _socket: SatiSocket _project_id: int - _awaited_tasks: dict = {} + _awaited_tasks: dict def __init__( self, @@ -35,6 +35,7 @@ class Sati: project_id: int = 0, debug = False ): + self._awaited_tasks = {} self._socket = SatiSocket(token, reconnection_interval, url, debug) self._project_id = project_id self._socket.on('taskUpdate', self._process_task) @@ -63,8 +64,8 @@ class Sati: else: fut.set_exception(UnableToSolveTask(task)) - def destroy(self): - self._socket.close() + async def destroy(self): + await self._socket.close() async def get_balance(self) -> float: return (await self._socket.call('getBalance')).balance diff --git a/sati/socket.py b/sati/socket.py index 9a5ff00..0257481 100644 --- a/sati/socket.py +++ b/sati/socket.py @@ -36,11 +36,11 @@ class SatiSocket: __reconnection_interval: float __connector_ref: asyncio.Task __id_counter: int = 0 - __awaited_replies: dict = {} + __awaited_replies: dict __error = None - __queue = [] + __queue: list __url: str - __event_handlers = {} + __event_handlers: dict __debug: bool def __init__( @@ -50,6 +50,9 @@ class SatiSocket: url = 'wss://api.sati.ac/ws', debug = False ): + self.__awaited_replies = {} + self.__queue = [] + self.__event_handlers = {} self.__token = token self.__reconnection_interval = reconnection_interval self.__url = url @@ -117,7 +120,9 @@ class SatiSocket: if msg_type in ( 'auth', 'call' ): return await fut - async def call(self, method: str, data: dict = {}) -> SatiDict: + async def call(self, method: str, data: dict | None = None) -> SatiDict: + if data == None: data = {} + if self.__state == STATE_CONNECTED: resp = await self.__send('call', { 'method': method, @@ -154,8 +159,9 @@ class SatiSocket: del self.__awaited_replies[key] raise ex - def close(self): + async def close(self): self.__connector_ref.cancel() + await self.__socket.close() def on(self, event: str, handler: typing.Callable[[SatiDict], None]): if event not in self.__event_handlers: