cognite-toolkit 0.6.116__py3-none-any.whl → 0.6.118__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/storageio/_applications.py +23 -0
- cognite_toolkit/_cdf_tk/storageio/_file_content.py +131 -28
- cognite_toolkit/_cdf_tk/storageio/selectors/__init__.py +2 -0
- cognite_toolkit/_cdf_tk/storageio/selectors/_file_content.py +17 -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.6.116.dist-info → cognite_toolkit-0.6.118.dist-info}/METADATA +1 -1
- {cognite_toolkit-0.6.116.dist-info → cognite_toolkit-0.6.118.dist-info}/RECORD +13 -13
- {cognite_toolkit-0.6.116.dist-info → cognite_toolkit-0.6.118.dist-info}/WHEEL +0 -0
- {cognite_toolkit-0.6.116.dist-info → cognite_toolkit-0.6.118.dist-info}/entry_points.txt +0 -0
- {cognite_toolkit-0.6.116.dist-info → cognite_toolkit-0.6.118.dist-info}/licenses/LICENSE +0 -0
|
@@ -8,6 +8,7 @@ from cognite_toolkit._cdf_tk.client.data_classes.charts import Chart, ChartList,
|
|
|
8
8
|
from cognite_toolkit._cdf_tk.exceptions import ToolkitNotImplementedError
|
|
9
9
|
from cognite_toolkit._cdf_tk.tk_warnings import MediumSeverityWarning
|
|
10
10
|
from cognite_toolkit._cdf_tk.utils.collection import chunker_sequence
|
|
11
|
+
from cognite_toolkit._cdf_tk.utils.http_client import HTTPClient, HTTPMessage, SimpleBodyRequest
|
|
11
12
|
from cognite_toolkit._cdf_tk.utils.useful_types import JsonVal
|
|
12
13
|
|
|
13
14
|
from ._base import Page, UploadableStorageIO, UploadItem
|
|
@@ -159,6 +160,28 @@ class CanvasIO(UploadableStorageIO[CanvasSelector, IndustrialCanvas, IndustrialC
|
|
|
159
160
|
raise ToolkitNotImplementedError(f"Unsupported selector type {type(selector).__name__!r} for CanvasIO")
|
|
160
161
|
return len(selector.external_ids)
|
|
161
162
|
|
|
163
|
+
def upload_items(
|
|
164
|
+
self,
|
|
165
|
+
data_chunk: Sequence[UploadItem[IndustrialCanvasApply]],
|
|
166
|
+
http_client: HTTPClient,
|
|
167
|
+
selector: CanvasSelector | None = None,
|
|
168
|
+
) -> Sequence[HTTPMessage]:
|
|
169
|
+
config = http_client.config
|
|
170
|
+
results: list[HTTPMessage] = []
|
|
171
|
+
for item in data_chunk:
|
|
172
|
+
instances = item.item.as_instances()
|
|
173
|
+
responses = http_client.request_with_retries(
|
|
174
|
+
message=SimpleBodyRequest(
|
|
175
|
+
endpoint_url=config.create_api_url("/models/instances"),
|
|
176
|
+
method="POST",
|
|
177
|
+
# MyPy does not understand that .dump is valid json
|
|
178
|
+
body_content={"items": [instance.dump() for instance in instances]},
|
|
179
|
+
)
|
|
180
|
+
)
|
|
181
|
+
results.extend(responses.as_item_responses(item.source_id))
|
|
182
|
+
|
|
183
|
+
return results
|
|
184
|
+
|
|
162
185
|
def data_to_json_chunk(
|
|
163
186
|
self, data_chunk: Sequence[IndustrialCanvas], selector: CanvasSelector | None = None
|
|
164
187
|
) -> list[dict[str, JsonVal]]:
|
|
@@ -6,6 +6,7 @@ from pathlib import Path
|
|
|
6
6
|
from typing import cast
|
|
7
7
|
|
|
8
8
|
from cognite.client.data_classes import FileMetadata, FileMetadataWrite
|
|
9
|
+
from cognite.client.data_classes.data_modeling import NodeId, ViewId
|
|
9
10
|
|
|
10
11
|
from cognite_toolkit._cdf_tk.client import ToolkitClient
|
|
11
12
|
from cognite_toolkit._cdf_tk.cruds import FileMetadataCRUD
|
|
@@ -15,16 +16,20 @@ from cognite_toolkit._cdf_tk.utils.fileio import MultiFileReader
|
|
|
15
16
|
from cognite_toolkit._cdf_tk.utils.http_client import (
|
|
16
17
|
DataBodyRequest,
|
|
17
18
|
ErrorDetails,
|
|
19
|
+
FailedResponse,
|
|
18
20
|
FailedResponseItems,
|
|
19
21
|
HTTPClient,
|
|
20
22
|
HTTPMessage,
|
|
23
|
+
ResponseList,
|
|
21
24
|
SimpleBodyRequest,
|
|
22
25
|
)
|
|
23
26
|
from cognite_toolkit._cdf_tk.utils.useful_types import JsonVal
|
|
24
27
|
|
|
25
28
|
from ._base import Page, UploadableStorageIO, UploadItem
|
|
26
29
|
from .selectors import FileContentSelector, FileMetadataTemplateSelector
|
|
27
|
-
from .selectors._file_content import FILEPATH
|
|
30
|
+
from .selectors._file_content import FILEPATH, FileDataModelingTemplateSelector
|
|
31
|
+
|
|
32
|
+
COGNITE_FILE_VIEW = ViewId("cdf_cdm", "CogniteFile", "v1")
|
|
28
33
|
|
|
29
34
|
|
|
30
35
|
@dataclass
|
|
@@ -94,35 +99,20 @@ class FileContentIO(UploadableStorageIO[FileContentSelector, FileMetadata, FileM
|
|
|
94
99
|
http_client: HTTPClient,
|
|
95
100
|
selector: FileContentSelector | None = None,
|
|
96
101
|
) -> Sequence[HTTPMessage]:
|
|
97
|
-
if not isinstance(selector, FileMetadataTemplateSelector):
|
|
98
|
-
raise ToolkitNotImplementedError("Only uploading of file metadata is currently supported.")
|
|
99
|
-
config = http_client.config
|
|
100
102
|
results: MutableSequence[HTTPMessage] = []
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
103
|
+
if isinstance(selector, FileMetadataTemplateSelector):
|
|
104
|
+
upload_url_getter = self._upload_url_asset_centric
|
|
105
|
+
elif isinstance(selector, FileDataModelingTemplateSelector):
|
|
106
|
+
upload_url_getter = self._upload_url_data_modeling
|
|
107
|
+
elif selector is None:
|
|
108
|
+
raise ToolkitNotImplementedError("Selector must be provided for FileContentIO upload")
|
|
109
|
+
else:
|
|
110
|
+
raise ToolkitNotImplementedError(
|
|
111
|
+
f"Upload for the given selector, {type(selector).__name__}, is not supported for FileContentIO"
|
|
109
112
|
)
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
results.extend(responses.as_item_responses(item.as_id()))
|
|
114
|
-
continue
|
|
115
|
-
try:
|
|
116
|
-
upload_url = cast(str, body["uploadUrl"])
|
|
117
|
-
except (KeyError, IndexError):
|
|
118
|
-
results.append(
|
|
119
|
-
FailedResponseItems(
|
|
120
|
-
status_code=200,
|
|
121
|
-
body=json.dumps(body),
|
|
122
|
-
error=ErrorDetails(code=200, message="Malformed response"),
|
|
123
|
-
ids=[item.as_id()],
|
|
124
|
-
)
|
|
125
|
-
)
|
|
113
|
+
|
|
114
|
+
for item in cast(Sequence[UploadFileContentItem], data_chunk):
|
|
115
|
+
if not (upload_url := upload_url_getter(item, http_client, results)):
|
|
126
116
|
continue
|
|
127
117
|
|
|
128
118
|
upload_response = http_client.request_with_retries(
|
|
@@ -136,6 +126,119 @@ class FileContentIO(UploadableStorageIO[FileContentSelector, FileMetadata, FileM
|
|
|
136
126
|
results.extend(upload_response.as_item_responses(item.as_id()))
|
|
137
127
|
return results
|
|
138
128
|
|
|
129
|
+
def _upload_url_asset_centric(
|
|
130
|
+
self, item: UploadFileContentItem, http_client: HTTPClient, results: MutableSequence[HTTPMessage]
|
|
131
|
+
) -> str | None:
|
|
132
|
+
responses = http_client.request_with_retries(
|
|
133
|
+
message=SimpleBodyRequest(
|
|
134
|
+
endpoint_url=http_client.config.create_api_url(self.UPLOAD_ENDPOINT),
|
|
135
|
+
method="POST",
|
|
136
|
+
# MyPy does not understand that .dump is valid json
|
|
137
|
+
body_content=item.dump(), # type: ignore[arg-type]
|
|
138
|
+
)
|
|
139
|
+
)
|
|
140
|
+
return self._parse_upload_link_response(responses, item, results)
|
|
141
|
+
|
|
142
|
+
def _upload_url_data_modeling(
|
|
143
|
+
self,
|
|
144
|
+
item: UploadFileContentItem,
|
|
145
|
+
http_client: HTTPClient,
|
|
146
|
+
results: MutableSequence[HTTPMessage],
|
|
147
|
+
created_node: bool = False,
|
|
148
|
+
) -> str | None:
|
|
149
|
+
"""Get upload URL for data modeling file upload.
|
|
150
|
+
|
|
151
|
+
We first try to get the upload link assuming the CogniteFile node already exists.
|
|
152
|
+
If we get a "not found" error, we create the CogniteFile node and try again.
|
|
153
|
+
|
|
154
|
+
Args:
|
|
155
|
+
item: The upload item containing file metadata.
|
|
156
|
+
http_client: The HTTP client to use for requests.
|
|
157
|
+
results: A mutable sequence to collect HTTP messages and errors.
|
|
158
|
+
created_node: A flag indicating whether the CogniteFile node has already been created.
|
|
159
|
+
This prevents infinite recursion.
|
|
160
|
+
|
|
161
|
+
Returns:
|
|
162
|
+
The upload URL as a string, or None if there was an error.
|
|
163
|
+
|
|
164
|
+
"""
|
|
165
|
+
# We know that instance_id is always set for data modeling uploads
|
|
166
|
+
instance_id = cast(NodeId, item.item.instance_id)
|
|
167
|
+
responses = http_client.request_with_retries(
|
|
168
|
+
message=SimpleBodyRequest(
|
|
169
|
+
endpoint_url=http_client.config.create_api_url("/files/uploadlink"),
|
|
170
|
+
method="POST",
|
|
171
|
+
body_content={"items": [{"instanceId": instance_id.dump(include_instance_type=False)}]}, # type: ignore[dict-item]
|
|
172
|
+
)
|
|
173
|
+
)
|
|
174
|
+
# We know there is only one response since we only requested one upload link
|
|
175
|
+
response = responses[0]
|
|
176
|
+
if isinstance(response, FailedResponse) and response.error.missing and not created_node:
|
|
177
|
+
if self._create_cognite_file_node(instance_id, http_client, item.as_id(), results):
|
|
178
|
+
return self._upload_url_data_modeling(item, http_client, results, created_node=True)
|
|
179
|
+
else:
|
|
180
|
+
return None
|
|
181
|
+
|
|
182
|
+
return self._parse_upload_link_response(responses, item, results)
|
|
183
|
+
|
|
184
|
+
@classmethod
|
|
185
|
+
def _create_cognite_file_node(
|
|
186
|
+
cls, instance_id: NodeId, http_client: HTTPClient, upload_id: str, results: MutableSequence[HTTPMessage]
|
|
187
|
+
) -> bool:
|
|
188
|
+
node_creation = http_client.request_with_retries(
|
|
189
|
+
message=SimpleBodyRequest(
|
|
190
|
+
endpoint_url=http_client.config.create_api_url("/models/instances"),
|
|
191
|
+
method="POST",
|
|
192
|
+
body_content={
|
|
193
|
+
"items": [
|
|
194
|
+
{
|
|
195
|
+
"space": instance_id.space,
|
|
196
|
+
"externalId": instance_id.external_id,
|
|
197
|
+
"instanceType": "node",
|
|
198
|
+
# When we create a node with properties in CogniteFile View even with empty properties,
|
|
199
|
+
# CDF will fill in empty values for all properties defined in the view (note this is only
|
|
200
|
+
# possible because CogniteFile view has all properties as optional). This includes properties
|
|
201
|
+
# in the CogniteFile container, which will trigger the file syncer to create a FileMetadata
|
|
202
|
+
# and link it to the CogniteFile node.
|
|
203
|
+
"sources": [{"source": COGNITE_FILE_VIEW.dump(include_type=True), "properties": {}}], # type: ignore[dict-item]
|
|
204
|
+
}
|
|
205
|
+
]
|
|
206
|
+
},
|
|
207
|
+
)
|
|
208
|
+
)
|
|
209
|
+
try:
|
|
210
|
+
_ = node_creation.get_first_body()
|
|
211
|
+
except ValueError:
|
|
212
|
+
results.extend(node_creation.as_item_responses(upload_id))
|
|
213
|
+
return False
|
|
214
|
+
return True
|
|
215
|
+
|
|
216
|
+
@classmethod
|
|
217
|
+
def _parse_upload_link_response(
|
|
218
|
+
cls, responses: ResponseList, item: UploadFileContentItem, results: MutableSequence[HTTPMessage]
|
|
219
|
+
) -> str | None:
|
|
220
|
+
try:
|
|
221
|
+
body = responses.get_first_body()
|
|
222
|
+
except ValueError:
|
|
223
|
+
results.extend(responses.as_item_responses(item.as_id()))
|
|
224
|
+
return None
|
|
225
|
+
|
|
226
|
+
if "items" in body and isinstance(body["items"], list) and len(body["items"]) > 0:
|
|
227
|
+
body = body["items"][0] # type: ignore[assignment]
|
|
228
|
+
try:
|
|
229
|
+
upload_url = cast(str, body["uploadUrl"])
|
|
230
|
+
except (KeyError, IndexError):
|
|
231
|
+
results.append(
|
|
232
|
+
FailedResponseItems(
|
|
233
|
+
status_code=200,
|
|
234
|
+
body=json.dumps(body),
|
|
235
|
+
error=ErrorDetails(code=200, message="Malformed response"),
|
|
236
|
+
ids=[item.as_id()],
|
|
237
|
+
)
|
|
238
|
+
)
|
|
239
|
+
return None
|
|
240
|
+
return upload_url
|
|
241
|
+
|
|
139
242
|
@classmethod
|
|
140
243
|
def read_chunks(
|
|
141
244
|
cls, reader: MultiFileReader, selector: FileContentSelector
|
|
@@ -15,6 +15,7 @@ from ._datapoints import (
|
|
|
15
15
|
)
|
|
16
16
|
from ._file_content import (
|
|
17
17
|
FileContentSelector,
|
|
18
|
+
FileDataModelingTemplate,
|
|
18
19
|
FileDataModelingTemplateSelector,
|
|
19
20
|
FileMetadataTemplate,
|
|
20
21
|
FileMetadataTemplateSelector,
|
|
@@ -64,6 +65,7 @@ __all__ = [
|
|
|
64
65
|
"DataSetSelector",
|
|
65
66
|
"ExternalIdColumn",
|
|
66
67
|
"FileContentSelector",
|
|
68
|
+
"FileDataModelingTemplate",
|
|
67
69
|
"FileDataModelingTemplateSelector",
|
|
68
70
|
"FileMetadataTemplate",
|
|
69
71
|
"FileMetadataTemplateSelector",
|
|
@@ -3,7 +3,7 @@ from abc import ABC, abstractmethod
|
|
|
3
3
|
from pathlib import Path
|
|
4
4
|
from typing import Any, Literal
|
|
5
5
|
|
|
6
|
-
from pydantic import ConfigDict, field_validator
|
|
6
|
+
from pydantic import ConfigDict, field_validator, model_validator
|
|
7
7
|
|
|
8
8
|
from ._base import DataSelector, SelectorObject
|
|
9
9
|
from ._instances import SelectedView
|
|
@@ -64,7 +64,7 @@ class FileMetadataTemplateSelector(FileContentSelector):
|
|
|
64
64
|
return self.template.create_instance(filepath.name)
|
|
65
65
|
|
|
66
66
|
|
|
67
|
-
class
|
|
67
|
+
class TemplateNodeId(SelectorObject):
|
|
68
68
|
space: str
|
|
69
69
|
external_id: str
|
|
70
70
|
|
|
@@ -79,9 +79,23 @@ class FileDataModelingTemplate(FileTemplate):
|
|
|
79
79
|
return v
|
|
80
80
|
|
|
81
81
|
|
|
82
|
+
class FileDataModelingTemplate(FileTemplate):
|
|
83
|
+
instance_id: TemplateNodeId
|
|
84
|
+
# Name is required for FileMetadata but not for CogniteFiles. This is the same default behavior as in CDF.
|
|
85
|
+
name: str = "untitled"
|
|
86
|
+
|
|
87
|
+
@model_validator(mode="before")
|
|
88
|
+
def _move_space_external_id(cls, data: dict[str, Any]) -> dict[str, Any]:
|
|
89
|
+
if "space" in data and "externalId" in data:
|
|
90
|
+
data["instanceId"] = {"space": data.pop("space"), "externalId": data.pop("externalId")}
|
|
91
|
+
elif "space" in data and "external_id" in data:
|
|
92
|
+
data["instance_id"] = {"space": data.pop("space"), "external_id": data.pop("external_id")}
|
|
93
|
+
return data
|
|
94
|
+
|
|
95
|
+
|
|
82
96
|
class FileDataModelingTemplateSelector(FileContentSelector):
|
|
83
97
|
type: Literal["fileDataModelingTemplate"] = "fileDataModelingTemplate"
|
|
84
|
-
view_id: SelectedView
|
|
98
|
+
view_id: SelectedView = SelectedView(space="cdf_cdm", external_id="CogniteFile", version="v1")
|
|
85
99
|
template: FileDataModelingTemplate
|
|
86
100
|
|
|
87
101
|
@property
|
|
@@ -4,7 +4,7 @@ default_env = "<DEFAULT_ENV_PLACEHOLDER>"
|
|
|
4
4
|
[modules]
|
|
5
5
|
# This is the version of the modules. It should not be changed manually.
|
|
6
6
|
# It will be updated by the 'cdf modules upgrade' command.
|
|
7
|
-
version = "0.6.
|
|
7
|
+
version = "0.6.118"
|
|
8
8
|
|
|
9
9
|
[alpha_flags]
|
|
10
10
|
external-libraries = true
|
cognite_toolkit/_version.py
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
__version__ = "0.6.
|
|
1
|
+
__version__ = "0.6.118"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: cognite_toolkit
|
|
3
|
-
Version: 0.6.
|
|
3
|
+
Version: 0.6.118
|
|
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=qr31QC3AhJukM-9rBeWHBTLuNU01XIXAtV5dzqOU3iA,5958
|
|
3
|
-
cognite_toolkit/_version.py,sha256=
|
|
3
|
+
cognite_toolkit/_version.py,sha256=FxRZpIykG7tzNEEpbz77BWxMHeGPZF7cZeJus_vCRsM,24
|
|
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=3UpFZ60xXdqgPqqpqCITQuAvjnVExH_IlbASxoelvu8,7236
|
|
@@ -240,21 +240,21 @@ cognite_toolkit/_cdf_tk/resource_classes/robotics/location.py,sha256=dbc9HT-bc2Q
|
|
|
240
240
|
cognite_toolkit/_cdf_tk/resource_classes/robotics/map.py,sha256=j77z7CzCMiMj8r94BdUKCum9EuZRUjaSlUAy9K9DL_Q,942
|
|
241
241
|
cognite_toolkit/_cdf_tk/storageio/__init__.py,sha256=T2PzfD2Tf5khE0cmSDLcqTlRy9YEKTU-raKePIFSMNQ,1910
|
|
242
242
|
cognite_toolkit/_cdf_tk/storageio/_annotations.py,sha256=JI_g18_Y9S7pbc9gm6dZMyo3Z-bCndJXF9C2lOva0bQ,4848
|
|
243
|
-
cognite_toolkit/_cdf_tk/storageio/_applications.py,sha256=
|
|
243
|
+
cognite_toolkit/_cdf_tk/storageio/_applications.py,sha256=vena8BW7erki6i-hGdcdiOmDbMU3P9M_Kn_5dPG6Yzw,16084
|
|
244
244
|
cognite_toolkit/_cdf_tk/storageio/_asset_centric.py,sha256=mRwcVvBzUES21zNb-mDH7XqZWN37p4GUs0JRx7lbRyw,32817
|
|
245
245
|
cognite_toolkit/_cdf_tk/storageio/_base.py,sha256=cllSyg3rRGov_X45CoJ_isXhz0cU9Mt7OyV7_t_SeWw,12156
|
|
246
246
|
cognite_toolkit/_cdf_tk/storageio/_data_classes.py,sha256=s3TH04BJ1q7rXndRhEbVMEnoOXjxrGg4n-w9Z5uUL-o,3480
|
|
247
247
|
cognite_toolkit/_cdf_tk/storageio/_datapoints.py,sha256=AGTQm9CBRbu1oXbBh0X7UGzFrHnlWZExqNvAohT0hM0,8641
|
|
248
|
-
cognite_toolkit/_cdf_tk/storageio/_file_content.py,sha256=
|
|
248
|
+
cognite_toolkit/_cdf_tk/storageio/_file_content.py,sha256=g8HDDHbBPBcb3g6Zp-vHc8uvNZYrZXWs5G0jq_eOc4w,10884
|
|
249
249
|
cognite_toolkit/_cdf_tk/storageio/_instances.py,sha256=t9fNpHnT6kCk8LDoPj3qZXmHpyDbPF5BZ6pI8ziTyFw,10810
|
|
250
250
|
cognite_toolkit/_cdf_tk/storageio/_raw.py,sha256=5WjAFiVR0KKRhMqCy1IRy1TQFWj86D7nGu5WSFNLp6U,3869
|
|
251
|
-
cognite_toolkit/_cdf_tk/storageio/selectors/__init__.py,sha256=
|
|
251
|
+
cognite_toolkit/_cdf_tk/storageio/selectors/__init__.py,sha256=ELUCirQmhDR52PVIhLRd_2M1DWYURwL44U6WiN9_hEA,2225
|
|
252
252
|
cognite_toolkit/_cdf_tk/storageio/selectors/_asset_centric.py,sha256=7Iv_ccVX6Vzt3ZLFZ0Er3hN92iEsFTm9wgF-yermOWE,1467
|
|
253
253
|
cognite_toolkit/_cdf_tk/storageio/selectors/_base.py,sha256=hjFkbmNGsK3QIW-jnJV_8YNmvVROERxzG82qIZhU7SM,3065
|
|
254
254
|
cognite_toolkit/_cdf_tk/storageio/selectors/_canvas.py,sha256=E9S-wr-JUqRosI_2cSCfR0tF8MdIFTrMxDItuWRcuO4,597
|
|
255
255
|
cognite_toolkit/_cdf_tk/storageio/selectors/_charts.py,sha256=lQHuNtF3i6SEIMPAlziMm0QlqRcvZJ7MKIug6HMTDrs,1012
|
|
256
256
|
cognite_toolkit/_cdf_tk/storageio/selectors/_datapoints.py,sha256=EHVkWJYJ_HCs2i4Ur6Fj98UwuDvf67u0HOzrJXAHNt0,1719
|
|
257
|
-
cognite_toolkit/_cdf_tk/storageio/selectors/_file_content.py,sha256=
|
|
257
|
+
cognite_toolkit/_cdf_tk/storageio/selectors/_file_content.py,sha256=J_lP04QsvqCOIiw_u2rGMqIa_7obIxCaFkC70ukUjpI,3628
|
|
258
258
|
cognite_toolkit/_cdf_tk/storageio/selectors/_instances.py,sha256=NCFSJrAw52bNX6UTfOali8PvNjlqHnvxzL0hYBr7ZmA,4934
|
|
259
259
|
cognite_toolkit/_cdf_tk/storageio/selectors/_raw.py,sha256=sZq9C4G9DMe3S46_usKet0FphQ6ow7cWM_PfXrEAakk,503
|
|
260
260
|
cognite_toolkit/_cdf_tk/tk_warnings/__init__.py,sha256=U9bT-G2xKrX6mmtZ7nZ1FfQeCjNKfKP_p7pev90dwOE,2316
|
|
@@ -302,13 +302,13 @@ cognite_toolkit/_repo_files/.gitignore,sha256=ip9kf9tcC5OguF4YF4JFEApnKYw0nG0vPi
|
|
|
302
302
|
cognite_toolkit/_repo_files/AzureDevOps/.devops/README.md,sha256=OLA0D7yCX2tACpzvkA0IfkgQ4_swSd-OlJ1tYcTBpsA,240
|
|
303
303
|
cognite_toolkit/_repo_files/AzureDevOps/.devops/deploy-pipeline.yml,sha256=brULcs8joAeBC_w_aoWjDDUHs3JheLMIR9ajPUK96nc,693
|
|
304
304
|
cognite_toolkit/_repo_files/AzureDevOps/.devops/dry-run-pipeline.yml,sha256=OBFDhFWK1mlT4Dc6mDUE2Es834l8sAlYG50-5RxRtHk,723
|
|
305
|
-
cognite_toolkit/_repo_files/GitHub/.github/workflows/deploy.yaml,sha256=
|
|
306
|
-
cognite_toolkit/_repo_files/GitHub/.github/workflows/dry-run.yaml,sha256=
|
|
307
|
-
cognite_toolkit/_resources/cdf.toml,sha256=
|
|
305
|
+
cognite_toolkit/_repo_files/GitHub/.github/workflows/deploy.yaml,sha256=PGM98-0CQ8bWKL8L5NSU9sv_5zfyyJf0XDStcM1l2d4,668
|
|
306
|
+
cognite_toolkit/_repo_files/GitHub/.github/workflows/dry-run.yaml,sha256=GBFqqyqAWXty1N_ympFvlHCHYbN7hdNDjyhGS-rQm54,2431
|
|
307
|
+
cognite_toolkit/_resources/cdf.toml,sha256=Yiqq2erdwbz67Z0VH02p-Q9iQ-mglcF6_kU0rethUms,488
|
|
308
308
|
cognite_toolkit/demo/__init__.py,sha256=-m1JoUiwRhNCL18eJ6t7fZOL7RPfowhCuqhYFtLgrss,72
|
|
309
309
|
cognite_toolkit/demo/_base.py,sha256=6xKBUQpXZXGQ3fJ5f7nj7oT0s2n7OTAGIa17ZlKHZ5U,8052
|
|
310
|
-
cognite_toolkit-0.6.
|
|
311
|
-
cognite_toolkit-0.6.
|
|
312
|
-
cognite_toolkit-0.6.
|
|
313
|
-
cognite_toolkit-0.6.
|
|
314
|
-
cognite_toolkit-0.6.
|
|
310
|
+
cognite_toolkit-0.6.118.dist-info/METADATA,sha256=dA8GSJXTE0SIcTlrNbxDJLJ39N79pWa6P6K9PMKYnIo,4502
|
|
311
|
+
cognite_toolkit-0.6.118.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
|
312
|
+
cognite_toolkit-0.6.118.dist-info/entry_points.txt,sha256=JlR7MH1_UMogC3QOyN4-1l36VbrCX9xUdQoHGkuJ6-4,83
|
|
313
|
+
cognite_toolkit-0.6.118.dist-info/licenses/LICENSE,sha256=CW0DRcx5tL-pCxLEN7ts2S9g2sLRAsWgHVEX4SN9_Mc,752
|
|
314
|
+
cognite_toolkit-0.6.118.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|