clarity-api-sdk-python 0.3.19__tar.gz → 0.3.23__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 (59) hide show
  1. {clarity_api_sdk_python-0.3.19 → clarity_api_sdk_python-0.3.23}/PKG-INFO +1 -1
  2. {clarity_api_sdk_python-0.3.19 → clarity_api_sdk_python-0.3.23}/pyproject.toml +1 -1
  3. {clarity_api_sdk_python-0.3.19 → clarity_api_sdk_python-0.3.23}/src/clarity_api_sdk_python.egg-info/PKG-INFO +1 -1
  4. {clarity_api_sdk_python-0.3.19 → clarity_api_sdk_python-0.3.23}/src/clarity_api_sdk_python.egg-info/SOURCES.txt +3 -0
  5. {clarity_api_sdk_python-0.3.19 → clarity_api_sdk_python-0.3.23}/src/cti/api/session.py +4 -1
  6. {clarity_api_sdk_python-0.3.19 → clarity_api_sdk_python-0.3.23}/src/cti/main_api.py +8 -3
  7. clarity_api_sdk_python-0.3.23/src/cti/model/deferred_object_deletion.py +36 -0
  8. {clarity_api_sdk_python-0.3.19 → clarity_api_sdk_python-0.3.23}/src/cti/model/device.py +4 -4
  9. {clarity_api_sdk_python-0.3.19 → clarity_api_sdk_python-0.3.23}/src/cti/model/raw_file.py +23 -15
  10. clarity_api_sdk_python-0.3.23/src/cti/model/raw_file_device_mapping.py +69 -0
  11. clarity_api_sdk_python-0.3.23/src/cti/model/raw_file_state.py +12 -0
  12. {clarity_api_sdk_python-0.3.19 → clarity_api_sdk_python-0.3.23}/README.md +0 -0
  13. {clarity_api_sdk_python-0.3.19 → clarity_api_sdk_python-0.3.23}/setup.cfg +0 -0
  14. {clarity_api_sdk_python-0.3.19 → clarity_api_sdk_python-0.3.23}/src/clarity_api_sdk_python.egg-info/dependency_links.txt +0 -0
  15. {clarity_api_sdk_python-0.3.19 → clarity_api_sdk_python-0.3.23}/src/clarity_api_sdk_python.egg-info/requires.txt +0 -0
  16. {clarity_api_sdk_python-0.3.19 → clarity_api_sdk_python-0.3.23}/src/clarity_api_sdk_python.egg-info/top_level.txt +0 -0
  17. {clarity_api_sdk_python-0.3.19 → clarity_api_sdk_python-0.3.23}/src/cti/__init__.py +0 -0
  18. {clarity_api_sdk_python-0.3.19 → clarity_api_sdk_python-0.3.23}/src/cti/api/__init__.py +0 -0
  19. {clarity_api_sdk_python-0.3.19 → clarity_api_sdk_python-0.3.23}/src/cti/api/async_client.py +0 -0
  20. {clarity_api_sdk_python-0.3.19 → clarity_api_sdk_python-0.3.23}/src/cti/api/client.py +0 -0
  21. {clarity_api_sdk_python-0.3.19 → clarity_api_sdk_python-0.3.23}/src/cti/logger/__init__.py +0 -0
  22. {clarity_api_sdk_python-0.3.19 → clarity_api_sdk_python-0.3.23}/src/cti/logger/logger.py +0 -0
  23. {clarity_api_sdk_python-0.3.19 → clarity_api_sdk_python-0.3.23}/src/cti/main.py +0 -0
  24. {clarity_api_sdk_python-0.3.19 → clarity_api_sdk_python-0.3.23}/src/cti/model/__init__.py +0 -0
  25. {clarity_api_sdk_python-0.3.19 → clarity_api_sdk_python-0.3.23}/src/cti/model/altitude_source.py +0 -0
  26. {clarity_api_sdk_python-0.3.19 → clarity_api_sdk_python-0.3.23}/src/cti/model/attitude_source.py +0 -0
  27. {clarity_api_sdk_python-0.3.19 → clarity_api_sdk_python-0.3.23}/src/cti/model/depth_source.py +0 -0
  28. {clarity_api_sdk_python-0.3.19 → clarity_api_sdk_python-0.3.23}/src/cti/model/device_type.py +0 -0
  29. {clarity_api_sdk_python-0.3.19 → clarity_api_sdk_python-0.3.23}/src/cti/model/final_product.py +0 -0
  30. {clarity_api_sdk_python-0.3.19 → clarity_api_sdk_python-0.3.23}/src/cti/model/hierarchy.py +0 -0
  31. {clarity_api_sdk_python-0.3.19 → clarity_api_sdk_python-0.3.23}/src/cti/model/layback_algorithm.py +0 -0
  32. {clarity_api_sdk_python-0.3.19 → clarity_api_sdk_python-0.3.23}/src/cti/model/layback_source.py +0 -0
  33. {clarity_api_sdk_python-0.3.19 → clarity_api_sdk_python-0.3.23}/src/cti/model/layback_type.py +0 -0
  34. {clarity_api_sdk_python-0.3.19 → clarity_api_sdk_python-0.3.23}/src/cti/model/organization.py +0 -0
  35. {clarity_api_sdk_python-0.3.19 → clarity_api_sdk_python-0.3.23}/src/cti/model/platform.py +0 -0
  36. {clarity_api_sdk_python-0.3.19 → clarity_api_sdk_python-0.3.23}/src/cti/model/platform_type.py +0 -0
  37. {clarity_api_sdk_python-0.3.19 → clarity_api_sdk_python-0.3.23}/src/cti/model/position_source.py +0 -0
  38. {clarity_api_sdk_python-0.3.19 → clarity_api_sdk_python-0.3.23}/src/cti/model/processed_altitude.py +0 -0
  39. {clarity_api_sdk_python-0.3.19 → clarity_api_sdk_python-0.3.23}/src/cti/model/processed_attitude.py +0 -0
  40. {clarity_api_sdk_python-0.3.19 → clarity_api_sdk_python-0.3.23}/src/cti/model/processed_depth.py +0 -0
  41. {clarity_api_sdk_python-0.3.19 → clarity_api_sdk_python-0.3.23}/src/cti/model/processed_layback.py +0 -0
  42. {clarity_api_sdk_python-0.3.19 → clarity_api_sdk_python-0.3.23}/src/cti/model/processed_position.py +0 -0
  43. {clarity_api_sdk_python-0.3.19 → clarity_api_sdk_python-0.3.23}/src/cti/model/processed_sidescan_ping.py +0 -0
  44. {clarity_api_sdk_python-0.3.19 → clarity_api_sdk_python-0.3.23}/src/cti/model/processing_log.py +0 -0
  45. {clarity_api_sdk_python-0.3.19 → clarity_api_sdk_python-0.3.23}/src/cti/model/project.py +0 -0
  46. {clarity_api_sdk_python-0.3.19 → clarity_api_sdk_python-0.3.23}/src/cti/model/projection_option.py +0 -0
  47. {clarity_api_sdk_python-0.3.19 → clarity_api_sdk_python-0.3.23}/src/cti/model/raw_altitude.py +0 -0
  48. {clarity_api_sdk_python-0.3.19 → clarity_api_sdk_python-0.3.23}/src/cti/model/raw_attitude.py +0 -0
  49. {clarity_api_sdk_python-0.3.19 → clarity_api_sdk_python-0.3.23}/src/cti/model/raw_depth.py +0 -0
  50. {clarity_api_sdk_python-0.3.19 → clarity_api_sdk_python-0.3.23}/src/cti/model/raw_file_configuration.py +0 -0
  51. {clarity_api_sdk_python-0.3.19 → clarity_api_sdk_python-0.3.23}/src/cti/model/raw_layback.py +0 -0
  52. {clarity_api_sdk_python-0.3.19 → clarity_api_sdk_python-0.3.23}/src/cti/model/raw_position.py +0 -0
  53. {clarity_api_sdk_python-0.3.19 → clarity_api_sdk_python-0.3.23}/src/cti/model/raw_sidescan_ping.py +0 -0
  54. {clarity_api_sdk_python-0.3.19 → clarity_api_sdk_python-0.3.23}/src/cti/model/s3.py +0 -0
  55. {clarity_api_sdk_python-0.3.19 → clarity_api_sdk_python-0.3.23}/src/cti/model/sidescan_ping_source.py +0 -0
  56. {clarity_api_sdk_python-0.3.19 → clarity_api_sdk_python-0.3.23}/src/cti/model/source.py +0 -0
  57. {clarity_api_sdk_python-0.3.19 → clarity_api_sdk_python-0.3.23}/src/cti/model/survey.py +0 -0
  58. {clarity_api_sdk_python-0.3.19 → clarity_api_sdk_python-0.3.23}/src/cti/model/target.py +0 -0
  59. {clarity_api_sdk_python-0.3.19 → clarity_api_sdk_python-0.3.23}/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.19
3
+ Version: 0.3.23
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.19"
8
+ version = "0.3.23"
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.19
3
+ Version: 0.3.23
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
@@ -17,6 +17,7 @@ src/cti/logger/logger.py
17
17
  src/cti/model/__init__.py
18
18
  src/cti/model/altitude_source.py
19
19
  src/cti/model/attitude_source.py
20
+ src/cti/model/deferred_object_deletion.py
20
21
  src/cti/model/depth_source.py
21
22
  src/cti/model/device.py
22
23
  src/cti/model/device_type.py
@@ -43,6 +44,8 @@ src/cti/model/raw_attitude.py
43
44
  src/cti/model/raw_depth.py
44
45
  src/cti/model/raw_file.py
45
46
  src/cti/model/raw_file_configuration.py
47
+ src/cti/model/raw_file_device_mapping.py
48
+ src/cti/model/raw_file_state.py
46
49
  src/cti/model/raw_layback.py
47
50
  src/cti/model/raw_position.py
48
51
  src/cti/model/raw_sidescan_ping.py
@@ -45,6 +45,7 @@ async def initialize_async_client() -> None:
45
45
  async_client = ClarityApiAsyncClient()
46
46
  await async_client.__aenter__()
47
47
 
48
+
48
49
  def get_async_client() -> ClarityApiAsyncClient:
49
50
  """Returns the shared ClarityApiAsyncClient instance.
50
51
 
@@ -57,7 +58,9 @@ def get_async_client() -> ClarityApiAsyncClient:
57
58
  ValueError: If initialize_async_client() has not been called first.
58
59
  """
59
60
  if async_client is None:
60
- raise ValueError("initialize_async_client() must be called first to initialize client.")
61
+ raise ValueError(
62
+ "initialize_async_client() must be called first to initialize client."
63
+ )
61
64
  return async_client
62
65
 
63
66
 
@@ -2,11 +2,15 @@
2
2
 
3
3
  import asyncio
4
4
 
5
- from cti.api.session import get_async_client, close_async_client, initialize_async_client
5
+ from cti.api.session import (
6
+ get_async_client,
7
+ close_async_client,
8
+ initialize_async_client,
9
+ )
10
+
6
11
 
7
12
  async def main():
8
- """Example of using the Clarity API asynchronously
9
- """
13
+ """Example of using the Clarity API asynchronously"""
10
14
  try:
11
15
  await initialize_async_client()
12
16
  client = get_async_client()
@@ -15,5 +19,6 @@ async def main():
15
19
  finally:
16
20
  await close_async_client()
17
21
 
22
+
18
23
  if __name__ == "__main__":
19
24
  asyncio.run(main())
@@ -0,0 +1,36 @@
1
+ """Pydantic models for deferred object deletion."""
2
+
3
+ from datetime import datetime
4
+ from uuid import UUID
5
+
6
+ from pydantic import BaseModel, ConfigDict
7
+
8
+
9
+ class DeferredObjectDeletionBase(BaseModel):
10
+ """Base model for deferred object deletion.
11
+
12
+ Attributes:
13
+ uri: URI for AWS S3 object, Azure Storage Blob, etc.
14
+ """
15
+
16
+ uri: str
17
+
18
+
19
+ class DeferredObjectDeletionCreate(DeferredObjectDeletionBase):
20
+ """Model for creating a deferred object deletion entry."""
21
+
22
+
23
+ class DeferredObjectDeletion(DeferredObjectDeletionBase):
24
+ """Model for deferred object deletion data with database fields.
25
+
26
+ Attributes:
27
+ deferred_object_deletion_id: Unique identifier for the deferred object deletion.
28
+ updated_by: User who initiated the deletion.
29
+ created_date: Date and time when the deletion request was initiated.
30
+ """
31
+
32
+ deferred_object_deletion_id: UUID
33
+ updated_by: str
34
+ created_date: datetime
35
+
36
+ model_config = ConfigDict(from_attributes=True)
@@ -3,7 +3,7 @@
3
3
  from datetime import datetime
4
4
  from uuid import UUID
5
5
 
6
- from pydantic import BaseModel, ConfigDict
6
+ from pydantic import BaseModel, ConfigDict, Field
7
7
 
8
8
 
9
9
  class DeviceBase(BaseModel):
@@ -11,7 +11,7 @@ class DeviceBase(BaseModel):
11
11
 
12
12
  Attributes:
13
13
  name: Device name.
14
- channels: Number of channels.
14
+ channel: channel id.
15
15
  offset_x: X-axis offset.
16
16
  offset_y: Y-axis offset.
17
17
  offset_z: Z-axis offset.
@@ -23,7 +23,7 @@ class DeviceBase(BaseModel):
23
23
  """
24
24
 
25
25
  name: str
26
- channels: int
26
+ channel: int = Field(ge=0)
27
27
  offset_x: float
28
28
  offset_y: float
29
29
  offset_z: float
@@ -51,7 +51,7 @@ class DeviceUpdate(DeviceBase):
51
51
 
52
52
  Attributes:
53
53
  name: Device name.
54
- channels: Number of channels.
54
+ channel: channel id.
55
55
  offset_x: X-axis offset.
56
56
  offset_y: Y-axis offset.
57
57
  offset_z: Z-axis offset.
@@ -1,18 +1,11 @@
1
1
  """Pydantic models for raw file. This is the data that has been uploaded but not ingested into the database."""
2
2
 
3
3
  from datetime import datetime
4
- from enum import Enum
5
4
  from uuid import UUID
6
5
 
7
6
  from pydantic import BaseModel, ConfigDict, field_validator
8
7
 
9
-
10
- class RawFileState(str, Enum):
11
- """State of a raw file upload."""
12
-
13
- UPLOADING = "uploading"
14
- READY = "ready"
15
- ERROR = "error"
8
+ from .raw_file_state import RawFileState
16
9
 
17
10
 
18
11
  class RawFileBase(BaseModel):
@@ -56,13 +49,6 @@ class RawFileCreate(RawFileBase):
56
49
  class RawFileUpdate(RawFileBase):
57
50
  """Model for updating raw file data.
58
51
 
59
- Attributes:
60
- """
61
-
62
-
63
- class RawFile(RawFileBase):
64
- """Model for raw file data with database fields.
65
-
66
52
  Attributes:
67
53
  raw_file_id: Unique identifier for the source.
68
54
  state: Upload state (uploading, ready, error).
@@ -76,6 +62,14 @@ class RawFile(RawFileBase):
76
62
  uri: str | None = None
77
63
  meta_data: dict
78
64
  upload_id: str | None = None
65
+
66
+
67
+ class RawFile(RawFileUpdate):
68
+ """Model for raw file data with database fields.
69
+
70
+ Attributes:
71
+ """
72
+
79
73
  created_date: datetime
80
74
  updated_date: datetime
81
75
  updated_by: str
@@ -88,3 +82,17 @@ class RawFileWithUpload(RawFile):
88
82
 
89
83
  Overrides optional fields from RawFile to be required for upload responses.
90
84
  """
85
+
86
+
87
+ class RawFileFilter(BaseModel):
88
+ """Model for filtering raw files.
89
+
90
+ Attributes:
91
+ survey_id: Survey ID filter (required).
92
+ state: Optional state filter (uploading, ready, error).
93
+ raw_configuration_id: Optional raw file configuration ID filter.
94
+ """
95
+
96
+ survey_id: UUID
97
+ state: RawFileState | None = None
98
+ raw_configuration_id: UUID | None = None
@@ -0,0 +1,69 @@
1
+ """Pydantic model for mapping a raw file to a device."""
2
+
3
+ from datetime import datetime
4
+ from uuid import UUID
5
+
6
+ from pydantic import BaseModel, ConfigDict, Field
7
+
8
+
9
+ class RawFileDeviceMappingBase(BaseModel):
10
+ """Base model for raw file device mapping.
11
+
12
+ Attributes:
13
+ raw_file_id: Foreign key reference to RawFile.
14
+ device_id: Foreign key reference to Device.
15
+ source_stream_identifier: Identifier for the source stream.
16
+ input_srid: Spatial reference ID for the input data.
17
+ input_timezone: Timezone for the input data.
18
+ """
19
+
20
+ raw_file_id: UUID
21
+ device_id: UUID
22
+ source_stream_identifier: str
23
+ input_srid: int = Field(ge=2000, le=900913)
24
+ input_timezone: str = Field(pattern=r"^UTM([+-]\d+)?$")
25
+
26
+
27
+ class RawFileDeviceMappingCreate(RawFileDeviceMappingBase):
28
+ """Model for creating raw file device mapping data."""
29
+
30
+
31
+ class RawFileDeviceMappingUpdate(RawFileDeviceMappingBase):
32
+ """Model for updating raw file device mapping data.
33
+
34
+ Attributes:
35
+ mapping_id: Unique identifier for the mapping.
36
+ created_date: Date and time when the mapping was created.
37
+ updated_date: Date and time when the mapping was last updated.
38
+ updated_by: User who last updated the mapping.
39
+
40
+ """
41
+
42
+
43
+ class RawFileDeviceMapping(RawFileDeviceMappingUpdate):
44
+ """Model for raw file device mapping data with database fields.
45
+
46
+ Attributes:
47
+ created_date: Date and time when the mapping was created.
48
+ updated_date: Date and time when the mapping was last updated.
49
+ updated_by: User who last updated the mapping.
50
+ """
51
+
52
+ mapping_id: UUID
53
+ created_date: datetime
54
+ updated_date: datetime
55
+ updated_by: str
56
+
57
+ model_config = ConfigDict(from_attributes=True)
58
+
59
+
60
+ class RawFileDeviceMappingFilter(BaseModel):
61
+ """Model for filtering raw file device mappings.
62
+
63
+ Attributes:
64
+ raw_file_id: Raw file ID filter (required).
65
+ device_id: Device ID filter (required).
66
+ """
67
+
68
+ raw_file_id: UUID
69
+ device_id: UUID
@@ -0,0 +1,12 @@
1
+ """Raw file state"""
2
+
3
+ from enum import Enum
4
+
5
+ class RawFileState(str, Enum):
6
+ """Status of a raw file upload."""
7
+
8
+ UPLOADING = "uploading"
9
+ READY = "ready"
10
+ ERROR_UPLOAD = "error_upload"
11
+ ERROR_INGEST = "error_ingest"
12
+ INGEST_COMPLETE = "ingest_complete"