cognite-toolkit 0.6.115__py3-none-any.whl → 0.6.117__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.
@@ -862,6 +862,15 @@ class DumpDataApp(typer.Typer):
862
862
  ] = False,
863
863
  ) -> None:
864
864
  """This command will dump the selected assets in the selected format to the folder specified, defaults to /tmp."""
865
+ if Flags.v07:
866
+ print(
867
+ "[bold yellow]Warning:[/] This command has been removed. Please use `cdf data download assets` instead."
868
+ )
869
+ return None
870
+ elif Flags.v08:
871
+ raise ValueError(
872
+ "The `cdf dump data asset` command has been removed. Please use `cdf data download assets` instead."
873
+ )
865
874
  cmd = DumpDataCommand()
866
875
  client = EnvironmentVariables.create_from_environment().get_client()
867
876
  if hierarchy is None and data_set is None:
@@ -940,6 +949,15 @@ class DumpDataApp(typer.Typer):
940
949
  ] = False,
941
950
  ) -> None:
942
951
  """This command will dump the selected events to the selected format in the folder specified, defaults to /tmp."""
952
+ if Flags.v07:
953
+ print(
954
+ "[bold yellow]Warning:[/] This command has been removed. Please use `cdf data download files` instead."
955
+ )
956
+ return None
957
+ elif Flags.v08:
958
+ raise ValueError(
959
+ "The `cdf dump data files-metadata` command has been removed. Please use `cdf data download files` instead."
960
+ )
943
961
  cmd = DumpDataCommand()
944
962
  cmd.validate_directory(output_dir, clean)
945
963
  client = EnvironmentVariables.create_from_environment().get_client()
@@ -1018,6 +1036,15 @@ class DumpDataApp(typer.Typer):
1018
1036
  ] = False,
1019
1037
  ) -> None:
1020
1038
  """This command will dump the selected timeseries to the selected format in the folder specified, defaults to /tmp."""
1039
+ if Flags.v07:
1040
+ print(
1041
+ "[bold yellow]Warning:[/] This command has been removed. Please use `cdf data download timeseries` instead."
1042
+ )
1043
+ return None
1044
+ elif Flags.v08:
1045
+ raise ValueError(
1046
+ "The `cdf dump data timeseries` command has been removed. Please use `cdf data download timeseries` instead."
1047
+ )
1021
1048
  cmd = DumpDataCommand()
1022
1049
  client = EnvironmentVariables.create_from_environment().get_client()
1023
1050
  if hierarchy is None and data_set is None:
@@ -1095,6 +1122,15 @@ class DumpDataApp(typer.Typer):
1095
1122
  ] = False,
1096
1123
  ) -> None:
1097
1124
  """This command will dump the selected events to the selected format in the folder specified, defaults to /tmp."""
1125
+ if Flags.v07:
1126
+ print(
1127
+ "[bold yellow]Warning:[/] This command has been removed. Please use `cdf data download events` instead."
1128
+ )
1129
+ return None
1130
+ elif Flags.v08:
1131
+ raise ValueError(
1132
+ "The `cdf dump data event` command has been removed. Please use `cdf data download events` instead."
1133
+ )
1098
1134
  cmd = DumpDataCommand()
1099
1135
  cmd.validate_directory(output_dir, clean)
1100
1136
  client = EnvironmentVariables.create_from_environment().get_client()
@@ -89,6 +89,10 @@ class Flags(Enum):
89
89
  visible=True,
90
90
  description="Enables the support for the streams resources",
91
91
  )
92
+ v08 = FlagMetadata(
93
+ visible=False,
94
+ description="Enables features planned for Cognite Toolkit version 0.8.0",
95
+ )
92
96
 
93
97
  def is_enabled(self) -> bool:
94
98
  return FeatureFlag.is_enabled(self)
@@ -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
- for item in cast(Sequence[UploadFileContentItem], data_chunk):
102
- responses = http_client.request_with_retries(
103
- message=SimpleBodyRequest(
104
- endpoint_url=config.create_api_url(self.UPLOAD_ENDPOINT),
105
- method="POST",
106
- # MyPy does not understand that .dump is valid json
107
- body_content=item.dump(), # type: ignore[arg-type]
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
- try:
111
- body = responses.get_first_body()
112
- except ValueError:
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 FileDataModelingTemplate(FileTemplate):
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
@@ -12,7 +12,7 @@ jobs:
12
12
  environment: dev
13
13
  name: Deploy
14
14
  container:
15
- image: cognite/toolkit:0.6.115
15
+ image: cognite/toolkit:0.6.117
16
16
  env:
17
17
  CDF_CLUSTER: ${{ vars.CDF_CLUSTER }}
18
18
  CDF_PROJECT: ${{ vars.CDF_PROJECT }}
@@ -10,7 +10,7 @@ jobs:
10
10
  environment: dev
11
11
  name: Deploy Dry Run
12
12
  container:
13
- image: cognite/toolkit:0.6.115
13
+ image: cognite/toolkit:0.6.117
14
14
  env:
15
15
  CDF_CLUSTER: ${{ vars.CDF_CLUSTER }}
16
16
  CDF_PROJECT: ${{ vars.CDF_PROJECT }}
@@ -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.115"
7
+ version = "0.6.117"
8
8
 
9
9
  [alpha_flags]
10
10
  external-libraries = true
@@ -1 +1 @@
1
- __version__ = "0.6.115"
1
+ __version__ = "0.6.117"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: cognite_toolkit
3
- Version: 0.6.115
3
+ Version: 0.6.117
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,11 +1,11 @@
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=Z89ggLJjU4yNR7PZQ8iPexZJTOjFTQDJaPNdozHGQjA,24
3
+ cognite_toolkit/_version.py,sha256=BKspJAzQvSvpMvDSKrNyLpL6pmtl3WZKJUMkohpMWyU,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
7
7
  cognite_toolkit/_cdf_tk/exceptions.py,sha256=xG0jMwi5A20nvPvyo6sCyz_cyKycynPyIzpYiGR4gcU,6064
8
- cognite_toolkit/_cdf_tk/feature_flags.py,sha256=TjwUmGG5qXBQ-8P1ongh2qQnuRfVRvGaP1JBtuUot88,3106
8
+ cognite_toolkit/_cdf_tk/feature_flags.py,sha256=DYIsy-Ee4CB0Ixwp5LCc1-vy80ivnET7myTJXOTh74E,3241
9
9
  cognite_toolkit/_cdf_tk/hints.py,sha256=UI1ymi2T5wCcYOpEbKbVaDnlyFReFy8TDtMVt-5E1h8,6493
10
10
  cognite_toolkit/_cdf_tk/plugins.py,sha256=JwaN_jrrky1PXBJ3tRpZ22cIcD01EB46WVFgp_bK-fQ,856
11
11
  cognite_toolkit/_cdf_tk/protocols.py,sha256=Lc8XnBfmDZN6dwmSopmK7cFE9a9jZ2zdUryEeCXn27I,3052
@@ -17,7 +17,7 @@ cognite_toolkit/_cdf_tk/apps/_core_app.py,sha256=Xlhdv2MoCs2kBk0kgJixiy8ouCfixUW
17
17
  cognite_toolkit/_cdf_tk/apps/_data_app.py,sha256=rFnTcUBAuoFcTQCjxwqZGG0HjUMGdYTFyBGXxWg5gXE,824
18
18
  cognite_toolkit/_cdf_tk/apps/_dev_app.py,sha256=q8DBr4BAK33AwsHW3gAWZWSjSaQRuCisqPbsBjmYSxk,589
19
19
  cognite_toolkit/_cdf_tk/apps/_download_app.py,sha256=g-VA51KI91wziVuO3w305rmr33xIb0ghYTtW06LhNz8,31994
20
- cognite_toolkit/_cdf_tk/apps/_dump_app.py,sha256=Ec0aEqbKwCkxni09i06rfY31qZUyOVwbbvo7MHh4cf8,39056
20
+ cognite_toolkit/_cdf_tk/apps/_dump_app.py,sha256=ujM_umb-g9xO-Hf2NEzCr6u0SLnsUbxvQHvhehJBFo0,40616
21
21
  cognite_toolkit/_cdf_tk/apps/_landing_app.py,sha256=HxzSln3fJXs5NzulfQGUMropXcwMobUYpyePrCrQTQs,1502
22
22
  cognite_toolkit/_cdf_tk/apps/_migrate_app.py,sha256=g4S_53kbIgk57ziPLdRMuR6xUe434gkMqa69VmVm5Vg,39619
23
23
  cognite_toolkit/_cdf_tk/apps/_modules_app.py,sha256=95_H2zccRJl2mWn0oQ5mjCaEDnG63sPKOkB81IgWcIk,7637
@@ -245,16 +245,16 @@ cognite_toolkit/_cdf_tk/storageio/_asset_centric.py,sha256=mRwcVvBzUES21zNb-mDH7
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=HKf3Dg3PMH_QBbPrMhpC75H74laDRVx9R0KiEGKXikI,6103
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=h7fpasWnxINhwe5prJ_ZhxJw-aPQcOvPqlI_1oHmfI8,2163
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=bDcU0Unbb_qG6z004aKTKgeAVhRnFQ4mz-rjNuouXu4,2881
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=PjN9SjPDdv1gpMbLk4BENfZSsfvk1FcYm09Wi-GGoR0,668
306
- cognite_toolkit/_repo_files/GitHub/.github/workflows/dry-run.yaml,sha256=7tIIyJNaWWVKWPUs6s4oSpsBBs14c1UzOSy-VpOn638,2431
307
- cognite_toolkit/_resources/cdf.toml,sha256=QLuQRCrDWpi6Z_YIAkV9LySofdxFW86-2YztdKmxUZw,488
305
+ cognite_toolkit/_repo_files/GitHub/.github/workflows/deploy.yaml,sha256=6k6HSNh490UfDKoXgD6-zjHxp0oLOHZ7Pe566JXtFXo,668
306
+ cognite_toolkit/_repo_files/GitHub/.github/workflows/dry-run.yaml,sha256=JCVFSFk7wCo0Kk_Xb5rthWA_Us_A1haz5_-x0fBHjqk,2431
307
+ cognite_toolkit/_resources/cdf.toml,sha256=jwpeT_8ADisMF91205BNXWG5uwvouB23NqJnjQJ_ch4,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.115.dist-info/METADATA,sha256=F2AdvNhKV2uNNLV94cAmf1rq0Bj_huntJkH2OuoUqBQ,4502
311
- cognite_toolkit-0.6.115.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
312
- cognite_toolkit-0.6.115.dist-info/entry_points.txt,sha256=JlR7MH1_UMogC3QOyN4-1l36VbrCX9xUdQoHGkuJ6-4,83
313
- cognite_toolkit-0.6.115.dist-info/licenses/LICENSE,sha256=CW0DRcx5tL-pCxLEN7ts2S9g2sLRAsWgHVEX4SN9_Mc,752
314
- cognite_toolkit-0.6.115.dist-info/RECORD,,
310
+ cognite_toolkit-0.6.117.dist-info/METADATA,sha256=UbtMFVinEza_hEI1bTyTkh3qB0TBo6IMfhZDU4sCzJo,4502
311
+ cognite_toolkit-0.6.117.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
312
+ cognite_toolkit-0.6.117.dist-info/entry_points.txt,sha256=JlR7MH1_UMogC3QOyN4-1l36VbrCX9xUdQoHGkuJ6-4,83
313
+ cognite_toolkit-0.6.117.dist-info/licenses/LICENSE,sha256=CW0DRcx5tL-pCxLEN7ts2S9g2sLRAsWgHVEX4SN9_Mc,752
314
+ cognite_toolkit-0.6.117.dist-info/RECORD,,