clarity-api-sdk-python 0.3.26__tar.gz → 0.3.28__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 (61) hide show
  1. {clarity_api_sdk_python-0.3.26 → clarity_api_sdk_python-0.3.28}/PKG-INFO +1 -1
  2. {clarity_api_sdk_python-0.3.26 → clarity_api_sdk_python-0.3.28}/pyproject.toml +1 -1
  3. {clarity_api_sdk_python-0.3.26 → clarity_api_sdk_python-0.3.28}/src/clarity_api_sdk_python.egg-info/PKG-INFO +1 -1
  4. {clarity_api_sdk_python-0.3.26 → clarity_api_sdk_python-0.3.28}/src/cti/api/sonar_wiz_api.py +66 -7
  5. {clarity_api_sdk_python-0.3.26 → clarity_api_sdk_python-0.3.28}/src/cti/api/sonar_wiz_async_api.py +66 -7
  6. {clarity_api_sdk_python-0.3.26 → clarity_api_sdk_python-0.3.28}/README.md +0 -0
  7. {clarity_api_sdk_python-0.3.26 → clarity_api_sdk_python-0.3.28}/setup.cfg +0 -0
  8. {clarity_api_sdk_python-0.3.26 → clarity_api_sdk_python-0.3.28}/src/clarity_api_sdk_python.egg-info/SOURCES.txt +0 -0
  9. {clarity_api_sdk_python-0.3.26 → clarity_api_sdk_python-0.3.28}/src/clarity_api_sdk_python.egg-info/dependency_links.txt +0 -0
  10. {clarity_api_sdk_python-0.3.26 → clarity_api_sdk_python-0.3.28}/src/clarity_api_sdk_python.egg-info/requires.txt +0 -0
  11. {clarity_api_sdk_python-0.3.26 → clarity_api_sdk_python-0.3.28}/src/clarity_api_sdk_python.egg-info/top_level.txt +0 -0
  12. {clarity_api_sdk_python-0.3.26 → clarity_api_sdk_python-0.3.28}/src/cti/__init__.py +0 -0
  13. {clarity_api_sdk_python-0.3.26 → clarity_api_sdk_python-0.3.28}/src/cti/api/__init__.py +0 -0
  14. {clarity_api_sdk_python-0.3.26 → clarity_api_sdk_python-0.3.28}/src/cti/api/async_client.py +0 -0
  15. {clarity_api_sdk_python-0.3.26 → clarity_api_sdk_python-0.3.28}/src/cti/api/client.py +0 -0
  16. {clarity_api_sdk_python-0.3.26 → clarity_api_sdk_python-0.3.28}/src/cti/api/session.py +0 -0
  17. {clarity_api_sdk_python-0.3.26 → clarity_api_sdk_python-0.3.28}/src/cti/logger/__init__.py +0 -0
  18. {clarity_api_sdk_python-0.3.26 → clarity_api_sdk_python-0.3.28}/src/cti/logger/logger.py +0 -0
  19. {clarity_api_sdk_python-0.3.26 → clarity_api_sdk_python-0.3.28}/src/cti/main.py +0 -0
  20. {clarity_api_sdk_python-0.3.26 → clarity_api_sdk_python-0.3.28}/src/cti/main_api.py +0 -0
  21. {clarity_api_sdk_python-0.3.26 → clarity_api_sdk_python-0.3.28}/src/cti/model/__init__.py +0 -0
  22. {clarity_api_sdk_python-0.3.26 → clarity_api_sdk_python-0.3.28}/src/cti/model/altitude_source.py +0 -0
  23. {clarity_api_sdk_python-0.3.26 → clarity_api_sdk_python-0.3.28}/src/cti/model/attitude_source.py +0 -0
  24. {clarity_api_sdk_python-0.3.26 → clarity_api_sdk_python-0.3.28}/src/cti/model/deferred_object_deletion.py +0 -0
  25. {clarity_api_sdk_python-0.3.26 → clarity_api_sdk_python-0.3.28}/src/cti/model/depth_source.py +0 -0
  26. {clarity_api_sdk_python-0.3.26 → clarity_api_sdk_python-0.3.28}/src/cti/model/device.py +0 -0
  27. {clarity_api_sdk_python-0.3.26 → clarity_api_sdk_python-0.3.28}/src/cti/model/device_type.py +0 -0
  28. {clarity_api_sdk_python-0.3.26 → clarity_api_sdk_python-0.3.28}/src/cti/model/final_product.py +0 -0
  29. {clarity_api_sdk_python-0.3.26 → clarity_api_sdk_python-0.3.28}/src/cti/model/hierarchy.py +0 -0
  30. {clarity_api_sdk_python-0.3.26 → clarity_api_sdk_python-0.3.28}/src/cti/model/layback_algorithm.py +0 -0
  31. {clarity_api_sdk_python-0.3.26 → clarity_api_sdk_python-0.3.28}/src/cti/model/layback_source.py +0 -0
  32. {clarity_api_sdk_python-0.3.26 → clarity_api_sdk_python-0.3.28}/src/cti/model/layback_type.py +0 -0
  33. {clarity_api_sdk_python-0.3.26 → clarity_api_sdk_python-0.3.28}/src/cti/model/organization.py +0 -0
  34. {clarity_api_sdk_python-0.3.26 → clarity_api_sdk_python-0.3.28}/src/cti/model/platform.py +0 -0
  35. {clarity_api_sdk_python-0.3.26 → clarity_api_sdk_python-0.3.28}/src/cti/model/platform_type.py +0 -0
  36. {clarity_api_sdk_python-0.3.26 → clarity_api_sdk_python-0.3.28}/src/cti/model/position_source.py +0 -0
  37. {clarity_api_sdk_python-0.3.26 → clarity_api_sdk_python-0.3.28}/src/cti/model/processed_altitude.py +0 -0
  38. {clarity_api_sdk_python-0.3.26 → clarity_api_sdk_python-0.3.28}/src/cti/model/processed_attitude.py +0 -0
  39. {clarity_api_sdk_python-0.3.26 → clarity_api_sdk_python-0.3.28}/src/cti/model/processed_depth.py +0 -0
  40. {clarity_api_sdk_python-0.3.26 → clarity_api_sdk_python-0.3.28}/src/cti/model/processed_layback.py +0 -0
  41. {clarity_api_sdk_python-0.3.26 → clarity_api_sdk_python-0.3.28}/src/cti/model/processed_position.py +0 -0
  42. {clarity_api_sdk_python-0.3.26 → clarity_api_sdk_python-0.3.28}/src/cti/model/processed_sidescan_ping.py +0 -0
  43. {clarity_api_sdk_python-0.3.26 → clarity_api_sdk_python-0.3.28}/src/cti/model/processing_log.py +0 -0
  44. {clarity_api_sdk_python-0.3.26 → clarity_api_sdk_python-0.3.28}/src/cti/model/project.py +0 -0
  45. {clarity_api_sdk_python-0.3.26 → clarity_api_sdk_python-0.3.28}/src/cti/model/projection_option.py +0 -0
  46. {clarity_api_sdk_python-0.3.26 → clarity_api_sdk_python-0.3.28}/src/cti/model/raw_altitude.py +0 -0
  47. {clarity_api_sdk_python-0.3.26 → clarity_api_sdk_python-0.3.28}/src/cti/model/raw_attitude.py +0 -0
  48. {clarity_api_sdk_python-0.3.26 → clarity_api_sdk_python-0.3.28}/src/cti/model/raw_depth.py +0 -0
  49. {clarity_api_sdk_python-0.3.26 → clarity_api_sdk_python-0.3.28}/src/cti/model/raw_file.py +0 -0
  50. {clarity_api_sdk_python-0.3.26 → clarity_api_sdk_python-0.3.28}/src/cti/model/raw_file_configuration.py +0 -0
  51. {clarity_api_sdk_python-0.3.26 → clarity_api_sdk_python-0.3.28}/src/cti/model/raw_file_device_mapping.py +0 -0
  52. {clarity_api_sdk_python-0.3.26 → clarity_api_sdk_python-0.3.28}/src/cti/model/raw_file_state.py +0 -0
  53. {clarity_api_sdk_python-0.3.26 → clarity_api_sdk_python-0.3.28}/src/cti/model/raw_layback.py +0 -0
  54. {clarity_api_sdk_python-0.3.26 → clarity_api_sdk_python-0.3.28}/src/cti/model/raw_position.py +0 -0
  55. {clarity_api_sdk_python-0.3.26 → clarity_api_sdk_python-0.3.28}/src/cti/model/raw_sidescan_ping.py +0 -0
  56. {clarity_api_sdk_python-0.3.26 → clarity_api_sdk_python-0.3.28}/src/cti/model/s3.py +0 -0
  57. {clarity_api_sdk_python-0.3.26 → clarity_api_sdk_python-0.3.28}/src/cti/model/sidescan_ping_source.py +0 -0
  58. {clarity_api_sdk_python-0.3.26 → clarity_api_sdk_python-0.3.28}/src/cti/model/source.py +0 -0
  59. {clarity_api_sdk_python-0.3.26 → clarity_api_sdk_python-0.3.28}/src/cti/model/survey.py +0 -0
  60. {clarity_api_sdk_python-0.3.26 → clarity_api_sdk_python-0.3.28}/src/cti/model/target.py +0 -0
  61. {clarity_api_sdk_python-0.3.26 → clarity_api_sdk_python-0.3.28}/src/cti/model/tow_system.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: clarity-api-sdk-python
3
- Version: 0.3.26
3
+ Version: 0.3.28
4
4
  Summary: A Python SDK to connect to the CTI Clarity API server.
5
5
  Author-email: "Chesapeake Technology Inc." <support@chesapeaketech.com>
6
6
  Project-URL: Homepage, https://github.com/chesapeake-tech/clarity-api-sdk-python
@@ -5,7 +5,7 @@ build-backend = "setuptools.build_meta"
5
5
 
6
6
  [project]
7
7
  name = "clarity-api-sdk-python"
8
- version = "0.3.26"
8
+ version = "0.3.28"
9
9
  authors = [
10
10
  { name="Chesapeake Technology Inc.", email="support@chesapeaketech.com" },
11
11
  ]
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: clarity-api-sdk-python
3
- Version: 0.3.26
3
+ Version: 0.3.28
4
4
  Summary: A Python SDK to connect to the CTI Clarity API server.
5
5
  Author-email: "Chesapeake Technology Inc." <support@chesapeaketech.com>
6
6
  Project-URL: Homepage, https://github.com/chesapeake-tech/clarity-api-sdk-python
@@ -941,6 +941,66 @@ class SonarWizApi:
941
941
  )
942
942
  return sources
943
943
 
944
+ def get_position_source_raw_positions(
945
+ self, position_source_id: UUID | str
946
+ ) -> list[RawPosition]:
947
+ """Get all raw positions associated with a position source.
948
+
949
+ Args:
950
+ position_source_id: Position source UUID.
951
+
952
+ Returns:
953
+ List of raw position instances.
954
+ """
955
+ logger.info(
956
+ "fetching_position_source_raw_positions",
957
+ extra={"position_source_id": str(position_source_id)},
958
+ )
959
+ response = self._client.get(
960
+ f"/api/v1/position-sources/{position_source_id}/raw-positions"
961
+ )
962
+ response.raise_for_status()
963
+ raw_positions = [RawPosition.model_validate(item) for item in response.json()]
964
+ logger.info(
965
+ "position_source_raw_positions_fetched",
966
+ extra={
967
+ "position_source_id": str(position_source_id),
968
+ "count": len(raw_positions),
969
+ },
970
+ )
971
+ return raw_positions
972
+
973
+ def get_sidescan_ping_source_raw_sidescan_pings(
974
+ self, sidescan_ping_source_id: UUID | str
975
+ ) -> list[RawSidescanPing]:
976
+ """Get all raw sidescan pings associated with a sidescan ping source.
977
+
978
+ Args:
979
+ sidescan_ping_source_id: Sidescan ping source UUID.
980
+
981
+ Returns:
982
+ List of raw sidescan ping instances.
983
+ """
984
+ logger.info(
985
+ "fetching_sidescan_ping_source_raw_sidescan_pings",
986
+ extra={"sidescan_ping_source_id": str(sidescan_ping_source_id)},
987
+ )
988
+ response = self._client.get(
989
+ f"/api/v1/sidescan-ping-sources/{sidescan_ping_source_id}/raw-sidescan-pings"
990
+ )
991
+ response.raise_for_status()
992
+ raw_sidescan_pings = [
993
+ RawSidescanPing.model_validate(item) for item in response.json()
994
+ ]
995
+ logger.info(
996
+ "sidescan_ping_source_raw_sidescan_pings_fetched",
997
+ extra={
998
+ "sidescan_ping_source_id": str(sidescan_ping_source_id),
999
+ "count": len(raw_sidescan_pings),
1000
+ },
1001
+ )
1002
+ return raw_sidescan_pings
1003
+
944
1004
  def create_source(self, source: SourceCreate) -> Source:
945
1005
  """Create a new source.
946
1006
 
@@ -1277,21 +1337,20 @@ class SonarWizApi:
1277
1337
  response.raise_for_status()
1278
1338
  return RawDepth.model_validate(response.json())
1279
1339
 
1280
- def create_raw_sidescan_ping(self, ping: RawSidescanPingCreate) -> None:
1281
- """Create a raw sidescan ping record.
1340
+ def create_raw_sidescan_pings(self, pings: list[RawSidescanPingCreate]) -> None:
1341
+ """Create raw sidescan ping records.
1282
1342
 
1283
1343
  Args:
1284
- ping: Raw sidescan ping creation data.
1344
+ pings: Raw sidescan ping creation data.
1285
1345
  """
1286
1346
  response = self._client.post(
1287
- "/api/v1/raw-sidescan-pings", json=[ping.model_dump(mode="json")]
1347
+ "/api/v1/raw-sidescan-pings", json=[ping.model_dump(mode="json") for ping in pings]
1288
1348
  )
1289
1349
  response.raise_for_status()
1290
1350
  logger.debug(
1291
- "raw_sidescan_ping_created",
1351
+ "raw_sidescan_pings_created",
1292
1352
  extra={
1293
- "sidescan_ping_source_id": str(ping.sidescan_ping_source_id),
1294
- "ping_number_id": str(ping.ping_number_id),
1353
+ "count": len(pings),
1295
1354
  },
1296
1355
  )
1297
1356
 
@@ -951,6 +951,66 @@ class SonarWizAsyncApi:
951
951
  )
952
952
  return sources
953
953
 
954
+ async def get_position_source_raw_positions(
955
+ self, position_source_id: UUID | str
956
+ ) -> list[RawPosition]:
957
+ """Get all raw positions associated with a position source.
958
+
959
+ Args:
960
+ position_source_id: Position source UUID.
961
+
962
+ Returns:
963
+ List of raw position instances.
964
+ """
965
+ logger.info(
966
+ "fetching_position_source_raw_positions",
967
+ extra={"position_source_id": str(position_source_id)},
968
+ )
969
+ response = await self._client.get(
970
+ f"/api/v1/position-sources/{position_source_id}/raw-positions"
971
+ )
972
+ response.raise_for_status()
973
+ raw_positions = [RawPosition.model_validate(item) for item in response.json()]
974
+ logger.info(
975
+ "position_source_raw_positions_fetched",
976
+ extra={
977
+ "position_source_id": str(position_source_id),
978
+ "count": len(raw_positions),
979
+ },
980
+ )
981
+ return raw_positions
982
+
983
+ async def get_sidescan_ping_source_raw_sidescan_pings(
984
+ self, sidescan_ping_source_id: UUID | str
985
+ ) -> list[RawSidescanPing]:
986
+ """Get all raw sidescan pings associated with a sidescan ping source.
987
+
988
+ Args:
989
+ sidescan_ping_source_id: Sidescan ping source UUID.
990
+
991
+ Returns:
992
+ List of raw sidescan ping instances.
993
+ """
994
+ logger.info(
995
+ "fetching_sidescan_ping_source_raw_sidescan_pings",
996
+ extra={"sidescan_ping_source_id": str(sidescan_ping_source_id)},
997
+ )
998
+ response = await self._client.get(
999
+ f"/api/v1/sidescan-ping-sources/{sidescan_ping_source_id}/raw-sidescan-pings"
1000
+ )
1001
+ response.raise_for_status()
1002
+ raw_sidescan_pings = [
1003
+ RawSidescanPing.model_validate(item) for item in response.json()
1004
+ ]
1005
+ logger.info(
1006
+ "sidescan_ping_source_raw_sidescan_pings_fetched",
1007
+ extra={
1008
+ "sidescan_ping_source_id": str(sidescan_ping_source_id),
1009
+ "count": len(raw_sidescan_pings),
1010
+ },
1011
+ )
1012
+ return raw_sidescan_pings
1013
+
954
1014
  async def create_source(self, source: SourceCreate) -> Source:
955
1015
  """Create a new source.
956
1016
 
@@ -1287,21 +1347,20 @@ class SonarWizAsyncApi:
1287
1347
  response.raise_for_status()
1288
1348
  return RawDepth.model_validate(response.json())
1289
1349
 
1290
- async def create_raw_sidescan_ping(self, ping: RawSidescanPingCreate) -> None:
1291
- """Create a raw sidescan ping record.
1350
+ async def create_raw_sidescan_pings(self, pings: list[RawSidescanPingCreate]) -> None:
1351
+ """Create raw sidescan ping records.
1292
1352
 
1293
1353
  Args:
1294
- ping: Raw sidescan ping creation data.
1354
+ pings: Raw sidescan ping creation data.
1295
1355
  """
1296
1356
  response = await self._client.post(
1297
- "/api/v1/raw-sidescan-pings", json=[ping.model_dump(mode="json")]
1357
+ "/api/v1/raw-sidescan-pings", json=[ping.model_dump(mode="json") for ping in pings]
1298
1358
  )
1299
1359
  response.raise_for_status()
1300
1360
  logger.debug(
1301
- "raw_sidescan_ping_created",
1361
+ "raw_sidescan_pings_created",
1302
1362
  extra={
1303
- "sidescan_ping_source_id": str(ping.sidescan_ping_source_id),
1304
- "ping_number_id": str(ping.ping_number_id),
1363
+ "count": len(pings),
1305
1364
  },
1306
1365
  )
1307
1366