pymammotion 0.4.10__py3-none-any.whl → 0.4.11b1__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.
- pymammotion/data/model/hash_list.py +27 -13
- {pymammotion-0.4.10.dist-info → pymammotion-0.4.11b1.dist-info}/METADATA +1 -1
- {pymammotion-0.4.10.dist-info → pymammotion-0.4.11b1.dist-info}/RECORD +5 -5
- {pymammotion-0.4.10.dist-info → pymammotion-0.4.11b1.dist-info}/LICENSE +0 -0
- {pymammotion-0.4.10.dist-info → pymammotion-0.4.11b1.dist-info}/WHEEL +0 -0
@@ -118,7 +118,7 @@ class HashList(DataClassORJSONMixin):
|
|
118
118
|
hashlist for all our hashIDs for verification
|
119
119
|
"""
|
120
120
|
|
121
|
-
|
121
|
+
root_hash_lists: list[RootHashList] = field(default_factory=list)
|
122
122
|
area: dict = field(default_factory=dict) # type 0
|
123
123
|
path: dict = field(default_factory=dict) # type 2
|
124
124
|
obstacle: dict = field(default_factory=dict) # type 1
|
@@ -135,37 +135,51 @@ class HashList(DataClassORJSONMixin):
|
|
135
135
|
|
136
136
|
@property
|
137
137
|
def hashlist(self) -> list[int]:
|
138
|
-
if
|
138
|
+
if not self.root_hash_lists:
|
139
139
|
return []
|
140
|
-
|
140
|
+
# Combine data_couple from all RootHashLists
|
141
|
+
return [i for root_list in self.root_hash_lists for obj in root_list.data for i in obj.data_couple]
|
141
142
|
|
142
143
|
@property
|
143
144
|
def missing_hashlist(self) -> list[int]:
|
144
145
|
"""Return missing hashlist."""
|
146
|
+
all_hash_ids = set(self.area.keys()).union(
|
147
|
+
self.path.keys(), self.obstacle.keys(), self.dump.keys(), self.svg.keys()
|
148
|
+
)
|
145
149
|
return [
|
146
150
|
i
|
147
|
-
for
|
151
|
+
for root_list in self.root_hash_lists
|
152
|
+
for obj in root_list.data
|
148
153
|
for i in obj.data_couple
|
149
|
-
if f"{i}"
|
150
|
-
not in set(self.area.keys()).union(
|
151
|
-
self.path.keys(), self.obstacle.keys(), self.dump.keys(), self.svg.keys()
|
152
|
-
)
|
154
|
+
if f"{i}" not in all_hash_ids
|
153
155
|
]
|
154
156
|
|
155
157
|
def update_root_hash_list(self, hash_list: NavGetHashListData) -> None:
|
156
|
-
self.
|
158
|
+
target_root_list = next((rhl for rhl in self.root_hash_lists if rhl.total_frame == hash_list.total_frame), None)
|
157
159
|
|
158
|
-
|
160
|
+
if target_root_list is None:
|
161
|
+
# Create new RootHashList if none exists for this total_frame
|
162
|
+
new_root_list = RootHashList(total_frame=hash_list.total_frame, data=[hash_list])
|
163
|
+
self.root_hash_lists.append(new_root_list)
|
164
|
+
return
|
165
|
+
|
166
|
+
for index, obj in enumerate(target_root_list.data):
|
159
167
|
if obj.current_frame == hash_list.current_frame:
|
160
168
|
# Replace the item if current_frame matches
|
161
|
-
|
169
|
+
target_root_list.data[index] = hash_list
|
162
170
|
return
|
163
171
|
|
164
172
|
# If no match was found, append the new item
|
165
|
-
|
173
|
+
target_root_list.data.append(hash_list)
|
166
174
|
|
167
175
|
def missing_hash_frame(self) -> list[int]:
|
168
|
-
|
176
|
+
"""Returns a combined list of all missing frames across all RootHashLists."""
|
177
|
+
missing_frames = []
|
178
|
+
for root_list in self.root_hash_lists:
|
179
|
+
missing = self._find_missing_frames(root_list)
|
180
|
+
if missing:
|
181
|
+
missing_frames.extend(missing)
|
182
|
+
return missing_frames
|
169
183
|
|
170
184
|
def missing_frame(self, hash_data: NavGetCommDataAck | SvgMessageAckT) -> list[int]:
|
171
185
|
if hash_data.type == PathType.AREA:
|
@@ -31,7 +31,7 @@ pymammotion/data/model/enums.py,sha256=EpKmO8yVUZyEnTY4yH0DMMVKYNQM42zpW1maUu0i3
|
|
31
31
|
pymammotion/data/model/excute_boarder_params.py,sha256=9CpUqrygcle1C_1hDW-riLmm4map4ZbE842NXjcomEI,1394
|
32
32
|
pymammotion/data/model/execute_boarder.py,sha256=9rd_h4fbcsXxgnLOd2rO2hWyD1abnTGc47QTEpp8DD0,1103
|
33
33
|
pymammotion/data/model/generate_route_information.py,sha256=pgjqURwmEIzjCMbl4Z5JDDkfxyUAdry1KhPfyir3-mU,777
|
34
|
-
pymammotion/data/model/hash_list.py,sha256=
|
34
|
+
pymammotion/data/model/hash_list.py,sha256=EKX-P8I2dp234GsMzZgi6afxX2xwgcYfk7kl8ezvf_g,8605
|
35
35
|
pymammotion/data/model/location.py,sha256=PwmITejfI4pm7PI4rzqSuuHetwle6IJr_CV95435s2M,871
|
36
36
|
pymammotion/data/model/mowing_modes.py,sha256=bBbRhDe-imZsXDR0TN0emQv6BiIkAlXJFb5isPEjgDk,1078
|
37
37
|
pymammotion/data/model/plan.py,sha256=wGlcJT-w0EdbWK9jI838TCOm_MABFg7WoR664VB8RWg,2880
|
@@ -117,7 +117,7 @@ pymammotion/utility/map.py,sha256=GYscVMg2cX3IPlNpCBNHDW0S55yS1WGRf1iHnNZ7TfQ,22
|
|
117
117
|
pymammotion/utility/movement.py,sha256=N75oAoAgFydqoaOedYIxGUHmuTCtPzAOtb-d_29tpfI,615
|
118
118
|
pymammotion/utility/periodic.py,sha256=MbeSb9cfhxzYmdT_RiE0dZe3H9IfbQW_zSqhmSX2RUc,3321
|
119
119
|
pymammotion/utility/rocker_util.py,sha256=6tX7sS87qoQC_tsxbx3NLL-HgS08wtzXiZkhDiz7uo0,7179
|
120
|
-
pymammotion-0.4.
|
121
|
-
pymammotion-0.4.
|
122
|
-
pymammotion-0.4.
|
123
|
-
pymammotion-0.4.
|
120
|
+
pymammotion-0.4.11b1.dist-info/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
|
121
|
+
pymammotion-0.4.11b1.dist-info/METADATA,sha256=DofePhYsQPvJiHt2WhaVGMYn1ZiRD2voldlNeG5gxPY,3887
|
122
|
+
pymammotion-0.4.11b1.dist-info/WHEEL,sha256=XbeZDeTWKc1w7CSIyre5aMDU_-PohRwTQceYnisIYYY,88
|
123
|
+
pymammotion-0.4.11b1.dist-info/RECORD,,
|
File without changes
|
File without changes
|