fprime-gds 3.5.1__py3-none-any.whl → 3.5.2a2__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.
@@ -131,9 +131,8 @@ class CmdData(sys_data.SysData):
131
131
  else:
132
132
  # The arguments are currently serializable objects which cannot be
133
133
  # used to fill in a format string. Convert them to values that can be
134
- arg_val_list = [arg_obj.val for arg_obj in self.args]
135
-
136
- arg_str = " ".join(str(arg_val_list))
134
+ arg_val_list = self.get_arg_vals()
135
+ arg_str = str(arg_val_list)
137
136
 
138
137
  if verbose and csv:
139
138
  return f"{time_str},{raw_time_str},{name},{self.id},{arg_str}"
@@ -160,7 +160,9 @@ class ChronologicalHistory(History):
160
160
  the index that the item was inserted at (int)
161
161
  """
162
162
  for i, item in reversed(list(enumerate(ordered))):
163
- if item.get_time() < data_object.get_time():
163
+ # Note: for events with the exact same time, this should default to the order received from downlink
164
+ # and as such the data item should be treated as newer because it was received later.
165
+ if item.get_time() <= data_object.get_time():
164
166
  ordered.insert(i + 1, data_object)
165
167
  return i
166
168
  # If the data object is the earliest in the list or the list was empty
@@ -178,7 +178,10 @@ class JsonLoader(dict_loader.DictLoader):
178
178
  SerializableType: The constructed serializable type.
179
179
 
180
180
  """
181
- struct_members = []
181
+ # Note on struct_members: the order of the members list matter when calling construct_type() below.
182
+ # It should be ordered by incrementing index which corresponds to the order in the FPP declaration
183
+ # The JSON dictionary ordering is not guaranteed, so we use a dict() to sort by index below.
184
+ struct_members = {}
182
185
  for name, member_dict in qualified_type.get("members").items():
183
186
  member_type_dict = member_dict["type"]
184
187
  member_type_obj = self.parse_type(member_type_dict)
@@ -197,11 +200,17 @@ class JsonLoader(dict_loader.DictLoader):
197
200
  member_type_obj.FORMAT if hasattr(member_type_obj, "FORMAT") else "{}"
198
201
  )
199
202
  description = member_type_dict.get("annotation", "")
200
- struct_members.append((name, member_type_obj, fmt_str, description))
203
+ member_index = member_dict["index"]
204
+ if member_index in struct_members:
205
+ raise KeyError(
206
+ f"Invalid dictionary: Duplicate index {member_index} in serializable type {type_name}"
207
+ )
208
+ struct_members[member_index] = (name, member_type_obj, fmt_str, description)
201
209
 
210
+ # Construct the serializable type with list of members sorted by index
202
211
  ser_type = SerializableType.construct_type(
203
212
  type_name,
204
- struct_members,
213
+ [struct_members[i] for i in sorted(struct_members.keys())],
205
214
  )
206
215
  self.parsed_types[type_name] = ser_type
207
216
  return ser_type
@@ -241,7 +241,7 @@ class ThreadedTCPSocketClient(ThreadedTransportClient):
241
241
  assert self.dest is not None, "Cannot send data before connect call"
242
242
  self.sock.send(b"A5A5 %s %s" % (self.dest, data))
243
243
 
244
- def recv(self, timeout=100):
244
+ def recv(self, timeout=0.1):
245
245
  """Receives data from the threaded tcp server
246
246
 
247
247
  Receives raw data from the threaded tcp server. This data is expected to have no headers and will be passed as
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.2
2
2
  Name: fprime-gds
3
- Version: 3.5.1
3
+ Version: 3.5.2a2
4
4
  Summary: F Prime Flight Software Ground Data System layer
5
5
  Author-email: Michael Starch <Michael.D.Starch@jpl.nasa.gov>, Thomas Boyer-Chammard <Thomas.Boyer.Chammard@jpl.nasa.gov>
6
6
  License:
@@ -3,7 +3,7 @@ fprime_gds/__init__.py,sha256=y2ljhCEHnvyfSDvXIEgBGIk8oHjjjjCWFxfddOGeYFk,115
3
3
  fprime_gds/version.py,sha256=dlUlfOKTsGaqz_L7TjhCVC-Vanx5cK67kdZlqcHCM8M,395
4
4
  fprime_gds/common/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
5
5
  fprime_gds/common/handlers.py,sha256=t2-st-C3Z486kfcu2cpf-wHJQmpaaHQYj1dyXJEMmSU,2632
6
- fprime_gds/common/transport.py,sha256=y9HiupzsCRF5_JFMMtMWQxcEYPvPuxX1P_oBeqosKR0,10565
6
+ fprime_gds/common/transport.py,sha256=uYXWkM8TYEYz1vfY4AEn0PF8Gu4tkYmJ5t4w1YY1yW8,10565
7
7
  fprime_gds/common/zmq_transport.py,sha256=E_iBZ5sA4JKB99MWSOM6XnPrO-mbFyRvD9eQp9te6-Y,12397
8
8
  fprime_gds/common/communication/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
9
9
  fprime_gds/common/communication/checksum.py,sha256=f6W0Tr68U-XGnFmysMqsFzoGYZVE8clKf-VIJja_1YM,741
@@ -17,7 +17,7 @@ fprime_gds/common/communication/adapters/uart.py,sha256=6SrN42ShVjwNubFg-1YrO09o
17
17
  fprime_gds/common/controllers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
18
18
  fprime_gds/common/data_types/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
19
19
  fprime_gds/common/data_types/ch_data.py,sha256=RP9zSyzNcH0nJ3MYyW_IATnmnHYZ6d0KmoJUJantdBI,6111
20
- fprime_gds/common/data_types/cmd_data.py,sha256=nC6qhtBvqSgEueDn075XA_3dAwjnPHpLwhElhdMG4QQ,7080
20
+ fprime_gds/common/data_types/cmd_data.py,sha256=EARx7Q2owmPzq2CZX9oouDYgbCfTnWTZavn2bZlkq-M,7050
21
21
  fprime_gds/common/data_types/event_data.py,sha256=7_vA6Xwvs9kK1-xJzc6lwO_TtUeWdI7p29B6QJNMc40,5372
22
22
  fprime_gds/common/data_types/exceptions.py,sha256=C16L2lofigH8UmnsYO_fuY6yR20U-ckRcl14HZjQlJc,1054
23
23
  fprime_gds/common/data_types/file_data.py,sha256=4_G9kf4ThC5NzkxnKa0xNYBdi8UDvZg8f5Vw0DdGIBE,3904
@@ -52,7 +52,7 @@ fprime_gds/common/gds_cli/events.py,sha256=EpaUfDEaXvPwKu7qutkuU1f8zrFoVNsbyCIGU
52
52
  fprime_gds/common/gds_cli/filtering_utils.py,sha256=2LxT9tzuNvnwm7HVItv87XkO6K29nOBift2bYcYn3zg,7554
53
53
  fprime_gds/common/gds_cli/test_api_utils.py,sha256=VphGie_VxTMZQGz6p_5AjdEZWXqKJTohrqslRS8VnNU,5109
54
54
  fprime_gds/common/history/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
55
- fprime_gds/common/history/chrono.py,sha256=tfsRjZDoX6_1Xd1qoPlTrvS_8aUV-JBr8cAV5dX-7QM,7530
55
+ fprime_gds/common/history/chrono.py,sha256=Yz8zwqTYC5C4CIuWtHVvspr-J8kQ5PXXX0IITQi8_7I,7748
56
56
  fprime_gds/common/history/history.py,sha256=LbdMzlbZ2AGt5I76DqgQWU852Jg0946hVGc6N6OSNUQ,2423
57
57
  fprime_gds/common/history/ram.py,sha256=ELNlyC6SmQJ-ZKD1NRi4H892tt1ppDNfz7R2c0UFCbQ,5797
58
58
  fprime_gds/common/history/test.py,sha256=JMOlXPYtS9OTT1xb0GKn2YLI-0ESElbhvhb8usFatz0,5048
@@ -67,7 +67,7 @@ fprime_gds/common/loaders/dict_loader.py,sha256=TasuICjsRYPWAsgmHGmsioxa8F7xmgAj
67
67
  fprime_gds/common/loaders/event_json_loader.py,sha256=DPVJQ1wIY3r13rxTWrE9n7i6kSAF5m4jB-XRsxaRaDA,3572
68
68
  fprime_gds/common/loaders/event_py_loader.py,sha256=m4KlDl0mXn8ZQr-IfpUg0KaGIOJUErZkcIohlW9jNPc,2598
69
69
  fprime_gds/common/loaders/event_xml_loader.py,sha256=Q3Vm7ROTVgolSp5umkNMp0Eh95sir6ZAyAegrSjkiis,2875
70
- fprime_gds/common/loaders/json_loader.py,sha256=afD873WyIsbzWTz4SzydLfAKD2yFirj-l79xb4g_TBk,8051
70
+ fprime_gds/common/loaders/json_loader.py,sha256=nXdu3eDI7_FSVbNmjbldFjReBQTxMLg14BpZlSGIAeM,8750
71
71
  fprime_gds/common/loaders/pkt_xml_loader.py,sha256=ZS4qchqQnIBx0Tw69ehP8yqm1g_uYSQzmnijR3FxqJg,4795
72
72
  fprime_gds/common/loaders/python_loader.py,sha256=FUNQbFy75bpqvss1JDu2UWZBMrtnMpFegM6mcglh42I,4858
73
73
  fprime_gds/common/loaders/xml_loader.py,sha256=8AlTTHddJbJqUr6St-zJI8CTqoPuCNtNoRBmdwCorcg,14820
@@ -227,10 +227,10 @@ fprime_gds/flask/static/third-party/webfonts/fa-solid-900.woff2,sha256=mDS4KtJuK
227
227
  fprime_gds/plugin/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
228
228
  fprime_gds/plugin/definitions.py,sha256=5rHGSOrr62qRNVfX9bZIo4HDAKG62lKteNum9G40y3g,2347
229
229
  fprime_gds/plugin/system.py,sha256=uWd6DVW90Re0FoNMPNCx0cXXTJUdpgAAO0mtakzRNgk,8564
230
- fprime_gds-3.5.1.dist-info/LICENSE.txt,sha256=z8d0m5b2O9McPEK1xHG_dWgUBT6EfBDz6wA0F7xSPTA,11358
231
- fprime_gds-3.5.1.dist-info/METADATA,sha256=EyssY9Qix4glH9AEyq3OP-oDHoe9iZ1oawqzXtmMpOU,24770
232
- fprime_gds-3.5.1.dist-info/NOTICE.txt,sha256=vXjA_xRcQhd83Vfk5D_vXg5kOjnnXvLuMi5vFKDEVmg,1612
233
- fprime_gds-3.5.1.dist-info/WHEEL,sha256=PZUExdf71Ui_so67QXpySuHtCi3-J3wvF4ORK6k_S8U,91
234
- fprime_gds-3.5.1.dist-info/entry_points.txt,sha256=oqUiO3xhJCR943jdU3zcxbqEvSXNeVgshk7dVaf_nGY,322
235
- fprime_gds-3.5.1.dist-info/top_level.txt,sha256=6vzFLIX6ANfavKaXFHDMSLFtS94a6FaAsIWhjgYuSNE,27
236
- fprime_gds-3.5.1.dist-info/RECORD,,
230
+ fprime_gds-3.5.2a2.dist-info/LICENSE.txt,sha256=z8d0m5b2O9McPEK1xHG_dWgUBT6EfBDz6wA0F7xSPTA,11358
231
+ fprime_gds-3.5.2a2.dist-info/METADATA,sha256=xq12LG22iaSHz8kLu-zEwshPLqhew6kiUmgpbLeSbbA,24772
232
+ fprime_gds-3.5.2a2.dist-info/NOTICE.txt,sha256=vXjA_xRcQhd83Vfk5D_vXg5kOjnnXvLuMi5vFKDEVmg,1612
233
+ fprime_gds-3.5.2a2.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
234
+ fprime_gds-3.5.2a2.dist-info/entry_points.txt,sha256=oqUiO3xhJCR943jdU3zcxbqEvSXNeVgshk7dVaf_nGY,322
235
+ fprime_gds-3.5.2a2.dist-info/top_level.txt,sha256=6vzFLIX6ANfavKaXFHDMSLFtS94a6FaAsIWhjgYuSNE,27
236
+ fprime_gds-3.5.2a2.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (75.6.0)
2
+ Generator: setuptools (75.8.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5