cognite-toolkit 0.6.77__py3-none-any.whl → 0.6.79__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.

Potentially problematic release.


This version of cognite-toolkit might be problematic. Click here for more details.

@@ -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.77"
7
+ version = "0.6.79"
8
8
 
9
9
 
10
10
  [plugins]
@@ -6,18 +6,19 @@ import questionary
6
6
  import typer
7
7
  from cognite.client.data_classes.data_modeling import ContainerId
8
8
 
9
+ from cognite_toolkit._cdf_tk.client import ToolkitClient
9
10
  from cognite_toolkit._cdf_tk.commands import (
10
- MigrateFilesCommand,
11
- MigrateTimeseriesCommand,
12
11
  MigrationCanvasCommand,
13
12
  MigrationPrepareCommand,
14
13
  )
15
14
  from cognite_toolkit._cdf_tk.commands._migrate import MigrationCommand
16
15
  from cognite_toolkit._cdf_tk.commands._migrate.adapter import (
17
16
  AssetCentricMigrationIOAdapter,
17
+ FileMetaIOAdapter,
18
18
  MigrateDataSetSelector,
19
19
  MigrationCSVFileSelector,
20
20
  MigrationSelector,
21
+ TimeSeriesIOAdapter,
21
22
  )
22
23
  from cognite_toolkit._cdf_tk.commands._migrate.creators import InstanceSpaceCreator, SourceSystemCreator
23
24
  from cognite_toolkit._cdf_tk.commands._migrate.data_mapper import AssetCentricMapper
@@ -29,6 +30,7 @@ from cognite_toolkit._cdf_tk.utils.interactive_select import (
29
30
  DataModelingSelect,
30
31
  ResourceViewMappingInteractiveSelect,
31
32
  )
33
+ from cognite_toolkit._cdf_tk.utils.useful_types import AssetCentricKind
32
34
 
33
35
  TODAY = date.today()
34
36
 
@@ -229,8 +231,9 @@ class MigrateApp(typer.Typer):
229
231
  )
230
232
  )
231
233
 
232
- @staticmethod
234
+ @classmethod
233
235
  def assets(
236
+ cls,
234
237
  ctx: typer.Context,
235
238
  mapping_file: Annotated[
236
239
  Path | None,
@@ -297,16 +300,53 @@ class MigrateApp(typer.Typer):
297
300
  ) -> None:
298
301
  """Migrate Assets to CogniteAssets."""
299
302
  client = EnvironmentVariables.create_from_environment().get_client()
303
+ selected, dry_run, verbose = cls._prepare_asset_centric_arguments(
304
+ client=client,
305
+ mapping_file=mapping_file,
306
+ data_set_id=data_set_id,
307
+ consumption_view=consumption_view,
308
+ ingestion_mapping=ingestion_mapping,
309
+ dry_run=dry_run,
310
+ verbose=verbose,
311
+ kind="Assets",
312
+ resource_type="asset",
313
+ container_id=ContainerId("cdf_cdm", "CogniteAsset"),
314
+ )
315
+
300
316
  cmd = MigrationCommand()
317
+ cmd.run(
318
+ lambda: cmd.migrate(
319
+ selected=selected,
320
+ data=AssetCentricMigrationIOAdapter(client, AssetIO(client)),
321
+ mapper=AssetCentricMapper(client),
322
+ log_dir=log_dir,
323
+ dry_run=dry_run,
324
+ verbose=verbose,
325
+ )
326
+ )
327
+
328
+ @staticmethod
329
+ def _prepare_asset_centric_arguments(
330
+ client: ToolkitClient,
331
+ mapping_file: Path | None,
332
+ data_set_id: str | None,
333
+ consumption_view: str | None,
334
+ ingestion_mapping: str | None,
335
+ dry_run: bool,
336
+ verbose: bool,
337
+ kind: AssetCentricKind,
338
+ resource_type: str,
339
+ container_id: ContainerId,
340
+ ) -> tuple[MigrationSelector, bool, bool]:
301
341
  if data_set_id is not None and mapping_file is not None:
302
342
  raise typer.BadParameter("Cannot specify both data_set_id and mapping_file")
303
343
  elif mapping_file is not None:
304
- selected: MigrationSelector = MigrationCSVFileSelector(datafile=mapping_file, kind="Assets")
344
+ selected: MigrationSelector = MigrationCSVFileSelector(datafile=mapping_file, kind=kind)
305
345
  elif data_set_id is not None:
306
346
  parsed_view = parse_view_str(consumption_view) if consumption_view is not None else None
307
347
  selected = MigrateDataSetSelector(
308
348
  data_set_external_id=data_set_id,
309
- kind="Assets",
349
+ kind=kind,
310
350
  ingestion_mapping=ingestion_mapping,
311
351
  preferred_consumer_view=parsed_view,
312
352
  )
@@ -315,7 +355,7 @@ class MigrateApp(typer.Typer):
315
355
  selector = AssetInteractiveSelect(client, "migrate")
316
356
  selected_data_set_id = selector.select_data_set(allow_empty=False)
317
357
  asset_mapping = ResourceViewMappingInteractiveSelect(client, "migrate").select_resource_view_mapping(
318
- "asset"
358
+ resource_type,
319
359
  )
320
360
  preferred_consumer_view = (
321
361
  DataModelingSelect(client, "migrate")
@@ -323,13 +363,13 @@ class MigrateApp(typer.Typer):
323
363
  multiselect=False,
324
364
  include_global=True,
325
365
  instance_type="node",
326
- mapped_container=ContainerId("cdf_cdm", "CogniteAsset"),
366
+ mapped_container=container_id,
327
367
  )
328
368
  .as_id()
329
369
  )
330
370
  selected = MigrateDataSetSelector(
331
371
  data_set_external_id=selected_data_set_id,
332
- kind="Assets",
372
+ kind=kind,
333
373
  ingestion_mapping=asset_mapping.external_id,
334
374
  preferred_consumer_view=preferred_consumer_view,
335
375
  )
@@ -337,20 +377,11 @@ class MigrateApp(typer.Typer):
337
377
  verbose = questionary.confirm("Do you want verbose output?", default=verbose).ask()
338
378
  if any(res is None for res in [dry_run, verbose]):
339
379
  raise typer.Abort()
380
+ return selected, dry_run, verbose
340
381
 
341
- cmd.run(
342
- lambda: cmd.migrate(
343
- selected=selected,
344
- data=AssetCentricMigrationIOAdapter(client, AssetIO(client)),
345
- mapper=AssetCentricMapper(client),
346
- log_dir=log_dir,
347
- dry_run=dry_run,
348
- verbose=verbose,
349
- )
350
- )
351
-
352
- @staticmethod
382
+ @classmethod
353
383
  def events(
384
+ cls,
354
385
  ctx: typer.Context,
355
386
  mapping_file: Annotated[
356
387
  Path | None,
@@ -417,46 +448,20 @@ class MigrateApp(typer.Typer):
417
448
  ) -> None:
418
449
  """Migrate Events to CogniteActivity."""
419
450
  client = EnvironmentVariables.create_from_environment().get_client()
451
+ selected, dry_run, verbose = cls._prepare_asset_centric_arguments(
452
+ client=client,
453
+ mapping_file=mapping_file,
454
+ data_set_id=data_set_id,
455
+ consumption_view=consumption_view,
456
+ ingestion_mapping=ingestion_mapping,
457
+ dry_run=dry_run,
458
+ verbose=verbose,
459
+ kind="Events",
460
+ resource_type="event",
461
+ container_id=ContainerId("cdf_cdm", "CogniteActivity"),
462
+ )
463
+
420
464
  cmd = MigrationCommand()
421
- if data_set_id is not None and mapping_file is not None:
422
- raise typer.BadParameter("Cannot specify both data_set_id and mapping_file")
423
- elif mapping_file is not None:
424
- selected: MigrationSelector = MigrationCSVFileSelector(datafile=mapping_file, kind="Events")
425
- elif data_set_id is not None:
426
- parsed_view = parse_view_str(consumption_view) if consumption_view is not None else None
427
- selected = MigrateDataSetSelector(
428
- data_set_external_id=data_set_id,
429
- kind="Events",
430
- ingestion_mapping=ingestion_mapping,
431
- preferred_consumer_view=parsed_view,
432
- )
433
- else:
434
- # Interactive selection of data set.
435
- selector = AssetInteractiveSelect(client, "migrate events")
436
- selected_data_set_id = selector.select_data_set(allow_empty=False)
437
- event_mapping = ResourceViewMappingInteractiveSelect(client, "migrate events").select_resource_view_mapping(
438
- "event"
439
- )
440
- preferred_consumer_view = (
441
- DataModelingSelect(client, "migrate")
442
- .select_view(
443
- multiselect=False,
444
- include_global=True,
445
- instance_type="node",
446
- mapped_container=ContainerId("cdf_cdm", "CogniteActivity"),
447
- )
448
- .as_id()
449
- )
450
- selected = MigrateDataSetSelector(
451
- data_set_external_id=selected_data_set_id,
452
- kind="Events",
453
- ingestion_mapping=event_mapping.external_id,
454
- preferred_consumer_view=preferred_consumer_view,
455
- )
456
- dry_run = questionary.confirm("Do you want to perform a dry run?", default=dry_run).ask()
457
- verbose = questionary.confirm("Do you want verbose output?", default=verbose).ask()
458
- if any(res is None for res in [dry_run, verbose]):
459
- raise typer.Abort()
460
465
 
461
466
  cmd.run(
462
467
  lambda: cmd.migrate(
@@ -469,11 +474,12 @@ class MigrateApp(typer.Typer):
469
474
  )
470
475
  )
471
476
 
472
- @staticmethod
477
+ @classmethod
473
478
  def timeseries(
479
+ cls,
474
480
  ctx: typer.Context,
475
481
  mapping_file: Annotated[
476
- Path,
482
+ Path | None,
477
483
  typer.Option(
478
484
  "--mapping-file",
479
485
  "-m",
@@ -481,7 +487,51 @@ class MigrateApp(typer.Typer):
481
487
  "This file is expected to have the following columns: [id, dataSetId, space, externalId]."
482
488
  "The dataSetId is optional, and can be skipped. If it is set, it is used to check the access to the dataset.",
483
489
  ),
484
- ],
490
+ ] = None,
491
+ data_set_id: Annotated[
492
+ str | None,
493
+ typer.Option(
494
+ "--data-set-id",
495
+ "-s",
496
+ help="The data set ID to select for the timeseries to migrate. If not provided and the mapping file is not provided"
497
+ "an interactive selection will be performed to select the data set to migrate timeseries from.",
498
+ ),
499
+ ] = None,
500
+ ingestion_mapping: Annotated[
501
+ str | None,
502
+ typer.Option(
503
+ "--ingestion-mapping",
504
+ "-i",
505
+ help="The ingestion mapping to use for the migrated timeseries. If not provided, "
506
+ "the default mapping to CogniteTimeSeries in CogniteCore will be used.",
507
+ ),
508
+ ] = None,
509
+ consumption_view: Annotated[
510
+ str | None,
511
+ typer.Option(
512
+ "--consumption-view",
513
+ "-c",
514
+ help="The consumption view to assign to the migrated timeseries Given as space:externalId/version. "
515
+ "This will be used in Canvas to select which view to use when migrating timeseries. If not provided, "
516
+ "CogniteTimeSeries in CogniteCore will be used.",
517
+ ),
518
+ ] = None,
519
+ log_dir: Annotated[
520
+ Path,
521
+ typer.Option(
522
+ "--log-dir",
523
+ "-l",
524
+ help="Path to the directory where logs will be stored. If the directory does not exist, it will be created.",
525
+ ),
526
+ ] = Path(f"migration_logs_{TODAY!s}"),
527
+ skip_linking: Annotated[
528
+ bool,
529
+ typer.Option(
530
+ "--skip-linking",
531
+ "-x",
532
+ help="If set, the migration will not create links between the old TimeSeries and the new CogniteTimeSeries.",
533
+ ),
534
+ ] = False,
485
535
  dry_run: Annotated[
486
536
  bool,
487
537
  typer.Option(
@@ -500,23 +550,43 @@ class MigrateApp(typer.Typer):
500
550
  ] = False,
501
551
  ) -> None:
502
552
  """Migrate TimeSeries to CogniteTimeSeries."""
503
-
504
553
  client = EnvironmentVariables.create_from_environment().get_client(enable_set_pending_ids=True)
505
- cmd = MigrateTimeseriesCommand()
554
+
555
+ selected, dry_run, verbose = cls._prepare_asset_centric_arguments(
556
+ client=client,
557
+ mapping_file=mapping_file,
558
+ data_set_id=data_set_id,
559
+ consumption_view=consumption_view,
560
+ ingestion_mapping=ingestion_mapping,
561
+ dry_run=dry_run,
562
+ verbose=verbose,
563
+ kind="TimeSeries",
564
+ resource_type="timeseries",
565
+ container_id=ContainerId("cdf_cdm", "CogniteTimeSeries"),
566
+ )
567
+ if data_set_id is None and mapping_file is None:
568
+ skip_linking = not questionary.confirm(
569
+ "Do you want to link old and new TimeSeries?", default=not skip_linking
570
+ ).ask()
571
+
572
+ cmd = MigrationCommand()
506
573
  cmd.run(
507
- lambda: cmd.migrate_timeseries(
508
- client,
509
- mapping_file=mapping_file,
574
+ lambda: cmd.migrate(
575
+ selected=selected,
576
+ data=TimeSeriesIOAdapter(client, skip_linking=skip_linking),
577
+ mapper=AssetCentricMapper(client),
578
+ log_dir=log_dir,
510
579
  dry_run=dry_run,
511
580
  verbose=verbose,
512
581
  )
513
582
  )
514
583
 
515
- @staticmethod
584
+ @classmethod
516
585
  def files(
586
+ cls,
517
587
  ctx: typer.Context,
518
588
  mapping_file: Annotated[
519
- Path,
589
+ Path | None,
520
590
  typer.Option(
521
591
  "--mapping-file",
522
592
  "-m",
@@ -524,7 +594,51 @@ class MigrateApp(typer.Typer):
524
594
  "This file is expected to have the following columns: [id, dataSetId, space, externalId]."
525
595
  "The dataSetId is optional, and can be skipped. If it is set, it is used to check the access to the dataset.",
526
596
  ),
527
- ],
597
+ ] = None,
598
+ data_set_id: Annotated[
599
+ str | None,
600
+ typer.Option(
601
+ "--data-set-id",
602
+ "-s",
603
+ help="The data set ID to select for the files to migrate. If not provided, the dataSetId from the mapping file is used. "
604
+ "If neither is provided, the default data set for the project is used.",
605
+ ),
606
+ ] = None,
607
+ ingestion_mapping: Annotated[
608
+ str | None,
609
+ typer.Option(
610
+ "--ingestion-mapping",
611
+ "-i",
612
+ help="The ingestion mapping to use for the migrated files. If not provided, "
613
+ "the default mapping to CogniteFile in CogniteCore will be used.",
614
+ ),
615
+ ] = None,
616
+ consumption_view: Annotated[
617
+ str | None,
618
+ typer.Option(
619
+ "--consumption-view",
620
+ "-c",
621
+ help="The consumption view to assign to the migrated files Given as space:externalId/version. "
622
+ "This will be used in Canvas to select which view to use when migrating timeseries. If not provided, "
623
+ "CogniteFile in CogniteCore will be used.",
624
+ ),
625
+ ] = None,
626
+ log_dir: Annotated[
627
+ Path,
628
+ typer.Option(
629
+ "--log-dir",
630
+ "-l",
631
+ help="Path to the directory where logs will be stored. If the directory does not exist, it will be created.",
632
+ ),
633
+ ] = Path(f"migration_logs_{TODAY!s}"),
634
+ skip_linking: Annotated[
635
+ bool,
636
+ typer.Option(
637
+ "--skip-linking",
638
+ "-x",
639
+ help="If set, the migration will not create links between the old FileMetadata and the new CogniteFile.",
640
+ ),
641
+ ] = False,
528
642
  dry_run: Annotated[
529
643
  bool,
530
644
  typer.Option(
@@ -543,13 +657,33 @@ class MigrateApp(typer.Typer):
543
657
  ] = False,
544
658
  ) -> None:
545
659
  """Migrate Files to CogniteFiles."""
546
-
547
660
  client = EnvironmentVariables.create_from_environment().get_client(enable_set_pending_ids=True)
548
- cmd = MigrateFilesCommand()
661
+
662
+ selected, dry_run, verbose = cls._prepare_asset_centric_arguments(
663
+ client=client,
664
+ mapping_file=mapping_file,
665
+ data_set_id=data_set_id,
666
+ consumption_view=consumption_view,
667
+ ingestion_mapping=ingestion_mapping,
668
+ dry_run=dry_run,
669
+ verbose=verbose,
670
+ kind="FileMetadata",
671
+ resource_type="file",
672
+ container_id=ContainerId("cdf_cdm", "CogniteFile"),
673
+ )
674
+ cmd = MigrationCommand()
675
+
676
+ if data_set_id is None:
677
+ skip_linking = not questionary.confirm(
678
+ "Do you want to link old and new Files?", default=not skip_linking
679
+ ).ask()
680
+
549
681
  cmd.run(
550
- lambda: cmd.migrate_files(
551
- client,
552
- mapping_file=mapping_file,
682
+ lambda: cmd.migrate(
683
+ selected=selected,
684
+ data=FileMetaIOAdapter(client, skip_linking=skip_linking),
685
+ mapper=AssetCentricMapper(client),
686
+ log_dir=log_dir,
553
687
  dry_run=dry_run,
554
688
  verbose=verbose,
555
689
  )
@@ -3,13 +3,17 @@ from collections.abc import Iterator, Sequence
3
3
  from dataclasses import dataclass
4
4
  from functools import cached_property
5
5
  from pathlib import Path
6
- from typing import Generic, Literal
6
+ from typing import ClassVar, Generic, Literal
7
7
 
8
8
  from cognite.client.data_classes import (
9
9
  FileMetadata,
10
10
  FileMetadataList,
11
11
  FileMetadataWrite,
12
12
  FileMetadataWriteList,
13
+ TimeSeries,
14
+ TimeSeriesList,
15
+ TimeSeriesWrite,
16
+ TimeSeriesWriteList,
13
17
  )
14
18
  from cognite.client.data_classes._base import (
15
19
  T_CogniteResourceList,
@@ -30,6 +34,7 @@ from cognite_toolkit._cdf_tk.storageio import (
30
34
  BaseAssetCentricIO,
31
35
  FileMetadataIO,
32
36
  InstanceIO,
37
+ TimeSeriesIO,
33
38
  UploadableStorageIO,
34
39
  )
35
40
  from cognite_toolkit._cdf_tk.storageio._base import Page, UploadItem
@@ -240,23 +245,38 @@ class AssetCentricMigrationIOAdapter(
240
245
  raise NotImplementedError()
241
246
 
242
247
 
243
- class FileMetaAdapter(
248
+ class LinkingAdapter(
244
249
  AssetCentricMigrationIOAdapter[
245
- str,
246
- FileMetadataWrite,
247
- FileMetadata,
248
- FileMetadataWriteList,
249
- FileMetadataList,
250
+ T_ID, T_WriteClass, T_WritableCogniteResource, T_CogniteResourceList, T_WritableCogniteResourceList
250
251
  ]
251
252
  ):
252
- """Adapter for migrating file metadata to data model instances.
253
+ """Adapter that links asset-centric resources to data model instances before uploading them.
254
+
255
+ This is necessary to link asset-centric resources to their new CogniteDataModel instances using the
256
+ appropriate set-pending-instance-ids endpoint.
257
+
258
+ Args:
259
+ client: ToolkitClient
260
+ The toolkit client to use for communication with CDF.
261
+ base: BaseAssetCentricIO
262
+ The base asset-centric IO to use for retrieving asset-centric resources.
263
+ skip_linking: bool
264
+ Whether to skip the linking step and only upload the resources. Essentially creating a copy.
253
265
 
254
- This is necessary to link asset-centric FileMetadata to their new CogniteFile instances using the
255
- files/set-pending-instance-ids.
256
266
  """
257
267
 
258
- def __init__(self, client: ToolkitClient) -> None:
259
- super().__init__(client, FileMetadataIO(client))
268
+ PENDING_INSTANCE_ID_ENDPOINT: ClassVar[str]
269
+
270
+ def __init__(
271
+ self,
272
+ client: ToolkitClient,
273
+ base: BaseAssetCentricIO[
274
+ T_ID, T_WriteClass, T_WritableCogniteResource, T_CogniteResourceList, T_WritableCogniteResourceList
275
+ ],
276
+ skip_linking: bool = False,
277
+ ) -> None:
278
+ super().__init__(client, base)
279
+ self.skip_linking = skip_linking
260
280
 
261
281
  @staticmethod
262
282
  def as_pending_instance_id(item: InstanceApply) -> PendingInstanceId:
@@ -279,13 +299,15 @@ class FileMetaAdapter(
279
299
  selector: MigrationSelector | None = None,
280
300
  ) -> Sequence[HTTPMessage]:
281
301
  """Upload items by first linking them using files/set-pending-instance-ids and then uploading the instances."""
302
+ if self.skip_linking:
303
+ return list(super().upload_items(data_chunk, http_client, selector))
282
304
  config = http_client.config
283
305
  results: list[HTTPMessage] = []
284
306
  successful_linked: set[str] = set()
285
307
  for batch in chunker_sequence(data_chunk, self.CHUNK_SIZE):
286
308
  batch_results = http_client.request_with_retries(
287
309
  message=ItemsRequest(
288
- endpoint_url=config.create_api_url("files/set-pending-instance-ids"),
310
+ endpoint_url=config.create_api_url(self.PENDING_INSTANCE_ID_ENDPOINT),
289
311
  method="POST",
290
312
  api_version="alpha",
291
313
  items=[
@@ -302,3 +324,45 @@ class FileMetaAdapter(
302
324
  if to_upload:
303
325
  results.extend(list(super().upload_items(to_upload, http_client, selector)))
304
326
  return results
327
+
328
+
329
+ class FileMetaIOAdapter(
330
+ LinkingAdapter[
331
+ str,
332
+ FileMetadataWrite,
333
+ FileMetadata,
334
+ FileMetadataWriteList,
335
+ FileMetadataList,
336
+ ]
337
+ ):
338
+ """Adapter for migrating file metadata to data model instances.
339
+
340
+ This is necessary to link asset-centric FileMetadata to their new CogniteFile instances using the
341
+ files/set-pending-instance-ids.
342
+ """
343
+
344
+ PENDING_INSTANCE_ID_ENDPOINT: ClassVar[str] = "/files/set-pending-instance-ids"
345
+
346
+ def __init__(self, client: ToolkitClient, skip_linking: bool) -> None:
347
+ super().__init__(client, FileMetadataIO(client), skip_linking)
348
+
349
+
350
+ class TimeSeriesIOAdapter(
351
+ LinkingAdapter[
352
+ str,
353
+ TimeSeriesWrite,
354
+ TimeSeries,
355
+ TimeSeriesWriteList,
356
+ TimeSeriesList,
357
+ ]
358
+ ):
359
+ """Adapter for migrating time series to data model instances.
360
+
361
+ This is necessary to link asset-centric TimeSeries to their new CogniteTimeSeries instances using the
362
+ timeseries/set-pending-instance-ids.
363
+ """
364
+
365
+ PENDING_INSTANCE_ID_ENDPOINT: ClassVar[str] = "/timeseries/set-pending-instance-ids"
366
+
367
+ def __init__(self, client: ToolkitClient, skip_linking: bool) -> None:
368
+ super().__init__(client, TimeSeriesIO(client), skip_linking)
@@ -24,6 +24,7 @@ def create_default_mappings() -> list[ResourceViewMappingApply]:
24
24
  "isString": "type",
25
25
  "unit": "sourceUnit",
26
26
  "unitExternalId": "unit",
27
+ "assetId": "assets",
27
28
  }
28
29
  file_property_mapping = {
29
30
  "name": "name",
@@ -31,6 +32,7 @@ def create_default_mappings() -> list[ResourceViewMappingApply]:
31
32
  "labels": "tags",
32
33
  "mimeType": "mimeType",
33
34
  "directory": "directory",
35
+ "assetIds": "assets",
34
36
  "sourceCreatedTime": "sourceCreatedTime",
35
37
  "sourceModifiedTime": "sourceUpdatedTime",
36
38
  }
@@ -12,7 +12,7 @@ jobs:
12
12
  environment: dev
13
13
  name: Deploy
14
14
  container:
15
- image: cognite/toolkit:0.6.77
15
+ image: cognite/toolkit:0.6.79
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.77
13
+ image: cognite/toolkit:0.6.79
14
14
  env:
15
15
  CDF_CLUSTER: ${{ vars.CDF_CLUSTER }}
16
16
  CDF_PROJECT: ${{ vars.CDF_PROJECT }}
@@ -1 +1 @@
1
- __version__ = "0.6.77"
1
+ __version__ = "0.6.79"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: cognite_toolkit
3
- Version: 0.6.77
3
+ Version: 0.6.79
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,9 +1,9 @@
1
1
  cognite_toolkit/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2
2
  cognite_toolkit/_cdf.py,sha256=Lbv1moBfndOXDazAoDao6ZtDHqiN6L7Nv8sj8w6dkTE,5941
3
- cognite_toolkit/_version.py,sha256=YI3A_ZIosu5b9JMnDIVSQssJPNP0cMvrN5WWK45dLrE,23
3
+ cognite_toolkit/_version.py,sha256=LwNDLmfO-2-d9ejGMyparcS52Lej3rOsbuOvuFDbBaM,23
4
4
  cognite_toolkit/_builtin_modules/README.md,sha256=roU3G05E6ogP5yhw4hdIvVDKV831zCh2pzt9BVddtBg,307
5
5
  cognite_toolkit/_builtin_modules/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
6
- cognite_toolkit/_builtin_modules/cdf.toml,sha256=8-IU8recoI5DDU8W0J6ziWD8kJcQI0limQjr-sFDRlk,273
6
+ cognite_toolkit/_builtin_modules/cdf.toml,sha256=1VS9GTUQqLILK3sscFjExe0fw2fVuzWvGB3pGAhgvC0,273
7
7
  cognite_toolkit/_builtin_modules/packages.toml,sha256=-z_dCOcZwhW86GV6SCB__XzKSQfZcAupGO7JoNB0TZQ,2735
8
8
  cognite_toolkit/_builtin_modules/bootcamp/README.md,sha256=iTVqoy3PLpC-xPi5pbuMIAEHILBSfWTGLexwa1AltpY,211
9
9
  cognite_toolkit/_builtin_modules/bootcamp/default.config.yaml,sha256=cBKReVJt2ZqFf5nBJl6mod_yo8iqSpXqh_7MQxi692U,94
@@ -494,7 +494,7 @@ cognite_toolkit/_cdf_tk/apps/_data_app.py,sha256=rFnTcUBAuoFcTQCjxwqZGG0HjUMGdYT
494
494
  cognite_toolkit/_cdf_tk/apps/_download_app.py,sha256=faAuhFYn7eQ_uzP3BNmnXeaeeoyZR1JvRZx2ATKrsao,16691
495
495
  cognite_toolkit/_cdf_tk/apps/_dump_app.py,sha256=Ec0aEqbKwCkxni09i06rfY31qZUyOVwbbvo7MHh4cf8,39056
496
496
  cognite_toolkit/_cdf_tk/apps/_landing_app.py,sha256=tV8hpqxLm2YgqB-TWieheK7ucN-JhQVtN13V3Zth6Os,386
497
- cognite_toolkit/_cdf_tk/apps/_migrate_app.py,sha256=6QP3liGN4dRhdZaak1w5sHfl1vbqUzud6ljUw7sEoOA,24179
497
+ cognite_toolkit/_cdf_tk/apps/_migrate_app.py,sha256=68jVGqtShpohcohgZnOPp1qg2nO99DignpBVhcvvInE,29030
498
498
  cognite_toolkit/_cdf_tk/apps/_modules_app.py,sha256=Ydjho3z89YCT7Jeq1sOg2rRkLffWH81KTYeWp8SW__Y,6623
499
499
  cognite_toolkit/_cdf_tk/apps/_populate_app.py,sha256=CDQup8xVGbTUR_G9O0phLVhz8GyRPM3quyFesdhnxY4,2783
500
500
  cognite_toolkit/_cdf_tk/apps/_profile_app.py,sha256=vSRJW54bEvIul8_4rOqyOYA7ztXx7TFOvZRZWZTxMbg,7007
@@ -594,7 +594,7 @@ cognite_toolkit/_cdf_tk/commands/pull.py,sha256=2Zf6IOXxSxZ-5XkNE80FlrXBuNejAWrA
594
594
  cognite_toolkit/_cdf_tk/commands/repo.py,sha256=MNy8MWphTklIZHvQOROCweq8_SYxGv6BaqnLpkFFnuk,3845
595
595
  cognite_toolkit/_cdf_tk/commands/run.py,sha256=JyX9jLEQej9eRrHVCCNlw4GuF80qETSol3-T5CCofgw,37331
596
596
  cognite_toolkit/_cdf_tk/commands/_migrate/__init__.py,sha256=ODut2BHBKAMSQMane2S7v-3Z8EjJ67ab2k99zRASpvY,373
597
- cognite_toolkit/_cdf_tk/commands/_migrate/adapter.py,sha256=O7dSgv_LHA0TwQOMd_7WzbPFw6nFINbnElvoOxo14mk,12208
597
+ cognite_toolkit/_cdf_tk/commands/_migrate/adapter.py,sha256=l1mbV8LSRQyjof_U7QuxDtPYbsBn0-1LJjn0F5vdYfo,14358
598
598
  cognite_toolkit/_cdf_tk/commands/_migrate/assets.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
599
599
  cognite_toolkit/_cdf_tk/commands/_migrate/base.py,sha256=aS32Wa-gd7vFNOdCTKEIpSSdjQKZ8jblzD6c3YcOmzA,4942
600
600
  cognite_toolkit/_cdf_tk/commands/_migrate/canvas.py,sha256=Tv4OG9V6tDsQbSH13YW8M0n8Ury5gU16oJB-OISVR0w,6398
@@ -604,7 +604,7 @@ cognite_toolkit/_cdf_tk/commands/_migrate/creators.py,sha256=PlDypLBxRDDwCNk9baL
604
604
  cognite_toolkit/_cdf_tk/commands/_migrate/data_classes.py,sha256=fQy-N1Jc3wjxj84mxRbQHSVGkefJGlyw1_Ll9NCuPSM,7237
605
605
  cognite_toolkit/_cdf_tk/commands/_migrate/data_mapper.py,sha256=TXqXgT_XcWwCB8yViEHNFOWjIdXr-EDHuJKOOf2smWs,5915
606
606
  cognite_toolkit/_cdf_tk/commands/_migrate/data_model.py,sha256=i1eUsNX6Dueol9STIEwyksBnBsWUk13O8qHIjW964pM,7860
607
- cognite_toolkit/_cdf_tk/commands/_migrate/default_mappings.py,sha256=6OLMSZt-KP-JqraRqw2EefX-E33Anr5NLeoHlQ0yTXg,5488
607
+ cognite_toolkit/_cdf_tk/commands/_migrate/default_mappings.py,sha256=KkSq_4R6hQ15ccG-jHy7vVgPwC5IDd5OaXZLvz5mIZs,5547
608
608
  cognite_toolkit/_cdf_tk/commands/_migrate/files.py,sha256=uDGNwTnlpc0cjwLX7P9GHcqf4IsD5Q9_4w7rUOpGWWU,6790
609
609
  cognite_toolkit/_cdf_tk/commands/_migrate/issues.py,sha256=lWSnuS3CfRDbA7i1g12gJ2reJnQcLmZWxHDK19-Wxkk,5772
610
610
  cognite_toolkit/_cdf_tk/commands/_migrate/prepare.py,sha256=sTxeEgIp2xNJXW-RoOhtdAXlww5Wxe94GyzZG1RyYW4,2483
@@ -765,12 +765,12 @@ cognite_toolkit/_repo_files/.gitignore,sha256=ip9kf9tcC5OguF4YF4JFEApnKYw0nG0vPi
765
765
  cognite_toolkit/_repo_files/AzureDevOps/.devops/README.md,sha256=OLA0D7yCX2tACpzvkA0IfkgQ4_swSd-OlJ1tYcTBpsA,240
766
766
  cognite_toolkit/_repo_files/AzureDevOps/.devops/deploy-pipeline.yml,sha256=brULcs8joAeBC_w_aoWjDDUHs3JheLMIR9ajPUK96nc,693
767
767
  cognite_toolkit/_repo_files/AzureDevOps/.devops/dry-run-pipeline.yml,sha256=OBFDhFWK1mlT4Dc6mDUE2Es834l8sAlYG50-5RxRtHk,723
768
- cognite_toolkit/_repo_files/GitHub/.github/workflows/deploy.yaml,sha256=16V5-xCunDMW0MtTg-LZkSmWx51CG3PLHyIvFZ1BjMw,667
769
- cognite_toolkit/_repo_files/GitHub/.github/workflows/dry-run.yaml,sha256=Oc5cTSKJeFcvMMZ8N39BRU62ZFSatbq8pToAPzGy2dE,2430
768
+ cognite_toolkit/_repo_files/GitHub/.github/workflows/deploy.yaml,sha256=biC0TeyQtp-3sRMCN2JJ3PtNsgeSYMJBTi3uI_71YyY,667
769
+ cognite_toolkit/_repo_files/GitHub/.github/workflows/dry-run.yaml,sha256=PkVSZUv0ATqVoI6uNjeqENt-pstThjKTpE1k8MLRXu8,2430
770
770
  cognite_toolkit/demo/__init__.py,sha256=-m1JoUiwRhNCL18eJ6t7fZOL7RPfowhCuqhYFtLgrss,72
771
771
  cognite_toolkit/demo/_base.py,sha256=6xKBUQpXZXGQ3fJ5f7nj7oT0s2n7OTAGIa17ZlKHZ5U,8052
772
- cognite_toolkit-0.6.77.dist-info/METADATA,sha256=p0l1nI4NSj3SX2F_sOoHtvgUvXvAq_D7-HZf9saC_Hw,4501
773
- cognite_toolkit-0.6.77.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
774
- cognite_toolkit-0.6.77.dist-info/entry_points.txt,sha256=JlR7MH1_UMogC3QOyN4-1l36VbrCX9xUdQoHGkuJ6-4,83
775
- cognite_toolkit-0.6.77.dist-info/licenses/LICENSE,sha256=CW0DRcx5tL-pCxLEN7ts2S9g2sLRAsWgHVEX4SN9_Mc,752
776
- cognite_toolkit-0.6.77.dist-info/RECORD,,
772
+ cognite_toolkit-0.6.79.dist-info/METADATA,sha256=5kcS_-BqYNoz-0_WovD9HbD48sKG7Nl8HHqj5aiwHEI,4501
773
+ cognite_toolkit-0.6.79.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
774
+ cognite_toolkit-0.6.79.dist-info/entry_points.txt,sha256=JlR7MH1_UMogC3QOyN4-1l36VbrCX9xUdQoHGkuJ6-4,83
775
+ cognite_toolkit-0.6.79.dist-info/licenses/LICENSE,sha256=CW0DRcx5tL-pCxLEN7ts2S9g2sLRAsWgHVEX4SN9_Mc,752
776
+ cognite_toolkit-0.6.79.dist-info/RECORD,,