pymammotion 0.3.8__py3-none-any.whl → 0.4.0a0__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.
@@ -0,0 +1,363 @@
1
+ from pymammotion.data.model.device_limits import DeviceLimits
2
+
3
+
4
+ class DeviceConfig:
5
+ def __init__(self) -> None:
6
+ # Dictionary to store all device configurations
7
+
8
+ # Device mode configurations
9
+ self.default_list = {
10
+ "a1ZU6bdGjaM": {
11
+ "extMod": "LubaAWD1000723",
12
+ "cutter_height_min": 30,
13
+ "cutter_height_max": 70,
14
+ "working_speed_min": 0.2,
15
+ "working_speed_max": 0.4,
16
+ "work_area_num_max": 3,
17
+ "working_path_min": 20,
18
+ "working_path_max": 35,
19
+ "display_imge_type": 1,
20
+ },
21
+ "a1nf9kRBWoH": {
22
+ "extMod": "LubaAWD3000723",
23
+ "cutter_height_min": 30,
24
+ "cutter_height_max": 70,
25
+ "working_speed_min": 0.2,
26
+ "working_speed_max": 0.4,
27
+ "work_area_num_max": 6,
28
+ "working_path_min": 20,
29
+ "working_path_max": 35,
30
+ "display_imge_type": 1,
31
+ },
32
+ "a1ae1QnXZGf": {
33
+ "extMod": "LubaAWD1000743",
34
+ "cutter_height_min": 30,
35
+ "cutter_height_max": 70,
36
+ "working_speed_min": 0.2,
37
+ "working_speed_max": 0.4,
38
+ "work_area_num_max": 3,
39
+ "working_path_min": 20,
40
+ "working_path_max": 35,
41
+ "display_imge_type": 1,
42
+ },
43
+ "a1K4Ki2L5rK": {
44
+ "extMod": "LubaAWD5000723",
45
+ "cutter_height_min": 30,
46
+ "cutter_height_max": 70,
47
+ "working_speed_min": 0.2,
48
+ "working_speed_max": 0.6,
49
+ "work_area_num_max": 10,
50
+ "working_path_min": 20,
51
+ "working_path_max": 35,
52
+ "display_imge_type": 0,
53
+ },
54
+ "a1jOhAYOIG8": {
55
+ "extMod": "LubaAWD5000743LS",
56
+ "cutter_height_min": 30,
57
+ "cutter_height_max": 70,
58
+ "working_speed_min": 0.2,
59
+ "working_speed_max": 0.6,
60
+ "work_area_num_max": 10,
61
+ "working_path_min": 20,
62
+ "working_path_max": 35,
63
+ "display_imge_type": 0,
64
+ },
65
+ "a1BmXWlsdbA": {
66
+ "extMod": "LubaAWD5000743",
67
+ "cutter_height_min": 30,
68
+ "cutter_height_max": 70,
69
+ "working_speed_min": 0.2,
70
+ "working_speed_max": 0.6,
71
+ "work_area_num_max": 10,
72
+ "working_path_min": 20,
73
+ "working_path_max": 35,
74
+ "display_imge_type": 0,
75
+ },
76
+ "a1JFpmAV5Ur": {
77
+ "extMod": "Kumar-10",
78
+ "cutter_height_min": 30,
79
+ "cutter_height_max": 70,
80
+ "working_speed_min": 0.2,
81
+ "working_speed_max": 0.6,
82
+ "work_area_num_max": 10,
83
+ "working_path_min": 20,
84
+ "working_path_max": 35,
85
+ "display_imge_type": 0,
86
+ },
87
+ "a1kweSOPylG": {
88
+ "extMod": "LubaAWD3000723",
89
+ "cutter_height_min": 30,
90
+ "cutter_height_max": 70,
91
+ "working_speed_min": 0.2,
92
+ "working_speed_max": 0.6,
93
+ "work_area_num_max": 6,
94
+ "working_path_min": 20,
95
+ "working_path_max": 35,
96
+ "display_imge_type": 1,
97
+ },
98
+ "a1pvCnb3PPu": {
99
+ "extMod": "LubaAWD1000743",
100
+ "cutter_height_min": 30,
101
+ "cutter_height_max": 70,
102
+ "working_speed_min": 0.2,
103
+ "working_speed_max": 0.6,
104
+ "work_area_num_max": 3,
105
+ "working_path_min": 20,
106
+ "working_path_max": 35,
107
+ "display_imge_type": 1,
108
+ },
109
+ "a1x0zHD3Xop": {
110
+ "extMod": "LubaAWD5000743LS",
111
+ "cutter_height_min": 30,
112
+ "cutter_height_max": 70,
113
+ "working_speed_min": 0.2,
114
+ "working_speed_max": 0.6,
115
+ "work_area_num_max": 10,
116
+ "working_path_min": 20,
117
+ "working_path_max": 35,
118
+ "display_imge_type": 0,
119
+ },
120
+ "a1UBFdq6nNz": {
121
+ "extMod": "LubaAWD5000723",
122
+ "cutter_height_min": 30,
123
+ "cutter_height_max": 70,
124
+ "working_speed_min": 0.2,
125
+ "working_speed_max": 0.6,
126
+ "work_area_num_max": 10,
127
+ "working_path_min": 20,
128
+ "working_path_max": 35,
129
+ "display_imge_type": 0,
130
+ },
131
+ "a1FbaU4Bqk5": {
132
+ "extMod": "LubaAWD5000743",
133
+ "cutter_height_min": 30,
134
+ "cutter_height_max": 70,
135
+ "working_speed_min": 0.2,
136
+ "working_speed_max": 0.6,
137
+ "work_area_num_max": 10,
138
+ "working_path_min": 20,
139
+ "working_path_max": 35,
140
+ "display_imge_type": 0,
141
+ },
142
+ }
143
+
144
+ self.inner_list = {
145
+ "HM010060LBAWD10": {
146
+ "extMod": "LubaAWD1000",
147
+ "cutter_height_min": 30,
148
+ "cutter_height_max": 70,
149
+ "working_speed_min": 0.2,
150
+ "working_speed_max": 0.6,
151
+ "work_area_num_max": 3,
152
+ "working_path_min": 20,
153
+ "working_path_max": 35,
154
+ "display_imge_type": 1,
155
+ },
156
+ "HM030080LBAWD30": {
157
+ "extMod": "LubaAWD3000",
158
+ "cutter_height_min": 30,
159
+ "cutter_height_max": 70,
160
+ "working_speed_min": 0.2,
161
+ "working_speed_max": 0.6,
162
+ "work_area_num_max": 6,
163
+ "working_path_min": 20,
164
+ "working_path_max": 35,
165
+ "display_imge_type": 1,
166
+ },
167
+ "HM050080LBAWD50": {
168
+ "extMod": "LubaAWD5000",
169
+ "cutter_height_min": 30,
170
+ "cutter_height_max": 70,
171
+ "working_speed_min": 0.2,
172
+ "working_speed_max": 0.6,
173
+ "work_area_num_max": 10,
174
+ "working_path_min": 20,
175
+ "working_path_max": 35,
176
+ "display_imge_type": 0,
177
+ },
178
+ "HM030060LBAWD50OMNI": {
179
+ "extMod": "LubaAWD5000",
180
+ "cutter_height_min": 30,
181
+ "cutter_height_max": 70,
182
+ "working_speed_min": 0.2,
183
+ "working_speed_max": 0.6,
184
+ "work_area_num_max": 10,
185
+ "working_path_min": 20,
186
+ "working_path_max": 35,
187
+ "display_imge_type": 1,
188
+ },
189
+ "HM060100LBAWD50OMNIH": {
190
+ "extMod": "LubaAWD5000H",
191
+ "cutter_height_min": 60,
192
+ "cutter_height_max": 100,
193
+ "working_speed_min": 0.2,
194
+ "working_speed_max": 0.6,
195
+ "work_area_num_max": 10,
196
+ "working_path_min": 20,
197
+ "working_path_max": 35,
198
+ "display_imge_type": 0,
199
+ },
200
+ "HM030070LBVAWD10OMNI": {
201
+ "extMod": "Luba2AWD1000",
202
+ "cutter_height_min": 25,
203
+ "cutter_height_max": 70,
204
+ "working_speed_min": 0.2,
205
+ "working_speed_max": 0.6,
206
+ "work_area_num_max": 10,
207
+ "working_path_min": 20,
208
+ "working_path_max": 35,
209
+ "display_imge_type": 0,
210
+ },
211
+ "HM060100LBVAWD10OMNIH": {
212
+ "extMod": "Luba2AWD1000H",
213
+ "cutter_height_min": 55,
214
+ "cutter_height_max": 100,
215
+ "working_speed_min": 0.2,
216
+ "working_speed_max": 0.6,
217
+ "work_area_num_max": 10,
218
+ "working_path_min": 20,
219
+ "working_path_max": 35,
220
+ "display_imge_type": 0,
221
+ },
222
+ "HM030070LBVAWD30OMNI": {
223
+ "extMod": "Luba2AWD3000",
224
+ "cutter_height_min": 25,
225
+ "cutter_height_max": 70,
226
+ "working_speed_min": 0.2,
227
+ "working_speed_max": 0.6,
228
+ "work_area_num_max": 20,
229
+ "working_path_min": 20,
230
+ "working_path_max": 35,
231
+ "display_imge_type": 0,
232
+ },
233
+ "HM060100LBVAWD30OMNIH": {
234
+ "extMod": "Luba2AWD3000H",
235
+ "cutter_height_min": 55,
236
+ "cutter_height_max": 100,
237
+ "working_speed_min": 0.2,
238
+ "working_speed_max": 0.6,
239
+ "work_area_num_max": 20,
240
+ "working_path_min": 20,
241
+ "working_path_max": 35,
242
+ "display_imge_type": 0,
243
+ },
244
+ "HM030070LBVAWD50OMNI": {
245
+ "extMod": "Luba2AWD5000",
246
+ "cutter_height_min": 25,
247
+ "cutter_height_max": 70,
248
+ "working_speed_min": 0.2,
249
+ "working_speed_max": 0.6,
250
+ "work_area_num_max": 30,
251
+ "working_path_min": 20,
252
+ "working_path_max": 35,
253
+ "display_imge_type": 0,
254
+ },
255
+ "HM060100LBVAWD50OMNIH": {
256
+ "extMod": "Luba2AWD5000H",
257
+ "cutter_height_min": 55,
258
+ "cutter_height_max": 100,
259
+ "working_speed_min": 0.2,
260
+ "working_speed_max": 0.6,
261
+ "work_area_num_max": 30,
262
+ "working_path_min": 20,
263
+ "working_path_max": 35,
264
+ "display_imge_type": 0,
265
+ },
266
+ "HM030070LBVAWD100OMNI": {
267
+ "extMod": "Luba2AWD10000",
268
+ "cutter_height_min": 25,
269
+ "cutter_height_max": 70,
270
+ "working_speed_min": 0.2,
271
+ "working_speed_max": 0.6,
272
+ "work_area_num_max": 60,
273
+ "working_path_min": 20,
274
+ "working_path_max": 35,
275
+ "display_imge_type": 0,
276
+ },
277
+ "HM060100LBVAWD100OMNIH": {
278
+ "extMod": "Luba2AWD10000H",
279
+ "cutter_height_min": 55,
280
+ "cutter_height_max": 100,
281
+ "working_speed_min": 0.2,
282
+ "working_speed_max": 0.6,
283
+ "work_area_num_max": 60,
284
+ "working_path_min": 20,
285
+ "working_path_max": 35,
286
+ "display_imge_type": 0,
287
+ },
288
+ }
289
+
290
+ def get_device_config(self, int_mod_or_key: str) -> dict:
291
+ """Look up device configuration by internal model code
292
+
293
+ Args:
294
+ int_mod (str): Internal model code
295
+
296
+ Returns:
297
+ dict: Device configuration or None if not found
298
+ :param int_mod_or_key:
299
+
300
+ """
301
+ if found := self.inner_list.get(int_mod_or_key):
302
+ return found
303
+ else:
304
+ return self.default_list.get(int_mod_or_key)
305
+
306
+ def get_external_model(self, int_mod: str):
307
+ """Get external model name for given internal model code
308
+
309
+ Args:
310
+ int_mod (str): Internal model code
311
+
312
+ Returns:
313
+ str: External model name or None if not found
314
+
315
+ """
316
+ config = self.get_device_config(int_mod)
317
+ return config.get("extMod") if config else None
318
+
319
+ def get_working_parameters(self, int_mod_or_key: str) -> DeviceLimits:
320
+ """Get working parameters for given internal model code
321
+
322
+ Args:
323
+ int_mod (str): Internal model code
324
+
325
+ Returns:
326
+ dict: Working parameters or None if not found
327
+
328
+ """
329
+ config = self.get_device_config(int_mod_or_key)
330
+ if not config:
331
+ return None
332
+
333
+ return DeviceLimits.from_dict(
334
+ {
335
+ "cutter_height": {"min": config["cutter_height_min"], "max": config["cutter_height_max"]},
336
+ "working_speed": {"min": config["working_speed_min"], "max": config["working_speed_max"]},
337
+ "working_path": {"min": config["working_path_min"], "max": config["working_path_max"]},
338
+ "work_area_num_max": config["work_area_num_max"],
339
+ "display_image_type": config["display_image_type"],
340
+ }
341
+ )
342
+
343
+
344
+ # # Usage example:
345
+ # def main():
346
+ # device_config = DeviceConfig()
347
+ #
348
+ # # Look up a specific device
349
+ # model_code = "HM010060LBAWD10"
350
+ #
351
+ # # Get full configuration
352
+ # config = device_config.get_device_config(model_code)
353
+ # print(f"Full configuration for {model_code}:")
354
+ # print(config)
355
+ #
356
+ # # Get external model name
357
+ # ext_model = device_config.get_external_model(model_code)
358
+ # print(f"\nExternal model name: {ext_model}")
359
+ #
360
+ # # Get working parameters
361
+ # params = device_config.get_working_parameters(model_code)
362
+ # print(f"\nWorking parameters:")
363
+ # print(params)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: pymammotion
3
- Version: 0.3.8
3
+ Version: 0.4.0a0
4
4
  Summary:
5
5
  License: GNU-3.0
6
6
  Author: Michael Arthur
@@ -21,6 +21,7 @@ Requires-Dist: async-timeout (>=4.0.3,<5.0.0)
21
21
  Requires-Dist: betterproto (>=1.2.5,<2.0.0)
22
22
  Requires-Dist: bleak (>=0.21.0)
23
23
  Requires-Dist: bleak-retry-connector (>=3.5.0,<4.0.0)
24
+ Requires-Dist: cryptography (>=43.0.1)
24
25
  Requires-Dist: jsonic (>=1.0.0,<2.0.0)
25
26
  Requires-Dist: mashumaro (>=3.13,<4.0)
26
27
  Requires-Dist: numpy (>=1.26.0)
@@ -1,4 +1,4 @@
1
- pymammotion/__init__.py,sha256=BcwrItywpSECTxrTPwEuBExi_ekOrG2M2tbphuotIlE,1617
1
+ pymammotion/__init__.py,sha256=u1OHuD8Uj0qCOH4I7Lt5d7T-TPt1R0pY-bv8S6UfVxM,1587
2
2
  pymammotion/aliyun/__init__.py,sha256=T1lkX7TRYiL4nqYanG4l4MImV-SlavSbuooC-W-uUGw,29
3
3
  pymammotion/aliyun/cloud_gateway.py,sha256=bFlVEmKBocxbD8ZxTXFXQZi4GwTDhzxChITJadzX2W0,25877
4
4
  pymammotion/aliyun/cloud_service.py,sha256=px7dUKow5Z7VyebjYzuKkzkm77XbUXYiFiYO_2e-UQ0,2207
@@ -24,9 +24,10 @@ pymammotion/const.py,sha256=lWRxvTVdXnNHuxqvRkjO5ziK0Ic-fZMM6J2dbe5M6Nc,385
24
24
  pymammotion/data/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
25
25
  pymammotion/data/model/__init__.py,sha256=aSyroxYQQS-WMRi6WmWm2js4wLa9nmsi160gx9tts4o,323
26
26
  pymammotion/data/model/account.py,sha256=vJM-KTf2q6eBfVC-UlNHBSmJvqHiCawZ40vnuhXhaz8,140
27
- pymammotion/data/model/device.py,sha256=GQH9pNPcqb4zdl55r8dYIHgvXlwdA8k3xHwMVzNalys,12433
28
- pymammotion/data/model/device_config.py,sha256=b3zmArKg10NIheNGSugwWruLM_H4ySBlQxDgXAiB2es,2852
27
+ pymammotion/data/model/device.py,sha256=wS8EiV0EinWgpzwaAtJKPQwjrIWuvSxRAXu6KWclrB0,5626
28
+ pymammotion/data/model/device_config.py,sha256=wjayKnzoPDmBhqWZKTPDSueNEPCIWCB20tFEDSGIUsM,2602
29
29
  pymammotion/data/model/device_info.py,sha256=ahz2xILdSYdX6SIVuVzz8QCfSQLefbQnpXrsiDpBDbY,585
30
+ pymammotion/data/model/device_limits.py,sha256=Tj6A0Aiyo2792kmO1TwZVuFlO0rYHNxKF7FMHdqnTQw,1930
30
31
  pymammotion/data/model/enums.py,sha256=EpKmO8yVUZyEnTY4yH0DMMVKYNQM42zpW1maUu0i3IE,1582
31
32
  pymammotion/data/model/excute_boarder_params.py,sha256=9CpUqrygcle1C_1hDW-riLmm4map4ZbE842NXjcomEI,1394
32
33
  pymammotion/data/model/execute_boarder.py,sha256=9rd_h4fbcsXxgnLOd2rO2hWyD1abnTGc47QTEpp8DD0,1103
@@ -36,6 +37,7 @@ pymammotion/data/model/location.py,sha256=PwmITejfI4pm7PI4rzqSuuHetwle6IJr_CV954
36
37
  pymammotion/data/model/mowing_modes.py,sha256=87R4T-hs6tZ0baPvdYII9Fd6ZbJRqkXj7MRFZ7nIPOY,941
37
38
  pymammotion/data/model/plan.py,sha256=mcadkSL7fQXy0iJ0q786I3GEQY4i6kmQXfW6Ri69lcQ,2906
38
39
  pymammotion/data/model/rapid_state.py,sha256=mIdhAG_LZXpVcybxqTLgLXkNOmVmDTn04B9PGIDA8Ls,1251
40
+ pymammotion/data/model/raw_data.py,sha256=NO7FMzg_nE3WxT_K2ny-pEqbMf25LnvoYMB86s6cZFY,6785
39
41
  pymammotion/data/model/region_data.py,sha256=OTV15vRyn9JORXsQPjWMNF1ZujuNhsOKl25KeqwMObA,3007
40
42
  pymammotion/data/model/report_info.py,sha256=9sPPfhBv8f0K-xuHRkKrbez-7nZ_oCND2vZYLuKvkBA,3436
41
43
  pymammotion/data/mqtt/__init__.py,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
@@ -46,7 +48,8 @@ pymammotion/data/state_manager.py,sha256=W6PjIMXHPObocYay6ZQ7ITju27MA5kK5udFptAy
46
48
  pymammotion/event/__init__.py,sha256=mgATR6vPHACNQ-0zH5fi7NdzeTCDV1CZyaWPmtUusi8,115
47
49
  pymammotion/event/event.py,sha256=bj2RirSIRyBs0QvkcrOtwZWUX_8F3m1sySuHVyKmZLs,2143
48
50
  pymammotion/http/_init_.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
49
- pymammotion/http/http.py,sha256=h-h7pfLCbkyf1gsezTisvWdAjCRAKwyDTziylW0kq4A,3933
51
+ pymammotion/http/encryption.py,sha256=BEJXNsnM-PIaqGocsGtWh07T8-jnBleYqjcqZoFrg2A,8330
52
+ pymammotion/http/http.py,sha256=xRs1f7nECgLASzFv15MFrO_QluM1UI2ViEpBBN1-Zlg,6708
50
53
  pymammotion/http/model/http.py,sha256=SxpAtwJFlCQl6YfRFwJjpeOsB4QfQdhoOAKQzM6uMVI,2346
51
54
  pymammotion/mammotion/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
52
55
  pymammotion/mammotion/commands/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -63,8 +66,8 @@ pymammotion/mammotion/commands/messages/video.py,sha256=xili9khz4Op5NwjXfvIkeRYz
63
66
  pymammotion/mammotion/control/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
64
67
  pymammotion/mammotion/control/joystick.py,sha256=QfBVxM_gxpWsZAGO90whtgxCI2tIZ3TTad9wHIPsU9s,5640
65
68
  pymammotion/mammotion/devices/__init__.py,sha256=f2qQFPgLGmV85W2hSlMUh5BYuht9o_Ar_JEAAMD4fsE,102
66
- pymammotion/mammotion/devices/base.py,sha256=n1w-RR9NrMLJIlO5cPaxpcq40ioXKIIbjdZkjcH9lhI,10680
67
- pymammotion/mammotion/devices/mammotion.py,sha256=r3G13Wi1szQ1rq6J-Rwl_cddZDyp5DqkZ9BbjF5Kxpg,12538
69
+ pymammotion/mammotion/devices/base.py,sha256=2IKm7CYGmvRLpJaAKp25tL23UhOoSEHJ6On5D0N5TSk,10763
70
+ pymammotion/mammotion/devices/mammotion.py,sha256=dF5R5yB5capEwJIjt1M2_P2XVfxCKSY8FNutK7hGDnU,12557
68
71
  pymammotion/mammotion/devices/mammotion_bluetooth.py,sha256=HUOKnjYUWTGjksyQDCPKF_u3dWo2ddgrWCBXnJ2VkwA,18963
69
72
  pymammotion/mammotion/devices/mammotion_cloud.py,sha256=a9fB0ZCYElRxrjnwCM81RXCbxo5kJKhGa-BGck9U3-A,12949
70
73
  pymammotion/mqtt/__init__.py,sha256=Ocs5e-HLJvTuDpVXyECEsWIvwsUaxzj7lZ9mSYutNDY,105
@@ -116,12 +119,13 @@ pymammotion/utility/constant/__init__.py,sha256=tcY0LDeD-qDDHx2LKt55KOyv9ZI0UfCN
116
119
  pymammotion/utility/constant/device_constant.py,sha256=RQ0Yi6hQa9hfx4wVXypPaPozahQ8Y4EiU3RWZYDZeOY,7593
117
120
  pymammotion/utility/conversions.py,sha256=v3YICy0zZwwBBzrUZgabI7GRfiDBnkiAX2qdtk3NxOY,89
118
121
  pymammotion/utility/datatype_converter.py,sha256=SPM_HuaaD_XOawlqEnA8qlRRZXGba3WjA8kGOZgeBlQ,4284
122
+ pymammotion/utility/device_config.py,sha256=XWuMLL8xkyVyZl5HrG6nR3Hz7eKyQcOZfzFHvgRYsZo,13117
119
123
  pymammotion/utility/device_type.py,sha256=xOgfIhOkzgcAtoKtlhlB1q8FpiKe1rVVV5BvN7K7zYc,9433
120
124
  pymammotion/utility/map.py,sha256=GYscVMg2cX3IPlNpCBNHDW0S55yS1WGRf1iHnNZ7TfQ,2227
121
125
  pymammotion/utility/movement.py,sha256=N75oAoAgFydqoaOedYIxGUHmuTCtPzAOtb-d_29tpfI,615
122
126
  pymammotion/utility/periodic.py,sha256=MbeSb9cfhxzYmdT_RiE0dZe3H9IfbQW_zSqhmSX2RUc,3321
123
127
  pymammotion/utility/rocker_util.py,sha256=6tX7sS87qoQC_tsxbx3NLL-HgS08wtzXiZkhDiz7uo0,7179
124
- pymammotion-0.3.8.dist-info/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
125
- pymammotion-0.3.8.dist-info/METADATA,sha256=glLYK0gcdvYHjIw4xVAclhKSCaGqOjdHYcqR49DwpWE,3895
126
- pymammotion-0.3.8.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
127
- pymammotion-0.3.8.dist-info/RECORD,,
128
+ pymammotion-0.4.0a0.dist-info/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
129
+ pymammotion-0.4.0a0.dist-info/METADATA,sha256=ULAzOBhTFc4IT272ZVf8G1H2lUi9VoecgASsy1XqFjw,3936
130
+ pymammotion-0.4.0a0.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
131
+ pymammotion-0.4.0a0.dist-info/RECORD,,