apex-dispatch-api-client 0.7.2__py3-none-any.whl

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 (71) hide show
  1. apex_dispatch_api_client/__about__.py +15 -0
  2. apex_dispatch_api_client/__init__.py +8 -0
  3. apex_dispatch_api_client/api/__init__.py +1 -0
  4. apex_dispatch_api_client/api/default/__init__.py +1 -0
  5. apex_dispatch_api_client/api/default/health_health_get.py +85 -0
  6. apex_dispatch_api_client/api/unit_jobs/__init__.py +1 -0
  7. apex_dispatch_api_client/api/unit_jobs/create_sync_job_sync_jobs_post.py +178 -0
  8. apex_dispatch_api_client/api/unit_jobs/create_unit_job_unit_jobs_post.py +180 -0
  9. apex_dispatch_api_client/api/unit_jobs/delete_job_unit_jobs_job_id_delete.py +170 -0
  10. apex_dispatch_api_client/api/unit_jobs/get_job_params_params_post.py +179 -0
  11. apex_dispatch_api_client/api/unit_jobs/get_job_results_unit_jobs_job_id_results_get.py +186 -0
  12. apex_dispatch_api_client/api/unit_jobs/get_job_unit_jobs_job_id_get.py +172 -0
  13. apex_dispatch_api_client/api/upscale_tasks/__init__.py +1 -0
  14. apex_dispatch_api_client/api/upscale_tasks/create_upscale_task_upscale_tasks_post.py +180 -0
  15. apex_dispatch_api_client/api/upscale_tasks/get_jobs_status_jobs_status_get.py +192 -0
  16. apex_dispatch_api_client/api/upscale_tasks/get_upscale_task_upscale_tasks_task_id_get.py +172 -0
  17. apex_dispatch_api_client/api/upscale_tasks/split_in_tiles_tiles_post.py +184 -0
  18. apex_dispatch_api_client/client.py +282 -0
  19. apex_dispatch_api_client/errors.py +16 -0
  20. apex_dispatch_api_client/models/__init__.py +99 -0
  21. apex_dispatch_api_client/models/asset.py +155 -0
  22. apex_dispatch_api_client/models/base_job_request.py +104 -0
  23. apex_dispatch_api_client/models/base_job_request_parameters.py +47 -0
  24. apex_dispatch_api_client/models/collection.py +332 -0
  25. apex_dispatch_api_client/models/collection_assets_type_0.py +60 -0
  26. apex_dispatch_api_client/models/collection_summaries_type_0.py +109 -0
  27. apex_dispatch_api_client/models/collection_summaries_type_0_additional_property_type_2.py +47 -0
  28. apex_dispatch_api_client/models/error_response.py +138 -0
  29. apex_dispatch_api_client/models/error_response_details_type_0.py +47 -0
  30. apex_dispatch_api_client/models/extent.py +80 -0
  31. apex_dispatch_api_client/models/geometry_collection.py +247 -0
  32. apex_dispatch_api_client/models/grid_type_enum.py +9 -0
  33. apex_dispatch_api_client/models/http_validation_error.py +79 -0
  34. apex_dispatch_api_client/models/jobs_filter.py +9 -0
  35. apex_dispatch_api_client/models/jobs_status_response.py +97 -0
  36. apex_dispatch_api_client/models/line_string.py +163 -0
  37. apex_dispatch_api_client/models/link.py +123 -0
  38. apex_dispatch_api_client/models/mime_types.py +37 -0
  39. apex_dispatch_api_client/models/multi_line_string.py +180 -0
  40. apex_dispatch_api_client/models/multi_point.py +163 -0
  41. apex_dispatch_api_client/models/multi_polygon.py +191 -0
  42. apex_dispatch_api_client/models/output_format_enum.py +11 -0
  43. apex_dispatch_api_client/models/param_request.py +77 -0
  44. apex_dispatch_api_client/models/param_type_enum.py +16 -0
  45. apex_dispatch_api_client/models/parameter.py +108 -0
  46. apex_dispatch_api_client/models/parameter_dimension.py +69 -0
  47. apex_dispatch_api_client/models/point.py +151 -0
  48. apex_dispatch_api_client/models/polygon.py +180 -0
  49. apex_dispatch_api_client/models/process_type_enum.py +9 -0
  50. apex_dispatch_api_client/models/processing_job.py +130 -0
  51. apex_dispatch_api_client/models/processing_job_parameters.py +47 -0
  52. apex_dispatch_api_client/models/processing_job_summary.py +116 -0
  53. apex_dispatch_api_client/models/processing_job_summary_parameters.py +47 -0
  54. apex_dispatch_api_client/models/processing_status_enum.py +14 -0
  55. apex_dispatch_api_client/models/provider.py +135 -0
  56. apex_dispatch_api_client/models/range_.py +79 -0
  57. apex_dispatch_api_client/models/service_details.py +95 -0
  58. apex_dispatch_api_client/models/spatial_extent.py +96 -0
  59. apex_dispatch_api_client/models/tile_request.py +77 -0
  60. apex_dispatch_api_client/models/time_interval.py +99 -0
  61. apex_dispatch_api_client/models/upscaling_task.py +138 -0
  62. apex_dispatch_api_client/models/upscaling_task_request.py +118 -0
  63. apex_dispatch_api_client/models/upscaling_task_request_parameters.py +47 -0
  64. apex_dispatch_api_client/models/upscaling_task_summary.py +88 -0
  65. apex_dispatch_api_client/models/validation_error.py +123 -0
  66. apex_dispatch_api_client/models/validation_error_context.py +47 -0
  67. apex_dispatch_api_client/types.py +54 -0
  68. apex_dispatch_api_client-0.7.2.dist-info/METADATA +167 -0
  69. apex_dispatch_api_client-0.7.2.dist-info/RECORD +71 -0
  70. apex_dispatch_api_client-0.7.2.dist-info/WHEEL +4 -0
  71. apex_dispatch_api_client-0.7.2.dist-info/licenses/LICENSE +202 -0
@@ -0,0 +1,97 @@
1
+ from __future__ import annotations
2
+
3
+ from collections.abc import Mapping
4
+ from typing import TYPE_CHECKING, Any, TypeVar
5
+
6
+ from attrs import define as _attrs_define
7
+ from attrs import field as _attrs_field
8
+
9
+ if TYPE_CHECKING:
10
+ from ..models.processing_job_summary import ProcessingJobSummary
11
+ from ..models.upscaling_task_summary import UpscalingTaskSummary
12
+
13
+
14
+ T = TypeVar("T", bound="JobsStatusResponse")
15
+
16
+
17
+ @_attrs_define
18
+ class JobsStatusResponse:
19
+ """
20
+ Attributes:
21
+ upscaling_tasks (list[UpscalingTaskSummary]): List of upscaling tasks that are available for the user
22
+ processing_jobs (list[ProcessingJobSummary]): List of processing jobs that are available for the user
23
+ """
24
+
25
+ upscaling_tasks: list[UpscalingTaskSummary]
26
+ processing_jobs: list[ProcessingJobSummary]
27
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
28
+
29
+ def to_dict(self) -> dict[str, Any]:
30
+ upscaling_tasks = []
31
+ for upscaling_tasks_item_data in self.upscaling_tasks:
32
+ upscaling_tasks_item = upscaling_tasks_item_data.to_dict()
33
+ upscaling_tasks.append(upscaling_tasks_item)
34
+
35
+ processing_jobs = []
36
+ for processing_jobs_item_data in self.processing_jobs:
37
+ processing_jobs_item = processing_jobs_item_data.to_dict()
38
+ processing_jobs.append(processing_jobs_item)
39
+
40
+ field_dict: dict[str, Any] = {}
41
+ field_dict.update(self.additional_properties)
42
+ field_dict.update(
43
+ {
44
+ "upscaling_tasks": upscaling_tasks,
45
+ "processing_jobs": processing_jobs,
46
+ }
47
+ )
48
+
49
+ return field_dict
50
+
51
+ @classmethod
52
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
53
+ from ..models.processing_job_summary import ProcessingJobSummary
54
+ from ..models.upscaling_task_summary import UpscalingTaskSummary
55
+
56
+ d = dict(src_dict)
57
+ upscaling_tasks = []
58
+ _upscaling_tasks = d.pop("upscaling_tasks")
59
+ for upscaling_tasks_item_data in _upscaling_tasks:
60
+ upscaling_tasks_item = UpscalingTaskSummary.from_dict(
61
+ upscaling_tasks_item_data
62
+ )
63
+
64
+ upscaling_tasks.append(upscaling_tasks_item)
65
+
66
+ processing_jobs = []
67
+ _processing_jobs = d.pop("processing_jobs")
68
+ for processing_jobs_item_data in _processing_jobs:
69
+ processing_jobs_item = ProcessingJobSummary.from_dict(
70
+ processing_jobs_item_data
71
+ )
72
+
73
+ processing_jobs.append(processing_jobs_item)
74
+
75
+ jobs_status_response = cls(
76
+ upscaling_tasks=upscaling_tasks,
77
+ processing_jobs=processing_jobs,
78
+ )
79
+
80
+ jobs_status_response.additional_properties = d
81
+ return jobs_status_response
82
+
83
+ @property
84
+ def additional_keys(self) -> list[str]:
85
+ return list(self.additional_properties.keys())
86
+
87
+ def __getitem__(self, key: str) -> Any:
88
+ return self.additional_properties[key]
89
+
90
+ def __setitem__(self, key: str, value: Any) -> None:
91
+ self.additional_properties[key] = value
92
+
93
+ def __delitem__(self, key: str) -> None:
94
+ del self.additional_properties[key]
95
+
96
+ def __contains__(self, key: str) -> bool:
97
+ return key in self.additional_properties
@@ -0,0 +1,163 @@
1
+ from __future__ import annotations
2
+
3
+ from collections.abc import Mapping
4
+ from typing import (
5
+ Any,
6
+ Literal,
7
+ TypeVar,
8
+ cast,
9
+ )
10
+
11
+ from attrs import define as _attrs_define
12
+ from attrs import field as _attrs_field
13
+
14
+ from ..types import UNSET, Unset
15
+
16
+ T = TypeVar("T", bound="LineString")
17
+
18
+
19
+ @_attrs_define
20
+ class LineString:
21
+ """LineString Model
22
+
23
+ Attributes:
24
+ type_ (Literal['LineString']):
25
+ coordinates (list[list[float]]):
26
+ bbox (list[float] | None | Unset):
27
+ """
28
+
29
+ type_: Literal["LineString"]
30
+ coordinates: list[list[float]]
31
+ bbox: list[float] | None | Unset = UNSET
32
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
33
+
34
+ def to_dict(self) -> dict[str, Any]:
35
+ type_ = self.type_
36
+
37
+ coordinates = []
38
+ for coordinates_item_data in self.coordinates:
39
+ coordinates_item: list[float]
40
+ if isinstance(coordinates_item_data, list):
41
+ coordinates_item = []
42
+ for componentsschemas_position_2d_item_data in coordinates_item_data:
43
+ componentsschemas_position_2d_item: float
44
+ componentsschemas_position_2d_item = (
45
+ componentsschemas_position_2d_item_data
46
+ )
47
+ coordinates_item.append(componentsschemas_position_2d_item)
48
+
49
+ coordinates.append(coordinates_item)
50
+
51
+ bbox: list[float] | None | Unset
52
+ if isinstance(self.bbox, Unset):
53
+ bbox = UNSET
54
+ elif isinstance(self.bbox, list):
55
+ bbox = []
56
+ for bbox_type_0_item_data in self.bbox:
57
+ bbox_type_0_item: float
58
+ bbox_type_0_item = bbox_type_0_item_data
59
+ bbox.append(bbox_type_0_item)
60
+
61
+ else:
62
+ bbox = self.bbox
63
+
64
+ field_dict: dict[str, Any] = {}
65
+ field_dict.update(self.additional_properties)
66
+ field_dict.update(
67
+ {
68
+ "type": type_,
69
+ "coordinates": coordinates,
70
+ }
71
+ )
72
+ if bbox is not UNSET:
73
+ field_dict["bbox"] = bbox
74
+
75
+ return field_dict
76
+
77
+ @classmethod
78
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
79
+ d = dict(src_dict)
80
+ type_ = cast(Literal["LineString"], d.pop("type"))
81
+ if type_ != "LineString":
82
+ raise ValueError(f"type must match const 'LineString', got '{type_}'")
83
+
84
+ coordinates = []
85
+ _coordinates = d.pop("coordinates")
86
+ for coordinates_item_data in _coordinates:
87
+
88
+ def _parse_coordinates_item(data: object) -> list[float]:
89
+ if not isinstance(data, list):
90
+ raise TypeError()
91
+ coordinates_item_type_0 = []
92
+ _coordinates_item_type_0 = data
93
+ for componentsschemas_position_2d_item_data in _coordinates_item_type_0:
94
+
95
+ def _parse_componentsschemas_position_2d_item(
96
+ data: object,
97
+ ) -> float:
98
+ return cast(float, data)
99
+
100
+ componentsschemas_position_2d_item = (
101
+ _parse_componentsschemas_position_2d_item(
102
+ componentsschemas_position_2d_item_data
103
+ )
104
+ )
105
+
106
+ coordinates_item_type_0.append(componentsschemas_position_2d_item)
107
+
108
+ return coordinates_item_type_0
109
+
110
+ coordinates_item = _parse_coordinates_item(coordinates_item_data)
111
+
112
+ coordinates.append(coordinates_item)
113
+
114
+ def _parse_bbox(data: object) -> list[float] | None | Unset:
115
+ if data is None:
116
+ return data
117
+ if isinstance(data, Unset):
118
+ return data
119
+ try:
120
+ if not isinstance(data, list):
121
+ raise TypeError()
122
+ bbox_type_0 = []
123
+ _bbox_type_0 = data
124
+ for bbox_type_0_item_data in _bbox_type_0:
125
+
126
+ def _parse_bbox_type_0_item(data: object) -> float:
127
+ return cast(float, data)
128
+
129
+ bbox_type_0_item = _parse_bbox_type_0_item(bbox_type_0_item_data)
130
+
131
+ bbox_type_0.append(bbox_type_0_item)
132
+
133
+ return bbox_type_0
134
+ except (TypeError, ValueError, AttributeError, KeyError):
135
+ pass
136
+ return cast(list[float] | None | Unset, data)
137
+
138
+ bbox = _parse_bbox(d.pop("bbox", UNSET))
139
+
140
+ line_string = cls(
141
+ type_=type_,
142
+ coordinates=coordinates,
143
+ bbox=bbox,
144
+ )
145
+
146
+ line_string.additional_properties = d
147
+ return line_string
148
+
149
+ @property
150
+ def additional_keys(self) -> list[str]:
151
+ return list(self.additional_properties.keys())
152
+
153
+ def __getitem__(self, key: str) -> Any:
154
+ return self.additional_properties[key]
155
+
156
+ def __setitem__(self, key: str, value: Any) -> None:
157
+ self.additional_properties[key] = value
158
+
159
+ def __delitem__(self, key: str) -> None:
160
+ del self.additional_properties[key]
161
+
162
+ def __contains__(self, key: str) -> bool:
163
+ return key in self.additional_properties
@@ -0,0 +1,123 @@
1
+ from __future__ import annotations
2
+
3
+ from collections.abc import Mapping
4
+ from typing import Any, TypeVar, cast
5
+
6
+ from attrs import define as _attrs_define
7
+ from attrs import field as _attrs_field
8
+
9
+ from ..models.mime_types import MimeTypes
10
+ from ..types import UNSET, Unset
11
+
12
+ T = TypeVar("T", bound="Link")
13
+
14
+
15
+ @_attrs_define
16
+ class Link:
17
+ """https://github.com/radiantearth/stac-spec/blob/v1.0.0/collection-spec/collection-spec.md#link-object
18
+
19
+ Attributes:
20
+ href (str):
21
+ rel (str):
22
+ type_ (MimeTypes | None | str | Unset):
23
+ title (None | str | Unset):
24
+ """
25
+
26
+ href: str
27
+ rel: str
28
+ type_: MimeTypes | None | str | Unset = UNSET
29
+ title: None | str | Unset = UNSET
30
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
31
+
32
+ def to_dict(self) -> dict[str, Any]:
33
+ href = self.href
34
+
35
+ rel = self.rel
36
+
37
+ type_: None | str | Unset
38
+ if isinstance(self.type_, Unset):
39
+ type_ = UNSET
40
+ elif isinstance(self.type_, MimeTypes):
41
+ type_ = self.type_.value
42
+ else:
43
+ type_ = self.type_
44
+
45
+ title: None | str | Unset
46
+ if isinstance(self.title, Unset):
47
+ title = UNSET
48
+ else:
49
+ title = self.title
50
+
51
+ field_dict: dict[str, Any] = {}
52
+ field_dict.update(self.additional_properties)
53
+ field_dict.update(
54
+ {
55
+ "href": href,
56
+ "rel": rel,
57
+ }
58
+ )
59
+ if type_ is not UNSET:
60
+ field_dict["type"] = type_
61
+ if title is not UNSET:
62
+ field_dict["title"] = title
63
+
64
+ return field_dict
65
+
66
+ @classmethod
67
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
68
+ d = dict(src_dict)
69
+ href = d.pop("href")
70
+
71
+ rel = d.pop("rel")
72
+
73
+ def _parse_type_(data: object) -> MimeTypes | None | str | Unset:
74
+ if data is None:
75
+ return data
76
+ if isinstance(data, Unset):
77
+ return data
78
+ try:
79
+ if not isinstance(data, str):
80
+ raise TypeError()
81
+ type_type_0 = MimeTypes(data)
82
+
83
+ return type_type_0
84
+ except (TypeError, ValueError, AttributeError, KeyError):
85
+ pass
86
+ return cast(MimeTypes | None | str | Unset, data)
87
+
88
+ type_ = _parse_type_(d.pop("type", UNSET))
89
+
90
+ def _parse_title(data: object) -> None | str | Unset:
91
+ if data is None:
92
+ return data
93
+ if isinstance(data, Unset):
94
+ return data
95
+ return cast(None | str | Unset, data)
96
+
97
+ title = _parse_title(d.pop("title", UNSET))
98
+
99
+ link = cls(
100
+ href=href,
101
+ rel=rel,
102
+ type_=type_,
103
+ title=title,
104
+ )
105
+
106
+ link.additional_properties = d
107
+ return link
108
+
109
+ @property
110
+ def additional_keys(self) -> list[str]:
111
+ return list(self.additional_properties.keys())
112
+
113
+ def __getitem__(self, key: str) -> Any:
114
+ return self.additional_properties[key]
115
+
116
+ def __setitem__(self, key: str, value: Any) -> None:
117
+ self.additional_properties[key] = value
118
+
119
+ def __delitem__(self, key: str) -> None:
120
+ del self.additional_properties[key]
121
+
122
+ def __contains__(self, key: str) -> bool:
123
+ return key in self.additional_properties
@@ -0,0 +1,37 @@
1
+ from enum import Enum
2
+
3
+
4
+ class MimeTypes(str, Enum):
5
+ APPLICATIONGEOJSON = "application/geo+json"
6
+ APPLICATIONGEOJSON_SEQ = "application/geo+json-seq"
7
+ APPLICATIONGEOPACKAGESQLITE3 = "application/geopackage+sqlite3"
8
+ APPLICATIONJSON = "application/json"
9
+ APPLICATIONNDJSON = "application/ndjson"
10
+ APPLICATIONOCTET_STREAM = "application/octet-stream"
11
+ APPLICATIONPDF = "application/pdf"
12
+ APPLICATIONSCHEMAJSON = "application/schema+json"
13
+ APPLICATIONVND_APACHE_PARQUET = "application/vnd.apache.parquet"
14
+ APPLICATIONVND_GOOGLE_EARTH_KMLXML = "application/vnd.google-earth.kml+xml"
15
+ APPLICATIONVND_GOOGLE_EARTH_KMZ = "application/vnd.google-earth.kmz"
16
+ APPLICATIONVND_MAPBOX_VECTOR_TILE = "application/vnd.mapbox-vector-tile"
17
+ APPLICATIONVND_OAI_OPENAPIJSONVERSION3_0 = (
18
+ "application/vnd.oai.openapi+json;version=3.0"
19
+ )
20
+ APPLICATIONVND_OAI_OPENAPIVERSION3_0 = "application/vnd.oai.openapi;version=3.0"
21
+ APPLICATIONXML = "application/xml"
22
+ APPLICATIONX_HDF = "application/x-hdf"
23
+ APPLICATIONX_HDF5 = "application/x-hdf5"
24
+ APPLICATIONX_PROTOBUF = "application/x-protobuf"
25
+ IMAGEJP2 = "image/jp2"
26
+ IMAGEJPEG = "image/jpeg"
27
+ IMAGEPNG = "image/png"
28
+ IMAGETIFF_APPLICATIONGEOTIFF = "image/tiff; application=geotiff"
29
+ IMAGETIFF_APPLICATIONGEOTIFF_PROFILECLOUD_OPTIMIZED = (
30
+ "image/tiff; application=geotiff; profile=cloud-optimized"
31
+ )
32
+ TEXTCSV = "text/csv"
33
+ TEXTHTML = "text/html"
34
+ TEXTPLAIN = "text/plain"
35
+
36
+ def __str__(self) -> str:
37
+ return str(self.value)
@@ -0,0 +1,180 @@
1
+ from __future__ import annotations
2
+
3
+ from collections.abc import Mapping
4
+ from typing import (
5
+ Any,
6
+ Literal,
7
+ TypeVar,
8
+ cast,
9
+ )
10
+
11
+ from attrs import define as _attrs_define
12
+ from attrs import field as _attrs_field
13
+
14
+ from ..types import UNSET, Unset
15
+
16
+ T = TypeVar("T", bound="MultiLineString")
17
+
18
+
19
+ @_attrs_define
20
+ class MultiLineString:
21
+ """MultiLineString Model
22
+
23
+ Attributes:
24
+ type_ (Literal['MultiLineString']):
25
+ coordinates (list[list[list[float]]]):
26
+ bbox (list[float] | None | Unset):
27
+ """
28
+
29
+ type_: Literal["MultiLineString"]
30
+ coordinates: list[list[list[float]]]
31
+ bbox: list[float] | None | Unset = UNSET
32
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
33
+
34
+ def to_dict(self) -> dict[str, Any]:
35
+ type_ = self.type_
36
+
37
+ coordinates = []
38
+ for coordinates_item_data in self.coordinates:
39
+ coordinates_item = []
40
+ for coordinates_item_item_data in coordinates_item_data:
41
+ coordinates_item_item: list[float]
42
+ if isinstance(coordinates_item_item_data, list):
43
+ coordinates_item_item = []
44
+ for (
45
+ componentsschemas_position_2d_item_data
46
+ ) in coordinates_item_item_data:
47
+ componentsschemas_position_2d_item: float
48
+ componentsschemas_position_2d_item = (
49
+ componentsschemas_position_2d_item_data
50
+ )
51
+ coordinates_item_item.append(componentsschemas_position_2d_item)
52
+
53
+ coordinates_item.append(coordinates_item_item)
54
+
55
+ coordinates.append(coordinates_item)
56
+
57
+ bbox: list[float] | None | Unset
58
+ if isinstance(self.bbox, Unset):
59
+ bbox = UNSET
60
+ elif isinstance(self.bbox, list):
61
+ bbox = []
62
+ for bbox_type_0_item_data in self.bbox:
63
+ bbox_type_0_item: float
64
+ bbox_type_0_item = bbox_type_0_item_data
65
+ bbox.append(bbox_type_0_item)
66
+
67
+ else:
68
+ bbox = self.bbox
69
+
70
+ field_dict: dict[str, Any] = {}
71
+ field_dict.update(self.additional_properties)
72
+ field_dict.update(
73
+ {
74
+ "type": type_,
75
+ "coordinates": coordinates,
76
+ }
77
+ )
78
+ if bbox is not UNSET:
79
+ field_dict["bbox"] = bbox
80
+
81
+ return field_dict
82
+
83
+ @classmethod
84
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
85
+ d = dict(src_dict)
86
+ type_ = cast(Literal["MultiLineString"], d.pop("type"))
87
+ if type_ != "MultiLineString":
88
+ raise ValueError(f"type must match const 'MultiLineString', got '{type_}'")
89
+
90
+ coordinates = []
91
+ _coordinates = d.pop("coordinates")
92
+ for coordinates_item_data in _coordinates:
93
+ coordinates_item = []
94
+ _coordinates_item = coordinates_item_data
95
+ for coordinates_item_item_data in _coordinates_item:
96
+
97
+ def _parse_coordinates_item_item(data: object) -> list[float]:
98
+ if not isinstance(data, list):
99
+ raise TypeError()
100
+ coordinates_item_item_type_0 = []
101
+ _coordinates_item_item_type_0 = data
102
+ for (
103
+ componentsschemas_position_2d_item_data
104
+ ) in _coordinates_item_item_type_0:
105
+
106
+ def _parse_componentsschemas_position_2d_item(
107
+ data: object,
108
+ ) -> float:
109
+ return cast(float, data)
110
+
111
+ componentsschemas_position_2d_item = (
112
+ _parse_componentsschemas_position_2d_item(
113
+ componentsschemas_position_2d_item_data
114
+ )
115
+ )
116
+
117
+ coordinates_item_item_type_0.append(
118
+ componentsschemas_position_2d_item
119
+ )
120
+
121
+ return coordinates_item_item_type_0
122
+
123
+ coordinates_item_item = _parse_coordinates_item_item(
124
+ coordinates_item_item_data
125
+ )
126
+
127
+ coordinates_item.append(coordinates_item_item)
128
+
129
+ coordinates.append(coordinates_item)
130
+
131
+ def _parse_bbox(data: object) -> list[float] | None | Unset:
132
+ if data is None:
133
+ return data
134
+ if isinstance(data, Unset):
135
+ return data
136
+ try:
137
+ if not isinstance(data, list):
138
+ raise TypeError()
139
+ bbox_type_0 = []
140
+ _bbox_type_0 = data
141
+ for bbox_type_0_item_data in _bbox_type_0:
142
+
143
+ def _parse_bbox_type_0_item(data: object) -> float:
144
+ return cast(float, data)
145
+
146
+ bbox_type_0_item = _parse_bbox_type_0_item(bbox_type_0_item_data)
147
+
148
+ bbox_type_0.append(bbox_type_0_item)
149
+
150
+ return bbox_type_0
151
+ except (TypeError, ValueError, AttributeError, KeyError):
152
+ pass
153
+ return cast(list[float] | None | Unset, data)
154
+
155
+ bbox = _parse_bbox(d.pop("bbox", UNSET))
156
+
157
+ multi_line_string = cls(
158
+ type_=type_,
159
+ coordinates=coordinates,
160
+ bbox=bbox,
161
+ )
162
+
163
+ multi_line_string.additional_properties = d
164
+ return multi_line_string
165
+
166
+ @property
167
+ def additional_keys(self) -> list[str]:
168
+ return list(self.additional_properties.keys())
169
+
170
+ def __getitem__(self, key: str) -> Any:
171
+ return self.additional_properties[key]
172
+
173
+ def __setitem__(self, key: str, value: Any) -> None:
174
+ self.additional_properties[key] = value
175
+
176
+ def __delitem__(self, key: str) -> None:
177
+ del self.additional_properties[key]
178
+
179
+ def __contains__(self, key: str) -> bool:
180
+ return key in self.additional_properties