clarity-api-sdk-python 0.3.25__tar.gz → 0.3.26__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.25 → clarity_api_sdk_python-0.3.26}/PKG-INFO +1 -1
  2. {clarity_api_sdk_python-0.3.25 → clarity_api_sdk_python-0.3.26}/pyproject.toml +1 -1
  3. {clarity_api_sdk_python-0.3.25 → clarity_api_sdk_python-0.3.26}/src/clarity_api_sdk_python.egg-info/PKG-INFO +1 -1
  4. {clarity_api_sdk_python-0.3.25 → clarity_api_sdk_python-0.3.26}/src/cti/api/sonar_wiz_api.py +163 -0
  5. {clarity_api_sdk_python-0.3.25 → clarity_api_sdk_python-0.3.26}/src/cti/api/sonar_wiz_async_api.py +173 -0
  6. {clarity_api_sdk_python-0.3.25 → clarity_api_sdk_python-0.3.26}/README.md +0 -0
  7. {clarity_api_sdk_python-0.3.25 → clarity_api_sdk_python-0.3.26}/setup.cfg +0 -0
  8. {clarity_api_sdk_python-0.3.25 → clarity_api_sdk_python-0.3.26}/src/clarity_api_sdk_python.egg-info/SOURCES.txt +0 -0
  9. {clarity_api_sdk_python-0.3.25 → clarity_api_sdk_python-0.3.26}/src/clarity_api_sdk_python.egg-info/dependency_links.txt +0 -0
  10. {clarity_api_sdk_python-0.3.25 → clarity_api_sdk_python-0.3.26}/src/clarity_api_sdk_python.egg-info/requires.txt +0 -0
  11. {clarity_api_sdk_python-0.3.25 → clarity_api_sdk_python-0.3.26}/src/clarity_api_sdk_python.egg-info/top_level.txt +0 -0
  12. {clarity_api_sdk_python-0.3.25 → clarity_api_sdk_python-0.3.26}/src/cti/__init__.py +0 -0
  13. {clarity_api_sdk_python-0.3.25 → clarity_api_sdk_python-0.3.26}/src/cti/api/__init__.py +0 -0
  14. {clarity_api_sdk_python-0.3.25 → clarity_api_sdk_python-0.3.26}/src/cti/api/async_client.py +0 -0
  15. {clarity_api_sdk_python-0.3.25 → clarity_api_sdk_python-0.3.26}/src/cti/api/client.py +0 -0
  16. {clarity_api_sdk_python-0.3.25 → clarity_api_sdk_python-0.3.26}/src/cti/api/session.py +0 -0
  17. {clarity_api_sdk_python-0.3.25 → clarity_api_sdk_python-0.3.26}/src/cti/logger/__init__.py +0 -0
  18. {clarity_api_sdk_python-0.3.25 → clarity_api_sdk_python-0.3.26}/src/cti/logger/logger.py +0 -0
  19. {clarity_api_sdk_python-0.3.25 → clarity_api_sdk_python-0.3.26}/src/cti/main.py +0 -0
  20. {clarity_api_sdk_python-0.3.25 → clarity_api_sdk_python-0.3.26}/src/cti/main_api.py +0 -0
  21. {clarity_api_sdk_python-0.3.25 → clarity_api_sdk_python-0.3.26}/src/cti/model/__init__.py +0 -0
  22. {clarity_api_sdk_python-0.3.25 → clarity_api_sdk_python-0.3.26}/src/cti/model/altitude_source.py +0 -0
  23. {clarity_api_sdk_python-0.3.25 → clarity_api_sdk_python-0.3.26}/src/cti/model/attitude_source.py +0 -0
  24. {clarity_api_sdk_python-0.3.25 → clarity_api_sdk_python-0.3.26}/src/cti/model/deferred_object_deletion.py +0 -0
  25. {clarity_api_sdk_python-0.3.25 → clarity_api_sdk_python-0.3.26}/src/cti/model/depth_source.py +0 -0
  26. {clarity_api_sdk_python-0.3.25 → clarity_api_sdk_python-0.3.26}/src/cti/model/device.py +0 -0
  27. {clarity_api_sdk_python-0.3.25 → clarity_api_sdk_python-0.3.26}/src/cti/model/device_type.py +0 -0
  28. {clarity_api_sdk_python-0.3.25 → clarity_api_sdk_python-0.3.26}/src/cti/model/final_product.py +0 -0
  29. {clarity_api_sdk_python-0.3.25 → clarity_api_sdk_python-0.3.26}/src/cti/model/hierarchy.py +0 -0
  30. {clarity_api_sdk_python-0.3.25 → clarity_api_sdk_python-0.3.26}/src/cti/model/layback_algorithm.py +0 -0
  31. {clarity_api_sdk_python-0.3.25 → clarity_api_sdk_python-0.3.26}/src/cti/model/layback_source.py +0 -0
  32. {clarity_api_sdk_python-0.3.25 → clarity_api_sdk_python-0.3.26}/src/cti/model/layback_type.py +0 -0
  33. {clarity_api_sdk_python-0.3.25 → clarity_api_sdk_python-0.3.26}/src/cti/model/organization.py +0 -0
  34. {clarity_api_sdk_python-0.3.25 → clarity_api_sdk_python-0.3.26}/src/cti/model/platform.py +0 -0
  35. {clarity_api_sdk_python-0.3.25 → clarity_api_sdk_python-0.3.26}/src/cti/model/platform_type.py +0 -0
  36. {clarity_api_sdk_python-0.3.25 → clarity_api_sdk_python-0.3.26}/src/cti/model/position_source.py +0 -0
  37. {clarity_api_sdk_python-0.3.25 → clarity_api_sdk_python-0.3.26}/src/cti/model/processed_altitude.py +0 -0
  38. {clarity_api_sdk_python-0.3.25 → clarity_api_sdk_python-0.3.26}/src/cti/model/processed_attitude.py +0 -0
  39. {clarity_api_sdk_python-0.3.25 → clarity_api_sdk_python-0.3.26}/src/cti/model/processed_depth.py +0 -0
  40. {clarity_api_sdk_python-0.3.25 → clarity_api_sdk_python-0.3.26}/src/cti/model/processed_layback.py +0 -0
  41. {clarity_api_sdk_python-0.3.25 → clarity_api_sdk_python-0.3.26}/src/cti/model/processed_position.py +0 -0
  42. {clarity_api_sdk_python-0.3.25 → clarity_api_sdk_python-0.3.26}/src/cti/model/processed_sidescan_ping.py +0 -0
  43. {clarity_api_sdk_python-0.3.25 → clarity_api_sdk_python-0.3.26}/src/cti/model/processing_log.py +0 -0
  44. {clarity_api_sdk_python-0.3.25 → clarity_api_sdk_python-0.3.26}/src/cti/model/project.py +0 -0
  45. {clarity_api_sdk_python-0.3.25 → clarity_api_sdk_python-0.3.26}/src/cti/model/projection_option.py +0 -0
  46. {clarity_api_sdk_python-0.3.25 → clarity_api_sdk_python-0.3.26}/src/cti/model/raw_altitude.py +0 -0
  47. {clarity_api_sdk_python-0.3.25 → clarity_api_sdk_python-0.3.26}/src/cti/model/raw_attitude.py +0 -0
  48. {clarity_api_sdk_python-0.3.25 → clarity_api_sdk_python-0.3.26}/src/cti/model/raw_depth.py +0 -0
  49. {clarity_api_sdk_python-0.3.25 → clarity_api_sdk_python-0.3.26}/src/cti/model/raw_file.py +0 -0
  50. {clarity_api_sdk_python-0.3.25 → clarity_api_sdk_python-0.3.26}/src/cti/model/raw_file_configuration.py +0 -0
  51. {clarity_api_sdk_python-0.3.25 → clarity_api_sdk_python-0.3.26}/src/cti/model/raw_file_device_mapping.py +0 -0
  52. {clarity_api_sdk_python-0.3.25 → clarity_api_sdk_python-0.3.26}/src/cti/model/raw_file_state.py +0 -0
  53. {clarity_api_sdk_python-0.3.25 → clarity_api_sdk_python-0.3.26}/src/cti/model/raw_layback.py +0 -0
  54. {clarity_api_sdk_python-0.3.25 → clarity_api_sdk_python-0.3.26}/src/cti/model/raw_position.py +0 -0
  55. {clarity_api_sdk_python-0.3.25 → clarity_api_sdk_python-0.3.26}/src/cti/model/raw_sidescan_ping.py +0 -0
  56. {clarity_api_sdk_python-0.3.25 → clarity_api_sdk_python-0.3.26}/src/cti/model/s3.py +0 -0
  57. {clarity_api_sdk_python-0.3.25 → clarity_api_sdk_python-0.3.26}/src/cti/model/sidescan_ping_source.py +0 -0
  58. {clarity_api_sdk_python-0.3.25 → clarity_api_sdk_python-0.3.26}/src/cti/model/source.py +0 -0
  59. {clarity_api_sdk_python-0.3.25 → clarity_api_sdk_python-0.3.26}/src/cti/model/survey.py +0 -0
  60. {clarity_api_sdk_python-0.3.25 → clarity_api_sdk_python-0.3.26}/src/cti/model/target.py +0 -0
  61. {clarity_api_sdk_python-0.3.25 → clarity_api_sdk_python-0.3.26}/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.25
3
+ Version: 0.3.26
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.25"
8
+ version = "0.3.26"
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.25
3
+ Version: 0.3.26
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
@@ -778,6 +778,169 @@ class SonarWizApi:
778
778
  )
779
779
  return devices
780
780
 
781
+ def get_device_altitude_sources(
782
+ self, device_id: UUID | str
783
+ ) -> list[AltitudeSource]:
784
+ """Get all altitude sources associated with a device.
785
+
786
+ Args:
787
+ device_id: Device UUID or string identifier.
788
+
789
+ Returns:
790
+ List of altitude source instances associated with the device.
791
+ """
792
+ logger.info(
793
+ "fetching_device_altitude_sources",
794
+ extra={"device_id": str(device_id)},
795
+ )
796
+ response = self._client.get(f"/api/v1/devices/{device_id}/altitude-sources")
797
+ response.raise_for_status()
798
+ sources = [AltitudeSource.model_validate(item) for item in response.json()]
799
+ logger.info(
800
+ "device_altitude_sources_fetched",
801
+ extra={
802
+ "device_id": str(device_id),
803
+ "count": len(sources),
804
+ },
805
+ )
806
+ return sources
807
+
808
+ def get_device_attitude_sources(
809
+ self, device_id: UUID | str
810
+ ) -> list[AttitudeSource]:
811
+ """Get all attitude sources associated with a device.
812
+
813
+ Args:
814
+ device_id: Device UUID or string identifier.
815
+
816
+ Returns:
817
+ List of attitude source instances associated with the device.
818
+ """
819
+ logger.info(
820
+ "fetching_device_attitude_sources",
821
+ extra={"device_id": str(device_id)},
822
+ )
823
+ response = self._client.get(f"/api/v1/devices/{device_id}/attitude-source")
824
+ response.raise_for_status()
825
+ source = AttitudeSource.model_validate(response.json())
826
+ sources = [source]
827
+ logger.info(
828
+ "device_attitude_sources_fetched",
829
+ extra={
830
+ "device_id": str(device_id),
831
+ "count": len(sources),
832
+ },
833
+ )
834
+ return sources
835
+
836
+ def get_device_depth_sources(self, device_id: UUID | str) -> list[DepthSource]:
837
+ """Get all depth sources associated with a device.
838
+
839
+ Args:
840
+ device_id: Device UUID or string identifier.
841
+
842
+ Returns:
843
+ List of depth source instances associated with the device.
844
+ """
845
+ logger.info(
846
+ "fetching_device_depth_sources",
847
+ extra={"device_id": str(device_id)},
848
+ )
849
+ response = self._client.get(f"/api/v1/devices/{device_id}/depth-sources")
850
+ response.raise_for_status()
851
+ sources = [DepthSource.model_validate(item) for item in response.json()]
852
+ logger.info(
853
+ "device_depth_sources_fetched",
854
+ extra={
855
+ "device_id": str(device_id),
856
+ "count": len(sources),
857
+ },
858
+ )
859
+ return sources
860
+
861
+ def get_device_layback_sources(
862
+ self, device_id: UUID | str
863
+ ) -> list[LaybackSource]:
864
+ """Get all layback sources associated with a device.
865
+
866
+ Args:
867
+ device_id: Device UUID or string identifier.
868
+
869
+ Returns:
870
+ List of layback source instances associated with the device.
871
+ """
872
+ logger.info(
873
+ "fetching_device_layback_sources",
874
+ extra={"device_id": str(device_id)},
875
+ )
876
+ response = self._client.get(f"/api/v1/devices/{device_id}/layback-sources")
877
+ response.raise_for_status()
878
+ sources = [LaybackSource.model_validate(item) for item in response.json()]
879
+ logger.info(
880
+ "device_layback_sources_fetched",
881
+ extra={
882
+ "device_id": str(device_id),
883
+ "count": len(sources),
884
+ },
885
+ )
886
+ return sources
887
+
888
+ def get_device_position_sources(
889
+ self, device_id: UUID | str
890
+ ) -> list[PositionSource]:
891
+ """Get all position sources associated with a device.
892
+
893
+ Args:
894
+ device_id: Device UUID or string identifier.
895
+
896
+ Returns:
897
+ List of position source instances associated with the device.
898
+ """
899
+ logger.info(
900
+ "fetching_device_position_sources",
901
+ extra={"device_id": str(device_id)},
902
+ )
903
+ response = self._client.get(f"/api/v1/devices/{device_id}/position-sources")
904
+ response.raise_for_status()
905
+ sources = [PositionSource.model_validate(item) for item in response.json()]
906
+ logger.info(
907
+ "device_position_sources_fetched",
908
+ extra={
909
+ "device_id": str(device_id),
910
+ "count": len(sources),
911
+ },
912
+ )
913
+ return sources
914
+
915
+ def get_device_sidescan_ping_sources(
916
+ self, device_id: UUID | str
917
+ ) -> list[SidescanPingSource]:
918
+ """Get all sidescan ping sources associated with a device.
919
+
920
+ Args:
921
+ device_id: Device UUID or string identifier.
922
+
923
+ Returns:
924
+ List of sidescan ping source instances associated with the device.
925
+ """
926
+ logger.info(
927
+ "fetching_device_sidescan_ping_sources",
928
+ extra={"device_id": str(device_id)},
929
+ )
930
+ response = self._client.get(
931
+ f"/api/v1/devices/{device_id}/sidescan-ping-sources"
932
+ )
933
+ response.raise_for_status()
934
+ sources = [SidescanPingSource.model_validate(item) for item in response.json()]
935
+ logger.info(
936
+ "device_sidescan_ping_sources_fetched",
937
+ extra={
938
+ "device_id": str(device_id),
939
+ "count": len(sources),
940
+ },
941
+ )
942
+ return sources
943
+
781
944
  def create_source(self, source: SourceCreate) -> Source:
782
945
  """Create a new source.
783
946
 
@@ -778,6 +778,179 @@ class SonarWizAsyncApi:
778
778
  )
779
779
  return devices
780
780
 
781
+ async def get_device_altitude_sources(
782
+ self, device_id: UUID | str
783
+ ) -> list[AltitudeSource]:
784
+ """Get all altitude sources associated with a device.
785
+
786
+ Args:
787
+ device_id: Device UUID or string identifier.
788
+
789
+ Returns:
790
+ List of altitude source instances associated with the device.
791
+ """
792
+ logger.info(
793
+ "fetching_device_altitude_sources",
794
+ extra={"device_id": str(device_id)},
795
+ )
796
+ response = await self._client.get(
797
+ f"/api/v1/devices/{device_id}/altitude-sources"
798
+ )
799
+ response.raise_for_status()
800
+ sources = [AltitudeSource.model_validate(item) for item in response.json()]
801
+ logger.info(
802
+ "device_altitude_sources_fetched",
803
+ extra={
804
+ "device_id": str(device_id),
805
+ "count": len(sources),
806
+ },
807
+ )
808
+ return sources
809
+
810
+ async def get_device_attitude_sources(
811
+ self, device_id: UUID | str
812
+ ) -> list[AttitudeSource]:
813
+ """Get all attitude sources associated with a device.
814
+
815
+ Args:
816
+ device_id: Device UUID or string identifier.
817
+
818
+ Returns:
819
+ List of attitude source instances associated with the device.
820
+ """
821
+ logger.info(
822
+ "fetching_device_attitude_sources",
823
+ extra={"device_id": str(device_id)},
824
+ )
825
+ response = await self._client.get(
826
+ f"/api/v1/devices/{device_id}/attitude-source"
827
+ )
828
+ response.raise_for_status()
829
+ source = AttitudeSource.model_validate(response.json())
830
+ sources = [source]
831
+ logger.info(
832
+ "device_attitude_sources_fetched",
833
+ extra={
834
+ "device_id": str(device_id),
835
+ "count": len(sources),
836
+ },
837
+ )
838
+ return sources
839
+
840
+ async def get_device_depth_sources(
841
+ self, device_id: UUID | str
842
+ ) -> list[DepthSource]:
843
+ """Get all depth sources associated with a device.
844
+
845
+ Args:
846
+ device_id: Device UUID or string identifier.
847
+
848
+ Returns:
849
+ List of depth source instances associated with the device.
850
+ """
851
+ logger.info(
852
+ "fetching_device_depth_sources",
853
+ extra={"device_id": str(device_id)},
854
+ )
855
+ response = await self._client.get(f"/api/v1/devices/{device_id}/depth-sources")
856
+ response.raise_for_status()
857
+ sources = [DepthSource.model_validate(item) for item in response.json()]
858
+ logger.info(
859
+ "device_depth_sources_fetched",
860
+ extra={
861
+ "device_id": str(device_id),
862
+ "count": len(sources),
863
+ },
864
+ )
865
+ return sources
866
+
867
+ async def get_device_layback_sources(
868
+ self, device_id: UUID | str
869
+ ) -> list[LaybackSource]:
870
+ """Get all layback sources associated with a device.
871
+
872
+ Args:
873
+ device_id: Device UUID or string identifier.
874
+
875
+ Returns:
876
+ List of layback source instances associated with the device.
877
+ """
878
+ logger.info(
879
+ "fetching_device_layback_sources",
880
+ extra={"device_id": str(device_id)},
881
+ )
882
+ response = await self._client.get(
883
+ f"/api/v1/devices/{device_id}/layback-sources"
884
+ )
885
+ response.raise_for_status()
886
+ sources = [LaybackSource.model_validate(item) for item in response.json()]
887
+ logger.info(
888
+ "device_layback_sources_fetched",
889
+ extra={
890
+ "device_id": str(device_id),
891
+ "count": len(sources),
892
+ },
893
+ )
894
+ return sources
895
+
896
+ async def get_device_position_sources(
897
+ self, device_id: UUID | str
898
+ ) -> list[PositionSource]:
899
+ """Get all position sources associated with a device.
900
+
901
+ Args:
902
+ device_id: Device UUID or string identifier.
903
+
904
+ Returns:
905
+ List of position source instances associated with the device.
906
+ """
907
+ logger.info(
908
+ "fetching_device_position_sources",
909
+ extra={"device_id": str(device_id)},
910
+ )
911
+ response = await self._client.get(
912
+ f"/api/v1/devices/{device_id}/position-sources"
913
+ )
914
+ response.raise_for_status()
915
+ sources = [PositionSource.model_validate(item) for item in response.json()]
916
+ logger.info(
917
+ "device_position_sources_fetched",
918
+ extra={
919
+ "device_id": str(device_id),
920
+ "count": len(sources),
921
+ },
922
+ )
923
+ return sources
924
+
925
+ async def get_device_sidescan_ping_sources(
926
+ self, device_id: UUID | str
927
+ ) -> list[SidescanPingSource]:
928
+ """Get all sidescan ping sources associated with a device.
929
+
930
+ Args:
931
+ device_id: Device UUID or string identifier.
932
+
933
+ Returns:
934
+ List of sidescan ping source instances associated with the device.
935
+ """
936
+ logger.info(
937
+ "fetching_device_sidescan_ping_sources",
938
+ extra={"device_id": str(device_id)},
939
+ )
940
+ response = await self._client.get(
941
+ f"/api/v1/devices/{device_id}/sidescan-ping-sources"
942
+ )
943
+ response.raise_for_status()
944
+ sources = [SidescanPingSource.model_validate(item) for item in response.json()]
945
+ logger.info(
946
+ "device_sidescan_ping_sources_fetched",
947
+ extra={
948
+ "device_id": str(device_id),
949
+ "count": len(sources),
950
+ },
951
+ )
952
+ return sources
953
+
781
954
  async def create_source(self, source: SourceCreate) -> Source:
782
955
  """Create a new source.
783
956