Skip to content

Commit 3974a55

Browse files
committed
refactor: breaking change to remove sync APIs
1 parent a20d2ac commit 3974a55

File tree

5 files changed

+13
-28
lines changed

5 files changed

+13
-28
lines changed

roborock/api.py

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -48,10 +48,8 @@ def __init__(self, device_info: DeviceData, queue_timeout: int = 4) -> None:
4848
self.queue_timeout = queue_timeout
4949

5050
def __del__(self) -> None:
51-
self.release()
52-
53-
def release(self) -> None:
54-
self.sync_disconnect()
51+
if self.is_connected():
52+
self._logger.warning("Roborock client was not released properly")
5553

5654
async def async_release(self) -> None:
5755
await self.async_disconnect()
@@ -65,12 +63,12 @@ async def async_connect(self):
6563
"""Connect to the Roborock device."""
6664

6765
@abstractmethod
68-
def sync_disconnect(self) -> Any:
66+
async def async_disconnect(self) -> Any:
6967
"""Disconnect from the Roborock device."""
7068

7169
@abstractmethod
72-
async def async_disconnect(self) -> Any:
73-
"""Disconnect from the Roborock device."""
70+
def is_connected(self) -> bool:
71+
"""Return True if the client is connected to the device."""
7472

7573
@abstractmethod
7674
def on_message_received(self, messages: list[RoborockMessage]) -> None:

roborock/cloud_api.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,7 @@ def is_connected(self) -> bool:
121121
"""Check if the mqtt client is connected."""
122122
return self._mqtt_client.is_connected()
123123

124-
def sync_disconnect(self) -> Any:
124+
def _sync_disconnect(self) -> Any:
125125
if not self.is_connected():
126126
return None
127127

@@ -139,7 +139,7 @@ def sync_disconnect(self) -> Any:
139139

140140
return disconnected_future
141141

142-
def sync_connect(self) -> Any:
142+
def _sync_connect(self) -> Any:
143143
if self.is_connected():
144144
self._mqtt_client.maybe_restart_loop()
145145
return None
@@ -155,14 +155,14 @@ def sync_connect(self) -> Any:
155155

156156
async def async_disconnect(self) -> None:
157157
async with self._mutex:
158-
if disconnected_future := self.sync_disconnect():
158+
if disconnected_future := self._sync_disconnect():
159159
# There are no errors set on this future
160160
await disconnected_future
161161
await self.event_loop.run_in_executor(None, self._mqtt_client.loop_stop)
162162

163163
async def async_connect(self) -> None:
164164
async with self._mutex:
165-
if connected_future := self.sync_connect():
165+
if connected_future := self._sync_connect():
166166
try:
167167
await connected_future
168168
except VacuumError as err:

roborock/local_api.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ def _data_received(self, message):
6161

6262
def _connection_lost(self, exc: Exception | None):
6363
"""Called when the transport connection is lost."""
64-
self.sync_disconnect()
64+
self._sync_disconnect()
6565
self.on_connection_lost(exc)
6666

6767
def is_connected(self):
@@ -79,7 +79,7 @@ async def async_connect(self) -> None:
7979
async with self._mutex:
8080
try:
8181
if not self.is_connected():
82-
self.sync_disconnect()
82+
self._sync_disconnect()
8383
async with async_timeout.timeout(self.queue_timeout):
8484
self._logger.debug(f"Connecting to {self.host}")
8585
self.transport, _ = await self.event_loop.create_connection( # type: ignore
@@ -93,7 +93,7 @@ async def async_connect(self) -> None:
9393
await self.hello()
9494
await self.keep_alive_func()
9595

96-
def sync_disconnect(self) -> None:
96+
def _sync_disconnect(self) -> None:
9797
if self.transport and self.event_loop.is_running():
9898
self._logger.debug(f"Disconnecting from {self.host}")
9999
self.transport.close()
@@ -102,7 +102,7 @@ def sync_disconnect(self) -> None:
102102

103103
async def async_disconnect(self) -> None:
104104
async with self._mutex:
105-
self.sync_disconnect()
105+
self._sync_disconnect()
106106

107107
async def hello(self):
108108
request_id = 1

roborock/version_1_apis/roborock_client_v1.py

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -164,10 +164,6 @@ def __init__(self, device_info: DeviceData, endpoint: str):
164164
self.listener_model = self._listeners[device_info.device.duid]
165165
self._endpoint = endpoint
166166

167-
def release(self):
168-
super().release()
169-
[item.stop() for item in self.cache.values()]
170-
171167
async def async_release(self) -> None:
172168
await super().async_release()
173169
[item.stop() for item in self.cache.values()]

tests/test_api.py

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -45,15 +45,6 @@ async def test_can_create_mqtt_roborock():
4545
RoborockMqttClientV1(UserData.from_dict(USER_DATA), device_info)
4646

4747

48-
async def test_sync_connect(mqtt_client):
49-
with patch("paho.mqtt.client.Client.connect", return_value=mqtt.MQTT_ERR_SUCCESS):
50-
with patch("paho.mqtt.client.Client.loop_start", return_value=mqtt.MQTT_ERR_SUCCESS):
51-
connected_future = mqtt_client.sync_connect()
52-
assert connected_future is not None
53-
54-
connected_future.cancel()
55-
56-
5748
async def test_get_base_url_no_url():
5849
rc = RoborockApiClient("[email protected]")
5950
with patch("roborock.web_api.PreparedRequest.request") as mock_request:

0 commit comments

Comments
 (0)