pymammotion 0.4.19__tar.gz → 0.4.21__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (125) hide show
  1. {pymammotion-0.4.19 → pymammotion-0.4.21}/PKG-INFO +1 -1
  2. {pymammotion-0.4.19 → pymammotion-0.4.21}/pymammotion/http/http.py +6 -2
  3. {pymammotion-0.4.19 → pymammotion-0.4.21}/pymammotion/mammotion/devices/base.py +9 -6
  4. {pymammotion-0.4.19 → pymammotion-0.4.21}/pymammotion/mammotion/devices/mammotion.py +3 -2
  5. {pymammotion-0.4.19 → pymammotion-0.4.21}/pyproject.toml +2 -2
  6. {pymammotion-0.4.19 → pymammotion-0.4.21}/LICENSE +0 -0
  7. {pymammotion-0.4.19 → pymammotion-0.4.21}/README.md +0 -0
  8. {pymammotion-0.4.19 → pymammotion-0.4.21}/pymammotion/__init__.py +0 -0
  9. {pymammotion-0.4.19 → pymammotion-0.4.21}/pymammotion/aliyun/__init__.py +0 -0
  10. {pymammotion-0.4.19 → pymammotion-0.4.21}/pymammotion/aliyun/client.py +0 -0
  11. {pymammotion-0.4.19 → pymammotion-0.4.21}/pymammotion/aliyun/cloud_gateway.py +0 -0
  12. {pymammotion-0.4.19 → pymammotion-0.4.21}/pymammotion/aliyun/model/aep_response.py +0 -0
  13. {pymammotion-0.4.19 → pymammotion-0.4.21}/pymammotion/aliyun/model/connect_response.py +0 -0
  14. {pymammotion-0.4.19 → pymammotion-0.4.21}/pymammotion/aliyun/model/dev_by_account_response.py +0 -0
  15. {pymammotion-0.4.19 → pymammotion-0.4.21}/pymammotion/aliyun/model/login_by_oauth_response.py +0 -0
  16. {pymammotion-0.4.19 → pymammotion-0.4.21}/pymammotion/aliyun/model/regions_response.py +0 -0
  17. {pymammotion-0.4.19 → pymammotion-0.4.21}/pymammotion/aliyun/model/session_by_authcode_response.py +0 -0
  18. {pymammotion-0.4.19 → pymammotion-0.4.21}/pymammotion/aliyun/model/stream_subscription_response.py +0 -0
  19. {pymammotion-0.4.19 → pymammotion-0.4.21}/pymammotion/aliyun/tea/core.py +0 -0
  20. {pymammotion-0.4.19 → pymammotion-0.4.21}/pymammotion/aliyun/tmp_constant.py +0 -0
  21. {pymammotion-0.4.19 → pymammotion-0.4.21}/pymammotion/bluetooth/__init__.py +0 -0
  22. {pymammotion-0.4.19 → pymammotion-0.4.21}/pymammotion/bluetooth/ble.py +0 -0
  23. {pymammotion-0.4.19 → pymammotion-0.4.21}/pymammotion/bluetooth/ble_message.py +0 -0
  24. {pymammotion-0.4.19 → pymammotion-0.4.21}/pymammotion/bluetooth/const.py +0 -0
  25. {pymammotion-0.4.19 → pymammotion-0.4.21}/pymammotion/bluetooth/data/__init__.py +0 -0
  26. {pymammotion-0.4.19 → pymammotion-0.4.21}/pymammotion/bluetooth/data/convert.py +0 -0
  27. {pymammotion-0.4.19 → pymammotion-0.4.21}/pymammotion/bluetooth/data/framectrldata.py +0 -0
  28. {pymammotion-0.4.19 → pymammotion-0.4.21}/pymammotion/bluetooth/data/notifydata.py +0 -0
  29. {pymammotion-0.4.19 → pymammotion-0.4.21}/pymammotion/bluetooth/model/__init__.py +0 -0
  30. {pymammotion-0.4.19 → pymammotion-0.4.21}/pymammotion/bluetooth/model/atomic_integer.py +0 -0
  31. {pymammotion-0.4.19 → pymammotion-0.4.21}/pymammotion/const.py +0 -0
  32. {pymammotion-0.4.19 → pymammotion-0.4.21}/pymammotion/data/__init__.py +0 -0
  33. {pymammotion-0.4.19 → pymammotion-0.4.21}/pymammotion/data/model/__init__.py +0 -0
  34. {pymammotion-0.4.19 → pymammotion-0.4.21}/pymammotion/data/model/account.py +0 -0
  35. {pymammotion-0.4.19 → pymammotion-0.4.21}/pymammotion/data/model/device.py +0 -0
  36. {pymammotion-0.4.19 → pymammotion-0.4.21}/pymammotion/data/model/device_config.py +0 -0
  37. {pymammotion-0.4.19 → pymammotion-0.4.21}/pymammotion/data/model/device_info.py +0 -0
  38. {pymammotion-0.4.19 → pymammotion-0.4.21}/pymammotion/data/model/device_limits.py +0 -0
  39. {pymammotion-0.4.19 → pymammotion-0.4.21}/pymammotion/data/model/enums.py +0 -0
  40. {pymammotion-0.4.19 → pymammotion-0.4.21}/pymammotion/data/model/excute_boarder_params.py +0 -0
  41. {pymammotion-0.4.19 → pymammotion-0.4.21}/pymammotion/data/model/execute_boarder.py +0 -0
  42. {pymammotion-0.4.19 → pymammotion-0.4.21}/pymammotion/data/model/generate_route_information.py +0 -0
  43. {pymammotion-0.4.19 → pymammotion-0.4.21}/pymammotion/data/model/hash_list.py +0 -0
  44. {pymammotion-0.4.19 → pymammotion-0.4.21}/pymammotion/data/model/location.py +0 -0
  45. {pymammotion-0.4.19 → pymammotion-0.4.21}/pymammotion/data/model/mowing_modes.py +0 -0
  46. {pymammotion-0.4.19 → pymammotion-0.4.21}/pymammotion/data/model/plan.py +0 -0
  47. {pymammotion-0.4.19 → pymammotion-0.4.21}/pymammotion/data/model/rapid_state.py +0 -0
  48. {pymammotion-0.4.19 → pymammotion-0.4.21}/pymammotion/data/model/raw_data.py +0 -0
  49. {pymammotion-0.4.19 → pymammotion-0.4.21}/pymammotion/data/model/region_data.py +0 -0
  50. {pymammotion-0.4.19 → pymammotion-0.4.21}/pymammotion/data/model/report_info.py +0 -0
  51. {pymammotion-0.4.19 → pymammotion-0.4.21}/pymammotion/data/mqtt/__init__.py +0 -0
  52. {pymammotion-0.4.19 → pymammotion-0.4.21}/pymammotion/data/mqtt/event.py +0 -0
  53. {pymammotion-0.4.19 → pymammotion-0.4.21}/pymammotion/data/mqtt/properties.py +0 -0
  54. {pymammotion-0.4.19 → pymammotion-0.4.21}/pymammotion/data/mqtt/status.py +0 -0
  55. {pymammotion-0.4.19 → pymammotion-0.4.21}/pymammotion/data/state_manager.py +0 -0
  56. {pymammotion-0.4.19 → pymammotion-0.4.21}/pymammotion/event/__init__.py +0 -0
  57. {pymammotion-0.4.19 → pymammotion-0.4.21}/pymammotion/event/event.py +0 -0
  58. {pymammotion-0.4.19 → pymammotion-0.4.21}/pymammotion/http/_init_.py +0 -0
  59. {pymammotion-0.4.19 → pymammotion-0.4.21}/pymammotion/http/encryption.py +0 -0
  60. {pymammotion-0.4.19 → pymammotion-0.4.21}/pymammotion/http/model/http.py +0 -0
  61. {pymammotion-0.4.19 → pymammotion-0.4.21}/pymammotion/mammotion/__init__.py +0 -0
  62. {pymammotion-0.4.19 → pymammotion-0.4.21}/pymammotion/mammotion/commands/__init__.py +0 -0
  63. {pymammotion-0.4.19 → pymammotion-0.4.21}/pymammotion/mammotion/commands/abstract_message.py +0 -0
  64. {pymammotion-0.4.19 → pymammotion-0.4.21}/pymammotion/mammotion/commands/mammotion_command.py +0 -0
  65. {pymammotion-0.4.19 → pymammotion-0.4.21}/pymammotion/mammotion/commands/messages/__init__.py +0 -0
  66. {pymammotion-0.4.19 → pymammotion-0.4.21}/pymammotion/mammotion/commands/messages/driver.py +0 -0
  67. {pymammotion-0.4.19 → pymammotion-0.4.21}/pymammotion/mammotion/commands/messages/media.py +0 -0
  68. {pymammotion-0.4.19 → pymammotion-0.4.21}/pymammotion/mammotion/commands/messages/navigation.py +0 -0
  69. {pymammotion-0.4.19 → pymammotion-0.4.21}/pymammotion/mammotion/commands/messages/network.py +0 -0
  70. {pymammotion-0.4.19 → pymammotion-0.4.21}/pymammotion/mammotion/commands/messages/ota.py +0 -0
  71. {pymammotion-0.4.19 → pymammotion-0.4.21}/pymammotion/mammotion/commands/messages/system.py +0 -0
  72. {pymammotion-0.4.19 → pymammotion-0.4.21}/pymammotion/mammotion/commands/messages/video.py +0 -0
  73. {pymammotion-0.4.19 → pymammotion-0.4.21}/pymammotion/mammotion/control/__init__.py +0 -0
  74. {pymammotion-0.4.19 → pymammotion-0.4.21}/pymammotion/mammotion/control/joystick.py +0 -0
  75. {pymammotion-0.4.19 → pymammotion-0.4.21}/pymammotion/mammotion/devices/__init__.py +0 -0
  76. {pymammotion-0.4.19 → pymammotion-0.4.21}/pymammotion/mammotion/devices/mammotion_bluetooth.py +0 -0
  77. {pymammotion-0.4.19 → pymammotion-0.4.21}/pymammotion/mammotion/devices/mammotion_cloud.py +0 -0
  78. {pymammotion-0.4.19 → pymammotion-0.4.21}/pymammotion/mqtt/__init__.py +0 -0
  79. {pymammotion-0.4.19 → pymammotion-0.4.21}/pymammotion/mqtt/linkkit/__init__.py +0 -0
  80. {pymammotion-0.4.19 → pymammotion-0.4.21}/pymammotion/mqtt/linkkit/h2client.py +0 -0
  81. {pymammotion-0.4.19 → pymammotion-0.4.21}/pymammotion/mqtt/linkkit/linkkit.py +0 -0
  82. {pymammotion-0.4.19 → pymammotion-0.4.21}/pymammotion/mqtt/mammotion_future.py +0 -0
  83. {pymammotion-0.4.19 → pymammotion-0.4.21}/pymammotion/mqtt/mammotion_mqtt.py +0 -0
  84. {pymammotion-0.4.19 → pymammotion-0.4.21}/pymammotion/proto/__init__.py +0 -0
  85. {pymammotion-0.4.19 → pymammotion-0.4.21}/pymammotion/proto/basestation.proto +0 -0
  86. {pymammotion-0.4.19 → pymammotion-0.4.21}/pymammotion/proto/basestation_pb2.py +0 -0
  87. {pymammotion-0.4.19 → pymammotion-0.4.21}/pymammotion/proto/basestation_pb2.pyi +0 -0
  88. {pymammotion-0.4.19 → pymammotion-0.4.21}/pymammotion/proto/common.proto +0 -0
  89. {pymammotion-0.4.19 → pymammotion-0.4.21}/pymammotion/proto/common_pb2.py +0 -0
  90. {pymammotion-0.4.19 → pymammotion-0.4.21}/pymammotion/proto/common_pb2.pyi +0 -0
  91. {pymammotion-0.4.19 → pymammotion-0.4.21}/pymammotion/proto/dev_net.proto +0 -0
  92. {pymammotion-0.4.19 → pymammotion-0.4.21}/pymammotion/proto/dev_net_pb2.py +0 -0
  93. {pymammotion-0.4.19 → pymammotion-0.4.21}/pymammotion/proto/dev_net_pb2.pyi +0 -0
  94. {pymammotion-0.4.19 → pymammotion-0.4.21}/pymammotion/proto/luba_msg.proto +0 -0
  95. {pymammotion-0.4.19 → pymammotion-0.4.21}/pymammotion/proto/luba_msg_pb2.py +0 -0
  96. {pymammotion-0.4.19 → pymammotion-0.4.21}/pymammotion/proto/luba_msg_pb2.pyi +0 -0
  97. {pymammotion-0.4.19 → pymammotion-0.4.21}/pymammotion/proto/luba_mul.proto +0 -0
  98. {pymammotion-0.4.19 → pymammotion-0.4.21}/pymammotion/proto/luba_mul_pb2.py +0 -0
  99. {pymammotion-0.4.19 → pymammotion-0.4.21}/pymammotion/proto/luba_mul_pb2.pyi +0 -0
  100. {pymammotion-0.4.19 → pymammotion-0.4.21}/pymammotion/proto/mctrl_driver.proto +0 -0
  101. {pymammotion-0.4.19 → pymammotion-0.4.21}/pymammotion/proto/mctrl_driver_pb2.py +0 -0
  102. {pymammotion-0.4.19 → pymammotion-0.4.21}/pymammotion/proto/mctrl_driver_pb2.pyi +0 -0
  103. {pymammotion-0.4.19 → pymammotion-0.4.21}/pymammotion/proto/mctrl_nav.proto +0 -0
  104. {pymammotion-0.4.19 → pymammotion-0.4.21}/pymammotion/proto/mctrl_nav_pb2.py +0 -0
  105. {pymammotion-0.4.19 → pymammotion-0.4.21}/pymammotion/proto/mctrl_nav_pb2.pyi +0 -0
  106. {pymammotion-0.4.19 → pymammotion-0.4.21}/pymammotion/proto/mctrl_ota.proto +0 -0
  107. {pymammotion-0.4.19 → pymammotion-0.4.21}/pymammotion/proto/mctrl_ota_pb2.py +0 -0
  108. {pymammotion-0.4.19 → pymammotion-0.4.21}/pymammotion/proto/mctrl_ota_pb2.pyi +0 -0
  109. {pymammotion-0.4.19 → pymammotion-0.4.21}/pymammotion/proto/mctrl_pept.proto +0 -0
  110. {pymammotion-0.4.19 → pymammotion-0.4.21}/pymammotion/proto/mctrl_pept_pb2.py +0 -0
  111. {pymammotion-0.4.19 → pymammotion-0.4.21}/pymammotion/proto/mctrl_pept_pb2.pyi +0 -0
  112. {pymammotion-0.4.19 → pymammotion-0.4.21}/pymammotion/proto/mctrl_sys.proto +0 -0
  113. {pymammotion-0.4.19 → pymammotion-0.4.21}/pymammotion/proto/mctrl_sys_pb2.py +0 -0
  114. {pymammotion-0.4.19 → pymammotion-0.4.21}/pymammotion/proto/mctrl_sys_pb2.pyi +0 -0
  115. {pymammotion-0.4.19 → pymammotion-0.4.21}/pymammotion/py.typed +0 -0
  116. {pymammotion-0.4.19 → pymammotion-0.4.21}/pymammotion/utility/constant/__init__.py +0 -0
  117. {pymammotion-0.4.19 → pymammotion-0.4.21}/pymammotion/utility/constant/device_constant.py +0 -0
  118. {pymammotion-0.4.19 → pymammotion-0.4.21}/pymammotion/utility/conversions.py +0 -0
  119. {pymammotion-0.4.19 → pymammotion-0.4.21}/pymammotion/utility/datatype_converter.py +0 -0
  120. {pymammotion-0.4.19 → pymammotion-0.4.21}/pymammotion/utility/device_config.py +0 -0
  121. {pymammotion-0.4.19 → pymammotion-0.4.21}/pymammotion/utility/device_type.py +0 -0
  122. {pymammotion-0.4.19 → pymammotion-0.4.21}/pymammotion/utility/map.py +0 -0
  123. {pymammotion-0.4.19 → pymammotion-0.4.21}/pymammotion/utility/movement.py +0 -0
  124. {pymammotion-0.4.19 → pymammotion-0.4.21}/pymammotion/utility/periodic.py +0 -0
  125. {pymammotion-0.4.19 → pymammotion-0.4.21}/pymammotion/utility/rocker_util.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: pymammotion
3
- Version: 0.4.19
3
+ Version: 0.4.21
4
4
  Summary:
5
5
  License: GPL-3.0
6
6
  Author: Michael Arthur
@@ -108,8 +108,12 @@ class MammotionHTTP:
108
108
  # Assuming the data format matches the expected structure
109
109
  return Response[StreamSubscriptionResponse].from_dict(data)
110
110
 
111
- async def refresh_login(self) -> Response[LoginResponseData]:
112
- return await self.login(self.account, self._password)
111
+ async def refresh_login(self, account: str, password: str | None = None) -> Response[LoginResponseData]:
112
+ if self._password is None and password is not None:
113
+ self._password = password
114
+ if self._password is None:
115
+ raise ValueError("Password is required for refresh login")
116
+ return await self.login(account, self._password)
113
117
 
114
118
  async def login(self, account: str, password: str) -> Response[LoginResponseData]:
115
119
  self.account = account
@@ -218,29 +218,32 @@ class MammotionBaseDevice:
218
218
 
219
219
  await self.queue_command("read_plan", sub_cmd=2, plan_index=0)
220
220
 
221
- if len(self.mower.map.root_hash_lists) == 0:
222
- await self.queue_command("get_all_boundary_hash_list", sub_cmd=0)
223
-
224
- for hash, frame in self.mower.map.area.items():
221
+ for hash, frame in list(self.mower.map.area.items()):
225
222
  missing_frames = self.mower.map.find_missing_frames(frame)
226
223
  if len(missing_frames) > 0:
227
224
  del self.mower.map.area[hash]
228
225
 
229
- for hash, frame in self.mower.map.path.items():
226
+ for hash, frame in list(self.mower.map.path.items()):
230
227
  missing_frames = self.mower.map.find_missing_frames(frame)
231
228
  if len(missing_frames) > 0:
232
229
  del self.mower.map.path[hash]
233
230
 
234
- for hash, frame in self.mower.map.obstacle.items():
231
+ for hash, frame in list(self.mower.map.obstacle.items()):
235
232
  missing_frames = self.mower.map.find_missing_frames(frame)
236
233
  if len(missing_frames) > 0:
237
234
  del self.mower.map.obstacle[hash]
238
235
 
236
+ # don't know why but total frame on svg is wrong
239
237
  # for hash, frame in self.mower.map.svg.items():
240
238
  # missing_frames = self.mower.map.find_missing_frames(frame)
241
239
  # if len(missing_frames) > 0:
242
240
  # del self.mower.map.svg[hash]
243
241
 
242
+ if len(self.mower.map.root_hash_lists) == 0:
243
+ await self.queue_command("get_all_boundary_hash_list", sub_cmd=0)
244
+ # add a small delay to allow result to come through if it does.
245
+ await asyncio.sleep(1)
246
+
244
247
  if len(self.mower.map.missing_hashlist()) > 0:
245
248
  data_hash = self.mower.map.missing_hashlist().pop()
246
249
  await self.queue_command("synchronize_hash_data", hash_num=data_hash)
@@ -187,14 +187,15 @@ class Mammotion:
187
187
  cloud_client = await self.login(account, password)
188
188
  await self.initiate_cloud_connection(account, cloud_client)
189
189
 
190
- async def refresh_login(self, account: str) -> None:
190
+ async def refresh_login(self, account: str, password: str | None = None) -> None:
191
191
  async with self._login_lock:
192
192
  exists: MammotionCloud | None = self.mqtt_list.get(account)
193
193
  if not exists:
194
194
  return
195
195
  mammotion_http = exists.cloud_client.mammotion_http
196
- await mammotion_http.refresh_login()
196
+ await mammotion_http.refresh_login(account, password)
197
197
  await self.connect_iot(mammotion_http, exists.cloud_client)
198
+
198
199
  if not exists.is_connected():
199
200
  loop = asyncio.get_running_loop()
200
201
  await loop.run_in_executor(None, exists.connect_async)
@@ -4,7 +4,7 @@ build-backend = "poetry.core.masonry.api"
4
4
 
5
5
  [project]
6
6
  name = "pymammotion"
7
- version = "0.4.19"
7
+ version = "0.4.21"
8
8
  license = "GPL-3.0"
9
9
  description = ""
10
10
  readme = "README.md"
@@ -66,7 +66,7 @@ autotyping = "^24.3.0"
66
66
  ipython = "^9.0.2"
67
67
 
68
68
  [tool.bumpver]
69
- current_version = "0.4.19"
69
+ current_version = "0.4.21"
70
70
  version_pattern = "MAJOR.MINOR.PATCH"
71
71
  commit_message = "Bump version {old_version} -> {new_version}"
72
72
  commit = true
File without changes
File without changes