cognite-toolkit 0.7.45__py3-none-any.whl → 0.7.46__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.
- cognite_toolkit/_cdf_tk/apps/_download_app.py +1 -1
- cognite_toolkit/_cdf_tk/apps/_dump_app.py +1 -1
- cognite_toolkit/_cdf_tk/builders/_raw.py +1 -1
- cognite_toolkit/_cdf_tk/client/_toolkit_client.py +19 -3
- cognite_toolkit/_cdf_tk/client/api/assets.py +30 -18
- cognite_toolkit/_cdf_tk/client/api/datasets.py +141 -0
- cognite_toolkit/_cdf_tk/client/api/events.py +31 -17
- cognite_toolkit/_cdf_tk/client/api/extraction_pipelines.py +148 -0
- cognite_toolkit/_cdf_tk/client/api/filemetadata.py +42 -16
- cognite_toolkit/_cdf_tk/client/api/hosted_extractor_destinations.py +131 -0
- cognite_toolkit/_cdf_tk/client/api/hosted_extractor_jobs.py +122 -0
- cognite_toolkit/_cdf_tk/client/api/hosted_extractor_mappings.py +129 -0
- cognite_toolkit/_cdf_tk/client/api/hosted_extractor_sources.py +136 -0
- cognite_toolkit/_cdf_tk/client/api/hosted_extractors.py +23 -0
- cognite_toolkit/_cdf_tk/client/api/infield.py +7 -7
- cognite_toolkit/_cdf_tk/client/api/labels.py +125 -0
- cognite_toolkit/_cdf_tk/client/api/legacy/canvas.py +2 -2
- cognite_toolkit/_cdf_tk/client/api/legacy/charts.py +1 -1
- cognite_toolkit/_cdf_tk/client/api/legacy/extended_data_modeling.py +1 -1
- cognite_toolkit/_cdf_tk/client/api/legacy/extended_files.py +2 -2
- cognite_toolkit/_cdf_tk/client/api/legacy/extended_raw.py +1 -1
- cognite_toolkit/_cdf_tk/client/api/legacy/extended_timeseries.py +2 -2
- cognite_toolkit/_cdf_tk/client/api/legacy/location_filters.py +1 -1
- cognite_toolkit/_cdf_tk/client/api/legacy/robotics/capabilities.py +1 -1
- cognite_toolkit/_cdf_tk/client/api/legacy/robotics/data_postprocessing.py +1 -1
- cognite_toolkit/_cdf_tk/client/api/legacy/robotics/frames.py +1 -1
- cognite_toolkit/_cdf_tk/client/api/legacy/robotics/locations.py +1 -1
- cognite_toolkit/_cdf_tk/client/api/legacy/robotics/maps.py +1 -1
- cognite_toolkit/_cdf_tk/client/api/legacy/robotics/robots.py +1 -1
- cognite_toolkit/_cdf_tk/client/api/legacy/search_config.py +1 -1
- cognite_toolkit/_cdf_tk/client/api/migration.py +1 -1
- cognite_toolkit/_cdf_tk/client/api/project.py +1 -1
- cognite_toolkit/_cdf_tk/client/api/raw.py +38 -8
- cognite_toolkit/_cdf_tk/client/api/security_categories.py +94 -0
- cognite_toolkit/_cdf_tk/client/api/sequences.py +133 -0
- cognite_toolkit/_cdf_tk/client/api/simulator_models.py +32 -6
- cognite_toolkit/_cdf_tk/client/api/streams.py +1 -1
- cognite_toolkit/_cdf_tk/client/api/three_d.py +11 -11
- cognite_toolkit/_cdf_tk/client/api/timeseries.py +31 -17
- cognite_toolkit/_cdf_tk/client/api/token.py +1 -1
- cognite_toolkit/_cdf_tk/client/api/transformations.py +146 -0
- cognite_toolkit/_cdf_tk/client/api/workflow_triggers.py +128 -0
- cognite_toolkit/_cdf_tk/client/api/workflow_versions.py +138 -0
- cognite_toolkit/_cdf_tk/client/api/workflows.py +119 -0
- cognite_toolkit/_cdf_tk/client/cdf_client/api.py +38 -40
- cognite_toolkit/_cdf_tk/client/http_client/_data_classes2.py +5 -7
- cognite_toolkit/_cdf_tk/client/http_client/_exception.py +10 -1
- cognite_toolkit/_cdf_tk/client/request_classes/base.py +19 -0
- cognite_toolkit/_cdf_tk/client/request_classes/filters.py +38 -0
- cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes}/agent.py +1 -1
- cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes}/annotation.py +1 -1
- cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes}/asset.py +1 -1
- cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes}/data_modeling/_constraints.py +1 -1
- cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes}/data_modeling/_container.py +1 -1
- cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes}/data_modeling/_data_model.py +1 -1
- cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes}/data_modeling/_data_types.py +1 -1
- cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes}/data_modeling/_indexes.py +1 -1
- cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes}/data_modeling/_instance.py +1 -1
- cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes}/data_modeling/_references.py +1 -1
- cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes}/data_modeling/_space.py +1 -1
- cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes}/data_modeling/_view.py +1 -1
- cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes}/data_modeling/_view_property.py +1 -1
- cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes}/dataset.py +1 -1
- cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes}/event.py +1 -1
- cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes}/extraction_pipeline.py +1 -1
- cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes}/filemetadata.py +1 -1
- cognite_toolkit/_cdf_tk/client/resource_classes/function.py +53 -0
- cognite_toolkit/_cdf_tk/client/resource_classes/function_schedule.py +61 -0
- cognite_toolkit/_cdf_tk/client/resource_classes/graphql_data_model.py +40 -0
- cognite_toolkit/_cdf_tk/client/resource_classes/group/__init__.py +187 -0
- cognite_toolkit/_cdf_tk/client/resource_classes/group/_constants.py +2 -0
- cognite_toolkit/_cdf_tk/client/resource_classes/group/acls.py +653 -0
- cognite_toolkit/_cdf_tk/client/resource_classes/group/capability.py +56 -0
- cognite_toolkit/_cdf_tk/client/resource_classes/group/group.py +59 -0
- cognite_toolkit/_cdf_tk/client/resource_classes/group/scopes.py +166 -0
- cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes}/hosted_extractor_destination.py +1 -1
- cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes}/hosted_extractor_job.py +1 -1
- cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes}/hosted_extractor_mapping.py +1 -1
- cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes}/hosted_extractor_source/_auth.py +1 -1
- cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes}/hosted_extractor_source/_base.py +2 -2
- cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes}/hosted_extractor_source/_certificate.py +1 -1
- cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes}/hosted_extractor_source/_eventhub.py +1 -1
- cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes}/hosted_extractor_source/_kafka.py +1 -1
- cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes}/hosted_extractor_source/_mqtt.py +1 -1
- cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes}/hosted_extractor_source/_rest.py +1 -1
- cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes}/identifiers.py +1 -1
- cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes}/label.py +1 -1
- cognite_toolkit/_cdf_tk/client/resource_classes/legacy/__init__.py +0 -0
- cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes}/legacy/canvas.py +1 -1
- cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes}/legacy/charts.py +1 -1
- cognite_toolkit/_cdf_tk/client/resource_classes/location_filter.py +77 -0
- cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes}/raw.py +1 -1
- cognite_toolkit/_cdf_tk/client/resource_classes/relationship.py +43 -0
- cognite_toolkit/_cdf_tk/client/resource_classes/robotics/__init__.py +37 -0
- cognite_toolkit/_cdf_tk/client/resource_classes/robotics/_capability.py +53 -0
- cognite_toolkit/_cdf_tk/client/resource_classes/robotics/_common.py +34 -0
- cognite_toolkit/_cdf_tk/client/resource_classes/robotics/_data_post_processing.py +49 -0
- cognite_toolkit/_cdf_tk/client/resource_classes/robotics/_frame.py +46 -0
- cognite_toolkit/_cdf_tk/client/resource_classes/robotics/_location.py +36 -0
- cognite_toolkit/_cdf_tk/client/resource_classes/robotics/_map.py +60 -0
- cognite_toolkit/_cdf_tk/client/resource_classes/robotics/_robot.py +53 -0
- cognite_toolkit/_cdf_tk/client/resource_classes/search_config_resource.py +54 -0
- cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes}/securitycategory.py +1 -1
- cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes}/sequence.py +1 -1
- cognite_toolkit/_cdf_tk/client/resource_classes/sequence_rows.py +56 -0
- cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes}/simulator_model.py +1 -1
- cognite_toolkit/_cdf_tk/client/resource_classes/streamlit_.py +71 -0
- cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes}/streams.py +6 -5
- cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes}/timeseries.py +1 -1
- cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes}/transformation.py +1 -1
- cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes}/workflow.py +1 -1
- cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes}/workflow_trigger.py +1 -1
- cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes}/workflow_version.py +1 -1
- cognite_toolkit/_cdf_tk/client/testing.py +20 -2
- cognite_toolkit/_cdf_tk/commands/_migrate/conversion.py +5 -5
- cognite_toolkit/_cdf_tk/commands/_migrate/creators.py +1 -1
- cognite_toolkit/_cdf_tk/commands/_migrate/data_classes.py +6 -6
- cognite_toolkit/_cdf_tk/commands/_migrate/data_mapper.py +6 -6
- cognite_toolkit/_cdf_tk/commands/_migrate/default_mappings.py +1 -1
- cognite_toolkit/_cdf_tk/commands/_migrate/issues.py +1 -1
- cognite_toolkit/_cdf_tk/commands/_migrate/migration_io.py +8 -8
- cognite_toolkit/_cdf_tk/commands/_profile.py +1 -1
- cognite_toolkit/_cdf_tk/commands/_purge.py +1 -1
- cognite_toolkit/_cdf_tk/commands/build_cmd.py +1 -1
- cognite_toolkit/_cdf_tk/commands/dump_resource.py +4 -4
- cognite_toolkit/_cdf_tk/commands/run.py +1 -1
- cognite_toolkit/_cdf_tk/cruds/_data_cruds.py +3 -3
- cognite_toolkit/_cdf_tk/cruds/_resource_cruds/auth.py +2 -2
- cognite_toolkit/_cdf_tk/cruds/_resource_cruds/classic.py +11 -27
- cognite_toolkit/_cdf_tk/cruds/_resource_cruds/configuration.py +1 -1
- cognite_toolkit/_cdf_tk/cruds/_resource_cruds/datamodel.py +1 -1
- cognite_toolkit/_cdf_tk/cruds/_resource_cruds/extraction_pipeline.py +1 -1
- cognite_toolkit/_cdf_tk/cruds/_resource_cruds/fieldops.py +4 -4
- cognite_toolkit/_cdf_tk/cruds/_resource_cruds/file.py +7 -14
- cognite_toolkit/_cdf_tk/cruds/_resource_cruds/function.py +1 -1
- cognite_toolkit/_cdf_tk/cruds/_resource_cruds/industrial_tool.py +1 -1
- cognite_toolkit/_cdf_tk/cruds/_resource_cruds/location.py +2 -2
- cognite_toolkit/_cdf_tk/cruds/_resource_cruds/migration.py +1 -1
- cognite_toolkit/_cdf_tk/cruds/_resource_cruds/raw.py +6 -1
- cognite_toolkit/_cdf_tk/cruds/_resource_cruds/relationship.py +1 -1
- cognite_toolkit/_cdf_tk/cruds/_resource_cruds/robotics.py +1 -1
- cognite_toolkit/_cdf_tk/cruds/_resource_cruds/simulators.py +6 -3
- cognite_toolkit/_cdf_tk/cruds/_resource_cruds/streams.py +2 -2
- cognite_toolkit/_cdf_tk/cruds/_resource_cruds/timeseries.py +6 -13
- cognite_toolkit/_cdf_tk/cruds/_resource_cruds/transformation.py +1 -1
- cognite_toolkit/_cdf_tk/resource_classes/capabilities.py +6 -0
- cognite_toolkit/_cdf_tk/resource_classes/search_config.py +1 -1
- cognite_toolkit/_cdf_tk/storageio/_applications.py +3 -3
- cognite_toolkit/_cdf_tk/storageio/_asset_centric.py +21 -27
- cognite_toolkit/_cdf_tk/storageio/_file_content.py +2 -2
- cognite_toolkit/_cdf_tk/storageio/_instances.py +1 -1
- cognite_toolkit/_cdf_tk/utils/cdf.py +1 -1
- cognite_toolkit/_cdf_tk/utils/interactive_select.py +5 -5
- cognite_toolkit/_cdf_tk/utils/useful_types2.py +3 -3
- cognite_toolkit/_repo_files/GitHub/.github/workflows/deploy.yaml +1 -1
- cognite_toolkit/_repo_files/GitHub/.github/workflows/dry-run.yaml +1 -1
- cognite_toolkit/_resources/cdf.toml +1 -1
- cognite_toolkit/_version.py +1 -1
- {cognite_toolkit-0.7.45.dist-info → cognite_toolkit-0.7.46.dist-info}/METADATA +3 -3
- {cognite_toolkit-0.7.45.dist-info → cognite_toolkit-0.7.46.dist-info}/RECORD +189 -150
- {cognite_toolkit-0.7.45.dist-info → cognite_toolkit-0.7.46.dist-info}/WHEEL +2 -2
- /cognite_toolkit/_cdf_tk/client/{data_classes → request_classes}/__init__.py +0 -0
- /cognite_toolkit/_cdf_tk/client/{data_classes/legacy → resource_classes}/__init__.py +0 -0
- /cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes}/base.py +0 -0
- /cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes}/capabilities.py +0 -0
- /cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes}/charts_data.py +0 -0
- /cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes}/data_modeling/__init__.py +0 -0
- /cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes}/hosted_extractor_source/__init__.py +0 -0
- /cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes}/infield.py +0 -0
- /cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes}/instance_api.py +0 -0
- /cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes}/legacy/apm_config_v1.py +0 -0
- /cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes}/legacy/extendable_cognite_file.py +0 -0
- /cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes}/legacy/extended_filemetadata.py +0 -0
- /cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes}/legacy/extended_filemetdata.py +0 -0
- /cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes}/legacy/extended_timeseries.py +0 -0
- /cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes}/legacy/functions.py +0 -0
- /cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes}/legacy/graphql_data_models.py +0 -0
- /cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes}/legacy/instances.py +0 -0
- /cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes}/legacy/location_filters.py +0 -0
- /cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes}/legacy/migration.py +0 -0
- /cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes}/legacy/pending_instances_ids.py +0 -0
- /cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes}/legacy/project.py +0 -0
- /cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes}/legacy/raw.py +0 -0
- /cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes}/legacy/robotics.py +0 -0
- /cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes}/legacy/search_config.py +0 -0
- /cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes}/legacy/sequences.py +0 -0
- /cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes}/legacy/streamlit_.py +0 -0
- /cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes}/three_d.py +0 -0
- {cognite_toolkit-0.7.45.dist-info → cognite_toolkit-0.7.46.dist-info}/entry_points.txt +0 -0
|
@@ -1,11 +1,14 @@
|
|
|
1
|
-
from collections.abc import Sequence
|
|
1
|
+
from collections.abc import Iterable, Sequence
|
|
2
2
|
from typing import Any, Literal
|
|
3
3
|
|
|
4
4
|
from cognite_toolkit._cdf_tk.client.cdf_client import CDFResourceAPI, PagedResponse, ResponseItems
|
|
5
5
|
from cognite_toolkit._cdf_tk.client.cdf_client.api import Endpoint
|
|
6
|
-
from cognite_toolkit._cdf_tk.client.data_classes.identifiers import InternalOrExternalId
|
|
7
|
-
from cognite_toolkit._cdf_tk.client.data_classes.simulator_model import SimulatorModelRequest, SimulatorModelResponse
|
|
8
6
|
from cognite_toolkit._cdf_tk.client.http_client import HTTPClient, ItemsSuccessResponse2, SuccessResponse2
|
|
7
|
+
from cognite_toolkit._cdf_tk.client.resource_classes.identifiers import InternalOrExternalId
|
|
8
|
+
from cognite_toolkit._cdf_tk.client.resource_classes.simulator_model import (
|
|
9
|
+
SimulatorModelRequest,
|
|
10
|
+
SimulatorModelResponse,
|
|
11
|
+
)
|
|
9
12
|
|
|
10
13
|
|
|
11
14
|
class SimulatorModelsAPI(CDFResourceAPI[InternalOrExternalId, SimulatorModelRequest, SimulatorModelResponse]):
|
|
@@ -27,7 +30,7 @@ class SimulatorModelsAPI(CDFResourceAPI[InternalOrExternalId, SimulatorModelRequ
|
|
|
27
30
|
},
|
|
28
31
|
)
|
|
29
32
|
|
|
30
|
-
def
|
|
33
|
+
def _validate_page_response(
|
|
31
34
|
self, response: SuccessResponse2 | ItemsSuccessResponse2
|
|
32
35
|
) -> PagedResponse[SimulatorModelResponse]:
|
|
33
36
|
return PagedResponse[SimulatorModelResponse].model_validate_json(response.body)
|
|
@@ -87,7 +90,7 @@ class SimulatorModelsAPI(CDFResourceAPI[InternalOrExternalId, SimulatorModelRequ
|
|
|
87
90
|
"""
|
|
88
91
|
self._request_no_response(items, "delete")
|
|
89
92
|
|
|
90
|
-
def
|
|
93
|
+
def paginate(
|
|
91
94
|
self,
|
|
92
95
|
simulator_external_ids: list[str] | None = None,
|
|
93
96
|
limit: int = 100,
|
|
@@ -107,12 +110,35 @@ class SimulatorModelsAPI(CDFResourceAPI[InternalOrExternalId, SimulatorModelRequ
|
|
|
107
110
|
if simulator_external_ids:
|
|
108
111
|
filter_["simulatorExternalIds"] = simulator_external_ids
|
|
109
112
|
|
|
110
|
-
return self.
|
|
113
|
+
return self._paginate(
|
|
111
114
|
cursor=cursor,
|
|
112
115
|
limit=limit,
|
|
113
116
|
body={"filter": filter_ or None},
|
|
114
117
|
)
|
|
115
118
|
|
|
119
|
+
def iterate(
|
|
120
|
+
self,
|
|
121
|
+
simulator_external_ids: list[str] | None = None,
|
|
122
|
+
limit: int = 100,
|
|
123
|
+
) -> Iterable[list[SimulatorModelResponse]]:
|
|
124
|
+
"""Iterate over simulator models in CDF.
|
|
125
|
+
|
|
126
|
+
Args:
|
|
127
|
+
simulator_external_ids: Filter by simulator external IDs.
|
|
128
|
+
limit: Maximum number of items to return per page.
|
|
129
|
+
|
|
130
|
+
Returns:
|
|
131
|
+
Iterable of lists of SimulatorModelResponse objects.
|
|
132
|
+
"""
|
|
133
|
+
filter_: dict[str, Any] = {}
|
|
134
|
+
if simulator_external_ids:
|
|
135
|
+
filter_["simulatorExternalIds"] = simulator_external_ids
|
|
136
|
+
|
|
137
|
+
return self._iterate(
|
|
138
|
+
limit=limit,
|
|
139
|
+
body={"filter": filter_ or None},
|
|
140
|
+
)
|
|
141
|
+
|
|
116
142
|
def list(
|
|
117
143
|
self,
|
|
118
144
|
limit: int | None = 100,
|
|
@@ -4,12 +4,12 @@ from pydantic import TypeAdapter
|
|
|
4
4
|
from rich.console import Console
|
|
5
5
|
|
|
6
6
|
from cognite_toolkit._cdf_tk.client.cdf_client.responses import PagedResponse
|
|
7
|
-
from cognite_toolkit._cdf_tk.client.data_classes.streams import StreamRequest, StreamResponse
|
|
8
7
|
from cognite_toolkit._cdf_tk.client.http_client import (
|
|
9
8
|
HTTPClient,
|
|
10
9
|
ItemsRequest2,
|
|
11
10
|
RequestMessage2,
|
|
12
11
|
)
|
|
12
|
+
from cognite_toolkit._cdf_tk.client.resource_classes.streams import StreamRequest, StreamResponse
|
|
13
13
|
|
|
14
14
|
|
|
15
15
|
class StreamsAPI:
|
|
@@ -6,19 +6,19 @@ from pydantic import TypeAdapter
|
|
|
6
6
|
from rich.console import Console
|
|
7
7
|
|
|
8
8
|
from cognite_toolkit._cdf_tk.client.cdf_client.responses import PagedResponse
|
|
9
|
-
from cognite_toolkit._cdf_tk.client.
|
|
10
|
-
|
|
9
|
+
from cognite_toolkit._cdf_tk.client.http_client import (
|
|
10
|
+
HTTPClient,
|
|
11
|
+
ItemsRequest2,
|
|
12
|
+
RequestMessage2,
|
|
13
|
+
)
|
|
14
|
+
from cognite_toolkit._cdf_tk.client.resource_classes.identifiers import InternalId
|
|
15
|
+
from cognite_toolkit._cdf_tk.client.resource_classes.three_d import (
|
|
11
16
|
AssetMappingClassicRequest,
|
|
12
17
|
AssetMappingDMRequest,
|
|
13
18
|
AssetMappingResponse,
|
|
14
19
|
ThreeDModelClassicRequest,
|
|
15
20
|
ThreeDModelResponse,
|
|
16
21
|
)
|
|
17
|
-
from cognite_toolkit._cdf_tk.client.http_client import (
|
|
18
|
-
HTTPClient,
|
|
19
|
-
ItemsRequest2,
|
|
20
|
-
RequestMessage2,
|
|
21
|
-
)
|
|
22
22
|
from cognite_toolkit._cdf_tk.utils.collection import chunker_sequence
|
|
23
23
|
from cognite_toolkit._cdf_tk.utils.useful_types import PrimitiveType
|
|
24
24
|
|
|
@@ -76,7 +76,7 @@ class ThreeDModelAPI:
|
|
|
76
76
|
)
|
|
77
77
|
responses.raise_for_status()
|
|
78
78
|
|
|
79
|
-
def
|
|
79
|
+
def paginate(
|
|
80
80
|
self,
|
|
81
81
|
published: bool | None = None,
|
|
82
82
|
include_revision_info: bool = False,
|
|
@@ -122,7 +122,7 @@ class ThreeDModelAPI:
|
|
|
122
122
|
)
|
|
123
123
|
if request_limit <= 0:
|
|
124
124
|
break
|
|
125
|
-
page = self.
|
|
125
|
+
page = self.paginate(
|
|
126
126
|
published=published,
|
|
127
127
|
include_revision_info=include_revision_info,
|
|
128
128
|
limit=request_limit,
|
|
@@ -287,7 +287,7 @@ class ThreeDAssetMappingAPI:
|
|
|
287
287
|
responses.raise_for_status()
|
|
288
288
|
return None
|
|
289
289
|
|
|
290
|
-
def
|
|
290
|
+
def paginate(
|
|
291
291
|
self,
|
|
292
292
|
model_id: int,
|
|
293
293
|
revision_id: int,
|
|
@@ -361,7 +361,7 @@ class ThreeDAssetMappingAPI:
|
|
|
361
361
|
)
|
|
362
362
|
if request_limit <= 0:
|
|
363
363
|
break
|
|
364
|
-
page = self.
|
|
364
|
+
page = self.paginate(
|
|
365
365
|
model_id=model_id,
|
|
366
366
|
revision_id=revision_id,
|
|
367
367
|
asset_ids=asset_ids,
|
|
@@ -1,11 +1,12 @@
|
|
|
1
|
-
from collections.abc import Sequence
|
|
2
|
-
from typing import
|
|
1
|
+
from collections.abc import Iterable, Sequence
|
|
2
|
+
from typing import Literal
|
|
3
3
|
|
|
4
4
|
from cognite_toolkit._cdf_tk.client.cdf_client import CDFResourceAPI, PagedResponse, ResponseItems
|
|
5
5
|
from cognite_toolkit._cdf_tk.client.cdf_client.api import Endpoint
|
|
6
|
-
from cognite_toolkit._cdf_tk.client.data_classes.identifiers import InternalOrExternalId
|
|
7
|
-
from cognite_toolkit._cdf_tk.client.data_classes.timeseries import TimeSeriesRequest, TimeSeriesResponse
|
|
8
6
|
from cognite_toolkit._cdf_tk.client.http_client import HTTPClient, ItemsSuccessResponse2, SuccessResponse2
|
|
7
|
+
from cognite_toolkit._cdf_tk.client.request_classes.filters import ClassicFilter
|
|
8
|
+
from cognite_toolkit._cdf_tk.client.resource_classes.identifiers import InternalOrExternalId
|
|
9
|
+
from cognite_toolkit._cdf_tk.client.resource_classes.timeseries import TimeSeriesRequest, TimeSeriesResponse
|
|
9
10
|
|
|
10
11
|
|
|
11
12
|
class TimeSeriesAPI(CDFResourceAPI[InternalOrExternalId, TimeSeriesRequest, TimeSeriesResponse]):
|
|
@@ -27,7 +28,9 @@ class TimeSeriesAPI(CDFResourceAPI[InternalOrExternalId, TimeSeriesRequest, Time
|
|
|
27
28
|
},
|
|
28
29
|
)
|
|
29
30
|
|
|
30
|
-
def
|
|
31
|
+
def _validate_page_response(
|
|
32
|
+
self, response: SuccessResponse2 | ItemsSuccessResponse2
|
|
33
|
+
) -> PagedResponse[TimeSeriesResponse]:
|
|
31
34
|
return PagedResponse[TimeSeriesResponse].model_validate_json(response.body)
|
|
32
35
|
|
|
33
36
|
def _reference_response(self, response: SuccessResponse2) -> ResponseItems[InternalOrExternalId]:
|
|
@@ -81,34 +84,45 @@ class TimeSeriesAPI(CDFResourceAPI[InternalOrExternalId, TimeSeriesRequest, Time
|
|
|
81
84
|
"""
|
|
82
85
|
self._request_no_response(items, "delete", extra_body={"ignoreUnknownIds": ignore_unknown_ids})
|
|
83
86
|
|
|
84
|
-
def
|
|
87
|
+
def paginate(
|
|
85
88
|
self,
|
|
86
|
-
|
|
87
|
-
asset_subtree_external_ids: list[str] | None = None,
|
|
89
|
+
filter: ClassicFilter | None = None,
|
|
88
90
|
limit: int = 100,
|
|
89
91
|
cursor: str | None = None,
|
|
90
92
|
) -> PagedResponse[TimeSeriesResponse]:
|
|
91
93
|
"""Iterate over all time series in CDF.
|
|
92
94
|
|
|
93
95
|
Args:
|
|
94
|
-
|
|
95
|
-
asset_subtree_external_ids: Filter by asset subtree external IDs.
|
|
96
|
+
filter: Filter by data set IDs and/or asset subtree IDs.
|
|
96
97
|
limit: Maximum number of items to return.
|
|
97
98
|
cursor: Cursor for pagination.
|
|
98
99
|
|
|
99
100
|
Returns:
|
|
100
101
|
PagedResponse of TimeSeriesResponse objects.
|
|
101
102
|
"""
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
103
|
+
return self._paginate(
|
|
104
|
+
cursor=cursor,
|
|
105
|
+
limit=limit,
|
|
106
|
+
body={"filter": filter.dump() if filter else None},
|
|
107
|
+
)
|
|
107
108
|
|
|
109
|
+
def iterate(
|
|
110
|
+
self,
|
|
111
|
+
filter: ClassicFilter | None = None,
|
|
112
|
+
limit: int | None = 100,
|
|
113
|
+
) -> Iterable[list[TimeSeriesResponse]]:
|
|
114
|
+
"""Iterate over all time series in CDF.
|
|
115
|
+
|
|
116
|
+
Args:
|
|
117
|
+
filter: Filter by data set IDs and/or asset subtree IDs.
|
|
118
|
+
limit: Maximum number of items to return per page.
|
|
119
|
+
|
|
120
|
+
Returns:
|
|
121
|
+
Iterable of lists of TimeSeriesResponse objects.
|
|
122
|
+
"""
|
|
108
123
|
return self._iterate(
|
|
109
|
-
cursor=cursor,
|
|
110
124
|
limit=limit,
|
|
111
|
-
body={"filter":
|
|
125
|
+
body={"filter": filter.dump() if filter else None},
|
|
112
126
|
)
|
|
113
127
|
|
|
114
128
|
def list(
|
|
@@ -4,7 +4,7 @@ from cognite.client import CogniteClient
|
|
|
4
4
|
from cognite.client.data_classes.capabilities import _CAPABILITY_CLASS_BY_NAME, AllScope, Capability
|
|
5
5
|
from cognite.client.data_classes.iam import TokenInspection
|
|
6
6
|
|
|
7
|
-
from cognite_toolkit._cdf_tk.client.
|
|
7
|
+
from cognite_toolkit._cdf_tk.client.resource_classes.capabilities import scope_intersection, scope_union
|
|
8
8
|
from cognite_toolkit._cdf_tk.utils import humanize_collection
|
|
9
9
|
|
|
10
10
|
_ACL_CLASS_BY_CLASS_NAME = {cap.__name__: cap for cap in _CAPABILITY_CLASS_BY_NAME.values()}
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
from collections.abc import Iterable, Sequence
|
|
2
|
+
from typing import Any, Literal
|
|
3
|
+
|
|
4
|
+
from cognite_toolkit._cdf_tk.client.cdf_client import CDFResourceAPI, PagedResponse, ResponseItems
|
|
5
|
+
from cognite_toolkit._cdf_tk.client.cdf_client.api import Endpoint
|
|
6
|
+
from cognite_toolkit._cdf_tk.client.http_client import HTTPClient, ItemsSuccessResponse2, SuccessResponse2
|
|
7
|
+
from cognite_toolkit._cdf_tk.client.request_classes.filters import ClassicFilter
|
|
8
|
+
from cognite_toolkit._cdf_tk.client.resource_classes.identifiers import InternalOrExternalId
|
|
9
|
+
from cognite_toolkit._cdf_tk.client.resource_classes.transformation import TransformationRequest, TransformationResponse
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
class TransformationsAPI(CDFResourceAPI[InternalOrExternalId, TransformationRequest, TransformationResponse]):
|
|
13
|
+
def __init__(self, http_client: HTTPClient) -> None:
|
|
14
|
+
super().__init__(
|
|
15
|
+
http_client=http_client,
|
|
16
|
+
method_endpoint_map={
|
|
17
|
+
"create": Endpoint(method="POST", path="/transformations", item_limit=1000),
|
|
18
|
+
"retrieve": Endpoint(method="POST", path="/transformations/byids", item_limit=1000),
|
|
19
|
+
"update": Endpoint(method="POST", path="/transformations/update", item_limit=1000),
|
|
20
|
+
"delete": Endpoint(method="POST", path="/transformations/delete", item_limit=1000),
|
|
21
|
+
"list": Endpoint(method="POST", path="/transformations/filter", item_limit=1000),
|
|
22
|
+
},
|
|
23
|
+
)
|
|
24
|
+
|
|
25
|
+
def _validate_page_response(
|
|
26
|
+
self, response: SuccessResponse2 | ItemsSuccessResponse2
|
|
27
|
+
) -> PagedResponse[TransformationResponse]:
|
|
28
|
+
return PagedResponse[TransformationResponse].model_validate_json(response.body)
|
|
29
|
+
|
|
30
|
+
def _reference_response(self, response: SuccessResponse2) -> ResponseItems[InternalOrExternalId]:
|
|
31
|
+
return ResponseItems[InternalOrExternalId].model_validate_json(response.body)
|
|
32
|
+
|
|
33
|
+
def create(self, items: Sequence[TransformationRequest]) -> list[TransformationResponse]:
|
|
34
|
+
"""Create transformations in CDF.
|
|
35
|
+
|
|
36
|
+
Args:
|
|
37
|
+
items: List of TransformationRequest objects to create.
|
|
38
|
+
Returns:
|
|
39
|
+
List of created TransformationResponse objects.
|
|
40
|
+
"""
|
|
41
|
+
return self._request_item_response(items, "create")
|
|
42
|
+
|
|
43
|
+
def retrieve(
|
|
44
|
+
self, items: Sequence[InternalOrExternalId], ignore_unknown_ids: bool = False, with_job_details: bool = False
|
|
45
|
+
) -> list[TransformationResponse]:
|
|
46
|
+
"""Retrieve transformations from CDF.
|
|
47
|
+
|
|
48
|
+
Args:
|
|
49
|
+
items: List of InternalOrExternalId objects to retrieve.
|
|
50
|
+
ignore_unknown_ids: Whether to ignore unknown IDs.
|
|
51
|
+
with_job_details: Whether the transformations will be returned with running job and last created job details.
|
|
52
|
+
Returns:
|
|
53
|
+
List of retrieved TransformationResponse objects.
|
|
54
|
+
"""
|
|
55
|
+
return self._request_item_response(
|
|
56
|
+
items,
|
|
57
|
+
method="retrieve",
|
|
58
|
+
extra_body={"ignoreUnknownIds": ignore_unknown_ids, "withJobDetails": with_job_details},
|
|
59
|
+
)
|
|
60
|
+
|
|
61
|
+
def update(
|
|
62
|
+
self, items: Sequence[TransformationRequest], mode: Literal["patch", "replace"] = "replace"
|
|
63
|
+
) -> list[TransformationResponse]:
|
|
64
|
+
"""Update transformations in CDF.
|
|
65
|
+
|
|
66
|
+
Args:
|
|
67
|
+
items: List of TransformationRequest objects to update.
|
|
68
|
+
mode: Update mode, either "patch" or "replace".
|
|
69
|
+
|
|
70
|
+
Returns:
|
|
71
|
+
List of updated TransformationResponse objects.
|
|
72
|
+
"""
|
|
73
|
+
return self._update(items, mode=mode)
|
|
74
|
+
|
|
75
|
+
def delete(self, items: Sequence[InternalOrExternalId], ignore_unknown_ids: bool = False) -> None:
|
|
76
|
+
"""Delete transformations from CDF.
|
|
77
|
+
|
|
78
|
+
Args:
|
|
79
|
+
items: List of InternalOrExternalId objects to delete.
|
|
80
|
+
ignore_unknown_ids: Whether to ignore unknown IDs.
|
|
81
|
+
"""
|
|
82
|
+
self._request_no_response(items, "delete", extra_body={"ignoreUnknownIds": ignore_unknown_ids})
|
|
83
|
+
|
|
84
|
+
def paginate(
|
|
85
|
+
self,
|
|
86
|
+
filter: ClassicFilter | None = None,
|
|
87
|
+
is_public: bool | None = None,
|
|
88
|
+
limit: int = 100,
|
|
89
|
+
cursor: str | None = None,
|
|
90
|
+
) -> PagedResponse[TransformationResponse]:
|
|
91
|
+
"""Iterate over all transformations in CDF.
|
|
92
|
+
|
|
93
|
+
Args:
|
|
94
|
+
filter: Filter by data set IDs.
|
|
95
|
+
is_public: Filter by public status.
|
|
96
|
+
limit: Maximum number of items to return.
|
|
97
|
+
cursor: Cursor for pagination.
|
|
98
|
+
|
|
99
|
+
Returns:
|
|
100
|
+
PagedResponse of TransformationResponse objects.
|
|
101
|
+
"""
|
|
102
|
+
filter_: dict[str, Any] = filter.dump() if filter else {}
|
|
103
|
+
if is_public is not None:
|
|
104
|
+
filter_["isPublic"] = is_public
|
|
105
|
+
|
|
106
|
+
return self._paginate(
|
|
107
|
+
cursor=cursor,
|
|
108
|
+
limit=limit,
|
|
109
|
+
body={"filter": filter_ or None},
|
|
110
|
+
)
|
|
111
|
+
|
|
112
|
+
def iterate(
|
|
113
|
+
self,
|
|
114
|
+
filter: ClassicFilter | None = None,
|
|
115
|
+
is_public: bool | None = None,
|
|
116
|
+
limit: int = 100,
|
|
117
|
+
) -> Iterable[list[TransformationResponse]]:
|
|
118
|
+
"""Iterate over all transformations in CDF.
|
|
119
|
+
|
|
120
|
+
Args:
|
|
121
|
+
filter: Filter by data set IDs.
|
|
122
|
+
is_public: Filter by public status.
|
|
123
|
+
limit: Maximum number of items to return per page.
|
|
124
|
+
|
|
125
|
+
Returns:
|
|
126
|
+
Iterable of lists of TransformationResponse objects.
|
|
127
|
+
"""
|
|
128
|
+
filter_: dict[str, Any] = filter.dump() if filter else {}
|
|
129
|
+
if is_public is not None:
|
|
130
|
+
filter_["isPublic"] = is_public
|
|
131
|
+
|
|
132
|
+
return self._iterate(
|
|
133
|
+
limit=limit,
|
|
134
|
+
body={"filter": filter_ or None},
|
|
135
|
+
)
|
|
136
|
+
|
|
137
|
+
def list(
|
|
138
|
+
self,
|
|
139
|
+
limit: int | None = 100,
|
|
140
|
+
) -> list[TransformationResponse]:
|
|
141
|
+
"""List all transformations in CDF.
|
|
142
|
+
|
|
143
|
+
Returns:
|
|
144
|
+
List of TransformationResponse objects.
|
|
145
|
+
"""
|
|
146
|
+
return self._list(limit=limit)
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
from collections.abc import Iterable, Sequence
|
|
2
|
+
from typing import Any
|
|
3
|
+
|
|
4
|
+
from cognite_toolkit._cdf_tk.client.cdf_client import CDFResourceAPI, PagedResponse, ResponseItems
|
|
5
|
+
from cognite_toolkit._cdf_tk.client.cdf_client.api import Endpoint
|
|
6
|
+
from cognite_toolkit._cdf_tk.client.http_client import HTTPClient, ItemsSuccessResponse2, SuccessResponse2
|
|
7
|
+
from cognite_toolkit._cdf_tk.client.resource_classes.identifiers import ExternalId
|
|
8
|
+
from cognite_toolkit._cdf_tk.client.resource_classes.workflow_trigger import (
|
|
9
|
+
WorkflowTriggerRequest,
|
|
10
|
+
WorkflowTriggerResponse,
|
|
11
|
+
)
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
class WorkflowTriggersAPI(CDFResourceAPI[ExternalId, WorkflowTriggerRequest, WorkflowTriggerResponse]):
|
|
15
|
+
def __init__(self, http_client: HTTPClient) -> None:
|
|
16
|
+
super().__init__(
|
|
17
|
+
http_client=http_client,
|
|
18
|
+
method_endpoint_map={
|
|
19
|
+
"upsert": Endpoint(method="POST", path="/workflows/triggers", item_limit=1),
|
|
20
|
+
"delete": Endpoint(method="POST", path="/workflows/triggers/delete", item_limit=1),
|
|
21
|
+
"list": Endpoint(method="GET", path="/workflows/triggers", item_limit=1000),
|
|
22
|
+
},
|
|
23
|
+
)
|
|
24
|
+
|
|
25
|
+
def _validate_page_response(
|
|
26
|
+
self, response: SuccessResponse2 | ItemsSuccessResponse2
|
|
27
|
+
) -> PagedResponse[WorkflowTriggerResponse]:
|
|
28
|
+
return PagedResponse[WorkflowTriggerResponse].model_validate_json(response.body)
|
|
29
|
+
|
|
30
|
+
def _reference_response(self, response: SuccessResponse2) -> ResponseItems[ExternalId]:
|
|
31
|
+
return ResponseItems[ExternalId].model_validate_json(response.body)
|
|
32
|
+
|
|
33
|
+
def create(self, items: Sequence[WorkflowTriggerRequest]) -> list[WorkflowTriggerResponse]:
|
|
34
|
+
"""Create or update workflow triggers in CDF.
|
|
35
|
+
|
|
36
|
+
Args:
|
|
37
|
+
items: List of WorkflowTriggerRequest objects to create or update.
|
|
38
|
+
Returns:
|
|
39
|
+
List of created/updated WorkflowTriggerResponse objects.
|
|
40
|
+
"""
|
|
41
|
+
return self._request_item_response(items, "upsert")
|
|
42
|
+
|
|
43
|
+
# This is a duplicate of the create method, included to standardize the API interface.
|
|
44
|
+
def update(self, items: Sequence[WorkflowTriggerRequest]) -> list[WorkflowTriggerResponse]:
|
|
45
|
+
"""Create or update workflow triggers in CDF.
|
|
46
|
+
|
|
47
|
+
Args:
|
|
48
|
+
items: List of WorkflowTriggerRequest objects to create or update.
|
|
49
|
+
Returns:
|
|
50
|
+
List of created/updated WorkflowTriggerResponse objects.
|
|
51
|
+
"""
|
|
52
|
+
return self.create(items)
|
|
53
|
+
|
|
54
|
+
def delete(self, items: Sequence[ExternalId]) -> None:
|
|
55
|
+
"""Delete workflow triggers from CDF.
|
|
56
|
+
|
|
57
|
+
Args:
|
|
58
|
+
items: List of ExternalId objects to delete.
|
|
59
|
+
"""
|
|
60
|
+
self._request_no_response(items, "delete")
|
|
61
|
+
|
|
62
|
+
def paginate(
|
|
63
|
+
self,
|
|
64
|
+
workflow_external_id: str | None = None,
|
|
65
|
+
workflow_version: str | None = None,
|
|
66
|
+
limit: int = 100,
|
|
67
|
+
cursor: str | None = None,
|
|
68
|
+
) -> PagedResponse[WorkflowTriggerResponse]:
|
|
69
|
+
"""Iterate over all workflow triggers in CDF.
|
|
70
|
+
|
|
71
|
+
Args:
|
|
72
|
+
workflow_external_id: Filter by workflow external ID.
|
|
73
|
+
workflow_version: Filter by workflow version.
|
|
74
|
+
limit: Maximum number of items to return.
|
|
75
|
+
cursor: Cursor for pagination.
|
|
76
|
+
|
|
77
|
+
Returns:
|
|
78
|
+
PagedResponse of WorkflowTriggerResponse objects.
|
|
79
|
+
"""
|
|
80
|
+
params: dict[str, Any] = {}
|
|
81
|
+
if workflow_external_id:
|
|
82
|
+
params["workflowExternalId"] = workflow_external_id
|
|
83
|
+
if workflow_version:
|
|
84
|
+
params["workflowVersion"] = workflow_version
|
|
85
|
+
|
|
86
|
+
return self._paginate(
|
|
87
|
+
cursor=cursor,
|
|
88
|
+
limit=limit,
|
|
89
|
+
params=params,
|
|
90
|
+
)
|
|
91
|
+
|
|
92
|
+
def iterate(
|
|
93
|
+
self,
|
|
94
|
+
workflow_external_id: str | None = None,
|
|
95
|
+
workflow_version: str | None = None,
|
|
96
|
+
limit: int = 100,
|
|
97
|
+
) -> Iterable[list[WorkflowTriggerResponse]]:
|
|
98
|
+
"""Iterate over all workflow triggers in CDF.
|
|
99
|
+
|
|
100
|
+
Args:
|
|
101
|
+
workflow_external_id: Filter by workflow external ID.
|
|
102
|
+
workflow_version: Filter by workflow version.
|
|
103
|
+
limit: Maximum number of items to return per page.
|
|
104
|
+
|
|
105
|
+
Returns:
|
|
106
|
+
Iterable of lists of WorkflowTriggerResponse objects.
|
|
107
|
+
"""
|
|
108
|
+
params: dict[str, Any] = {}
|
|
109
|
+
if workflow_external_id:
|
|
110
|
+
params["workflowExternalId"] = workflow_external_id
|
|
111
|
+
if workflow_version:
|
|
112
|
+
params["workflowVersion"] = workflow_version
|
|
113
|
+
|
|
114
|
+
return self._iterate(
|
|
115
|
+
limit=limit,
|
|
116
|
+
params=params,
|
|
117
|
+
)
|
|
118
|
+
|
|
119
|
+
def list(
|
|
120
|
+
self,
|
|
121
|
+
limit: int | None = 100,
|
|
122
|
+
) -> list[WorkflowTriggerResponse]:
|
|
123
|
+
"""List all workflow triggers in CDF.
|
|
124
|
+
|
|
125
|
+
Returns:
|
|
126
|
+
List of WorkflowTriggerResponse objects.
|
|
127
|
+
"""
|
|
128
|
+
return self._list(limit=limit)
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
from collections.abc import Iterable, Sequence
|
|
2
|
+
from typing import Any
|
|
3
|
+
|
|
4
|
+
from cognite_toolkit._cdf_tk.client.cdf_client import CDFResourceAPI, PagedResponse, ResponseItems
|
|
5
|
+
from cognite_toolkit._cdf_tk.client.cdf_client.api import Endpoint
|
|
6
|
+
from cognite_toolkit._cdf_tk.client.http_client import HTTPClient, ItemsSuccessResponse2, SuccessResponse2
|
|
7
|
+
from cognite_toolkit._cdf_tk.client.resource_classes.identifiers import WorkflowVersionId
|
|
8
|
+
from cognite_toolkit._cdf_tk.client.resource_classes.workflow_version import (
|
|
9
|
+
WorkflowVersionRequest,
|
|
10
|
+
WorkflowVersionResponse,
|
|
11
|
+
)
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
class WorkflowVersionsAPI(CDFResourceAPI[WorkflowVersionId, WorkflowVersionRequest, WorkflowVersionResponse]):
|
|
15
|
+
def __init__(self, http_client: HTTPClient) -> None:
|
|
16
|
+
super().__init__(
|
|
17
|
+
http_client=http_client,
|
|
18
|
+
method_endpoint_map={
|
|
19
|
+
"upsert": Endpoint(method="POST", path="/workflows/versions", item_limit=1),
|
|
20
|
+
"retrieve": Endpoint(
|
|
21
|
+
method="GET", path="/workflow/{workflowExternalId}/versions/{version}", item_limit=1
|
|
22
|
+
),
|
|
23
|
+
"delete": Endpoint(method="POST", path="/workflows/versions/delete", item_limit=100),
|
|
24
|
+
"list": Endpoint(method="POST", path="/workflows/versions/list", item_limit=1000),
|
|
25
|
+
},
|
|
26
|
+
)
|
|
27
|
+
|
|
28
|
+
def _validate_page_response(
|
|
29
|
+
self, response: SuccessResponse2 | ItemsSuccessResponse2
|
|
30
|
+
) -> PagedResponse[WorkflowVersionResponse]:
|
|
31
|
+
return PagedResponse[WorkflowVersionResponse].model_validate_json(response.body)
|
|
32
|
+
|
|
33
|
+
def _reference_response(self, response: SuccessResponse2) -> ResponseItems[WorkflowVersionId]:
|
|
34
|
+
return ResponseItems[WorkflowVersionId].model_validate_json(response.body)
|
|
35
|
+
|
|
36
|
+
def create(self, items: Sequence[WorkflowVersionRequest]) -> list[WorkflowVersionResponse]:
|
|
37
|
+
"""Create or update workflow versions in CDF.
|
|
38
|
+
|
|
39
|
+
Args:
|
|
40
|
+
items: List of WorkflowVersionRequest objects to create or update.
|
|
41
|
+
Returns:
|
|
42
|
+
List of created/updated WorkflowVersionResponse objects.
|
|
43
|
+
"""
|
|
44
|
+
return self._request_item_response(items, "upsert")
|
|
45
|
+
|
|
46
|
+
# This is a duplicate of the create method, included to standardize the API interface.
|
|
47
|
+
def update(self, items: Sequence[WorkflowVersionRequest]) -> list[WorkflowVersionResponse]:
|
|
48
|
+
"""Create or update workflow versions in CDF.
|
|
49
|
+
|
|
50
|
+
Args:
|
|
51
|
+
items: List of WorkflowVersionRequest objects to create or update.
|
|
52
|
+
Returns:
|
|
53
|
+
List of created/updated WorkflowVersionResponse objects.
|
|
54
|
+
"""
|
|
55
|
+
return self.create(items)
|
|
56
|
+
|
|
57
|
+
def retrieve(self, items: Sequence[WorkflowVersionId]) -> list[WorkflowVersionResponse]:
|
|
58
|
+
"""Retrieve workflow versions from CDF.
|
|
59
|
+
|
|
60
|
+
Args:
|
|
61
|
+
items: List of WorkflowVersionId objects to retrieve.
|
|
62
|
+
Returns:
|
|
63
|
+
List of retrieved WorkflowVersionResponse objects.
|
|
64
|
+
"""
|
|
65
|
+
result: list[WorkflowVersionResponse] = []
|
|
66
|
+
for item in items:
|
|
67
|
+
endpoint = f"/workflows/{item.workflow_external_id}/versions/{item.version}"
|
|
68
|
+
retrieved = self._request_item_response([item], "retrieve", endpoint=endpoint)
|
|
69
|
+
result.extend(retrieved)
|
|
70
|
+
return result
|
|
71
|
+
|
|
72
|
+
def delete(self, items: Sequence[WorkflowVersionId]) -> None:
|
|
73
|
+
"""Delete workflow versions from CDF.
|
|
74
|
+
|
|
75
|
+
Args:
|
|
76
|
+
items: List of WorkflowVersionId objects to delete.
|
|
77
|
+
"""
|
|
78
|
+
self._request_no_response(items, "delete")
|
|
79
|
+
|
|
80
|
+
def paginate(
|
|
81
|
+
self,
|
|
82
|
+
workflow_external_id: str | None = None,
|
|
83
|
+
limit: int = 100,
|
|
84
|
+
cursor: str | None = None,
|
|
85
|
+
) -> PagedResponse[WorkflowVersionResponse]:
|
|
86
|
+
"""Iterate over all workflow versions in CDF.
|
|
87
|
+
|
|
88
|
+
Args:
|
|
89
|
+
workflow_external_id: Filter by workflow external ID.
|
|
90
|
+
limit: Maximum number of items to return.
|
|
91
|
+
cursor: Cursor for pagination.
|
|
92
|
+
|
|
93
|
+
Returns:
|
|
94
|
+
PagedResponse of WorkflowVersionResponse objects.
|
|
95
|
+
"""
|
|
96
|
+
body: dict[str, Any] = {}
|
|
97
|
+
if workflow_external_id:
|
|
98
|
+
body["workflowExternalId"] = workflow_external_id
|
|
99
|
+
|
|
100
|
+
return self._paginate(
|
|
101
|
+
cursor=cursor,
|
|
102
|
+
limit=limit,
|
|
103
|
+
body=body,
|
|
104
|
+
)
|
|
105
|
+
|
|
106
|
+
def iterate(
|
|
107
|
+
self,
|
|
108
|
+
workflow_external_id: str | None = None,
|
|
109
|
+
limit: int = 100,
|
|
110
|
+
) -> Iterable[list[WorkflowVersionResponse]]:
|
|
111
|
+
"""Iterate over all workflow versions in CDF.
|
|
112
|
+
|
|
113
|
+
Args:
|
|
114
|
+
workflow_external_id: Filter by workflow external ID.
|
|
115
|
+
limit: Maximum number of items to return per page.
|
|
116
|
+
|
|
117
|
+
Returns:
|
|
118
|
+
Iterable of lists of WorkflowVersionResponse objects.
|
|
119
|
+
"""
|
|
120
|
+
body: dict[str, Any] = {}
|
|
121
|
+
if workflow_external_id:
|
|
122
|
+
body["workflowExternalId"] = workflow_external_id
|
|
123
|
+
|
|
124
|
+
return self._iterate(
|
|
125
|
+
limit=limit,
|
|
126
|
+
body=body,
|
|
127
|
+
)
|
|
128
|
+
|
|
129
|
+
def list(
|
|
130
|
+
self,
|
|
131
|
+
limit: int | None = 100,
|
|
132
|
+
) -> list[WorkflowVersionResponse]:
|
|
133
|
+
"""List all workflow versions in CDF.
|
|
134
|
+
|
|
135
|
+
Returns:
|
|
136
|
+
List of WorkflowVersionResponse objects.
|
|
137
|
+
"""
|
|
138
|
+
return self._list(limit=limit)
|