clarity-api-sdk-python 0.3.22__tar.gz → 0.3.24__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.22 → clarity_api_sdk_python-0.3.24}/PKG-INFO +1 -1
  2. {clarity_api_sdk_python-0.3.22 → clarity_api_sdk_python-0.3.24}/pyproject.toml +1 -1
  3. {clarity_api_sdk_python-0.3.22 → clarity_api_sdk_python-0.3.24}/src/clarity_api_sdk_python.egg-info/PKG-INFO +1 -1
  4. {clarity_api_sdk_python-0.3.22 → clarity_api_sdk_python-0.3.24}/src/clarity_api_sdk_python.egg-info/SOURCES.txt +1 -0
  5. {clarity_api_sdk_python-0.3.22 → clarity_api_sdk_python-0.3.24}/src/cti/logger/logger.py +1 -1
  6. {clarity_api_sdk_python-0.3.22 → clarity_api_sdk_python-0.3.24}/src/cti/model/device.py +4 -4
  7. {clarity_api_sdk_python-0.3.22 → clarity_api_sdk_python-0.3.24}/src/cti/model/raw_file.py +3 -0
  8. clarity_api_sdk_python-0.3.24/src/cti/model/raw_file_device_mapping.py +69 -0
  9. {clarity_api_sdk_python-0.3.22 → clarity_api_sdk_python-0.3.24}/src/cti/model/source.py +1 -0
  10. {clarity_api_sdk_python-0.3.22 → clarity_api_sdk_python-0.3.24}/README.md +0 -0
  11. {clarity_api_sdk_python-0.3.22 → clarity_api_sdk_python-0.3.24}/setup.cfg +0 -0
  12. {clarity_api_sdk_python-0.3.22 → clarity_api_sdk_python-0.3.24}/src/clarity_api_sdk_python.egg-info/dependency_links.txt +0 -0
  13. {clarity_api_sdk_python-0.3.22 → clarity_api_sdk_python-0.3.24}/src/clarity_api_sdk_python.egg-info/requires.txt +0 -0
  14. {clarity_api_sdk_python-0.3.22 → clarity_api_sdk_python-0.3.24}/src/clarity_api_sdk_python.egg-info/top_level.txt +0 -0
  15. {clarity_api_sdk_python-0.3.22 → clarity_api_sdk_python-0.3.24}/src/cti/__init__.py +0 -0
  16. {clarity_api_sdk_python-0.3.22 → clarity_api_sdk_python-0.3.24}/src/cti/api/__init__.py +0 -0
  17. {clarity_api_sdk_python-0.3.22 → clarity_api_sdk_python-0.3.24}/src/cti/api/async_client.py +0 -0
  18. {clarity_api_sdk_python-0.3.22 → clarity_api_sdk_python-0.3.24}/src/cti/api/client.py +0 -0
  19. {clarity_api_sdk_python-0.3.22 → clarity_api_sdk_python-0.3.24}/src/cti/api/session.py +0 -0
  20. {clarity_api_sdk_python-0.3.22 → clarity_api_sdk_python-0.3.24}/src/cti/logger/__init__.py +0 -0
  21. {clarity_api_sdk_python-0.3.22 → clarity_api_sdk_python-0.3.24}/src/cti/main.py +0 -0
  22. {clarity_api_sdk_python-0.3.22 → clarity_api_sdk_python-0.3.24}/src/cti/main_api.py +0 -0
  23. {clarity_api_sdk_python-0.3.22 → clarity_api_sdk_python-0.3.24}/src/cti/model/__init__.py +0 -0
  24. {clarity_api_sdk_python-0.3.22 → clarity_api_sdk_python-0.3.24}/src/cti/model/altitude_source.py +0 -0
  25. {clarity_api_sdk_python-0.3.22 → clarity_api_sdk_python-0.3.24}/src/cti/model/attitude_source.py +0 -0
  26. {clarity_api_sdk_python-0.3.22 → clarity_api_sdk_python-0.3.24}/src/cti/model/deferred_object_deletion.py +0 -0
  27. {clarity_api_sdk_python-0.3.22 → clarity_api_sdk_python-0.3.24}/src/cti/model/depth_source.py +0 -0
  28. {clarity_api_sdk_python-0.3.22 → clarity_api_sdk_python-0.3.24}/src/cti/model/device_type.py +0 -0
  29. {clarity_api_sdk_python-0.3.22 → clarity_api_sdk_python-0.3.24}/src/cti/model/final_product.py +0 -0
  30. {clarity_api_sdk_python-0.3.22 → clarity_api_sdk_python-0.3.24}/src/cti/model/hierarchy.py +0 -0
  31. {clarity_api_sdk_python-0.3.22 → clarity_api_sdk_python-0.3.24}/src/cti/model/layback_algorithm.py +0 -0
  32. {clarity_api_sdk_python-0.3.22 → clarity_api_sdk_python-0.3.24}/src/cti/model/layback_source.py +0 -0
  33. {clarity_api_sdk_python-0.3.22 → clarity_api_sdk_python-0.3.24}/src/cti/model/layback_type.py +0 -0
  34. {clarity_api_sdk_python-0.3.22 → clarity_api_sdk_python-0.3.24}/src/cti/model/organization.py +0 -0
  35. {clarity_api_sdk_python-0.3.22 → clarity_api_sdk_python-0.3.24}/src/cti/model/platform.py +0 -0
  36. {clarity_api_sdk_python-0.3.22 → clarity_api_sdk_python-0.3.24}/src/cti/model/platform_type.py +0 -0
  37. {clarity_api_sdk_python-0.3.22 → clarity_api_sdk_python-0.3.24}/src/cti/model/position_source.py +0 -0
  38. {clarity_api_sdk_python-0.3.22 → clarity_api_sdk_python-0.3.24}/src/cti/model/processed_altitude.py +0 -0
  39. {clarity_api_sdk_python-0.3.22 → clarity_api_sdk_python-0.3.24}/src/cti/model/processed_attitude.py +0 -0
  40. {clarity_api_sdk_python-0.3.22 → clarity_api_sdk_python-0.3.24}/src/cti/model/processed_depth.py +0 -0
  41. {clarity_api_sdk_python-0.3.22 → clarity_api_sdk_python-0.3.24}/src/cti/model/processed_layback.py +0 -0
  42. {clarity_api_sdk_python-0.3.22 → clarity_api_sdk_python-0.3.24}/src/cti/model/processed_position.py +0 -0
  43. {clarity_api_sdk_python-0.3.22 → clarity_api_sdk_python-0.3.24}/src/cti/model/processed_sidescan_ping.py +0 -0
  44. {clarity_api_sdk_python-0.3.22 → clarity_api_sdk_python-0.3.24}/src/cti/model/processing_log.py +0 -0
  45. {clarity_api_sdk_python-0.3.22 → clarity_api_sdk_python-0.3.24}/src/cti/model/project.py +0 -0
  46. {clarity_api_sdk_python-0.3.22 → clarity_api_sdk_python-0.3.24}/src/cti/model/projection_option.py +0 -0
  47. {clarity_api_sdk_python-0.3.22 → clarity_api_sdk_python-0.3.24}/src/cti/model/raw_altitude.py +0 -0
  48. {clarity_api_sdk_python-0.3.22 → clarity_api_sdk_python-0.3.24}/src/cti/model/raw_attitude.py +0 -0
  49. {clarity_api_sdk_python-0.3.22 → clarity_api_sdk_python-0.3.24}/src/cti/model/raw_depth.py +0 -0
  50. {clarity_api_sdk_python-0.3.22 → clarity_api_sdk_python-0.3.24}/src/cti/model/raw_file_configuration.py +0 -0
  51. {clarity_api_sdk_python-0.3.22 → clarity_api_sdk_python-0.3.24}/src/cti/model/raw_file_state.py +0 -0
  52. {clarity_api_sdk_python-0.3.22 → clarity_api_sdk_python-0.3.24}/src/cti/model/raw_layback.py +0 -0
  53. {clarity_api_sdk_python-0.3.22 → clarity_api_sdk_python-0.3.24}/src/cti/model/raw_position.py +0 -0
  54. {clarity_api_sdk_python-0.3.22 → clarity_api_sdk_python-0.3.24}/src/cti/model/raw_sidescan_ping.py +0 -0
  55. {clarity_api_sdk_python-0.3.22 → clarity_api_sdk_python-0.3.24}/src/cti/model/s3.py +0 -0
  56. {clarity_api_sdk_python-0.3.22 → clarity_api_sdk_python-0.3.24}/src/cti/model/sidescan_ping_source.py +0 -0
  57. {clarity_api_sdk_python-0.3.22 → clarity_api_sdk_python-0.3.24}/src/cti/model/survey.py +0 -0
  58. {clarity_api_sdk_python-0.3.22 → clarity_api_sdk_python-0.3.24}/src/cti/model/target.py +0 -0
  59. {clarity_api_sdk_python-0.3.22 → clarity_api_sdk_python-0.3.24}/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.22
3
+ Version: 0.3.24
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.22"
8
+ version = "0.3.24"
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.22
3
+ Version: 0.3.24
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
@@ -44,6 +44,7 @@ src/cti/model/raw_attitude.py
44
44
  src/cti/model/raw_depth.py
45
45
  src/cti/model/raw_file.py
46
46
  src/cti/model/raw_file_configuration.py
47
+ src/cti/model/raw_file_device_mapping.py
47
48
  src/cti/model/raw_file_state.py
48
49
  src/cti/model/raw_layback.py
49
50
  src/cti/model/raw_position.py
@@ -89,7 +89,7 @@ def _get_aws_metadata() -> dict:
89
89
  """Helper to fetch a metadata key with a timeout."""
90
90
  try:
91
91
  # yes, a hard coded IPv4 is best practice
92
- url = f"http://169.254.169.245/latest/meta-data/{key}"
92
+ url = f"http://169.254.169.254/latest/meta-data/{key}"
93
93
  with urllib.request.urlopen(url, timeout=timeout) as response:
94
94
  return response.read().decode("utf-8")
95
95
  except (urllib.error.URLError, socket.timeout):
@@ -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
- channel: Channel number.
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
- channel: 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.
@@ -45,6 +45,7 @@ class RawFileBase(BaseModel):
45
45
  class RawFileCreate(RawFileBase):
46
46
  """Model for creating raw file data (with survey_id in body)."""
47
47
 
48
+
48
49
  class RawFileUpdate(RawFileBase):
49
50
  """Model for updating raw file data.
50
51
 
@@ -55,12 +56,14 @@ class RawFileUpdate(RawFileBase):
55
56
  meta_data: meta data for the uri
56
57
  upload_id: S3 multipart upload ID (present while uploading, cleared when complete).
57
58
  """
59
+
58
60
  raw_file_id: UUID
59
61
  state: RawFileState = RawFileState.UPLOADING
60
62
  uri: str | None = None
61
63
  meta_data: dict
62
64
  upload_id: str | None = None
63
65
 
66
+
64
67
  class RawFile(RawFileUpdate):
65
68
  """Model for raw file data with database fields.
66
69
 
@@ -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
@@ -14,6 +14,7 @@ class SourceBase(BaseModel):
14
14
  """
15
15
 
16
16
  survey_id: UUID
17
+ raw_file_id: UUID | None = None
17
18
 
18
19
 
19
20
  class SourceCreate(SourceBase):