pymammotion 0.0.50__py3-none-any.whl → 0.0.51__py3-none-any.whl

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.

@@ -2,6 +2,8 @@
2
2
 
3
3
  from dataclasses import dataclass
4
4
 
5
+ import betterproto
6
+
5
7
  from pymammotion.data.model import HashList
6
8
  from pymammotion.data.model.location import Location
7
9
  from pymammotion.proto.dev_net import DevNet
@@ -122,95 +124,137 @@ class MowingDevice:
122
124
  class DevNetData:
123
125
  """Wrapping class around LubaMsg to return a dataclass from the raw dict."""
124
126
 
125
- net: DevNet
127
+ net: dict
128
+
129
+ def __init__(self, net: DevNet):
130
+ self.net = net.to_dict()
126
131
 
127
132
  def __getattr__(self, item):
128
133
  """Intercept call to get net in dict and return a betterproto dataclass."""
129
- if not isinstance(self.net[item], dict):
130
- return self.net[item]
134
+ if self.net.get(item) is None:
135
+ return DevNet().__getattribute__(item)
131
136
 
132
- return DevNet().__getattribute__(item).from_dict(value=self.net[item])
137
+ if not isinstance(self.net.get(item), dict):
138
+ return self.net.get(item)
139
+
140
+ return DevNet().__getattribute__(item).from_dict(value=self.net.get(item))
133
141
 
134
142
 
135
143
  @dataclass
136
144
  class SysData:
137
145
  """Wrapping class around LubaMsg to return a dataclass from the raw dict."""
138
146
 
139
- sys: MctlSys
147
+ sys: dict
148
+
149
+ def __init__(self, sys: MctlSys):
150
+ self.sys = sys.to_dict()
140
151
 
141
152
  def __getattr__(self, item):
142
- """Intercept call to get net in dict and return a betterproto dataclass."""
143
- if not isinstance(self.sys[item], dict):
144
- return self.sys[item]
153
+ """Intercept call to get sys in dict and return a betterproto dataclass."""
154
+ if self.sys.get(item) is None:
155
+ return MctlSys().__getattribute__(item)
156
+
157
+ if not isinstance(self.sys.get(item), dict):
158
+ return self.sys.get(item)
145
159
 
146
- return MctlSys().__getattribute__(item).from_dict(value=self.sys[item])
160
+ return MctlSys().__getattribute__(item).from_dict(value=self.sys.get(item))
147
161
 
148
162
 
149
163
  @dataclass
150
164
  class NavData:
151
165
  """Wrapping class around LubaMsg to return a dataclass from the raw dict."""
152
166
 
153
- nav: MctlNav
167
+ nav: dict
168
+
169
+ def __init__(self, nav: MctlNav):
170
+ self.nav = nav.to_dict()
154
171
 
155
172
  def __getattr__(self, item):
156
173
  """Intercept call to get nav in dict and return a betterproto dataclass."""
157
- if not isinstance(self.nav[item], dict):
158
- return self.nav[item]
174
+ if self.nav.get(item) is None:
175
+ return MctlNav().__getattribute__(item)
176
+
177
+ if not isinstance(self.nav.get(item), dict):
178
+ return self.nav.get(item)
159
179
 
160
- return MctlNav().__getattribute__(item).from_dict(value=self.nav[item])
180
+ return MctlNav().__getattribute__(item).from_dict(value=self.nav.get(item))
161
181
 
162
182
 
163
183
  @dataclass
164
184
  class DriverData:
165
185
  """Wrapping class around LubaMsg to return a dataclass from the raw dict."""
166
186
 
167
- driver: MctlDriver
187
+ driver: dict
188
+
189
+ def __init__(self, driver: MctlDriver):
190
+ self.driver = driver.to_dict()
168
191
 
169
192
  def __getattr__(self, item):
170
193
  """Intercept call to get driver in dict and return a betterproto dataclass."""
171
- if not isinstance(self.driver[item], dict):
172
- return self.driver[item]
194
+ if self.driver.get(item) is None:
195
+ return MctlDriver().__getattribute__(item)
196
+
197
+ if not isinstance(self.driver.get(item), dict):
198
+ return self.driver.get(item)
173
199
 
174
- return MctlDriver().__getattribute__(item).from_dict(value=self.driver[item])
200
+ return MctlDriver().__getattribute__(item).from_dict(value=self.driver.get(item))
175
201
 
176
202
 
177
203
  @dataclass
178
204
  class MulData:
179
205
  """Wrapping class around LubaMsg to return a dataclass from the raw dict."""
180
206
 
181
- mul: SocMul
207
+ mul: dict
208
+
209
+ def __init__(self, mul: SocMul):
210
+ self.mul = mul.to_dict()
182
211
 
183
212
  def __getattr__(self, item):
184
213
  """Intercept call to get mul in dict and return a betterproto dataclass."""
185
- if not isinstance(self.mul[item], dict):
186
- return self.mul[item]
214
+ if self.mul.get(item) is None:
215
+ return SocMul().__getattribute__(item)
216
+
217
+ if not isinstance(self.mul.get(item), dict):
218
+ return self.mul.get(item)
187
219
 
188
- return SocMul().__getattribute__(item).from_dict(value=self.mul[item])
220
+ return SocMul().__getattribute__(item).from_dict(value=self.mul.get(item))
189
221
 
190
222
 
191
223
  @dataclass
192
224
  class OtaData:
193
225
  """Wrapping class around LubaMsg to return a dataclass from the raw dict."""
194
226
 
195
- ota: MctlOta
227
+ ota: dict
228
+
229
+ def __init__(self, ota: MctlOta):
230
+ self.ota = ota.to_dict()
196
231
 
197
232
  def __getattr__(self, item):
198
233
  """Intercept call to get ota in dict and return a betterproto dataclass."""
199
- if not isinstance(self.ota[item], dict):
200
- return self.ota[item]
234
+ if self.ota.get(item) is None:
235
+ return MctlOta().__getattribute__(item)
236
+
237
+ if not isinstance(self.ota.get(item), dict):
238
+ return self.ota.get(item)
201
239
 
202
- return MctlOta().__getattribute__(item).from_dict(value=self.ota[item])
240
+ return MctlOta().__getattribute__(item).from_dict(value=self.ota.get(item))
203
241
 
204
242
 
205
243
  @dataclass
206
244
  class PeptData:
207
245
  """Wrapping class around LubaMsg to return a dataclass from the raw dict."""
208
246
 
209
- pept: MctlPept
247
+ pept: dict
248
+
249
+ def __init__(self, pept: MctlPept):
250
+ self.pept = pept.to_dict()
210
251
 
211
252
  def __getattr__(self, item):
212
253
  """Intercept call to get pept in dict and return a betterproto dataclass."""
213
- if not isinstance(self.pept[item], dict):
214
- return self.pept[item]
254
+ if self.pept.get(item) is None:
255
+ return MctlPept().__getattribute__(item)
256
+
257
+ if not isinstance(self.pept.get(item), dict):
258
+ return self.pept.get(item)
215
259
 
216
- return MctlPept().__getattribute__(item).from_dict(value=self.pept[item])
260
+ return MctlPept().__getattribute__(item).from_dict(value=self.pept.get(item))
@@ -531,6 +531,7 @@ class MammotionBaseBLEDevice(MammotionBaseDevice):
531
531
  if self._notify_future and not self._notify_future.done():
532
532
  self._notify_future.set_result(data)
533
533
 
534
+ self._reset_disconnect_timer()
534
535
  await self._state_manager.notification(new_msg)
535
536
 
536
537
  async def _start_notify(self) -> None:
@@ -663,7 +664,7 @@ class MammotionBaseBLEDevice(MammotionBaseDevice):
663
664
  _LOGGER.debug("%s: Disconnecting", self.name)
664
665
  try:
665
666
  """We reset what command the robot last heard before disconnecting."""
666
- if client.is_connected:
667
+ if client is not None and client.is_connected:
667
668
  command_bytes = self._commands.send_todev_ble_sync(2)
668
669
  await self._message.post_custom_data_bytes(command_bytes)
669
670
  await client.stop_notify(self._read_char)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: pymammotion
3
- Version: 0.0.50
3
+ Version: 0.0.51
4
4
  Summary:
5
5
  License: GNU-3.0
6
6
  Author: Michael Arthur
@@ -20,7 +20,7 @@ pymammotion/bluetooth/data/notifydata.py,sha256=N1bphpueWUWbsWUcpZmMGt2CyCgLcKAF
20
20
  pymammotion/const.py,sha256=3plR6t5sFVhx3LoUbW5PE2gqIANoD-fSm-T0q8uIwIU,336
21
21
  pymammotion/data/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
22
22
  pymammotion/data/model/__init__.py,sha256=d8FlIgCcWqoH3jJSpnm-IY-25RM-l2nbRwLtWjSHo74,222
23
- pymammotion/data/model/device.py,sha256=SoxmvxK3It5IKLiOybExQCIQo2WHCthsMaQdeRpCmuA,7325
23
+ pymammotion/data/model/device.py,sha256=43lVNbOtXpQniT2Xf3nU5W3bzR0uUg_2kkTlyU0uud8,8574
24
24
  pymammotion/data/model/enums.py,sha256=tD_vYsxstOV_lUkYF9uWkrjVOgAJPNnGevy_xmiu3WE,1558
25
25
  pymammotion/data/model/excute_boarder_params.py,sha256=kadSth4y-VXlXIZ6R-Ng-kDvBbM-3YRr8bmR86qR0U0,1355
26
26
  pymammotion/data/model/execute_boarder.py,sha256=oDb2h5tFtOQIa8OCNYaDugqCgCZBLjQRzQTNVcJVAGQ,1072
@@ -55,7 +55,7 @@ pymammotion/mammotion/commands/messages/video.py,sha256=_8lJsU4sLm2CGnc7RDkueA0A
55
55
  pymammotion/mammotion/control/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
56
56
  pymammotion/mammotion/control/joystick.py,sha256=EWV20MMzQuhbLlNlXbsyZKSEpeM7x1CQL7saU4Pn0-g,6165
57
57
  pymammotion/mammotion/devices/__init__.py,sha256=T72jt0ejtMjo1rPmn_FeMF3pmp0LLeRRpc9WcDKEYYY,126
58
- pymammotion/mammotion/devices/mammotion.py,sha256=PggTIzyIlR95OlOyHhU3lX3bFe1C5orFvq5IZwD2t-U,29740
58
+ pymammotion/mammotion/devices/mammotion.py,sha256=YlRPiVZfiXEB0U9H9f-Cgn4aXjoiyjyite4spUVf69E,29802
59
59
  pymammotion/mqtt/__init__.py,sha256=Ocs5e-HLJvTuDpVXyECEsWIvwsUaxzj7lZ9mSYutNDY,105
60
60
  pymammotion/mqtt/mammotion_mqtt.py,sha256=EBnUwqah-mZNcAn5Hq2sV3NKXueIYWNhYPiaXwaXdHg,9084
61
61
  pymammotion/proto/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -102,7 +102,7 @@ pymammotion/utility/datatype_converter.py,sha256=v6zym2Zu0upxQjR-xDqXwi3516zpntS
102
102
  pymammotion/utility/device_type.py,sha256=B_Y1WCRPlFMDOqC13H0ltInyPkbPMIxCoZccCC13fmc,8154
103
103
  pymammotion/utility/periodic.py,sha256=9wJMfwXPlx6Mbp3Fws7LLTI34ZDKphH1bva_Ggyk32g,3281
104
104
  pymammotion/utility/rocker_util.py,sha256=syPL0QN4zMzHiTIkUKS7RXBBptjdbkfNlPddwUD5V3A,7171
105
- pymammotion-0.0.50.dist-info/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
106
- pymammotion-0.0.50.dist-info/METADATA,sha256=r2B1jCcA634BsZQqbZyZMLT8OlthmdBXTwLEUttVlz0,3884
107
- pymammotion-0.0.50.dist-info/WHEEL,sha256=FMvqSimYX_P7y0a7UY-_Mc83r5zkBZsCYPm7Lr0Bsq4,88
108
- pymammotion-0.0.50.dist-info/RECORD,,
105
+ pymammotion-0.0.51.dist-info/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
106
+ pymammotion-0.0.51.dist-info/METADATA,sha256=9X2P4FtreliZW-9L8qh9BTMyx2adkW9jv0xaC7doj1U,3884
107
+ pymammotion-0.0.51.dist-info/WHEEL,sha256=FMvqSimYX_P7y0a7UY-_Mc83r5zkBZsCYPm7Lr0Bsq4,88
108
+ pymammotion-0.0.51.dist-info/RECORD,,