cognite-toolkit 0.7.45__py3-none-any.whl → 0.7.47__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/agents.py +107 -0
- cognite_toolkit/_cdf_tk/client/api/annotations.py +129 -0
- cognite_toolkit/_cdf_tk/client/api/assets.py +30 -18
- cognite_toolkit/_cdf_tk/client/api/containers.py +132 -0
- cognite_toolkit/_cdf_tk/client/api/data_models.py +137 -0
- 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/function_schedules.py +115 -0
- cognite_toolkit/_cdf_tk/client/api/functions.py +113 -0
- cognite_toolkit/_cdf_tk/client/api/graphql_data_models.py +167 -0
- cognite_toolkit/_cdf_tk/client/api/groups.py +121 -0
- 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/relationships.py +133 -0
- 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/spaces.py +117 -0
- 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/views.py +139 -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 +44 -40
- cognite_toolkit/_cdf_tk/client/cdf_client/responses.py +11 -0
- cognite_toolkit/_cdf_tk/client/http_client/_data_classes.py +10 -0
- 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 +69 -0
- cognite_toolkit/_cdf_tk/client/request_classes/graphql.py +28 -0
- cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes}/agent.py +9 -3
- 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 +65 -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 +63 -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 +49 -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.47.dist-info}/METADATA +3 -3
- {cognite_toolkit-0.7.45.dist-info → cognite_toolkit-0.7.47.dist-info}/RECORD +203 -152
- {cognite_toolkit-0.7.45.dist-info → cognite_toolkit-0.7.47.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.47.dist-info}/entry_points.txt +0 -0
|
@@ -0,0 +1,141 @@
|
|
|
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.resource_classes.dataset import DataSetRequest, DataSetResponse
|
|
8
|
+
from cognite_toolkit._cdf_tk.client.resource_classes.identifiers import InternalOrExternalId
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
class DataSetsAPI(CDFResourceAPI[InternalOrExternalId, DataSetRequest, DataSetResponse]):
|
|
12
|
+
def __init__(self, http_client: HTTPClient) -> None:
|
|
13
|
+
super().__init__(
|
|
14
|
+
http_client=http_client,
|
|
15
|
+
method_endpoint_map={
|
|
16
|
+
"create": Endpoint(method="POST", path="/datasets", item_limit=10, concurrency_max_workers=1),
|
|
17
|
+
"retrieve": Endpoint(method="POST", path="/datasets/byids", item_limit=1000, concurrency_max_workers=1),
|
|
18
|
+
"update": Endpoint(method="POST", path="/datasets/update", item_limit=1000, concurrency_max_workers=1),
|
|
19
|
+
"list": Endpoint(method="POST", path="/datasets/list", item_limit=1000),
|
|
20
|
+
},
|
|
21
|
+
)
|
|
22
|
+
|
|
23
|
+
def _validate_page_response(
|
|
24
|
+
self, response: SuccessResponse2 | ItemsSuccessResponse2
|
|
25
|
+
) -> PagedResponse[DataSetResponse]:
|
|
26
|
+
return PagedResponse[DataSetResponse].model_validate_json(response.body)
|
|
27
|
+
|
|
28
|
+
def _reference_response(self, response: SuccessResponse2) -> ResponseItems[InternalOrExternalId]:
|
|
29
|
+
return ResponseItems[InternalOrExternalId].model_validate_json(response.body)
|
|
30
|
+
|
|
31
|
+
def create(self, items: Sequence[DataSetRequest]) -> list[DataSetResponse]:
|
|
32
|
+
"""Create data sets in CDF.
|
|
33
|
+
|
|
34
|
+
Args:
|
|
35
|
+
items: List of DataSetRequest objects to create.
|
|
36
|
+
Returns:
|
|
37
|
+
List of created DataSetResponse objects.
|
|
38
|
+
"""
|
|
39
|
+
return self._request_item_response(items, "create")
|
|
40
|
+
|
|
41
|
+
def retrieve(
|
|
42
|
+
self, items: Sequence[InternalOrExternalId], ignore_unknown_ids: bool = False
|
|
43
|
+
) -> list[DataSetResponse]:
|
|
44
|
+
"""Retrieve data sets from CDF.
|
|
45
|
+
|
|
46
|
+
Args:
|
|
47
|
+
items: List of InternalOrExternalId objects to retrieve.
|
|
48
|
+
ignore_unknown_ids: Whether to ignore unknown IDs.
|
|
49
|
+
Returns:
|
|
50
|
+
List of retrieved DataSetResponse objects.
|
|
51
|
+
"""
|
|
52
|
+
return self._request_item_response(
|
|
53
|
+
items, method="retrieve", extra_body={"ignoreUnknownIds": ignore_unknown_ids}
|
|
54
|
+
)
|
|
55
|
+
|
|
56
|
+
def update(
|
|
57
|
+
self, items: Sequence[DataSetRequest], mode: Literal["patch", "replace"] = "replace"
|
|
58
|
+
) -> list[DataSetResponse]:
|
|
59
|
+
"""Update data sets in CDF.
|
|
60
|
+
|
|
61
|
+
Args:
|
|
62
|
+
items: List of DataSetRequest objects to update.
|
|
63
|
+
mode: Update mode, either "patch" or "replace".
|
|
64
|
+
|
|
65
|
+
Returns:
|
|
66
|
+
List of updated DataSetResponse objects.
|
|
67
|
+
"""
|
|
68
|
+
return self._update(items, mode=mode)
|
|
69
|
+
|
|
70
|
+
def paginate(
|
|
71
|
+
self,
|
|
72
|
+
metadata: dict[str, str] | None = None,
|
|
73
|
+
external_id_prefix: str | None = None,
|
|
74
|
+
write_protected: bool | None = None,
|
|
75
|
+
limit: int = 100,
|
|
76
|
+
cursor: str | None = None,
|
|
77
|
+
) -> PagedResponse[DataSetResponse]:
|
|
78
|
+
"""Iterate over all data sets in CDF.
|
|
79
|
+
|
|
80
|
+
Args:
|
|
81
|
+
metadata: Filter by metadata.
|
|
82
|
+
external_id_prefix: Filter by external ID prefix.
|
|
83
|
+
write_protected: Filter by write protection status.
|
|
84
|
+
limit: Maximum number of items to return.
|
|
85
|
+
cursor: Cursor for pagination.
|
|
86
|
+
|
|
87
|
+
Returns:
|
|
88
|
+
PagedResponse of DataSetResponse objects.
|
|
89
|
+
"""
|
|
90
|
+
filter_body: dict[str, Any] = {}
|
|
91
|
+
if metadata is not None:
|
|
92
|
+
filter_body["metadata"] = metadata
|
|
93
|
+
if external_id_prefix is not None:
|
|
94
|
+
filter_body["externalIdPrefix"] = external_id_prefix
|
|
95
|
+
if write_protected is not None:
|
|
96
|
+
filter_body["writeProtected"] = write_protected
|
|
97
|
+
|
|
98
|
+
return self._paginate(
|
|
99
|
+
cursor=cursor,
|
|
100
|
+
limit=limit,
|
|
101
|
+
body={"filter": filter_body} if filter_body else {},
|
|
102
|
+
)
|
|
103
|
+
|
|
104
|
+
def iterate(
|
|
105
|
+
self,
|
|
106
|
+
metadata: dict[str, str] | None = None,
|
|
107
|
+
external_id_prefix: str | None = None,
|
|
108
|
+
write_protected: bool | None = None,
|
|
109
|
+
limit: int = 100,
|
|
110
|
+
) -> Iterable[list[DataSetResponse]]:
|
|
111
|
+
"""Iterate over all data sets in CDF.
|
|
112
|
+
|
|
113
|
+
Args:
|
|
114
|
+
metadata: Filter by metadata.
|
|
115
|
+
external_id_prefix: Filter by external ID prefix.
|
|
116
|
+
write_protected: Filter by write protection status.
|
|
117
|
+
limit: Maximum number of items to return per page.
|
|
118
|
+
|
|
119
|
+
Returns:
|
|
120
|
+
Iterable of lists of DataSetResponse objects.
|
|
121
|
+
"""
|
|
122
|
+
filter_body: dict[str, Any] = {}
|
|
123
|
+
if metadata is not None:
|
|
124
|
+
filter_body["metadata"] = metadata
|
|
125
|
+
if external_id_prefix is not None:
|
|
126
|
+
filter_body["externalIdPrefix"] = external_id_prefix
|
|
127
|
+
if write_protected is not None:
|
|
128
|
+
filter_body["writeProtected"] = write_protected
|
|
129
|
+
|
|
130
|
+
return self._iterate(
|
|
131
|
+
limit=limit,
|
|
132
|
+
body={"filter": filter_body} if filter_body else {},
|
|
133
|
+
)
|
|
134
|
+
|
|
135
|
+
def list(self, limit: int | None = 100) -> list[DataSetResponse]:
|
|
136
|
+
"""List all data sets in CDF.
|
|
137
|
+
|
|
138
|
+
Returns:
|
|
139
|
+
List of DataSetResponse objects.
|
|
140
|
+
"""
|
|
141
|
+
return self._list(limit=limit)
|
|
@@ -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.event import EventRequest, EventResponse
|
|
7
|
-
from cognite_toolkit._cdf_tk.client.data_classes.identifiers import InternalOrExternalId
|
|
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.event import EventRequest, EventResponse
|
|
9
|
+
from cognite_toolkit._cdf_tk.client.resource_classes.identifiers import InternalOrExternalId
|
|
9
10
|
|
|
10
11
|
|
|
11
12
|
class EventsAPI(CDFResourceAPI[InternalOrExternalId, EventRequest, EventResponse]):
|
|
@@ -21,7 +22,9 @@ class EventsAPI(CDFResourceAPI[InternalOrExternalId, EventRequest, EventResponse
|
|
|
21
22
|
},
|
|
22
23
|
)
|
|
23
24
|
|
|
24
|
-
def
|
|
25
|
+
def _validate_page_response(
|
|
26
|
+
self, response: SuccessResponse2 | ItemsSuccessResponse2
|
|
27
|
+
) -> PagedResponse[EventResponse]:
|
|
25
28
|
return PagedResponse[EventResponse].model_validate_json(response.body)
|
|
26
29
|
|
|
27
30
|
def _reference_response(self, response: SuccessResponse2) -> ResponseItems[InternalOrExternalId]:
|
|
@@ -73,34 +76,45 @@ class EventsAPI(CDFResourceAPI[InternalOrExternalId, EventRequest, EventResponse
|
|
|
73
76
|
"""
|
|
74
77
|
self._request_no_response(items, "delete", extra_body={"ignoreUnknownIds": ignore_unknown_ids})
|
|
75
78
|
|
|
76
|
-
def
|
|
79
|
+
def paginate(
|
|
77
80
|
self,
|
|
78
|
-
|
|
79
|
-
asset_subtree_external_ids: list[str] | None = None,
|
|
81
|
+
filter: ClassicFilter | None = None,
|
|
80
82
|
limit: int = 100,
|
|
81
83
|
cursor: str | None = None,
|
|
82
84
|
) -> PagedResponse[EventResponse]:
|
|
83
85
|
"""Iterate over all events in CDF.
|
|
84
86
|
|
|
85
87
|
Args:
|
|
86
|
-
|
|
87
|
-
asset_subtree_external_ids: Filter by asset subtree external IDs.
|
|
88
|
+
filter: Filter by data set IDs and/or asset subtree IDs.
|
|
88
89
|
limit: Maximum number of items to return.
|
|
89
90
|
cursor: Cursor for pagination.
|
|
90
91
|
|
|
91
92
|
Returns:
|
|
92
93
|
PagedResponse of EventResponse objects.
|
|
93
94
|
"""
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
95
|
+
return self._paginate(
|
|
96
|
+
cursor=cursor,
|
|
97
|
+
limit=limit,
|
|
98
|
+
body={"filter": filter.dump() if filter else None},
|
|
99
|
+
)
|
|
99
100
|
|
|
101
|
+
def iterate(
|
|
102
|
+
self,
|
|
103
|
+
filter: ClassicFilter | None = None,
|
|
104
|
+
limit: int | None = 100,
|
|
105
|
+
) -> Iterable[list[EventResponse]]:
|
|
106
|
+
"""Iterate over all events in CDF.
|
|
107
|
+
|
|
108
|
+
Args:
|
|
109
|
+
filter: Filter by data set IDs and/or asset subtree IDs.
|
|
110
|
+
limit: Maximum number of items to return per page.
|
|
111
|
+
|
|
112
|
+
Returns:
|
|
113
|
+
Iterable of lists of EventResponse objects.
|
|
114
|
+
"""
|
|
100
115
|
return self._iterate(
|
|
101
|
-
cursor=cursor,
|
|
102
116
|
limit=limit,
|
|
103
|
-
body={"filter":
|
|
117
|
+
body={"filter": filter.dump() if filter else None},
|
|
104
118
|
)
|
|
105
119
|
|
|
106
120
|
def list(
|
|
@@ -0,0 +1,148 @@
|
|
|
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.extraction_pipeline import (
|
|
9
|
+
ExtractionPipelineRequest,
|
|
10
|
+
ExtractionPipelineResponse,
|
|
11
|
+
)
|
|
12
|
+
from cognite_toolkit._cdf_tk.client.resource_classes.identifiers import InternalOrExternalId
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
class ExtractionPipelinesAPI(
|
|
16
|
+
CDFResourceAPI[InternalOrExternalId, ExtractionPipelineRequest, ExtractionPipelineResponse]
|
|
17
|
+
):
|
|
18
|
+
def __init__(self, http_client: HTTPClient) -> None:
|
|
19
|
+
super().__init__(
|
|
20
|
+
http_client=http_client,
|
|
21
|
+
method_endpoint_map={
|
|
22
|
+
"create": Endpoint(method="POST", path="/extpipes", item_limit=1000, concurrency_max_workers=1),
|
|
23
|
+
"retrieve": Endpoint(method="POST", path="/extpipes/byids", item_limit=1000, concurrency_max_workers=1),
|
|
24
|
+
"update": Endpoint(method="POST", path="/extpipes/update", item_limit=1000, concurrency_max_workers=1),
|
|
25
|
+
"delete": Endpoint(method="POST", path="/extpipes/delete", item_limit=1000, concurrency_max_workers=1),
|
|
26
|
+
"list": Endpoint(method="POST", path="/extpipes/list", item_limit=1000),
|
|
27
|
+
},
|
|
28
|
+
)
|
|
29
|
+
|
|
30
|
+
def _validate_page_response(
|
|
31
|
+
self, response: SuccessResponse2 | ItemsSuccessResponse2
|
|
32
|
+
) -> PagedResponse[ExtractionPipelineResponse]:
|
|
33
|
+
return PagedResponse[ExtractionPipelineResponse].model_validate_json(response.body)
|
|
34
|
+
|
|
35
|
+
def _reference_response(self, response: SuccessResponse2) -> ResponseItems[InternalOrExternalId]:
|
|
36
|
+
return ResponseItems[InternalOrExternalId].model_validate_json(response.body)
|
|
37
|
+
|
|
38
|
+
def create(self, items: Sequence[ExtractionPipelineRequest]) -> list[ExtractionPipelineResponse]:
|
|
39
|
+
"""Create extraction pipelines in CDF.
|
|
40
|
+
|
|
41
|
+
Args:
|
|
42
|
+
items: List of ExtractionPipelineRequest objects to create.
|
|
43
|
+
Returns:
|
|
44
|
+
List of created ExtractionPipelineResponse objects.
|
|
45
|
+
"""
|
|
46
|
+
return self._request_item_response(items, "create")
|
|
47
|
+
|
|
48
|
+
def retrieve(
|
|
49
|
+
self, items: Sequence[InternalOrExternalId], ignore_unknown_ids: bool = False
|
|
50
|
+
) -> list[ExtractionPipelineResponse]:
|
|
51
|
+
"""Retrieve extraction pipelines from CDF.
|
|
52
|
+
|
|
53
|
+
Args:
|
|
54
|
+
items: List of InternalOrExternalId objects to retrieve.
|
|
55
|
+
ignore_unknown_ids: Whether to ignore unknown IDs.
|
|
56
|
+
Returns:
|
|
57
|
+
List of retrieved ExtractionPipelineResponse objects.
|
|
58
|
+
"""
|
|
59
|
+
return self._request_item_response(
|
|
60
|
+
items, method="retrieve", extra_body={"ignoreUnknownIds": ignore_unknown_ids}
|
|
61
|
+
)
|
|
62
|
+
|
|
63
|
+
def update(
|
|
64
|
+
self, items: Sequence[ExtractionPipelineRequest], mode: Literal["patch", "replace"] = "replace"
|
|
65
|
+
) -> list[ExtractionPipelineResponse]:
|
|
66
|
+
"""Update extraction pipelines in CDF.
|
|
67
|
+
|
|
68
|
+
Args:
|
|
69
|
+
items: List of ExtractionPipelineRequest objects to update.
|
|
70
|
+
mode: Update mode, either "patch" or "replace".
|
|
71
|
+
|
|
72
|
+
Returns:
|
|
73
|
+
List of updated ExtractionPipelineResponse objects.
|
|
74
|
+
"""
|
|
75
|
+
return self._update(items, mode=mode)
|
|
76
|
+
|
|
77
|
+
def delete(self, items: Sequence[InternalOrExternalId], ignore_unknown_ids: bool = False) -> None:
|
|
78
|
+
"""Delete extraction pipelines from CDF.
|
|
79
|
+
|
|
80
|
+
Args:
|
|
81
|
+
items: List of InternalOrExternalId objects to delete.
|
|
82
|
+
ignore_unknown_ids: Whether to ignore unknown IDs.
|
|
83
|
+
"""
|
|
84
|
+
self._request_no_response(items, "delete", extra_body={"ignoreUnknownIds": ignore_unknown_ids})
|
|
85
|
+
|
|
86
|
+
def paginate(
|
|
87
|
+
self,
|
|
88
|
+
filter: ClassicFilter | None = None,
|
|
89
|
+
external_id_prefix: str | None = None,
|
|
90
|
+
limit: int = 100,
|
|
91
|
+
cursor: str | None = None,
|
|
92
|
+
) -> PagedResponse[ExtractionPipelineResponse]:
|
|
93
|
+
"""Iterate over all extraction pipelines in CDF.
|
|
94
|
+
|
|
95
|
+
Args:
|
|
96
|
+
filter: Filter by data set IDs.
|
|
97
|
+
external_id_prefix: Filter by external ID prefix.
|
|
98
|
+
limit: Maximum number of items to return.
|
|
99
|
+
cursor: Cursor for pagination.
|
|
100
|
+
|
|
101
|
+
Returns:
|
|
102
|
+
PagedResponse of ExtractionPipelineResponse objects.
|
|
103
|
+
"""
|
|
104
|
+
filter_body: dict[str, Any] = filter.dump() if filter else {}
|
|
105
|
+
if external_id_prefix is not None:
|
|
106
|
+
filter_body["externalIdPrefix"] = external_id_prefix
|
|
107
|
+
|
|
108
|
+
return self._paginate(
|
|
109
|
+
cursor=cursor,
|
|
110
|
+
limit=limit,
|
|
111
|
+
body={"filter": filter_body} if filter_body else None,
|
|
112
|
+
)
|
|
113
|
+
|
|
114
|
+
def iterate(
|
|
115
|
+
self,
|
|
116
|
+
filter: ClassicFilter | None = None,
|
|
117
|
+
external_id_prefix: str | None = None,
|
|
118
|
+
limit: int = 100,
|
|
119
|
+
) -> Iterable[list[ExtractionPipelineResponse]]:
|
|
120
|
+
"""Iterate over all extraction pipelines in CDF.
|
|
121
|
+
|
|
122
|
+
Args:
|
|
123
|
+
filter: Filter by data set IDs.
|
|
124
|
+
external_id_prefix: Filter by external ID prefix.
|
|
125
|
+
limit: Maximum number of items to return per page.
|
|
126
|
+
|
|
127
|
+
Returns:
|
|
128
|
+
Iterable of lists of ExtractionPipelineResponse objects.
|
|
129
|
+
"""
|
|
130
|
+
filter_body: dict[str, Any] = filter.dump() if filter else {}
|
|
131
|
+
if external_id_prefix is not None:
|
|
132
|
+
filter_body["externalIdPrefix"] = external_id_prefix
|
|
133
|
+
|
|
134
|
+
return self._iterate(
|
|
135
|
+
limit=limit,
|
|
136
|
+
body={"filter": filter_body} if filter_body else None,
|
|
137
|
+
)
|
|
138
|
+
|
|
139
|
+
def list(
|
|
140
|
+
self,
|
|
141
|
+
limit: int | None = 100,
|
|
142
|
+
) -> list[ExtractionPipelineResponse]:
|
|
143
|
+
"""List all extraction pipelines in CDF.
|
|
144
|
+
|
|
145
|
+
Returns:
|
|
146
|
+
List of ExtractionPipelineResponse objects.
|
|
147
|
+
"""
|
|
148
|
+
return self._list(limit=limit)
|
|
@@ -1,16 +1,17 @@
|
|
|
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.filemetadata import FileMetadataRequest, FileMetadataResponse
|
|
7
|
-
from cognite_toolkit._cdf_tk.client.data_classes.identifiers import InternalOrExternalId
|
|
8
6
|
from cognite_toolkit._cdf_tk.client.http_client import (
|
|
9
7
|
HTTPClient,
|
|
10
8
|
ItemsSuccessResponse2,
|
|
11
9
|
RequestMessage2,
|
|
12
10
|
SuccessResponse2,
|
|
13
11
|
)
|
|
12
|
+
from cognite_toolkit._cdf_tk.client.request_classes.filters import ClassicFilter
|
|
13
|
+
from cognite_toolkit._cdf_tk.client.resource_classes.filemetadata import FileMetadataRequest, FileMetadataResponse
|
|
14
|
+
from cognite_toolkit._cdf_tk.client.resource_classes.identifiers import InternalOrExternalId
|
|
14
15
|
|
|
15
16
|
|
|
16
17
|
class FileMetadataAPI(CDFResourceAPI[InternalOrExternalId, FileMetadataRequest, FileMetadataResponse]):
|
|
@@ -26,7 +27,9 @@ class FileMetadataAPI(CDFResourceAPI[InternalOrExternalId, FileMetadataRequest,
|
|
|
26
27
|
},
|
|
27
28
|
)
|
|
28
29
|
|
|
29
|
-
def
|
|
30
|
+
def _validate_page_response(
|
|
31
|
+
self, response: SuccessResponse2 | ItemsSuccessResponse2
|
|
32
|
+
) -> PagedResponse[FileMetadataResponse]:
|
|
30
33
|
return PagedResponse[FileMetadataResponse].model_validate_json(response.body)
|
|
31
34
|
|
|
32
35
|
def _reference_response(self, response: SuccessResponse2) -> ResponseItems[InternalOrExternalId]:
|
|
@@ -56,7 +59,7 @@ class FileMetadataAPI(CDFResourceAPI[InternalOrExternalId, FileMetadataRequest,
|
|
|
56
59
|
)
|
|
57
60
|
response = self._http_client.request_single_retries(request)
|
|
58
61
|
result = response.get_success_or_raise()
|
|
59
|
-
results.
|
|
62
|
+
results.append(FileMetadataResponse.model_validate_json(result.body))
|
|
60
63
|
return results
|
|
61
64
|
|
|
62
65
|
def retrieve(
|
|
@@ -97,10 +100,9 @@ class FileMetadataAPI(CDFResourceAPI[InternalOrExternalId, FileMetadataRequest,
|
|
|
97
100
|
"""
|
|
98
101
|
self._request_no_response(items, "delete", extra_body={"ignoreUnknownIds": ignore_unknown_ids})
|
|
99
102
|
|
|
100
|
-
def
|
|
103
|
+
def paginate(
|
|
101
104
|
self,
|
|
102
|
-
|
|
103
|
-
asset_subtree_external_ids: list[str] | None = None,
|
|
105
|
+
filter: ClassicFilter | None = None,
|
|
104
106
|
directory_prefix: str | None = None,
|
|
105
107
|
uploaded: bool | None = None,
|
|
106
108
|
limit: int = 100,
|
|
@@ -109,8 +111,7 @@ class FileMetadataAPI(CDFResourceAPI[InternalOrExternalId, FileMetadataRequest,
|
|
|
109
111
|
"""Iterate over file metadata in CDF.
|
|
110
112
|
|
|
111
113
|
Args:
|
|
112
|
-
|
|
113
|
-
asset_subtree_external_ids: Filter by asset subtree external IDs.
|
|
114
|
+
filter: Filter by data set IDs and/or asset subtree IDs.
|
|
114
115
|
directory_prefix: Filter by directory prefix.
|
|
115
116
|
uploaded: Filter by upload status.
|
|
116
117
|
limit: Maximum number of items to return per page.
|
|
@@ -119,22 +120,47 @@ class FileMetadataAPI(CDFResourceAPI[InternalOrExternalId, FileMetadataRequest,
|
|
|
119
120
|
Returns:
|
|
120
121
|
PagedResponse of FileMetadataResponse objects.
|
|
121
122
|
"""
|
|
122
|
-
filter_: dict[str, Any] = {}
|
|
123
|
-
if asset_subtree_external_ids:
|
|
124
|
-
filter_["assetSubtreeIds"] = [{"externalId": ext_id} for ext_id in asset_subtree_external_ids]
|
|
125
|
-
if data_set_external_ids:
|
|
126
|
-
filter_["dataSetIds"] = [{"externalId": ds_id} for ds_id in data_set_external_ids]
|
|
123
|
+
filter_: dict[str, Any] = filter.dump() if filter else {}
|
|
127
124
|
if directory_prefix is not None:
|
|
128
125
|
filter_["directoryPrefix"] = directory_prefix
|
|
129
126
|
if uploaded is not None:
|
|
130
127
|
filter_["uploaded"] = uploaded
|
|
131
128
|
|
|
132
|
-
return self.
|
|
129
|
+
return self._paginate(
|
|
133
130
|
cursor=cursor,
|
|
134
131
|
limit=limit,
|
|
135
132
|
body={"filter": filter_ or None},
|
|
136
133
|
)
|
|
137
134
|
|
|
135
|
+
def iterate(
|
|
136
|
+
self,
|
|
137
|
+
filter: ClassicFilter | None = None,
|
|
138
|
+
directory_prefix: str | None = None,
|
|
139
|
+
uploaded: bool | None = None,
|
|
140
|
+
limit: int | None = 100,
|
|
141
|
+
) -> Iterable[list[FileMetadataResponse]]:
|
|
142
|
+
"""Iterate over file metadata in CDF.
|
|
143
|
+
|
|
144
|
+
Args:
|
|
145
|
+
filter: Filter by data set IDs and/or asset subtree IDs.
|
|
146
|
+
directory_prefix: Filter by directory prefix.
|
|
147
|
+
uploaded: Filter by upload status.
|
|
148
|
+
limit: Maximum number of items to return per page.
|
|
149
|
+
|
|
150
|
+
Returns:
|
|
151
|
+
Iterable of lists of FileMetadataResponse objects.
|
|
152
|
+
"""
|
|
153
|
+
filter_: dict[str, Any] = filter.dump() if filter else {}
|
|
154
|
+
if directory_prefix is not None:
|
|
155
|
+
filter_["directoryPrefix"] = directory_prefix
|
|
156
|
+
if uploaded is not None:
|
|
157
|
+
filter_["uploaded"] = uploaded
|
|
158
|
+
|
|
159
|
+
return self._iterate(
|
|
160
|
+
limit=limit,
|
|
161
|
+
body={"filter": filter_ or None},
|
|
162
|
+
)
|
|
163
|
+
|
|
138
164
|
def list(
|
|
139
165
|
self,
|
|
140
166
|
limit: int | None = 100,
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
"""Function Schedules API for managing CDF function schedules.
|
|
2
|
+
|
|
3
|
+
Based on the API specification at:
|
|
4
|
+
https://api-docs.cognite.com/20230101/tag/Function-schedules/operation/postFunctionSchedules
|
|
5
|
+
"""
|
|
6
|
+
|
|
7
|
+
from collections.abc import Iterable, Sequence
|
|
8
|
+
|
|
9
|
+
from cognite_toolkit._cdf_tk.client.cdf_client import CDFResourceAPI, Endpoint, PagedResponse
|
|
10
|
+
from cognite_toolkit._cdf_tk.client.http_client import HTTPClient, ItemsSuccessResponse2, SuccessResponse2
|
|
11
|
+
from cognite_toolkit._cdf_tk.client.resource_classes.function_schedule import (
|
|
12
|
+
FunctionScheduleRequest,
|
|
13
|
+
FunctionScheduleResponse,
|
|
14
|
+
)
|
|
15
|
+
from cognite_toolkit._cdf_tk.client.resource_classes.identifiers import InternalId
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
class FunctionSchedulesAPI(CDFResourceAPI[InternalId, FunctionScheduleRequest, FunctionScheduleResponse]):
|
|
19
|
+
"""API for managing CDF function schedules.
|
|
20
|
+
|
|
21
|
+
Note: Function schedules do not support update operations.
|
|
22
|
+
"""
|
|
23
|
+
|
|
24
|
+
def __init__(self, http_client: HTTPClient) -> None:
|
|
25
|
+
super().__init__(
|
|
26
|
+
http_client=http_client,
|
|
27
|
+
method_endpoint_map={
|
|
28
|
+
"create": Endpoint(method="POST", path="/functions/schedules", item_limit=1),
|
|
29
|
+
"retrieve": Endpoint(method="POST", path="/functions/schedules/byids", item_limit=10_000),
|
|
30
|
+
"delete": Endpoint(method="POST", path="/functions/schedules/delete", item_limit=10_000),
|
|
31
|
+
"list": Endpoint(method="POST", path="/functions/schedules/list", item_limit=1000),
|
|
32
|
+
},
|
|
33
|
+
)
|
|
34
|
+
|
|
35
|
+
def _validate_page_response(
|
|
36
|
+
self, response: SuccessResponse2 | ItemsSuccessResponse2
|
|
37
|
+
) -> PagedResponse[FunctionScheduleResponse]:
|
|
38
|
+
return PagedResponse[FunctionScheduleResponse].model_validate_json(response.body)
|
|
39
|
+
|
|
40
|
+
def create(self, items: Sequence[FunctionScheduleRequest]) -> list[FunctionScheduleResponse]:
|
|
41
|
+
"""Create function schedules in CDF.
|
|
42
|
+
|
|
43
|
+
Args:
|
|
44
|
+
items: List of FunctionScheduleRequest objects to create.
|
|
45
|
+
|
|
46
|
+
Returns:
|
|
47
|
+
List of created FunctionScheduleResponse objects.
|
|
48
|
+
"""
|
|
49
|
+
return self._request_item_response(items, "create")
|
|
50
|
+
|
|
51
|
+
def retrieve(self, items: Sequence[InternalId], ignore_unknown_ids: bool = False) -> list[FunctionScheduleResponse]:
|
|
52
|
+
"""Retrieve function schedules from CDF by ID.
|
|
53
|
+
|
|
54
|
+
Args:
|
|
55
|
+
items: List of InternalId objects to retrieve.
|
|
56
|
+
ignore_unknown_ids: Whether to ignore unknown IDs.
|
|
57
|
+
|
|
58
|
+
Returns:
|
|
59
|
+
List of retrieved FunctionScheduleResponse objects.
|
|
60
|
+
"""
|
|
61
|
+
return self._request_item_response(
|
|
62
|
+
items, method="retrieve", extra_body={"ignoreUnknownIds": ignore_unknown_ids}
|
|
63
|
+
)
|
|
64
|
+
|
|
65
|
+
def delete(self, items: Sequence[InternalId]) -> None:
|
|
66
|
+
"""Delete function schedules from CDF.
|
|
67
|
+
|
|
68
|
+
Args:
|
|
69
|
+
items: List of InternalId objects to delete.
|
|
70
|
+
"""
|
|
71
|
+
self._request_no_response(items, "delete")
|
|
72
|
+
|
|
73
|
+
def paginate(
|
|
74
|
+
self,
|
|
75
|
+
limit: int = 100,
|
|
76
|
+
cursor: str | None = None,
|
|
77
|
+
) -> PagedResponse[FunctionScheduleResponse]:
|
|
78
|
+
"""Get a page of function schedules from CDF.
|
|
79
|
+
|
|
80
|
+
Args:
|
|
81
|
+
limit: Maximum number of function schedules to return.
|
|
82
|
+
cursor: Cursor for pagination.
|
|
83
|
+
|
|
84
|
+
Returns:
|
|
85
|
+
PagedResponse of FunctionScheduleResponse objects.
|
|
86
|
+
"""
|
|
87
|
+
return self._paginate(
|
|
88
|
+
cursor=cursor,
|
|
89
|
+
limit=limit,
|
|
90
|
+
)
|
|
91
|
+
|
|
92
|
+
def iterate(
|
|
93
|
+
self,
|
|
94
|
+
limit: int | None = None,
|
|
95
|
+
) -> Iterable[list[FunctionScheduleResponse]]:
|
|
96
|
+
"""Iterate over all function schedules in CDF.
|
|
97
|
+
|
|
98
|
+
Args:
|
|
99
|
+
limit: Maximum total number of function schedules to return.
|
|
100
|
+
|
|
101
|
+
Returns:
|
|
102
|
+
Iterable of lists of FunctionScheduleResponse objects.
|
|
103
|
+
"""
|
|
104
|
+
return self._iterate(limit=limit)
|
|
105
|
+
|
|
106
|
+
def list(self, limit: int | None = None) -> list[FunctionScheduleResponse]:
|
|
107
|
+
"""List all function schedules in CDF.
|
|
108
|
+
|
|
109
|
+
Args:
|
|
110
|
+
limit: Maximum total number of function schedules to return.
|
|
111
|
+
|
|
112
|
+
Returns:
|
|
113
|
+
List of FunctionScheduleResponse objects.
|
|
114
|
+
"""
|
|
115
|
+
return self._list(limit=limit)
|