cognite-toolkit 0.6.109__py3-none-any.whl → 0.6.111__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.
@@ -18,7 +18,7 @@ from cognite_toolkit._cdf_tk.commands._migrate.creators import (
18
18
  InstanceSpaceCreator,
19
19
  SourceSystemCreator,
20
20
  )
21
- from cognite_toolkit._cdf_tk.commands._migrate.data_mapper import AssetCentricMapper
21
+ from cognite_toolkit._cdf_tk.commands._migrate.data_mapper import AssetCentricMapper, ChartMapper
22
22
  from cognite_toolkit._cdf_tk.commands._migrate.migration_io import (
23
23
  AnnotationMigrationIO,
24
24
  AssetCentricMigrationIO,
@@ -28,12 +28,15 @@ from cognite_toolkit._cdf_tk.commands._migrate.selectors import (
28
28
  MigrateDataSetSelector,
29
29
  MigrationCSVFileSelector,
30
30
  )
31
+ from cognite_toolkit._cdf_tk.storageio import ChartIO
32
+ from cognite_toolkit._cdf_tk.storageio.selectors import ChartExternalIdSelector
31
33
  from cognite_toolkit._cdf_tk.utils.auth import EnvironmentVariables
32
34
  from cognite_toolkit._cdf_tk.utils.cli_args import parse_view_str
33
35
  from cognite_toolkit._cdf_tk.utils.interactive_select import (
34
36
  AssetInteractiveSelect,
35
37
  DataModelingSelect,
36
38
  FileMetadataInteractiveSelect,
39
+ InteractiveChartSelect,
37
40
  ResourceViewMappingInteractiveSelect,
38
41
  )
39
42
  from cognite_toolkit._cdf_tk.utils.useful_types import AssetCentricKind
@@ -54,6 +57,7 @@ class MigrateApp(typer.Typer):
54
57
  self.command("files")(self.files)
55
58
  self.command("annotations")(self.annotations)
56
59
  self.command("canvas")(self.canvas)
60
+ self.command("charts")(self.charts)
57
61
  # Uncomment when infield v2 config migration is ready
58
62
  # self.command("infield-configs")(self.infield_configs)
59
63
 
@@ -887,6 +891,68 @@ class MigrateApp(typer.Typer):
887
891
  )
888
892
  )
889
893
 
894
+ @staticmethod
895
+ def charts(
896
+ ctx: typer.Context,
897
+ external_id: Annotated[
898
+ list[str] | None,
899
+ typer.Argument(
900
+ help="The external ID of the Chart to migrate. If not provided, an interactive selection will be "
901
+ "performed to select the Charts to migrate."
902
+ ),
903
+ ] = None,
904
+ log_dir: Annotated[
905
+ Path,
906
+ typer.Option(
907
+ "--log-dir",
908
+ "-l",
909
+ help="Path to the directory where migration logs will be stored.",
910
+ ),
911
+ ] = Path(f"migration_logs_{TODAY}"),
912
+ dry_run: Annotated[
913
+ bool,
914
+ typer.Option(
915
+ "--dry-run",
916
+ "-d",
917
+ help="If set, the migration will not be executed, but only a report of "
918
+ "what would be done is printed. This is useful for checking that all time series referenced by the Charts "
919
+ "have been migrated to the new data modeling resources in CDF.",
920
+ ),
921
+ ] = False,
922
+ verbose: Annotated[
923
+ bool,
924
+ typer.Option(
925
+ "--verbose",
926
+ "-v",
927
+ help="Turn on to get more verbose output when running the command",
928
+ ),
929
+ ] = False,
930
+ ) -> None:
931
+ """Migrate Charts from time series references to data modeling in CDF.
932
+
933
+ This command expects that the CogniteMigration data model is already deployed, and that the Mapping view
934
+ is populated with the mapping from time series to the new data modeling resources.
935
+ """
936
+ client = EnvironmentVariables.create_from_environment().get_client()
937
+
938
+ selected_external_ids: list[str]
939
+ if external_id:
940
+ selected_external_ids = external_id
941
+ else:
942
+ selected_external_ids = InteractiveChartSelect(client).select_external_ids()
943
+
944
+ cmd = MigrationCommand()
945
+ cmd.run(
946
+ lambda: cmd.migrate(
947
+ selected=ChartExternalIdSelector(external_ids=tuple(selected_external_ids)),
948
+ data=ChartIO(client),
949
+ mapper=ChartMapper(client),
950
+ log_dir=log_dir,
951
+ dry_run=dry_run,
952
+ verbose=verbose,
953
+ )
954
+ )
955
+
890
956
  @staticmethod
891
957
  def infield_configs(
892
958
  ctx: typer.Context,
@@ -135,6 +135,26 @@ class ChartCoreTimeseries(BaseChartElement):
135
135
  view_reference: ViewId | None = None
136
136
  display_mode: str | None = None
137
137
 
138
+ def dump(self, camel_case: bool = True) -> dict[str, Any]:
139
+ data = super().dump(camel_case=camel_case)
140
+ if self.node_reference:
141
+ key = "nodeReference" if camel_case else "node_reference"
142
+ data[key] = self.node_reference.dump(include_instance_type=False)
143
+ if self.view_reference:
144
+ key = "viewReference" if camel_case else "view_reference"
145
+ data[key] = self.view_reference.dump(include_type=False)
146
+ return data
147
+
148
+ @classmethod
149
+ def _load(cls, resource: dict[str, Any], cognite_client: CogniteClient | None = None) -> Self:
150
+ """Load a ChartCoreTimeseries object from a dictionary."""
151
+ instance = super()._load(resource, cognite_client=cognite_client)
152
+ if "nodeReference" in resource:
153
+ instance.node_reference = NodeId.load(resource["nodeReference"])
154
+ if "viewReference" in resource:
155
+ instance.view_reference = ViewId.load(resource["viewReference"])
156
+ return instance
157
+
138
158
 
139
159
  @dataclass
140
160
  class ChartTimeseries(BaseChartElement):
@@ -1,6 +1,7 @@
1
1
  from abc import ABC, abstractmethod
2
2
  from collections.abc import Sequence
3
- from typing import Generic
3
+ from typing import Generic, cast
4
+ from uuid import uuid4
4
5
 
5
6
  from cognite.client.data_classes._base import (
6
7
  T_CogniteResource,
@@ -9,20 +10,28 @@ from cognite.client.data_classes.data_modeling import (
9
10
  EdgeApply,
10
11
  InstanceApply,
11
12
  NodeApply,
13
+ NodeId,
12
14
  View,
13
15
  ViewId,
14
16
  )
15
17
 
16
18
  from cognite_toolkit._cdf_tk.client import ToolkitClient
19
+ from cognite_toolkit._cdf_tk.client.data_classes.charts import Chart, ChartWrite
20
+ from cognite_toolkit._cdf_tk.client.data_classes.charts_data import (
21
+ ChartCoreTimeseries,
22
+ ChartSource,
23
+ ChartTimeseries,
24
+ )
17
25
  from cognite_toolkit._cdf_tk.client.data_classes.migration import ResourceViewMappingApply
18
26
  from cognite_toolkit._cdf_tk.commands._migrate.conversion import DirectRelationCache, asset_centric_to_dm
19
27
  from cognite_toolkit._cdf_tk.commands._migrate.data_classes import AssetCentricMapping
20
28
  from cognite_toolkit._cdf_tk.commands._migrate.default_mappings import create_default_mappings
21
- from cognite_toolkit._cdf_tk.commands._migrate.issues import ConversionIssue, MigrationIssue
29
+ from cognite_toolkit._cdf_tk.commands._migrate.issues import ChartMigrationIssue, ConversionIssue, MigrationIssue
22
30
  from cognite_toolkit._cdf_tk.commands._migrate.selectors import AssetCentricMigrationSelector
23
31
  from cognite_toolkit._cdf_tk.constants import MISSING_INSTANCE_SPACE
24
32
  from cognite_toolkit._cdf_tk.exceptions import ToolkitValueError
25
33
  from cognite_toolkit._cdf_tk.storageio._base import T_Selector, T_WriteCogniteResource
34
+ from cognite_toolkit._cdf_tk.storageio.selectors import ChartSelector
26
35
  from cognite_toolkit._cdf_tk.utils import humanize_collection
27
36
  from cognite_toolkit._cdf_tk.utils.useful_types import (
28
37
  T_AssetCentricResourceExtended,
@@ -120,3 +129,123 @@ class AssetCentricMapper(
120
129
  if mapping.instance_id.space == MISSING_INSTANCE_SPACE:
121
130
  conversion_issue.missing_instance_space = f"Missing instance space for dataset ID {mapping.data_set_id!r}"
122
131
  return instance, conversion_issue
132
+
133
+
134
+ class ChartMapper(DataMapper[ChartSelector, Chart, ChartWrite]):
135
+ def __init__(self, client: ToolkitClient) -> None:
136
+ self.client = client
137
+
138
+ def map(self, source: Sequence[Chart]) -> Sequence[tuple[ChartWrite | None, MigrationIssue]]:
139
+ self._populate_cache(source)
140
+ output: list[tuple[ChartWrite | None, MigrationIssue]] = []
141
+ for item in source:
142
+ mapped_item, issue = self._map_single_item(item)
143
+ output.append((mapped_item, issue))
144
+ return output
145
+
146
+ def _populate_cache(self, source: Sequence[Chart]) -> None:
147
+ """Populate the internal cache with timeseries from the source charts.
148
+
149
+ Note that the consumption views are also cached as part of the timeseries lookup.
150
+ """
151
+ timeseries_ids: set[int] = set()
152
+ timeseries_external_ids: set[str] = set()
153
+ for chart in source:
154
+ for item in chart.data.time_series_collection or []:
155
+ if item.ts_id:
156
+ timeseries_ids.add(item.ts_id)
157
+ if item.ts_external_id:
158
+ timeseries_external_ids.add(item.ts_external_id)
159
+ if timeseries_ids:
160
+ self.client.migration.lookup.time_series(list(timeseries_ids))
161
+ if timeseries_external_ids:
162
+ self.client.migration.lookup.time_series(external_id=list(timeseries_external_ids))
163
+
164
+ def _map_single_item(self, item: Chart) -> tuple[ChartWrite | None, ChartMigrationIssue]:
165
+ issue = ChartMigrationIssue(chart_external_id=item.external_id)
166
+ time_series_collection = item.data.time_series_collection or []
167
+ timeseries_core_collection = self._create_timeseries_core_collection(time_series_collection, issue)
168
+ if issue.has_issues:
169
+ return None, issue
170
+
171
+ updated_source_collection = self._update_source_collection(
172
+ item.data.source_collection or [], time_series_collection, timeseries_core_collection
173
+ )
174
+
175
+ mapped_chart = item.as_write()
176
+ mapped_chart.data.core_timeseries_collection = timeseries_core_collection
177
+ mapped_chart.data.time_series_collection = None
178
+ mapped_chart.data.source_collection = updated_source_collection
179
+ return mapped_chart, issue
180
+
181
+ def _create_timeseries_core_collection(
182
+ self, time_series_collection: list[ChartTimeseries], issue: ChartMigrationIssue
183
+ ) -> list[ChartCoreTimeseries]:
184
+ timeseries_core_collection: list[ChartCoreTimeseries] = []
185
+ for ts_item in time_series_collection or []:
186
+ node_id, consumer_view_id = self._get_node_id_consumer_view_id(ts_item)
187
+
188
+ if node_id is None:
189
+ if ts_item.ts_id is not None:
190
+ issue.missing_timeseries_ids.append(ts_item.ts_id)
191
+ elif ts_item.ts_external_id is not None:
192
+ issue.missing_timeseries_external_ids.append(ts_item.ts_external_id)
193
+ else:
194
+ issue.missing_timeseries_identifier.append(ts_item.id or "unknown")
195
+ continue
196
+
197
+ core_timeseries = self._create_new_timeseries_core(ts_item, node_id, consumer_view_id)
198
+ timeseries_core_collection.append(core_timeseries)
199
+ return timeseries_core_collection
200
+
201
+ def _create_new_timeseries_core(
202
+ self, ts_item: ChartTimeseries, node_id: NodeId, consumer_view_id: ViewId | None
203
+ ) -> ChartCoreTimeseries:
204
+ dumped = ts_item.dump(camel_case=True)
205
+ for asset_centric_key in ["tsId", "tsExternalId", "originalUnit"]:
206
+ dumped.pop(asset_centric_key, None)
207
+
208
+ dumped["nodeReference"] = node_id
209
+ dumped["viewReference"] = consumer_view_id
210
+ new_uuid = str(uuid4())
211
+ dumped["id"] = new_uuid
212
+ dumped["type"] = "coreTimeseries"
213
+ core_timeseries = ChartCoreTimeseries._load(dumped)
214
+ return core_timeseries
215
+
216
+ def _get_node_id_consumer_view_id(self, ts_item: ChartTimeseries) -> tuple[NodeId | None, ViewId | None]:
217
+ """Look up the node ID and consumer view ID for a given timeseries item.
218
+
219
+ Prioritizes lookup by internal ID, then by external ID.
220
+
221
+ Args:
222
+ ts_item: The ChartTimeseries item to look up.
223
+
224
+ Returns:
225
+ A tuple containing the consumer view ID and node ID, or None if not found.
226
+ """
227
+ node_id: NodeId | None = None
228
+ consumer_view_id: ViewId | None = None
229
+ for id_name, id_value in [("id", ts_item.ts_id), ("external_id", ts_item.ts_external_id)]:
230
+ if id_value is None:
231
+ continue
232
+ arg = {id_name: id_value}
233
+ node_id = self.client.migration.lookup.time_series(**arg) # type: ignore[arg-type]
234
+ consumer_view_id = self.client.migration.lookup.time_series.consumer_view(**arg) # type: ignore[arg-type]
235
+ if node_id is not None:
236
+ break
237
+ return node_id, consumer_view_id
238
+
239
+ def _update_source_collection(
240
+ self,
241
+ source_collection: list[ChartSource],
242
+ time_series_collection: list[ChartTimeseries],
243
+ timeseries_core_collection: list[ChartCoreTimeseries],
244
+ ) -> list[ChartSource]:
245
+ remove_ids = {ts_item.id for ts_item in time_series_collection if ts_item.id is not None}
246
+ updated_source_collection = [ts_item for ts_item in source_collection if ts_item.id not in remove_ids]
247
+ for core_ts_item in timeseries_core_collection:
248
+ # We cast there two as we set them in the _create_timeseries_core_collection method
249
+ new_source_item = ChartSource(id=cast(str, core_ts_item.id), type=cast(str, core_ts_item.type))
250
+ updated_source_collection.append(new_source_item)
251
+ return updated_source_collection
@@ -30,6 +30,27 @@ class MigrationIssue(MigrationObject):
30
30
  return True
31
31
 
32
32
 
33
+ class ChartMigrationIssue(MigrationIssue):
34
+ """Represents a chart migration issue encountered during migration.
35
+
36
+ Attributes:
37
+ chart_external_id (str): The external ID of the chart that could not be migrated.
38
+ """
39
+
40
+ type: ClassVar[str] = "chartMigration"
41
+ chart_external_id: str
42
+ missing_timeseries_ids: list[int] = Field(default_factory=list)
43
+ missing_timeseries_external_ids: list[str] = Field(default_factory=list)
44
+ missing_timeseries_identifier: list[str] = Field(default_factory=list)
45
+
46
+ @property
47
+ def has_issues(self) -> bool:
48
+ """Check if there are any issues recorded in this ChartMigrationIssue."""
49
+ return bool(
50
+ self.missing_timeseries_ids or self.missing_timeseries_external_ids or self.missing_timeseries_identifier
51
+ )
52
+
53
+
33
54
  class ReadIssue(MigrationIssue):
34
55
  """Represents a read issue encountered during migration."""
35
56
 
@@ -12,7 +12,7 @@ jobs:
12
12
  environment: dev
13
13
  name: Deploy
14
14
  container:
15
- image: cognite/toolkit:0.6.109
15
+ image: cognite/toolkit:0.6.111
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.109
13
+ image: cognite/toolkit:0.6.111
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.109"
7
+ version = "0.6.111"
8
8
 
9
9
  [alpha_flags]
10
10
  external-libraries = true
@@ -1 +1 @@
1
- __version__ = "0.6.109"
1
+ __version__ = "0.6.111"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: cognite_toolkit
3
- Version: 0.6.109
3
+ Version: 0.6.111
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=0abeQr1Tfk4lkGaoXyrnFC28wDSlR_8UGrh10noGduQ,6085
3
- cognite_toolkit/_version.py,sha256=RN7f5cMrZyBLBF66iauaGYInNemTmy-2sr6H3Ysm8OU,24
3
+ cognite_toolkit/_version.py,sha256=NevwEofnLhZ12P5BZn0dR6xj6Bpsupi8Qtmt9IxErps,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=Gi7iGGzdUrOnBeIK6ix3XiBieHIwzLJO5BWjDI3a6l4,7082
@@ -19,7 +19,7 @@ cognite_toolkit/_cdf_tk/apps/_dev_app.py,sha256=q8DBr4BAK33AwsHW3gAWZWSjSaQRuCis
19
19
  cognite_toolkit/_cdf_tk/apps/_download_app.py,sha256=Io7mW3DhYpLiDrqJfThSQThHDWrXN9c8huu9zYd0u7E,19408
20
20
  cognite_toolkit/_cdf_tk/apps/_dump_app.py,sha256=Ec0aEqbKwCkxni09i06rfY31qZUyOVwbbvo7MHh4cf8,39056
21
21
  cognite_toolkit/_cdf_tk/apps/_landing_app.py,sha256=HxzSln3fJXs5NzulfQGUMropXcwMobUYpyePrCrQTQs,1502
22
- cognite_toolkit/_cdf_tk/apps/_migrate_app.py,sha256=JuzY1t5pkW94Dyygr-mT2lheluR7cL8AmD2MfaXhc8Y,37093
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
24
24
  cognite_toolkit/_cdf_tk/apps/_profile_app.py,sha256=vSRJW54bEvIul8_4rOqyOYA7ztXx7TFOvZRZWZTxMbg,7007
25
25
  cognite_toolkit/_cdf_tk/apps/_purge.py,sha256=e8IgDK2Fib2u30l71Q2trbJ1az90zSLWr5TViTINmL0,15415
@@ -77,7 +77,7 @@ cognite_toolkit/_cdf_tk/client/data_classes/base.py,sha256=J9Mhf7cYObYPWJ-ne98ec
77
77
  cognite_toolkit/_cdf_tk/client/data_classes/canvas.py,sha256=1yOSXkARz6QgIUnNryRy1UbV62dPAxE9qu5jfpOmPGE,48618
78
78
  cognite_toolkit/_cdf_tk/client/data_classes/capabilities.py,sha256=muqpAC2JLCFcEpRPzuh_3sS3o_q42WFyfsGzl-LfB_U,8773
79
79
  cognite_toolkit/_cdf_tk/client/data_classes/charts.py,sha256=l4LM1eqn8_2lRzw-DdwwL0zxgSczC0lp1LjgW-4wqPI,3770
80
- cognite_toolkit/_cdf_tk/client/data_classes/charts_data.py,sha256=nPbB-hQ7Z6D21CgBI3Zl8UQzsjlsWEuwCtBt93lYQ4Q,11242
80
+ cognite_toolkit/_cdf_tk/client/data_classes/charts_data.py,sha256=Zcx3st3bMJE2aa5U6TepDqRzqf-LuTTWW5grSaVGr9E,12244
81
81
  cognite_toolkit/_cdf_tk/client/data_classes/extendable_cognite_file.py,sha256=0iyLiXEzB4WBU-DL6DZS6nD5E526cDsftMGEYXwI8r8,9764
82
82
  cognite_toolkit/_cdf_tk/client/data_classes/extended_filemetadata.py,sha256=8zfXl_bhkums3quJzdOwAjxVNY6B0hpAs6jbkekn79o,5488
83
83
  cognite_toolkit/_cdf_tk/client/data_classes/extended_filemetdata.py,sha256=gKA5UcDKweH7SlzXfyZCspMyHUo0t8R5DbzeCPpzInM,6002
@@ -130,10 +130,10 @@ cognite_toolkit/_cdf_tk/commands/_migrate/command.py,sha256=jNoqqq81lbdfDTAQ5w2c
130
130
  cognite_toolkit/_cdf_tk/commands/_migrate/conversion.py,sha256=Ew9JRYrd-Ol9G9csTzpnhXAgCFnX67MwDYOTsdJLP3E,16803
131
131
  cognite_toolkit/_cdf_tk/commands/_migrate/creators.py,sha256=FTu7w3G8KyPY8pagG3KdPpOmpLcjehaAg2auEy6iM7A,9605
132
132
  cognite_toolkit/_cdf_tk/commands/_migrate/data_classes.py,sha256=_vMS_qAPj4yup1VnmmojPVigAZtyPQH7PM0Raby5tao,10619
133
- cognite_toolkit/_cdf_tk/commands/_migrate/data_mapper.py,sha256=Y7MrE6FGa15uvboBjNyWNlslsBv4FpeP5WsrFsooxsA,5678
133
+ cognite_toolkit/_cdf_tk/commands/_migrate/data_mapper.py,sha256=m3_vDxgLauzDjQmNwrhb_aK01rnuHeHxRg3UuNzCa34,11748
134
134
  cognite_toolkit/_cdf_tk/commands/_migrate/data_model.py,sha256=i1eUsNX6Dueol9STIEwyksBnBsWUk13O8qHIjW964pM,7860
135
135
  cognite_toolkit/_cdf_tk/commands/_migrate/default_mappings.py,sha256=ERn3qFrJFXdtXaMjHq3Gk7MxH03MGFk3FrtWCOBJQts,5544
136
- cognite_toolkit/_cdf_tk/commands/_migrate/issues.py,sha256=lWSnuS3CfRDbA7i1g12gJ2reJnQcLmZWxHDK19-Wxkk,5772
136
+ cognite_toolkit/_cdf_tk/commands/_migrate/issues.py,sha256=L2-kODPavEwcuhte7EXANK2-rH7reiq-uNqr-3ub-no,6575
137
137
  cognite_toolkit/_cdf_tk/commands/_migrate/migration_io.py,sha256=wrdBH5P6NgiZQSYLR0iJ3ZvqfQ5fY-_Ne2yKv9E1g4o,16277
138
138
  cognite_toolkit/_cdf_tk/commands/_migrate/prepare.py,sha256=RfqaNoso5CyBwc-p6ckwcYqBfZXKhdJgdGIyd0TATaI,2635
139
139
  cognite_toolkit/_cdf_tk/commands/_migrate/selectors.py,sha256=N1H_-rBpPUD6pbrlcofn1uEK1bA694EUXEe1zIXeqyo,2489
@@ -300,13 +300,13 @@ cognite_toolkit/_repo_files/.gitignore,sha256=ip9kf9tcC5OguF4YF4JFEApnKYw0nG0vPi
300
300
  cognite_toolkit/_repo_files/AzureDevOps/.devops/README.md,sha256=OLA0D7yCX2tACpzvkA0IfkgQ4_swSd-OlJ1tYcTBpsA,240
301
301
  cognite_toolkit/_repo_files/AzureDevOps/.devops/deploy-pipeline.yml,sha256=brULcs8joAeBC_w_aoWjDDUHs3JheLMIR9ajPUK96nc,693
302
302
  cognite_toolkit/_repo_files/AzureDevOps/.devops/dry-run-pipeline.yml,sha256=OBFDhFWK1mlT4Dc6mDUE2Es834l8sAlYG50-5RxRtHk,723
303
- cognite_toolkit/_repo_files/GitHub/.github/workflows/deploy.yaml,sha256=nravoEwNPHKAQxpBkVmYEWs32zKaBJF4A0A6qGEqYYs,668
304
- cognite_toolkit/_repo_files/GitHub/.github/workflows/dry-run.yaml,sha256=2ds1UMLZ_3DtSe-sdlKQkyKH1cMvFlJczJmuHPxrTK8,2431
305
- cognite_toolkit/_resources/cdf.toml,sha256=1HiibQI4-kcxjk1K2VnvDNilg8K6H6EOpdhTYK8od6w,488
303
+ cognite_toolkit/_repo_files/GitHub/.github/workflows/deploy.yaml,sha256=j2bliPdlY2xgHldAqcr_OSEKiZSVKGMX4oS9dcoZs_w,668
304
+ cognite_toolkit/_repo_files/GitHub/.github/workflows/dry-run.yaml,sha256=QJtArzdlftwi4PrscZB65SoVdlEb8PYlphgGtdpZngg,2431
305
+ cognite_toolkit/_resources/cdf.toml,sha256=PDCEi-s5gIci7hyxLXz32LAfopeX846qABycsTnu7XY,488
306
306
  cognite_toolkit/demo/__init__.py,sha256=-m1JoUiwRhNCL18eJ6t7fZOL7RPfowhCuqhYFtLgrss,72
307
307
  cognite_toolkit/demo/_base.py,sha256=6xKBUQpXZXGQ3fJ5f7nj7oT0s2n7OTAGIa17ZlKHZ5U,8052
308
- cognite_toolkit-0.6.109.dist-info/METADATA,sha256=eDd46Parkn2Cs5ujEbVM9lTocNMA3GZh-IGSOyRl9zM,4502
309
- cognite_toolkit-0.6.109.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
310
- cognite_toolkit-0.6.109.dist-info/entry_points.txt,sha256=JlR7MH1_UMogC3QOyN4-1l36VbrCX9xUdQoHGkuJ6-4,83
311
- cognite_toolkit-0.6.109.dist-info/licenses/LICENSE,sha256=CW0DRcx5tL-pCxLEN7ts2S9g2sLRAsWgHVEX4SN9_Mc,752
312
- cognite_toolkit-0.6.109.dist-info/RECORD,,
308
+ cognite_toolkit-0.6.111.dist-info/METADATA,sha256=J-6VIqjpmDb17ugQ9ThtamiQmXgxtlVmz2tztmAYksE,4502
309
+ cognite_toolkit-0.6.111.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
310
+ cognite_toolkit-0.6.111.dist-info/entry_points.txt,sha256=JlR7MH1_UMogC3QOyN4-1l36VbrCX9xUdQoHGkuJ6-4,83
311
+ cognite_toolkit-0.6.111.dist-info/licenses/LICENSE,sha256=CW0DRcx5tL-pCxLEN7ts2S9g2sLRAsWgHVEX4SN9_Mc,752
312
+ cognite_toolkit-0.6.111.dist-info/RECORD,,