yostlabs 2025.2.10__tar.gz → 2025.2.17__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.
Files changed (30) hide show
  1. {yostlabs-2025.2.10 → yostlabs-2025.2.17}/PKG-INFO +1 -1
  2. {yostlabs-2025.2.10 → yostlabs-2025.2.17}/pyproject.toml +1 -1
  3. {yostlabs-2025.2.10 → yostlabs-2025.2.17}/src/yostlabs/tss3/api.py +13 -3
  4. {yostlabs-2025.2.10 → yostlabs-2025.2.17}/src/yostlabs/tss3/utils/streaming.py +18 -0
  5. {yostlabs-2025.2.10 → yostlabs-2025.2.17}/.gitignore +0 -0
  6. {yostlabs-2025.2.10 → yostlabs-2025.2.17}/Examples/embedded_2024_dec_20.xml +0 -0
  7. {yostlabs-2025.2.10 → yostlabs-2025.2.17}/Examples/example_commands.py +0 -0
  8. {yostlabs-2025.2.10 → yostlabs-2025.2.17}/Examples/example_component_specific_settings_and_commands.py +0 -0
  9. {yostlabs-2025.2.10 → yostlabs-2025.2.17}/Examples/example_firmware_upload.py +0 -0
  10. {yostlabs-2025.2.10 → yostlabs-2025.2.17}/Examples/example_parsing_stored_binary.py +0 -0
  11. {yostlabs-2025.2.10 → yostlabs-2025.2.17}/Examples/example_read_settings.py +0 -0
  12. {yostlabs-2025.2.10 → yostlabs-2025.2.17}/Examples/example_streaming.py +0 -0
  13. {yostlabs-2025.2.10 → yostlabs-2025.2.17}/Examples/example_streaming_manager.py +0 -0
  14. {yostlabs-2025.2.10 → yostlabs-2025.2.17}/Examples/example_write_settings.py +0 -0
  15. {yostlabs-2025.2.10 → yostlabs-2025.2.17}/LICENSE +0 -0
  16. {yostlabs-2025.2.10 → yostlabs-2025.2.17}/README.md +0 -0
  17. {yostlabs-2025.2.10 → yostlabs-2025.2.17}/src/yostlabs/__init__.py +0 -0
  18. {yostlabs-2025.2.10 → yostlabs-2025.2.17}/src/yostlabs/communication/__init__.py +0 -0
  19. {yostlabs-2025.2.10 → yostlabs-2025.2.17}/src/yostlabs/communication/base.py +0 -0
  20. {yostlabs-2025.2.10 → yostlabs-2025.2.17}/src/yostlabs/communication/serial.py +0 -0
  21. {yostlabs-2025.2.10 → yostlabs-2025.2.17}/src/yostlabs/math/__init__.py +0 -0
  22. {yostlabs-2025.2.10 → yostlabs-2025.2.17}/src/yostlabs/math/quaternion.py +0 -0
  23. {yostlabs-2025.2.10 → yostlabs-2025.2.17}/src/yostlabs/math/vector.py +0 -0
  24. {yostlabs-2025.2.10 → yostlabs-2025.2.17}/src/yostlabs/tss3/__init__.py +0 -0
  25. {yostlabs-2025.2.10 → yostlabs-2025.2.17}/src/yostlabs/tss3/consts.py +0 -0
  26. {yostlabs-2025.2.10 → yostlabs-2025.2.17}/src/yostlabs/tss3/eepts.py +0 -0
  27. {yostlabs-2025.2.10 → yostlabs-2025.2.17}/src/yostlabs/tss3/utils/__init__.py +0 -0
  28. {yostlabs-2025.2.10 → yostlabs-2025.2.17}/src/yostlabs/tss3/utils/calibration.py +0 -0
  29. {yostlabs-2025.2.10 → yostlabs-2025.2.17}/src/yostlabs/tss3/utils/parser.py +0 -0
  30. {yostlabs-2025.2.10 → yostlabs-2025.2.17}/src/yostlabs/tss3/utils/version.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: yostlabs
3
- Version: 2025.2.10
3
+ Version: 2025.2.17
4
4
  Summary: Python resources and API for 3Space sensors from Yost Labs Inc.
5
5
  Project-URL: Homepage, https://yostlabs.com/
6
6
  Project-URL: Repository, https://github.com/YostLabs/3SpacePythonPackage/tree/main
@@ -5,7 +5,7 @@ build-backend = "hatchling.build"
5
5
  [project]
6
6
  name = "yostlabs"
7
7
  #If uploading again on the same day, add a fourth number
8
- version = "2025.02.10"
8
+ version = "2025.02.17"
9
9
  authors = [
10
10
  { name="Yost Labs Inc.", email="techsupport@yostlabs.com" },
11
11
  { name="Andy Riedlinger", email="techsupport@yostlabs.com" },
@@ -800,7 +800,16 @@ class ThreespaceSensor:
800
800
  self.log(f"Err setting {cmd}: {err=} {num_successes=}")
801
801
  return err, num_successes
802
802
 
803
- def get_settings(self, *args: str) -> dict[str, str] | str:
803
+ def get_settings(self, *args: str, format="Mixed") -> dict[str, str] | str:
804
+ """
805
+ Gets the values for all requested settings. Settings are request by their string name. The result will be
806
+ the string response to that setting.
807
+
808
+ Params
809
+ -----
810
+ *args : Any number of string keys
811
+ format : "Mixed" (Dictionary if multiple settings requested, else just the response string) or "Dict" (Always a dictionary even if only one key)
812
+ """
804
813
  self.check_dirty()
805
814
  #Build and send the cmd
806
815
  params = list(args)
@@ -837,7 +846,7 @@ class ThreespaceSensor:
837
846
  self.log("Failed to parse get value:", i, v, len(v))
838
847
 
839
848
  #Format response
840
- if len(response_dict) == 1:
849
+ if len(response_dict) == 1 and format == "Mixed":
841
850
  return list(response_dict.values())[0]
842
851
  return response_dict
843
852
 
@@ -1228,7 +1237,8 @@ class ThreespaceSensor:
1228
1237
  def __fileStartStream(self) -> ThreespaceCmdResult[int]:
1229
1238
  result = self.execute_command(self.__get_command("fileStartStream"))
1230
1239
  self.file_stream_length = result.data
1231
- self.is_file_streaming = True
1240
+ if self.file_stream_length > 0:
1241
+ self.is_file_streaming = True
1232
1242
  return result
1233
1243
 
1234
1244
  def fileStopStream(self) -> ThreespaceCmdResult[None]: ...
@@ -270,6 +270,24 @@ class ThreespaceStreamingManager:
270
270
  if immediate_update:
271
271
  self.__apply_streaming_settings_and_update_state()
272
272
 
273
+ def unregister_all_commands_from_owner(self, owner: object, immediate_update: bool = True):
274
+ """
275
+ Undoes all command registrations done by the given owner automatically
276
+
277
+ Parameters
278
+ ----------
279
+ owner : A reference to the object unregistering the command. A command is only unregistered after all its owners release it
280
+ immediate_update : If true, the streaming manager will immediately change the streaming slots on the sensor. If doing bulk unregisters, it
281
+ is useful to set this as False until the last one for performance purposes.
282
+ """
283
+ for registered_command in self.registered_commands.values():
284
+ if owner in registered_command.registrations:
285
+ registered_command.registrations.remove(owner)
286
+ if len(registered_command.registrations) == 0:
287
+ self.dirty = True
288
+
289
+ if self.dirty and immediate_update:
290
+ self.__apply_streaming_settings_and_update_state()
273
291
 
274
292
  def __build_stream_slots_string(self):
275
293
  cmd_strings = []
File without changes
File without changes
File without changes