cognite-toolkit 0.7.3__py3-none-any.whl → 0.7.5__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/client/_toolkit_client.py +10 -0
- cognite_toolkit/_cdf_tk/client/api/three_d.py +50 -0
- cognite_toolkit/_cdf_tk/client/data_classes/three_d.py +47 -0
- cognite_toolkit/_cdf_tk/commands/_download.py +8 -9
- cognite_toolkit/_cdf_tk/commands/_migrate/command.py +14 -17
- cognite_toolkit/_cdf_tk/commands/_migrate/data_mapper.py +4 -8
- cognite_toolkit/_cdf_tk/commands/_upload.py +4 -4
- cognite_toolkit/_cdf_tk/cruds/_resource_cruds/transformation.py +25 -4
- cognite_toolkit/_cdf_tk/resource_classes/capabilities.py +12 -0
- cognite_toolkit/_cdf_tk/storageio/_base.py +21 -22
- 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.3.dist-info → cognite_toolkit-0.7.5.dist-info}/METADATA +1 -1
- {cognite_toolkit-0.7.3.dist-info → cognite_toolkit-0.7.5.dist-info}/RECORD +19 -17
- {cognite_toolkit-0.7.3.dist-info → cognite_toolkit-0.7.5.dist-info}/WHEEL +0 -0
- {cognite_toolkit-0.7.3.dist-info → cognite_toolkit-0.7.5.dist-info}/entry_points.txt +0 -0
- {cognite_toolkit-0.7.3.dist-info → cognite_toolkit-0.7.5.dist-info}/licenses/LICENSE +0 -0
|
@@ -20,17 +20,27 @@ from .api.project import ProjectAPI
|
|
|
20
20
|
from .api.robotics import RoboticsAPI
|
|
21
21
|
from .api.search import SearchAPI
|
|
22
22
|
from .api.streams import StreamsAPI
|
|
23
|
+
from .api.three_d import ThreeDAPI
|
|
23
24
|
from .api.token import TokenAPI
|
|
24
25
|
from .api.verify import VerifyAPI
|
|
25
26
|
from .config import ToolkitClientConfig
|
|
26
27
|
|
|
27
28
|
|
|
29
|
+
class ToolAPI:
|
|
30
|
+
"""This is reimplemented CogniteAPIs in Toolkit"""
|
|
31
|
+
|
|
32
|
+
def __init__(self, http_client: HTTPClient, console: Console) -> None:
|
|
33
|
+
self.http_client = http_client
|
|
34
|
+
self.three_d = ThreeDAPI(http_client, console)
|
|
35
|
+
|
|
36
|
+
|
|
28
37
|
class ToolkitClient(CogniteClient):
|
|
29
38
|
def __init__(self, config: ToolkitClientConfig | None = None, enable_set_pending_ids: bool = False) -> None:
|
|
30
39
|
super().__init__(config=config)
|
|
31
40
|
http_client = HTTPClient(self.config)
|
|
32
41
|
toolkit_config = ToolkitClientConfig.from_client_config(self.config)
|
|
33
42
|
self.console = Console()
|
|
43
|
+
self.tool = ToolAPI(http_client, self.console)
|
|
34
44
|
self.search = SearchAPI(self._config, self._API_VERSION, self)
|
|
35
45
|
self.robotics = RoboticsAPI(self._config, self._API_VERSION, self)
|
|
36
46
|
self.dml = DMLAPI(self._config, self._API_VERSION, self)
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
from rich.console import Console
|
|
2
|
+
|
|
3
|
+
from cognite_toolkit._cdf_tk.client.data_classes.api_classes import PagedResponse
|
|
4
|
+
from cognite_toolkit._cdf_tk.client.data_classes.three_d import ThreeDModelResponse
|
|
5
|
+
from cognite_toolkit._cdf_tk.utils.http_client import HTTPClient, ParamRequest
|
|
6
|
+
from cognite_toolkit._cdf_tk.utils.useful_types import PrimitiveType
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
class ThreeDModelAPI:
|
|
10
|
+
ENDPOINT = "/3d/models"
|
|
11
|
+
|
|
12
|
+
def __init__(self, http_client: HTTPClient, console: Console) -> None:
|
|
13
|
+
self._http_client = http_client
|
|
14
|
+
self._console = console
|
|
15
|
+
self._config = http_client.config
|
|
16
|
+
|
|
17
|
+
def iterate(
|
|
18
|
+
self,
|
|
19
|
+
published: bool | None = None,
|
|
20
|
+
include_revision_info: bool = False,
|
|
21
|
+
limit: int = 100,
|
|
22
|
+
cursor: str | None = None,
|
|
23
|
+
) -> PagedResponse[ThreeDModelResponse]:
|
|
24
|
+
if not (0 < limit <= 1000):
|
|
25
|
+
raise ValueError("Limit must be between 1 and 1000.")
|
|
26
|
+
parameters: dict[str, PrimitiveType] = {
|
|
27
|
+
# There is a bug in the API. The parameter includeRevisionInfo is expected to be lower case and not
|
|
28
|
+
# camel case as documented. You get error message: Unrecognized query parameter includeRevisionInfo,
|
|
29
|
+
# did you mean includerevisioninfo?
|
|
30
|
+
"includerevisioninfo": include_revision_info,
|
|
31
|
+
"limit": limit,
|
|
32
|
+
}
|
|
33
|
+
if published is not None:
|
|
34
|
+
parameters["published"] = published
|
|
35
|
+
if cursor is not None:
|
|
36
|
+
parameters["cursor"] = cursor
|
|
37
|
+
responses = self._http_client.request_with_retries(
|
|
38
|
+
ParamRequest(
|
|
39
|
+
endpoint_url=self._config.create_api_url(self.ENDPOINT),
|
|
40
|
+
method="GET",
|
|
41
|
+
parameters=parameters,
|
|
42
|
+
)
|
|
43
|
+
)
|
|
44
|
+
responses.raise_for_status()
|
|
45
|
+
return PagedResponse[ThreeDModelResponse].model_validate(responses.get_first_body())
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
class ThreeDAPI:
|
|
49
|
+
def __init__(self, http_client: HTTPClient, console: Console) -> None:
|
|
50
|
+
self.models = ThreeDModelAPI(http_client, console)
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
from typing import Literal
|
|
2
|
+
|
|
3
|
+
from .base import BaseModelObject, RequestResource, ResponseResource
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
class NodeReference(BaseModelObject):
|
|
7
|
+
space: str
|
|
8
|
+
external_id: str
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
class RevisionStatus(BaseModelObject):
|
|
12
|
+
status: Literal["Queued", "Processing", "Done", "Failed"] | None = None
|
|
13
|
+
revision_id: int | None = None
|
|
14
|
+
created_time: int | None = None
|
|
15
|
+
revision_count: int | None = None
|
|
16
|
+
types: list[str] | None = None
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
class ThreeDModelRequest(RequestResource):
|
|
20
|
+
name: str
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
class ThreeDModelClassicRequest(ThreeDModelRequest):
|
|
24
|
+
data_set_id: int | None = None
|
|
25
|
+
metadata: dict[str, str] | None = None
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
class ThreeDModelDMSRequest(ThreeDModelRequest):
|
|
29
|
+
space: str
|
|
30
|
+
type: Literal["CAD", "PointCloud", "Image360"]
|
|
31
|
+
thumbnail_reference: NodeReference | None = None
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
class ThreeDModelResponse(ResponseResource[ThreeDModelRequest]):
|
|
35
|
+
name: str
|
|
36
|
+
id: int
|
|
37
|
+
created_time: int
|
|
38
|
+
data_set_id: int | None = None
|
|
39
|
+
metadata: dict[str, str] | None = None
|
|
40
|
+
space: str | None = None
|
|
41
|
+
last_revision_info: RevisionStatus | None = None
|
|
42
|
+
|
|
43
|
+
def as_request_resource(self) -> ThreeDModelRequest:
|
|
44
|
+
if self.space is None:
|
|
45
|
+
return ThreeDModelClassicRequest._load(self.dump())
|
|
46
|
+
else:
|
|
47
|
+
return ThreeDModelDMSRequest._load(self.dump())
|
|
@@ -2,10 +2,9 @@ from collections.abc import Callable, Iterable
|
|
|
2
2
|
from functools import partial
|
|
3
3
|
from pathlib import Path
|
|
4
4
|
|
|
5
|
-
from cognite.client.data_classes._base import T_CogniteResource
|
|
6
|
-
|
|
7
5
|
from cognite_toolkit._cdf_tk.constants import DATA_MANIFEST_STEM, DATA_RESOURCE_DIR
|
|
8
6
|
from cognite_toolkit._cdf_tk.exceptions import ToolkitValueError
|
|
7
|
+
from cognite_toolkit._cdf_tk.protocols import T_ResourceResponse
|
|
9
8
|
from cognite_toolkit._cdf_tk.storageio import ConfigurableStorageIO, Page, StorageIO, T_Selector, TableStorageIO
|
|
10
9
|
from cognite_toolkit._cdf_tk.tk_warnings import LowSeverityWarning
|
|
11
10
|
from cognite_toolkit._cdf_tk.utils.file import safe_write, sanitize_filename, yaml_safe_dump
|
|
@@ -20,7 +19,7 @@ class DownloadCommand(ToolkitCommand):
|
|
|
20
19
|
def download(
|
|
21
20
|
self,
|
|
22
21
|
selectors: Iterable[T_Selector],
|
|
23
|
-
io: StorageIO[T_Selector,
|
|
22
|
+
io: StorageIO[T_Selector, T_ResourceResponse],
|
|
24
23
|
output_dir: Path,
|
|
25
24
|
verbose: bool,
|
|
26
25
|
file_format: str,
|
|
@@ -68,7 +67,7 @@ class DownloadCommand(ToolkitCommand):
|
|
|
68
67
|
with FileWriter.create_from_format(
|
|
69
68
|
file_format, target_dir, selector.kind, compression_cls, columns=columns
|
|
70
69
|
) as writer:
|
|
71
|
-
executor = ProducerWorkerExecutor[Page[
|
|
70
|
+
executor = ProducerWorkerExecutor[Page[T_ResourceResponse], list[dict[str, JsonVal]]](
|
|
72
71
|
download_iterable=io.stream_data(selector, limit),
|
|
73
72
|
process=self.create_data_process(io=io, selector=selector, is_table=is_table),
|
|
74
73
|
write=partial(writer.write_chunks, filestem=filestem),
|
|
@@ -95,7 +94,7 @@ class DownloadCommand(ToolkitCommand):
|
|
|
95
94
|
|
|
96
95
|
@staticmethod
|
|
97
96
|
def _get_iteration_count(
|
|
98
|
-
io: StorageIO[T_Selector,
|
|
97
|
+
io: StorageIO[T_Selector, T_ResourceResponse],
|
|
99
98
|
selector: T_Selector,
|
|
100
99
|
limit: int | None,
|
|
101
100
|
) -> int | None:
|
|
@@ -126,19 +125,19 @@ class DownloadCommand(ToolkitCommand):
|
|
|
126
125
|
|
|
127
126
|
@staticmethod
|
|
128
127
|
def create_data_process(
|
|
129
|
-
io: StorageIO[T_Selector,
|
|
128
|
+
io: StorageIO[T_Selector, T_ResourceResponse],
|
|
130
129
|
selector: T_Selector,
|
|
131
130
|
is_table: bool,
|
|
132
|
-
) -> Callable[[Page[
|
|
131
|
+
) -> Callable[[Page[T_ResourceResponse]], list[dict[str, JsonVal]]]:
|
|
133
132
|
"""Creates a data processing function based on the IO type and whether the output is a table."""
|
|
134
133
|
if is_table and isinstance(io, TableStorageIO):
|
|
135
134
|
|
|
136
|
-
def row_data_process(chunk: Page[
|
|
135
|
+
def row_data_process(chunk: Page[T_ResourceResponse]) -> list[dict[str, JsonVal]]:
|
|
137
136
|
return io.data_to_row(chunk.items, selector)
|
|
138
137
|
|
|
139
138
|
return row_data_process
|
|
140
139
|
|
|
141
|
-
def chunk_data_process(data_page: Page[
|
|
140
|
+
def chunk_data_process(data_page: Page[T_ResourceResponse]) -> list[dict[str, JsonVal]]:
|
|
142
141
|
return io.data_to_json_chunk(data_page.items, selector)
|
|
143
142
|
|
|
144
143
|
return chunk_data_process
|
|
@@ -2,7 +2,6 @@ from collections.abc import Callable, Iterable, Sequence
|
|
|
2
2
|
from enum import Enum
|
|
3
3
|
from pathlib import Path
|
|
4
4
|
|
|
5
|
-
from cognite.client.data_classes._base import T_CogniteResource
|
|
6
5
|
from rich import print
|
|
7
6
|
from rich.console import Console
|
|
8
7
|
from rich.table import Table
|
|
@@ -20,6 +19,7 @@ from cognite_toolkit._cdf_tk.exceptions import (
|
|
|
20
19
|
ToolkitMigrationError,
|
|
21
20
|
ToolkitValueError,
|
|
22
21
|
)
|
|
22
|
+
from cognite_toolkit._cdf_tk.protocols import T_ResourceRequest, T_ResourceResponse
|
|
23
23
|
from cognite_toolkit._cdf_tk.storageio import T_Selector, UploadableStorageIO, UploadItem
|
|
24
24
|
from cognite_toolkit._cdf_tk.utils import humanize_collection, safe_write, sanitize_filename
|
|
25
25
|
from cognite_toolkit._cdf_tk.utils.file import yaml_safe_dump
|
|
@@ -27,7 +27,6 @@ from cognite_toolkit._cdf_tk.utils.fileio import Chunk, CSVWriter, NDJsonWriter,
|
|
|
27
27
|
from cognite_toolkit._cdf_tk.utils.http_client import HTTPClient, HTTPMessage, ItemMessage, SuccessResponseItems
|
|
28
28
|
from cognite_toolkit._cdf_tk.utils.producer_worker import ProducerWorkerExecutor
|
|
29
29
|
from cognite_toolkit._cdf_tk.utils.progress_tracker import AVAILABLE_STATUS, ProgressTracker, Status
|
|
30
|
-
from cognite_toolkit._cdf_tk.utils.useful_types import T_WriteCogniteResource
|
|
31
30
|
|
|
32
31
|
from .data_model import INSTANCE_SOURCE_VIEW_ID, MODEL_ID, RESOURCE_VIEW_MAPPING_VIEW_ID
|
|
33
32
|
|
|
@@ -45,8 +44,8 @@ class MigrationCommand(ToolkitCommand):
|
|
|
45
44
|
def migrate(
|
|
46
45
|
self,
|
|
47
46
|
selected: T_Selector,
|
|
48
|
-
data: UploadableStorageIO[T_Selector,
|
|
49
|
-
mapper: DataMapper[T_Selector,
|
|
47
|
+
data: UploadableStorageIO[T_Selector, T_ResourceResponse, T_ResourceRequest],
|
|
48
|
+
mapper: DataMapper[T_Selector, T_ResourceResponse, T_ResourceRequest],
|
|
50
49
|
log_dir: Path,
|
|
51
50
|
dry_run: bool = False,
|
|
52
51
|
verbose: bool = False,
|
|
@@ -71,9 +70,7 @@ class MigrationCommand(ToolkitCommand):
|
|
|
71
70
|
NDJsonWriter(log_dir, kind=f"{selected.kind}MigrationIssues", compression=Uncompressed) as log_file,
|
|
72
71
|
HTTPClient(config=data.client.config) as write_client,
|
|
73
72
|
):
|
|
74
|
-
executor = ProducerWorkerExecutor[
|
|
75
|
-
Sequence[T_CogniteResource], Sequence[UploadItem[T_WriteCogniteResource]]
|
|
76
|
-
](
|
|
73
|
+
executor = ProducerWorkerExecutor[Sequence[T_ResourceResponse], Sequence[UploadItem[T_ResourceRequest]]](
|
|
77
74
|
download_iterable=self._download_iterable(selected, data, tracker),
|
|
78
75
|
process=self._convert(mapper, data, tracker, log_file),
|
|
79
76
|
write=self._upload(selected, write_client, data, tracker, log_file, dry_run),
|
|
@@ -141,9 +138,9 @@ class MigrationCommand(ToolkitCommand):
|
|
|
141
138
|
def _download_iterable(
|
|
142
139
|
self,
|
|
143
140
|
selected: T_Selector,
|
|
144
|
-
data: UploadableStorageIO[T_Selector,
|
|
141
|
+
data: UploadableStorageIO[T_Selector, T_ResourceResponse, T_ResourceRequest],
|
|
145
142
|
tracker: ProgressTracker[str],
|
|
146
|
-
) -> Iterable[Sequence[
|
|
143
|
+
) -> Iterable[Sequence[T_ResourceResponse]]:
|
|
147
144
|
for page in data.stream_data(selected):
|
|
148
145
|
for item in page.items:
|
|
149
146
|
tracker.set_progress(data.as_id(item), self.Steps.DOWNLOAD, "success")
|
|
@@ -151,15 +148,15 @@ class MigrationCommand(ToolkitCommand):
|
|
|
151
148
|
|
|
152
149
|
def _convert(
|
|
153
150
|
self,
|
|
154
|
-
mapper: DataMapper[T_Selector,
|
|
155
|
-
data: UploadableStorageIO[T_Selector,
|
|
151
|
+
mapper: DataMapper[T_Selector, T_ResourceResponse, T_ResourceRequest],
|
|
152
|
+
data: UploadableStorageIO[T_Selector, T_ResourceResponse, T_ResourceRequest],
|
|
156
153
|
tracker: ProgressTracker[str],
|
|
157
154
|
log_file: NDJsonWriter,
|
|
158
|
-
) -> Callable[[Sequence[
|
|
159
|
-
def track_mapping(source: Sequence[
|
|
155
|
+
) -> Callable[[Sequence[T_ResourceResponse]], Sequence[UploadItem[T_ResourceRequest]]]:
|
|
156
|
+
def track_mapping(source: Sequence[T_ResourceResponse]) -> list[UploadItem[T_ResourceRequest]]:
|
|
160
157
|
mapped = mapper.map(source)
|
|
161
158
|
issues: list[Chunk] = []
|
|
162
|
-
targets: list[UploadItem[
|
|
159
|
+
targets: list[UploadItem[T_ResourceRequest]] = []
|
|
163
160
|
|
|
164
161
|
for (target, issue), item in zip(mapped, source):
|
|
165
162
|
id_ = data.as_id(item)
|
|
@@ -181,12 +178,12 @@ class MigrationCommand(ToolkitCommand):
|
|
|
181
178
|
self,
|
|
182
179
|
selected: T_Selector,
|
|
183
180
|
write_client: HTTPClient,
|
|
184
|
-
target: UploadableStorageIO[T_Selector,
|
|
181
|
+
target: UploadableStorageIO[T_Selector, T_ResourceResponse, T_ResourceRequest],
|
|
185
182
|
tracker: ProgressTracker[str],
|
|
186
183
|
log_file: NDJsonWriter,
|
|
187
184
|
dry_run: bool,
|
|
188
|
-
) -> Callable[[Sequence[UploadItem[
|
|
189
|
-
def upload_items(data_item: Sequence[UploadItem[
|
|
185
|
+
) -> Callable[[Sequence[UploadItem[T_ResourceRequest]]], None]:
|
|
186
|
+
def upload_items(data_item: Sequence[UploadItem[T_ResourceRequest]]) -> None:
|
|
190
187
|
if not data_item:
|
|
191
188
|
return None
|
|
192
189
|
responses: Sequence[HTTPMessage]
|
|
@@ -3,9 +3,6 @@ from collections.abc import Sequence
|
|
|
3
3
|
from typing import Generic, cast
|
|
4
4
|
from uuid import uuid4
|
|
5
5
|
|
|
6
|
-
from cognite.client.data_classes._base import (
|
|
7
|
-
T_CogniteResource,
|
|
8
|
-
)
|
|
9
6
|
from cognite.client.data_classes.data_modeling import (
|
|
10
7
|
EdgeApply,
|
|
11
8
|
InstanceApply,
|
|
@@ -30,7 +27,8 @@ from cognite_toolkit._cdf_tk.commands._migrate.issues import ChartMigrationIssue
|
|
|
30
27
|
from cognite_toolkit._cdf_tk.commands._migrate.selectors import AssetCentricMigrationSelector
|
|
31
28
|
from cognite_toolkit._cdf_tk.constants import MISSING_INSTANCE_SPACE
|
|
32
29
|
from cognite_toolkit._cdf_tk.exceptions import ToolkitValueError
|
|
33
|
-
from cognite_toolkit._cdf_tk.
|
|
30
|
+
from cognite_toolkit._cdf_tk.protocols import T_ResourceRequest, T_ResourceResponse
|
|
31
|
+
from cognite_toolkit._cdf_tk.storageio._base import T_Selector
|
|
34
32
|
from cognite_toolkit._cdf_tk.storageio.selectors import ChartSelector
|
|
35
33
|
from cognite_toolkit._cdf_tk.utils import humanize_collection
|
|
36
34
|
from cognite_toolkit._cdf_tk.utils.useful_types import (
|
|
@@ -38,7 +36,7 @@ from cognite_toolkit._cdf_tk.utils.useful_types import (
|
|
|
38
36
|
)
|
|
39
37
|
|
|
40
38
|
|
|
41
|
-
class DataMapper(Generic[T_Selector,
|
|
39
|
+
class DataMapper(Generic[T_Selector, T_ResourceResponse, T_ResourceRequest], ABC):
|
|
42
40
|
def prepare(self, source_selector: T_Selector) -> None:
|
|
43
41
|
"""Prepare the data mapper with the given source selector.
|
|
44
42
|
|
|
@@ -50,9 +48,7 @@ class DataMapper(Generic[T_Selector, T_CogniteResource, T_WriteCogniteResource],
|
|
|
50
48
|
pass
|
|
51
49
|
|
|
52
50
|
@abstractmethod
|
|
53
|
-
def map(
|
|
54
|
-
self, source: Sequence[T_CogniteResource]
|
|
55
|
-
) -> Sequence[tuple[T_WriteCogniteResource | None, MigrationIssue]]:
|
|
51
|
+
def map(self, source: Sequence[T_ResourceResponse]) -> Sequence[tuple[T_ResourceRequest | None, MigrationIssue]]:
|
|
56
52
|
"""Map a chunk of source data to the target format.
|
|
57
53
|
|
|
58
54
|
Args:
|
|
@@ -3,7 +3,6 @@ from collections.abc import Sequence
|
|
|
3
3
|
from functools import partial
|
|
4
4
|
from pathlib import Path
|
|
5
5
|
|
|
6
|
-
from cognite.client.data_classes._base import T_CogniteResource
|
|
7
6
|
from cognite.client.data_classes.data_modeling import (
|
|
8
7
|
ViewId,
|
|
9
8
|
)
|
|
@@ -14,12 +13,13 @@ from cognite_toolkit._cdf_tk.client import ToolkitClient
|
|
|
14
13
|
from cognite_toolkit._cdf_tk.constants import DATA_MANIFEST_SUFFIX, DATA_RESOURCE_DIR
|
|
15
14
|
from cognite_toolkit._cdf_tk.cruds import ViewCRUD
|
|
16
15
|
from cognite_toolkit._cdf_tk.exceptions import ToolkitValueError
|
|
16
|
+
from cognite_toolkit._cdf_tk.protocols import T_ResourceRequest, T_ResourceResponse
|
|
17
17
|
from cognite_toolkit._cdf_tk.storageio import (
|
|
18
18
|
T_Selector,
|
|
19
19
|
UploadableStorageIO,
|
|
20
20
|
get_upload_io,
|
|
21
21
|
)
|
|
22
|
-
from cognite_toolkit._cdf_tk.storageio._base import
|
|
22
|
+
from cognite_toolkit._cdf_tk.storageio._base import TableUploadableStorageIO, UploadItem
|
|
23
23
|
from cognite_toolkit._cdf_tk.storageio.selectors import Selector, SelectorAdapter
|
|
24
24
|
from cognite_toolkit._cdf_tk.storageio.selectors._instances import InstanceSpaceSelector
|
|
25
25
|
from cognite_toolkit._cdf_tk.tk_warnings import HighSeverityWarning, MediumSeverityWarning
|
|
@@ -271,9 +271,9 @@ class UploadCommand(ToolkitCommand):
|
|
|
271
271
|
@classmethod
|
|
272
272
|
def _upload_items(
|
|
273
273
|
cls,
|
|
274
|
-
data_chunk: Sequence[UploadItem],
|
|
274
|
+
data_chunk: Sequence[UploadItem[T_ResourceRequest]],
|
|
275
275
|
upload_client: HTTPClient,
|
|
276
|
-
io: UploadableStorageIO[T_Selector,
|
|
276
|
+
io: UploadableStorageIO[T_Selector, T_ResourceResponse, T_ResourceRequest],
|
|
277
277
|
selector: T_Selector,
|
|
278
278
|
dry_run: bool,
|
|
279
279
|
tracker: ProgressTracker[str],
|
|
@@ -82,7 +82,7 @@ from cognite_toolkit._cdf_tk.resource_classes import (
|
|
|
82
82
|
TransformationScheduleYAML,
|
|
83
83
|
TransformationYAML,
|
|
84
84
|
)
|
|
85
|
-
from cognite_toolkit._cdf_tk.tk_warnings import HighSeverityWarning
|
|
85
|
+
from cognite_toolkit._cdf_tk.tk_warnings import HighSeverityWarning, MediumSeverityWarning
|
|
86
86
|
from cognite_toolkit._cdf_tk.utils import (
|
|
87
87
|
calculate_secure_hash,
|
|
88
88
|
humanize_collection,
|
|
@@ -427,16 +427,37 @@ class TransformationCRUD(
|
|
|
427
427
|
if error := self._create_auth_creation_error(chunk):
|
|
428
428
|
raise error from e
|
|
429
429
|
raise e
|
|
430
|
-
|
|
430
|
+
except CogniteAPIError as e:
|
|
431
|
+
if "Failed to bind session using nonce for" in e.message and len(chunk) > 1:
|
|
432
|
+
MediumSeverityWarning(
|
|
433
|
+
f"Failed to create {len(chunk)} transformations in a batch due to nonce binding error. "
|
|
434
|
+
"Trying to recover by creating them one by one."
|
|
435
|
+
).print_warning(console=self.console)
|
|
436
|
+
# Retry one by one
|
|
437
|
+
for item in chunk:
|
|
438
|
+
recovered = self._execute_in_batches(items=[item], api_call=api_call)
|
|
439
|
+
results.extend(recovered)
|
|
440
|
+
if self.console:
|
|
441
|
+
self.console.print(
|
|
442
|
+
f" [bold green]RECOVERED:[/] Successfully created {len(chunk)} transformations one by one."
|
|
443
|
+
)
|
|
444
|
+
else:
|
|
445
|
+
raise
|
|
446
|
+
else:
|
|
447
|
+
results.extend(chunk_results)
|
|
431
448
|
return results
|
|
432
449
|
|
|
433
450
|
def _update_nonce(self, items: Sequence[TransformationWrite]) -> None:
|
|
434
451
|
for item in items:
|
|
435
452
|
if not item.external_id:
|
|
436
453
|
raise ToolkitRequiredValueError("Transformation must have external_id set.")
|
|
437
|
-
if
|
|
454
|
+
if item.source_nonce is None and (
|
|
455
|
+
read_credentials := self._authentication_by_id_operation.get((item.external_id, "read"))
|
|
456
|
+
):
|
|
438
457
|
item.source_nonce = self._create_nonce(read_credentials)
|
|
439
|
-
if
|
|
458
|
+
if item.destination_nonce is None and (
|
|
459
|
+
write_credentials := self._authentication_by_id_operation.get((item.external_id, "write"))
|
|
460
|
+
):
|
|
440
461
|
item.destination_nonce = self._create_nonce(write_credentials)
|
|
441
462
|
|
|
442
463
|
def _create_nonce(self, credentials: OidcCredentials | ClientCredentials) -> NonceCredentials:
|
|
@@ -510,6 +510,18 @@ class LegacyGenericsAcl(Capability):
|
|
|
510
510
|
scope: AllScope
|
|
511
511
|
|
|
512
512
|
|
|
513
|
+
class StreamsAcl(Capability):
|
|
514
|
+
_capability_name = "streamsAcl"
|
|
515
|
+
actions: list[Literal["READ", "CREATE", "DELETE"]]
|
|
516
|
+
scope: AllScope
|
|
517
|
+
|
|
518
|
+
|
|
519
|
+
class StreamRecordsAcl(Capability):
|
|
520
|
+
_capability_name = "streamRecordsAcl"
|
|
521
|
+
actions: list[Literal["READ", "WRITE"]]
|
|
522
|
+
scope: AllScope | SpaceIDScope
|
|
523
|
+
|
|
524
|
+
|
|
513
525
|
_CAPABILITY_CLASS_BY_NAME: MappingProxyType[str, type[Capability]] = MappingProxyType(
|
|
514
526
|
{c._capability_name: c for c in Capability.__subclasses__()}
|
|
515
527
|
)
|
|
@@ -3,14 +3,13 @@ from collections.abc import Iterable, Mapping, Sequence, Sized
|
|
|
3
3
|
from dataclasses import dataclass
|
|
4
4
|
from typing import ClassVar, Generic, Literal, TypeVar
|
|
5
5
|
|
|
6
|
-
from cognite.client.data_classes._base import T_CogniteResource
|
|
7
|
-
|
|
8
6
|
from cognite_toolkit._cdf_tk.client import ToolkitClient
|
|
9
7
|
from cognite_toolkit._cdf_tk.exceptions import ToolkitNotImplementedError
|
|
8
|
+
from cognite_toolkit._cdf_tk.protocols import T_ResourceRequest, T_ResourceResponse
|
|
10
9
|
from cognite_toolkit._cdf_tk.utils.collection import chunker
|
|
11
10
|
from cognite_toolkit._cdf_tk.utils.fileio import MultiFileReader, SchemaColumn
|
|
12
11
|
from cognite_toolkit._cdf_tk.utils.http_client import HTTPClient, HTTPMessage, ItemsRequest
|
|
13
|
-
from cognite_toolkit._cdf_tk.utils.useful_types import JsonVal
|
|
12
|
+
from cognite_toolkit._cdf_tk.utils.useful_types import JsonVal
|
|
14
13
|
|
|
15
14
|
from .selectors import DataSelector
|
|
16
15
|
|
|
@@ -27,9 +26,9 @@ T_Selector = TypeVar("T_Selector", bound=DataSelector)
|
|
|
27
26
|
|
|
28
27
|
|
|
29
28
|
@dataclass
|
|
30
|
-
class Page(Generic[
|
|
29
|
+
class Page(Generic[T_ResourceResponse], Sized):
|
|
31
30
|
worker_id: str
|
|
32
|
-
items: Sequence[
|
|
31
|
+
items: Sequence[T_ResourceResponse]
|
|
33
32
|
next_cursor: str | None = None
|
|
34
33
|
|
|
35
34
|
def __len__(self) -> int:
|
|
@@ -37,7 +36,7 @@ class Page(Generic[T_CogniteResource], Sized):
|
|
|
37
36
|
|
|
38
37
|
|
|
39
38
|
@dataclass
|
|
40
|
-
class UploadItem(Generic[
|
|
39
|
+
class UploadItem(Generic[T_ResourceRequest]):
|
|
41
40
|
"""An item to be uploaded to CDF, consisting of a source ID and the writable Cognite resource.
|
|
42
41
|
|
|
43
42
|
Attributes:
|
|
@@ -46,7 +45,7 @@ class UploadItem(Generic[T_WriteCogniteResource]):
|
|
|
46
45
|
"""
|
|
47
46
|
|
|
48
47
|
source_id: str
|
|
49
|
-
item:
|
|
48
|
+
item: T_ResourceRequest
|
|
50
49
|
|
|
51
50
|
def as_id(self) -> str:
|
|
52
51
|
return self.source_id
|
|
@@ -55,7 +54,7 @@ class UploadItem(Generic[T_WriteCogniteResource]):
|
|
|
55
54
|
return self.item.dump(camel_case=True)
|
|
56
55
|
|
|
57
56
|
|
|
58
|
-
class StorageIO(ABC, Generic[T_Selector,
|
|
57
|
+
class StorageIO(ABC, Generic[T_Selector, T_ResourceResponse]):
|
|
59
58
|
"""This is a base class for all storage classes in Cognite Toolkit
|
|
60
59
|
|
|
61
60
|
It defines the interface for downloading data from CDF. Note this can also be used for multiple
|
|
@@ -79,7 +78,7 @@ class StorageIO(ABC, Generic[T_Selector, T_CogniteResource]):
|
|
|
79
78
|
self.client = client
|
|
80
79
|
|
|
81
80
|
@abstractmethod
|
|
82
|
-
def as_id(self, item:
|
|
81
|
+
def as_id(self, item: T_ResourceResponse) -> str:
|
|
83
82
|
"""Convert an item to its corresponding ID.
|
|
84
83
|
Args:
|
|
85
84
|
item: The item to convert.
|
|
@@ -115,7 +114,7 @@ class StorageIO(ABC, Generic[T_Selector, T_CogniteResource]):
|
|
|
115
114
|
|
|
116
115
|
@abstractmethod
|
|
117
116
|
def data_to_json_chunk(
|
|
118
|
-
self, data_chunk: Sequence[
|
|
117
|
+
self, data_chunk: Sequence[T_ResourceResponse], selector: T_Selector | None = None
|
|
119
118
|
) -> list[dict[str, JsonVal]]:
|
|
120
119
|
"""Convert a chunk of data to a JSON-compatible format.
|
|
121
120
|
|
|
@@ -131,7 +130,7 @@ class StorageIO(ABC, Generic[T_Selector, T_CogniteResource]):
|
|
|
131
130
|
|
|
132
131
|
|
|
133
132
|
class UploadableStorageIO(
|
|
134
|
-
Generic[T_Selector,
|
|
133
|
+
Generic[T_Selector, T_ResourceResponse, T_ResourceRequest], StorageIO[T_Selector, T_ResourceResponse], ABC
|
|
135
134
|
):
|
|
136
135
|
"""A base class for storage items that support uploading data to CDF.
|
|
137
136
|
|
|
@@ -151,7 +150,7 @@ class UploadableStorageIO(
|
|
|
151
150
|
|
|
152
151
|
def upload_items(
|
|
153
152
|
self,
|
|
154
|
-
data_chunk: Sequence[UploadItem[
|
|
153
|
+
data_chunk: Sequence[UploadItem[T_ResourceRequest]],
|
|
155
154
|
http_client: HTTPClient,
|
|
156
155
|
selector: T_Selector | None = None,
|
|
157
156
|
) -> Sequence[HTTPMessage]:
|
|
@@ -189,7 +188,7 @@ class UploadableStorageIO(
|
|
|
189
188
|
|
|
190
189
|
def json_chunk_to_data(
|
|
191
190
|
self, data_chunk: list[tuple[str, dict[str, JsonVal]]]
|
|
192
|
-
) -> Sequence[UploadItem[
|
|
191
|
+
) -> Sequence[UploadItem[T_ResourceRequest]]:
|
|
193
192
|
"""Convert a JSON-compatible chunk of data back to a writable Cognite resource list.
|
|
194
193
|
|
|
195
194
|
Args:
|
|
@@ -198,14 +197,14 @@ class UploadableStorageIO(
|
|
|
198
197
|
Returns:
|
|
199
198
|
A writable Cognite resource list representing the data.
|
|
200
199
|
"""
|
|
201
|
-
result: list[UploadItem[
|
|
200
|
+
result: list[UploadItem[T_ResourceRequest]] = []
|
|
202
201
|
for source_id, item_json in data_chunk:
|
|
203
202
|
item = self.json_to_resource(item_json)
|
|
204
203
|
result.append(UploadItem(source_id=source_id, item=item))
|
|
205
204
|
return result
|
|
206
205
|
|
|
207
206
|
@abstractmethod
|
|
208
|
-
def json_to_resource(self, item_json: dict[str, JsonVal]) ->
|
|
207
|
+
def json_to_resource(self, item_json: dict[str, JsonVal]) -> T_ResourceRequest:
|
|
209
208
|
"""Convert a JSON-compatible dictionary back to a writable Cognite resource.
|
|
210
209
|
|
|
211
210
|
Args:
|
|
@@ -226,12 +225,12 @@ class UploadableStorageIO(
|
|
|
226
225
|
yield from chunker(iterable, cls.CHUNK_SIZE)
|
|
227
226
|
|
|
228
227
|
|
|
229
|
-
class TableUploadableStorageIO(UploadableStorageIO[T_Selector,
|
|
228
|
+
class TableUploadableStorageIO(UploadableStorageIO[T_Selector, T_ResourceResponse, T_ResourceRequest], ABC):
|
|
230
229
|
"""A base class for storage items that support uploading data with table schemas."""
|
|
231
230
|
|
|
232
231
|
def rows_to_data(
|
|
233
232
|
self, rows: list[tuple[str, dict[str, JsonVal]]], selector: T_Selector | None = None
|
|
234
|
-
) -> Sequence[UploadItem[
|
|
233
|
+
) -> Sequence[UploadItem[T_ResourceRequest]]:
|
|
235
234
|
"""Convert a row-based JSON-compatible chunk of data back to a writable Cognite resource list.
|
|
236
235
|
|
|
237
236
|
Args:
|
|
@@ -242,7 +241,7 @@ class TableUploadableStorageIO(UploadableStorageIO[T_Selector, T_CogniteResource
|
|
|
242
241
|
Returns:
|
|
243
242
|
A writable Cognite resource list representing the data.
|
|
244
243
|
"""
|
|
245
|
-
result: list[UploadItem[
|
|
244
|
+
result: list[UploadItem[T_ResourceRequest]] = []
|
|
246
245
|
for source_id, row in rows:
|
|
247
246
|
item = self.row_to_resource(source_id, row, selector=selector)
|
|
248
247
|
result.append(UploadItem(source_id=source_id, item=item))
|
|
@@ -251,7 +250,7 @@ class TableUploadableStorageIO(UploadableStorageIO[T_Selector, T_CogniteResource
|
|
|
251
250
|
@abstractmethod
|
|
252
251
|
def row_to_resource(
|
|
253
252
|
self, source_id: str, row: dict[str, JsonVal], selector: T_Selector | None = None
|
|
254
|
-
) ->
|
|
253
|
+
) -> T_ResourceRequest:
|
|
255
254
|
"""Convert a row-based JSON-compatible dictionary back to a writable Cognite resource.
|
|
256
255
|
|
|
257
256
|
Args:
|
|
@@ -264,7 +263,7 @@ class TableUploadableStorageIO(UploadableStorageIO[T_Selector, T_CogniteResource
|
|
|
264
263
|
raise NotImplementedError()
|
|
265
264
|
|
|
266
265
|
|
|
267
|
-
class ConfigurableStorageIO(StorageIO[T_Selector,
|
|
266
|
+
class ConfigurableStorageIO(StorageIO[T_Selector, T_ResourceResponse], ABC):
|
|
268
267
|
"""A base class for storage items that support configurations for different storage items."""
|
|
269
268
|
|
|
270
269
|
@abstractmethod
|
|
@@ -273,7 +272,7 @@ class ConfigurableStorageIO(StorageIO[T_Selector, T_CogniteResource], ABC):
|
|
|
273
272
|
raise NotImplementedError()
|
|
274
273
|
|
|
275
274
|
|
|
276
|
-
class TableStorageIO(StorageIO[T_Selector,
|
|
275
|
+
class TableStorageIO(StorageIO[T_Selector, T_ResourceResponse], ABC):
|
|
277
276
|
"""A base class for storage items that support table schemas."""
|
|
278
277
|
|
|
279
278
|
@abstractmethod
|
|
@@ -291,7 +290,7 @@ class TableStorageIO(StorageIO[T_Selector, T_CogniteResource], ABC):
|
|
|
291
290
|
|
|
292
291
|
@abstractmethod
|
|
293
292
|
def data_to_row(
|
|
294
|
-
self, data_chunk: Sequence[
|
|
293
|
+
self, data_chunk: Sequence[T_ResourceResponse], selector: T_Selector | None = None
|
|
295
294
|
) -> list[dict[str, JsonVal]]:
|
|
296
295
|
"""Convert a chunk of data to a row-based JSON-compatible format.
|
|
297
296
|
|
cognite_toolkit/_version.py
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
__version__ = "0.7.
|
|
1
|
+
__version__ = "0.7.5"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: cognite_toolkit
|
|
3
|
-
Version: 0.7.
|
|
3
|
+
Version: 0.7.5
|
|
4
4
|
Summary: Official Cognite Data Fusion tool for project templates and configuration deployment
|
|
5
5
|
Project-URL: Homepage, https://docs.cognite.com/cdf/deploy/cdf_toolkit/
|
|
6
6
|
Project-URL: Changelog, https://github.com/cognitedata/toolkit/releases
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
cognite_toolkit/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
2
2
|
cognite_toolkit/_cdf.py,sha256=PzDig6dgbDX5VL88AeijQuTeYb2SS_yvenw9gr4fnxY,5794
|
|
3
|
-
cognite_toolkit/_version.py,sha256=
|
|
3
|
+
cognite_toolkit/_version.py,sha256=6qL_qyowXO9Pc6v11Zx2s-yd28_548ZZC-OsfzO_Pjc,22
|
|
4
4
|
cognite_toolkit/_cdf_tk/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
5
5
|
cognite_toolkit/_cdf_tk/cdf_toml.py,sha256=VSWV9h44HusWIaKpWgjrOMrc3hDoPTTXBXlp6-NOrIM,9079
|
|
6
6
|
cognite_toolkit/_cdf_tk/constants.py,sha256=TplKm2J9pGRHq7nAnLI0caTMHetS04OIz3hfq-jvGzo,7236
|
|
@@ -37,7 +37,7 @@ cognite_toolkit/_cdf_tk/builders/_streamlit.py,sha256=8Pu_zgyKZjbAsPWywjzB2KWD7h
|
|
|
37
37
|
cognite_toolkit/_cdf_tk/builders/_transformation.py,sha256=STB42zhzOW5M_-b8cKOQ_cegnr7FtMoMxZ87gPLXft4,4723
|
|
38
38
|
cognite_toolkit/_cdf_tk/client/__init__.py,sha256=a6rQXDGfW2g7K5WwrOW5oakh1TdFlBjUVjf9wusOox8,135
|
|
39
39
|
cognite_toolkit/_cdf_tk/client/_constants.py,sha256=COUGcea37mDF2sf6MGqJXWmecTY_6aCImslxXrYW1I0,73
|
|
40
|
-
cognite_toolkit/_cdf_tk/client/_toolkit_client.py,sha256=
|
|
40
|
+
cognite_toolkit/_cdf_tk/client/_toolkit_client.py,sha256=ucy_vXXatbUdB8gvNITmVsH1ghirZqmez-TR2EGrY2w,3260
|
|
41
41
|
cognite_toolkit/_cdf_tk/client/api_client.py,sha256=CQdD_gfDqQkz5OYHrTnKvBvEvzHPdHDB1BkZPWRoahg,440
|
|
42
42
|
cognite_toolkit/_cdf_tk/client/config.py,sha256=weMR43z-gqHMn-Jqvfmh_nJ0HbgEdyeCGtISuEf3OuY,4269
|
|
43
43
|
cognite_toolkit/_cdf_tk/client/testing.py,sha256=axKaW6rdzq_TI7DD4ijnLeHC4a74WKWDAxQ3QyZ7Kvg,6720
|
|
@@ -59,6 +59,7 @@ cognite_toolkit/_cdf_tk/client/api/project.py,sha256=Hj0uDCLyPofG-T4626EdeoRRtBa
|
|
|
59
59
|
cognite_toolkit/_cdf_tk/client/api/search.py,sha256=L4cDPip7pJVP7bEgAiSOjqINIHg8AULNBtR29G5khEQ,612
|
|
60
60
|
cognite_toolkit/_cdf_tk/client/api/search_config.py,sha256=31rPCSOnzfiLv8FKU6F3tF9ZesEV8moSlbnkFPNh13g,1824
|
|
61
61
|
cognite_toolkit/_cdf_tk/client/api/streams.py,sha256=4u5jRdbhxKbVR8OLURyVwehHgoejFxArjUAGni78PNY,3015
|
|
62
|
+
cognite_toolkit/_cdf_tk/client/api/three_d.py,sha256=2jMBrdHBERcXn7qIRHZjRtlfXXIIDGoMyfkSGPrl8jE,2022
|
|
62
63
|
cognite_toolkit/_cdf_tk/client/api/token.py,sha256=8SiA44Dwsx0j_X8lgIxl2rdNCQSdEiSfoD_4ybxMtFA,5131
|
|
63
64
|
cognite_toolkit/_cdf_tk/client/api/verify.py,sha256=-x6z6lMaOZG91adi0m9NtJ4wIQgoZURbzluPALXM-ps,3730
|
|
64
65
|
cognite_toolkit/_cdf_tk/client/api/robotics/__init__.py,sha256=6xDSr24_IkLRx_kAKU0_e6_sqnxVWcQChnML_NJqnIQ,56
|
|
@@ -97,6 +98,7 @@ cognite_toolkit/_cdf_tk/client/data_classes/search_config.py,sha256=Reo_rcFrwk_s
|
|
|
97
98
|
cognite_toolkit/_cdf_tk/client/data_classes/sequences.py,sha256=02d34fPcJ1H7U5ZnCCfOi36z5WJ4WnRfCWwkp99mW2E,6234
|
|
98
99
|
cognite_toolkit/_cdf_tk/client/data_classes/streamlit_.py,sha256=nEk00FH3i-px2r6ql4kk1VVL4sytjUn0_sTkEdDSHVc,6746
|
|
99
100
|
cognite_toolkit/_cdf_tk/client/data_classes/streams.py,sha256=DHSDrBax81fUzneIikn9hUMVgQVbdaiQ9aY-bRaTK38,2459
|
|
101
|
+
cognite_toolkit/_cdf_tk/client/data_classes/three_d.py,sha256=X5BCOZC1B_WOcaC2RbmEscHJ0J9BrY_0oGbB17kpS90,1298
|
|
100
102
|
cognite_toolkit/_cdf_tk/client/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
101
103
|
cognite_toolkit/_cdf_tk/client/utils/_concurrency.py,sha256=3GtQbKDaosyKHEt-KzxKK9Yie4TvZPdoou2vUk6dUa8,2298
|
|
102
104
|
cognite_toolkit/_cdf_tk/client/utils/_http_client.py,sha256=oXNKrIaizG4WiSAhL_kSCHAuL4aaaEhCU4pOJGxh6Xs,483
|
|
@@ -104,11 +106,11 @@ cognite_toolkit/_cdf_tk/commands/__init__.py,sha256=xLaEOLVZ93MVkWzbTGwYhe-negSd
|
|
|
104
106
|
cognite_toolkit/_cdf_tk/commands/_base.py,sha256=1gl8Y-yqfedRMfdbwM3iPTIUIZriX1UvC1deLsJSJwM,2667
|
|
105
107
|
cognite_toolkit/_cdf_tk/commands/_changes.py,sha256=sU0KaTtPVSJgAZcaZ1Tkcajj36pmhd13kh7V8QbIED8,22987
|
|
106
108
|
cognite_toolkit/_cdf_tk/commands/_cli_commands.py,sha256=TK6U_rm6VZT_V941kTyHMoulWgJzbDC8YIIQDPJ5x3w,1011
|
|
107
|
-
cognite_toolkit/_cdf_tk/commands/_download.py,sha256=
|
|
109
|
+
cognite_toolkit/_cdf_tk/commands/_download.py,sha256=gOUjsu-YaiIyKGd5kZDW-1lsgY7sQwGxg2Pwk6TlWdY,6823
|
|
108
110
|
cognite_toolkit/_cdf_tk/commands/_profile.py,sha256=_4iX3AHAI6eLmRVUlWXCSvVHx1BZW2yDr_i2i9ECg6U,43120
|
|
109
111
|
cognite_toolkit/_cdf_tk/commands/_purge.py,sha256=RadQHsmkPez3fZ5HCP9b82o2_fBx8P_-bTo7prkvWXU,32525
|
|
110
112
|
cognite_toolkit/_cdf_tk/commands/_questionary_style.py,sha256=h-w7fZKkGls3TrzIGBKjsZSGoXJJIYchgD1StfA40r8,806
|
|
111
|
-
cognite_toolkit/_cdf_tk/commands/_upload.py,sha256=
|
|
113
|
+
cognite_toolkit/_cdf_tk/commands/_upload.py,sha256=J3Ts50AFP0DmIuGjgnVh-WxiZSLDQJQKRIjqBPGngqU,13362
|
|
112
114
|
cognite_toolkit/_cdf_tk/commands/_utils.py,sha256=UxMJW5QYKts4om5n6x2Tq2ihvfO9gWjhQKeqZNFTlKg,402
|
|
113
115
|
cognite_toolkit/_cdf_tk/commands/_virtual_env.py,sha256=GFAid4hplixmj9_HkcXqU5yCLj-fTXm4cloGD6U2swY,2180
|
|
114
116
|
cognite_toolkit/_cdf_tk/commands/auth.py,sha256=TD6X3CKFNhDHoIv2b2uI2nKBHgQljLntp9vZffdA-jc,31384
|
|
@@ -126,11 +128,11 @@ cognite_toolkit/_cdf_tk/commands/resources.py,sha256=NeHVA1b1TMsP-2wgd5u1vif_N6n
|
|
|
126
128
|
cognite_toolkit/_cdf_tk/commands/run.py,sha256=JyX9jLEQej9eRrHVCCNlw4GuF80qETSol3-T5CCofgw,37331
|
|
127
129
|
cognite_toolkit/_cdf_tk/commands/_migrate/__init__.py,sha256=i5ldcTah59K0E4fH5gHTV0GRvtDCEvVses9WQzn9Lno,226
|
|
128
130
|
cognite_toolkit/_cdf_tk/commands/_migrate/canvas.py,sha256=R-z0yfOFcJZj-zRLhN-7z_-SLxqzSmONMgrbzNF9dGs,8843
|
|
129
|
-
cognite_toolkit/_cdf_tk/commands/_migrate/command.py,sha256=
|
|
131
|
+
cognite_toolkit/_cdf_tk/commands/_migrate/command.py,sha256=Kdv3Tgg8vqywljVLfie-jJXoZ8fRIxTXzpdCHT0utRs,14096
|
|
130
132
|
cognite_toolkit/_cdf_tk/commands/_migrate/conversion.py,sha256=Ew9JRYrd-Ol9G9csTzpnhXAgCFnX67MwDYOTsdJLP3E,16803
|
|
131
133
|
cognite_toolkit/_cdf_tk/commands/_migrate/creators.py,sha256=FTu7w3G8KyPY8pagG3KdPpOmpLcjehaAg2auEy6iM7A,9605
|
|
132
134
|
cognite_toolkit/_cdf_tk/commands/_migrate/data_classes.py,sha256=_vMS_qAPj4yup1VnmmojPVigAZtyPQH7PM0Raby5tao,10619
|
|
133
|
-
cognite_toolkit/_cdf_tk/commands/_migrate/data_mapper.py,sha256=
|
|
135
|
+
cognite_toolkit/_cdf_tk/commands/_migrate/data_mapper.py,sha256=nNaM8D1-kKfgkah28L7S8agA-DRcpeeEd2kazyhodIc,11713
|
|
134
136
|
cognite_toolkit/_cdf_tk/commands/_migrate/data_model.py,sha256=i1eUsNX6Dueol9STIEwyksBnBsWUk13O8qHIjW964pM,7860
|
|
135
137
|
cognite_toolkit/_cdf_tk/commands/_migrate/default_mappings.py,sha256=ERn3qFrJFXdtXaMjHq3Gk7MxH03MGFk3FrtWCOBJQts,5544
|
|
136
138
|
cognite_toolkit/_cdf_tk/commands/_migrate/issues.py,sha256=L2-kODPavEwcuhte7EXANK2-rH7reiq-uNqr-3ub-no,6575
|
|
@@ -163,7 +165,7 @@ cognite_toolkit/_cdf_tk/cruds/_resource_cruds/robotics.py,sha256=dG45TvMcmpwV6Oy
|
|
|
163
165
|
cognite_toolkit/_cdf_tk/cruds/_resource_cruds/streams.py,sha256=-vFcurvfoWZJLBXla7qmMFAtu81Nbcerx2IoizDC7EQ,3266
|
|
164
166
|
cognite_toolkit/_cdf_tk/cruds/_resource_cruds/three_d_model.py,sha256=YmzIQp1cjU6ttqmwwDfU9wXFkKaW5ZuypdEu-LZsOXY,7545
|
|
165
167
|
cognite_toolkit/_cdf_tk/cruds/_resource_cruds/timeseries.py,sha256=VUvg6geF8d7N6PY1kMXs6v2xbWReiSbbRhQNqlAlhUM,23518
|
|
166
|
-
cognite_toolkit/_cdf_tk/cruds/_resource_cruds/transformation.py,sha256=
|
|
168
|
+
cognite_toolkit/_cdf_tk/cruds/_resource_cruds/transformation.py,sha256=8GtwjzkkOIMmVsV73QPtUtRdTbEefF7pnGj2QcW4I2Q,34234
|
|
167
169
|
cognite_toolkit/_cdf_tk/cruds/_resource_cruds/workflow.py,sha256=OMHOxFY2ZLi0RTw0LmE_dTeOmFUh9LDIEDykyiCOCIw,26773
|
|
168
170
|
cognite_toolkit/_cdf_tk/data_classes/__init__.py,sha256=4zL-zR3lgQTCWfcy28LK0HEcukQOndPEFXVqfYfdKHU,1720
|
|
169
171
|
cognite_toolkit/_cdf_tk/data_classes/_base.py,sha256=0jy9VrYIO6iRgOZIcRASv-xIQjU3QbMICffEEIqzx6A,2673
|
|
@@ -188,7 +190,7 @@ cognite_toolkit/_cdf_tk/resource_classes/agent_tools.py,sha256=oNkpPCQF3CyV9zcD6
|
|
|
188
190
|
cognite_toolkit/_cdf_tk/resource_classes/asset.py,sha256=bFneWvGrEO0QsCJfSjfVDnJtIp9YCYIU7LYESldUSMs,1179
|
|
189
191
|
cognite_toolkit/_cdf_tk/resource_classes/authentication.py,sha256=RTLjFXWhpg2tLoJ-xTUH0kPMapuCacrgc-RXHVPJ0QQ,630
|
|
190
192
|
cognite_toolkit/_cdf_tk/resource_classes/base.py,sha256=nbAWSBkV-GL0co5UNMXvYMIw_-qhJ8uoXy9wz6KmI-w,723
|
|
191
|
-
cognite_toolkit/_cdf_tk/resource_classes/capabilities.py,sha256=
|
|
193
|
+
cognite_toolkit/_cdf_tk/resource_classes/capabilities.py,sha256=6rmMl_TluRbbSlAmwnI8beqpWHmC7M1nSwWaW2TnT_M,14718
|
|
192
194
|
cognite_toolkit/_cdf_tk/resource_classes/cognitefile.py,sha256=nsLBw6CxwrmfxliO0vsGSc4vfaDONPsNHPFT6ckvudk,2800
|
|
193
195
|
cognite_toolkit/_cdf_tk/resource_classes/container_field_definitions.py,sha256=grjzoW8AwujPJV70QyKBmhJ0m99kED9KMttoongnpL4,11428
|
|
194
196
|
cognite_toolkit/_cdf_tk/resource_classes/containers.py,sha256=cWLB6CTvBkdwrMg4bw1S72s7IZo7O_pYNNTTUwNqXpY,3701
|
|
@@ -242,7 +244,7 @@ cognite_toolkit/_cdf_tk/storageio/__init__.py,sha256=T2PzfD2Tf5khE0cmSDLcqTlRy9Y
|
|
|
242
244
|
cognite_toolkit/_cdf_tk/storageio/_annotations.py,sha256=JI_g18_Y9S7pbc9gm6dZMyo3Z-bCndJXF9C2lOva0bQ,4848
|
|
243
245
|
cognite_toolkit/_cdf_tk/storageio/_applications.py,sha256=vena8BW7erki6i-hGdcdiOmDbMU3P9M_Kn_5dPG6Yzw,16084
|
|
244
246
|
cognite_toolkit/_cdf_tk/storageio/_asset_centric.py,sha256=mRwcVvBzUES21zNb-mDH7XqZWN37p4GUs0JRx7lbRyw,32817
|
|
245
|
-
cognite_toolkit/_cdf_tk/storageio/_base.py,sha256=
|
|
247
|
+
cognite_toolkit/_cdf_tk/storageio/_base.py,sha256=4yjjSnmo9gmMlSEREDAOVUXm1cT4qOuInoyxoKQkxx4,12107
|
|
246
248
|
cognite_toolkit/_cdf_tk/storageio/_data_classes.py,sha256=s3TH04BJ1q7rXndRhEbVMEnoOXjxrGg4n-w9Z5uUL-o,3480
|
|
247
249
|
cognite_toolkit/_cdf_tk/storageio/_datapoints.py,sha256=AGTQm9CBRbu1oXbBh0X7UGzFrHnlWZExqNvAohT0hM0,8641
|
|
248
250
|
cognite_toolkit/_cdf_tk/storageio/_file_content.py,sha256=g8HDDHbBPBcb3g6Zp-vHc8uvNZYrZXWs5G0jq_eOc4w,10884
|
|
@@ -301,13 +303,13 @@ cognite_toolkit/_repo_files/.gitignore,sha256=ip9kf9tcC5OguF4YF4JFEApnKYw0nG0vPi
|
|
|
301
303
|
cognite_toolkit/_repo_files/AzureDevOps/.devops/README.md,sha256=OLA0D7yCX2tACpzvkA0IfkgQ4_swSd-OlJ1tYcTBpsA,240
|
|
302
304
|
cognite_toolkit/_repo_files/AzureDevOps/.devops/deploy-pipeline.yml,sha256=brULcs8joAeBC_w_aoWjDDUHs3JheLMIR9ajPUK96nc,693
|
|
303
305
|
cognite_toolkit/_repo_files/AzureDevOps/.devops/dry-run-pipeline.yml,sha256=OBFDhFWK1mlT4Dc6mDUE2Es834l8sAlYG50-5RxRtHk,723
|
|
304
|
-
cognite_toolkit/_repo_files/GitHub/.github/workflows/deploy.yaml,sha256=
|
|
305
|
-
cognite_toolkit/_repo_files/GitHub/.github/workflows/dry-run.yaml,sha256=
|
|
306
|
-
cognite_toolkit/_resources/cdf.toml,sha256=
|
|
306
|
+
cognite_toolkit/_repo_files/GitHub/.github/workflows/deploy.yaml,sha256=QzZ_9Fdgtk4XGRzjhz38X2gJLTUdpql2QhNhjVd0Kcc,666
|
|
307
|
+
cognite_toolkit/_repo_files/GitHub/.github/workflows/dry-run.yaml,sha256=mNYPPj62DTJmltAA9B6vYCzD4q4FFwJc_OwrtlnLpz4,2429
|
|
308
|
+
cognite_toolkit/_resources/cdf.toml,sha256=UyImfcvX-B9HGOZWLuuIVlTAP5xk58FZCewFtaLmFJ8,474
|
|
307
309
|
cognite_toolkit/demo/__init__.py,sha256=-m1JoUiwRhNCL18eJ6t7fZOL7RPfowhCuqhYFtLgrss,72
|
|
308
310
|
cognite_toolkit/demo/_base.py,sha256=6xKBUQpXZXGQ3fJ5f7nj7oT0s2n7OTAGIa17ZlKHZ5U,8052
|
|
309
|
-
cognite_toolkit-0.7.
|
|
310
|
-
cognite_toolkit-0.7.
|
|
311
|
-
cognite_toolkit-0.7.
|
|
312
|
-
cognite_toolkit-0.7.
|
|
313
|
-
cognite_toolkit-0.7.
|
|
311
|
+
cognite_toolkit-0.7.5.dist-info/METADATA,sha256=I83-hIqQN-b6yZzbtNqTaLxQIiTqklrkdg8mCnxdKi0,4500
|
|
312
|
+
cognite_toolkit-0.7.5.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
|
|
313
|
+
cognite_toolkit-0.7.5.dist-info/entry_points.txt,sha256=JlR7MH1_UMogC3QOyN4-1l36VbrCX9xUdQoHGkuJ6-4,83
|
|
314
|
+
cognite_toolkit-0.7.5.dist-info/licenses/LICENSE,sha256=CW0DRcx5tL-pCxLEN7ts2S9g2sLRAsWgHVEX4SN9_Mc,752
|
|
315
|
+
cognite_toolkit-0.7.5.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|