pymammotion 0.2.18__tar.gz → 0.2.20__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.

Potentially problematic release.


This version of pymammotion might be problematic. Click here for more details.

Files changed (117) hide show
  1. {pymammotion-0.2.18 → pymammotion-0.2.20}/PKG-INFO +1 -1
  2. {pymammotion-0.2.18 → pymammotion-0.2.20}/pymammotion/data/mqtt/event.py +1 -1
  3. {pymammotion-0.2.18 → pymammotion-0.2.20}/pymammotion/http/http.py +7 -6
  4. {pymammotion-0.2.18 → pymammotion-0.2.20}/pymammotion/mammotion/devices/mammotion.py +7 -1
  5. {pymammotion-0.2.18 → pymammotion-0.2.20}/pyproject.toml +3 -3
  6. {pymammotion-0.2.18 → pymammotion-0.2.20}/LICENSE +0 -0
  7. {pymammotion-0.2.18 → pymammotion-0.2.20}/README.md +0 -0
  8. {pymammotion-0.2.18 → pymammotion-0.2.20}/pymammotion/__init__.py +0 -0
  9. {pymammotion-0.2.18 → pymammotion-0.2.20}/pymammotion/aliyun/__init__.py +0 -0
  10. {pymammotion-0.2.18 → pymammotion-0.2.20}/pymammotion/aliyun/cloud_gateway.py +0 -0
  11. {pymammotion-0.2.18 → pymammotion-0.2.20}/pymammotion/aliyun/cloud_service.py +0 -0
  12. {pymammotion-0.2.18 → pymammotion-0.2.20}/pymammotion/aliyun/dataclass/aep_response.py +0 -0
  13. {pymammotion-0.2.18 → pymammotion-0.2.20}/pymammotion/aliyun/dataclass/connect_response.py +0 -0
  14. {pymammotion-0.2.18 → pymammotion-0.2.20}/pymammotion/aliyun/dataclass/dev_by_account_response.py +0 -0
  15. {pymammotion-0.2.18 → pymammotion-0.2.20}/pymammotion/aliyun/dataclass/login_by_oauth_response.py +0 -0
  16. {pymammotion-0.2.18 → pymammotion-0.2.20}/pymammotion/aliyun/dataclass/regions_response.py +0 -0
  17. {pymammotion-0.2.18 → pymammotion-0.2.20}/pymammotion/aliyun/dataclass/session_by_authcode_response.py +0 -0
  18. {pymammotion-0.2.18 → pymammotion-0.2.20}/pymammotion/aliyun/tmp_constant.py +0 -0
  19. {pymammotion-0.2.18 → pymammotion-0.2.20}/pymammotion/bluetooth/__init__.py +0 -0
  20. {pymammotion-0.2.18 → pymammotion-0.2.20}/pymammotion/bluetooth/ble.py +0 -0
  21. {pymammotion-0.2.18 → pymammotion-0.2.20}/pymammotion/bluetooth/ble_message.py +0 -0
  22. {pymammotion-0.2.18 → pymammotion-0.2.20}/pymammotion/bluetooth/const.py +0 -0
  23. {pymammotion-0.2.18 → pymammotion-0.2.20}/pymammotion/bluetooth/data/__init__.py +0 -0
  24. {pymammotion-0.2.18 → pymammotion-0.2.20}/pymammotion/bluetooth/data/convert.py +0 -0
  25. {pymammotion-0.2.18 → pymammotion-0.2.20}/pymammotion/bluetooth/data/framectrldata.py +0 -0
  26. {pymammotion-0.2.18 → pymammotion-0.2.20}/pymammotion/bluetooth/data/notifydata.py +0 -0
  27. {pymammotion-0.2.18 → pymammotion-0.2.20}/pymammotion/const.py +0 -0
  28. {pymammotion-0.2.18 → pymammotion-0.2.20}/pymammotion/data/__init__.py +0 -0
  29. {pymammotion-0.2.18 → pymammotion-0.2.20}/pymammotion/data/model/__init__.py +0 -0
  30. {pymammotion-0.2.18 → pymammotion-0.2.20}/pymammotion/data/model/account.py +0 -0
  31. {pymammotion-0.2.18 → pymammotion-0.2.20}/pymammotion/data/model/device.py +0 -0
  32. {pymammotion-0.2.18 → pymammotion-0.2.20}/pymammotion/data/model/device_config.py +0 -0
  33. {pymammotion-0.2.18 → pymammotion-0.2.20}/pymammotion/data/model/enums.py +0 -0
  34. {pymammotion-0.2.18 → pymammotion-0.2.20}/pymammotion/data/model/excute_boarder_params.py +0 -0
  35. {pymammotion-0.2.18 → pymammotion-0.2.20}/pymammotion/data/model/execute_boarder.py +0 -0
  36. {pymammotion-0.2.18 → pymammotion-0.2.20}/pymammotion/data/model/generate_route_information.py +0 -0
  37. {pymammotion-0.2.18 → pymammotion-0.2.20}/pymammotion/data/model/hash_list.py +0 -0
  38. {pymammotion-0.2.18 → pymammotion-0.2.20}/pymammotion/data/model/location.py +0 -0
  39. {pymammotion-0.2.18 → pymammotion-0.2.20}/pymammotion/data/model/mowing_modes.py +0 -0
  40. {pymammotion-0.2.18 → pymammotion-0.2.20}/pymammotion/data/model/plan.py +0 -0
  41. {pymammotion-0.2.18 → pymammotion-0.2.20}/pymammotion/data/model/rapid_state.py +0 -0
  42. {pymammotion-0.2.18 → pymammotion-0.2.20}/pymammotion/data/model/region_data.py +0 -0
  43. {pymammotion-0.2.18 → pymammotion-0.2.20}/pymammotion/data/model/report_info.py +0 -0
  44. {pymammotion-0.2.18 → pymammotion-0.2.20}/pymammotion/data/mqtt/__init__.py +0 -0
  45. {pymammotion-0.2.18 → pymammotion-0.2.20}/pymammotion/data/mqtt/properties.py +0 -0
  46. {pymammotion-0.2.18 → pymammotion-0.2.20}/pymammotion/data/mqtt/status.py +0 -0
  47. {pymammotion-0.2.18 → pymammotion-0.2.20}/pymammotion/data/state_manager.py +0 -0
  48. {pymammotion-0.2.18 → pymammotion-0.2.20}/pymammotion/event/__init__.py +0 -0
  49. {pymammotion-0.2.18 → pymammotion-0.2.20}/pymammotion/event/event.py +0 -0
  50. {pymammotion-0.2.18 → pymammotion-0.2.20}/pymammotion/http/_init_.py +0 -0
  51. {pymammotion-0.2.18 → pymammotion-0.2.20}/pymammotion/mammotion/__init__.py +0 -0
  52. {pymammotion-0.2.18 → pymammotion-0.2.20}/pymammotion/mammotion/commands/__init__.py +0 -0
  53. {pymammotion-0.2.18 → pymammotion-0.2.20}/pymammotion/mammotion/commands/abstract_message.py +0 -0
  54. {pymammotion-0.2.18 → pymammotion-0.2.20}/pymammotion/mammotion/commands/mammotion_command.py +0 -0
  55. {pymammotion-0.2.18 → pymammotion-0.2.20}/pymammotion/mammotion/commands/messages/__init__.py +0 -0
  56. {pymammotion-0.2.18 → pymammotion-0.2.20}/pymammotion/mammotion/commands/messages/driver.py +0 -0
  57. {pymammotion-0.2.18 → pymammotion-0.2.20}/pymammotion/mammotion/commands/messages/media.py +0 -0
  58. {pymammotion-0.2.18 → pymammotion-0.2.20}/pymammotion/mammotion/commands/messages/navigation.py +0 -0
  59. {pymammotion-0.2.18 → pymammotion-0.2.20}/pymammotion/mammotion/commands/messages/network.py +0 -0
  60. {pymammotion-0.2.18 → pymammotion-0.2.20}/pymammotion/mammotion/commands/messages/ota.py +0 -0
  61. {pymammotion-0.2.18 → pymammotion-0.2.20}/pymammotion/mammotion/commands/messages/system.py +0 -0
  62. {pymammotion-0.2.18 → pymammotion-0.2.20}/pymammotion/mammotion/commands/messages/video.py +0 -0
  63. {pymammotion-0.2.18 → pymammotion-0.2.20}/pymammotion/mammotion/control/__init__.py +0 -0
  64. {pymammotion-0.2.18 → pymammotion-0.2.20}/pymammotion/mammotion/control/joystick.py +0 -0
  65. {pymammotion-0.2.18 → pymammotion-0.2.20}/pymammotion/mammotion/devices/__init__.py +0 -0
  66. {pymammotion-0.2.18 → pymammotion-0.2.20}/pymammotion/mqtt/__init__.py +0 -0
  67. {pymammotion-0.2.18 → pymammotion-0.2.20}/pymammotion/mqtt/mammotion_future.py +0 -0
  68. {pymammotion-0.2.18 → pymammotion-0.2.20}/pymammotion/mqtt/mammotion_mqtt.py +0 -0
  69. {pymammotion-0.2.18 → pymammotion-0.2.20}/pymammotion/proto/__init__.py +0 -0
  70. {pymammotion-0.2.18 → pymammotion-0.2.20}/pymammotion/proto/basestation.proto +0 -0
  71. {pymammotion-0.2.18 → pymammotion-0.2.20}/pymammotion/proto/basestation.py +0 -0
  72. {pymammotion-0.2.18 → pymammotion-0.2.20}/pymammotion/proto/basestation_pb2.py +0 -0
  73. {pymammotion-0.2.18 → pymammotion-0.2.20}/pymammotion/proto/basestation_pb2.pyi +0 -0
  74. {pymammotion-0.2.18 → pymammotion-0.2.20}/pymammotion/proto/common.proto +0 -0
  75. {pymammotion-0.2.18 → pymammotion-0.2.20}/pymammotion/proto/common.py +0 -0
  76. {pymammotion-0.2.18 → pymammotion-0.2.20}/pymammotion/proto/common_pb2.py +0 -0
  77. {pymammotion-0.2.18 → pymammotion-0.2.20}/pymammotion/proto/common_pb2.pyi +0 -0
  78. {pymammotion-0.2.18 → pymammotion-0.2.20}/pymammotion/proto/dev_net.proto +0 -0
  79. {pymammotion-0.2.18 → pymammotion-0.2.20}/pymammotion/proto/dev_net.py +0 -0
  80. {pymammotion-0.2.18 → pymammotion-0.2.20}/pymammotion/proto/dev_net_pb2.py +0 -0
  81. {pymammotion-0.2.18 → pymammotion-0.2.20}/pymammotion/proto/dev_net_pb2.pyi +0 -0
  82. {pymammotion-0.2.18 → pymammotion-0.2.20}/pymammotion/proto/luba_msg.proto +0 -0
  83. {pymammotion-0.2.18 → pymammotion-0.2.20}/pymammotion/proto/luba_msg.py +0 -0
  84. {pymammotion-0.2.18 → pymammotion-0.2.20}/pymammotion/proto/luba_msg_pb2.py +0 -0
  85. {pymammotion-0.2.18 → pymammotion-0.2.20}/pymammotion/proto/luba_msg_pb2.pyi +0 -0
  86. {pymammotion-0.2.18 → pymammotion-0.2.20}/pymammotion/proto/luba_mul.proto +0 -0
  87. {pymammotion-0.2.18 → pymammotion-0.2.20}/pymammotion/proto/luba_mul.py +0 -0
  88. {pymammotion-0.2.18 → pymammotion-0.2.20}/pymammotion/proto/luba_mul_pb2.py +0 -0
  89. {pymammotion-0.2.18 → pymammotion-0.2.20}/pymammotion/proto/luba_mul_pb2.pyi +0 -0
  90. {pymammotion-0.2.18 → pymammotion-0.2.20}/pymammotion/proto/mctrl_driver.proto +0 -0
  91. {pymammotion-0.2.18 → pymammotion-0.2.20}/pymammotion/proto/mctrl_driver.py +0 -0
  92. {pymammotion-0.2.18 → pymammotion-0.2.20}/pymammotion/proto/mctrl_driver_pb2.py +0 -0
  93. {pymammotion-0.2.18 → pymammotion-0.2.20}/pymammotion/proto/mctrl_driver_pb2.pyi +0 -0
  94. {pymammotion-0.2.18 → pymammotion-0.2.20}/pymammotion/proto/mctrl_nav.proto +0 -0
  95. {pymammotion-0.2.18 → pymammotion-0.2.20}/pymammotion/proto/mctrl_nav.py +0 -0
  96. {pymammotion-0.2.18 → pymammotion-0.2.20}/pymammotion/proto/mctrl_nav_pb2.py +0 -0
  97. {pymammotion-0.2.18 → pymammotion-0.2.20}/pymammotion/proto/mctrl_nav_pb2.pyi +0 -0
  98. {pymammotion-0.2.18 → pymammotion-0.2.20}/pymammotion/proto/mctrl_ota.proto +0 -0
  99. {pymammotion-0.2.18 → pymammotion-0.2.20}/pymammotion/proto/mctrl_ota.py +0 -0
  100. {pymammotion-0.2.18 → pymammotion-0.2.20}/pymammotion/proto/mctrl_ota_pb2.py +0 -0
  101. {pymammotion-0.2.18 → pymammotion-0.2.20}/pymammotion/proto/mctrl_ota_pb2.pyi +0 -0
  102. {pymammotion-0.2.18 → pymammotion-0.2.20}/pymammotion/proto/mctrl_pept.proto +0 -0
  103. {pymammotion-0.2.18 → pymammotion-0.2.20}/pymammotion/proto/mctrl_pept.py +0 -0
  104. {pymammotion-0.2.18 → pymammotion-0.2.20}/pymammotion/proto/mctrl_pept_pb2.py +0 -0
  105. {pymammotion-0.2.18 → pymammotion-0.2.20}/pymammotion/proto/mctrl_pept_pb2.pyi +0 -0
  106. {pymammotion-0.2.18 → pymammotion-0.2.20}/pymammotion/proto/mctrl_sys.proto +0 -0
  107. {pymammotion-0.2.18 → pymammotion-0.2.20}/pymammotion/proto/mctrl_sys.py +0 -0
  108. {pymammotion-0.2.18 → pymammotion-0.2.20}/pymammotion/proto/mctrl_sys_pb2.py +0 -0
  109. {pymammotion-0.2.18 → pymammotion-0.2.20}/pymammotion/proto/mctrl_sys_pb2.pyi +0 -0
  110. {pymammotion-0.2.18 → pymammotion-0.2.20}/pymammotion/py.typed +0 -0
  111. {pymammotion-0.2.18 → pymammotion-0.2.20}/pymammotion/utility/constant/__init__.py +0 -0
  112. {pymammotion-0.2.18 → pymammotion-0.2.20}/pymammotion/utility/constant/device_constant.py +0 -0
  113. {pymammotion-0.2.18 → pymammotion-0.2.20}/pymammotion/utility/datatype_converter.py +0 -0
  114. {pymammotion-0.2.18 → pymammotion-0.2.20}/pymammotion/utility/device_type.py +0 -0
  115. {pymammotion-0.2.18 → pymammotion-0.2.20}/pymammotion/utility/map.py +0 -0
  116. {pymammotion-0.2.18 → pymammotion-0.2.20}/pymammotion/utility/periodic.py +0 -0
  117. {pymammotion-0.2.18 → pymammotion-0.2.20}/pymammotion/utility/rocker_util.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: pymammotion
3
- Version: 0.2.18
3
+ Version: 0.2.20
4
4
  Summary:
5
5
  License: GNU-3.0
6
6
  Author: Michael Arthur
@@ -130,6 +130,6 @@ class ThingEventMessage(DataClassORJSONMixin):
130
130
  elif identifier == "device_config_req_event":
131
131
  params_obj = payload.get("params", '')
132
132
  else:
133
- raise ValueError(f"Unknown identifier: {identifier}")
133
+ raise ValueError(f"Unknown identifier: {identifier} {params_dict}")
134
134
 
135
135
  return cls(method=method, id=event_id, params=params_obj, version=version)
@@ -18,9 +18,9 @@ DataT = TypeVar("DataT")
18
18
 
19
19
  @dataclass
20
20
  class Response(DataClassDictMixin, Generic[DataT]):
21
- data: DataT
22
21
  code: int
23
22
  msg: str
23
+ data: DataT | None = None
24
24
 
25
25
 
26
26
  @dataclass
@@ -64,11 +64,12 @@ class MammotionHTTP:
64
64
  grant_type="password",
65
65
  ),
66
66
  ) as resp:
67
- data = await resp.json()
68
- # TODO catch errors from mismatch user / password
69
- # Assuming the data format matches the expected structure
70
- login_response_data = LoginResponseData.from_dict(data["data"])
71
- return Response(data=login_response_data, code=data["code"], msg=data["msg"])
67
+ if resp.status == 200:
68
+ data = await resp.json()
69
+ response = Response.from_dict(data)
70
+ # TODO catch errors from mismatch user / password elsewhere
71
+ # Assuming the data format matches the expected structure
72
+ return response
72
73
 
73
74
 
74
75
  async def connect_http(username: str, password: str) -> MammotionHTTP:
@@ -1071,6 +1071,12 @@ class MammotionBaseCloudDevice(MammotionBaseDevice):
1071
1071
 
1072
1072
  async def _send_command_locked(self, key: str, command: bytes) -> bytes:
1073
1073
  """Send command to device and read response."""
1074
+ if not self._mqtt_client.is_connected:
1075
+ loop = asyncio.get_running_loop()
1076
+ await loop.run_in_executor(None, self._mqtt_client.connect_async)
1077
+
1078
+ if not self._mqtt_client.is_connected:
1079
+ raise Exception("MQTT not connected, couldn't recover")
1074
1080
  try:
1075
1081
  return await self._execute_command_locked(key, command)
1076
1082
  except DeviceOfflineException as ex:
@@ -1106,7 +1112,7 @@ class MammotionBaseCloudDevice(MammotionBaseDevice):
1106
1112
  await self.loop.run_in_executor(None, self._mqtt_client.get_cloud_client().send_cloud_command, self.iot_id, command)
1107
1113
  future = MammotionFuture()
1108
1114
  self._waiting_queue.append(future)
1109
- timeout = 20
1115
+ timeout = 5
1110
1116
  try:
1111
1117
  notify_msg = await future.async_get(timeout)
1112
1118
  except asyncio.TimeoutError:
@@ -1,10 +1,10 @@
1
1
  [project]
2
2
  name = "pymammotion"
3
- version = "0.2.18"
3
+ version = "0.2.20"
4
4
 
5
5
  [tool.poetry]
6
6
  name = "pymammotion"
7
- version = "0.2.18"
7
+ version = "0.2.20"
8
8
  license = "GNU-3.0"
9
9
  description = ""
10
10
  readme = "README.md"
@@ -53,7 +53,7 @@ mypy = "^1.10.0"
53
53
  pre-commit = "^3.7.1"
54
54
 
55
55
  [tool.bumpver]
56
- current_version = "0.2.17"
56
+ current_version = "0.2.20"
57
57
  version_pattern = "MAJOR.MINOR.PATCH"
58
58
  commit_message = "Bump version {old_version} -> {new_version}"
59
59
  commit = true
File without changes
File without changes