cognite-toolkit 0.7.30__py3-none-any.whl → 0.7.51__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.py +5 -6
- cognite_toolkit/_cdf_tk/apps/__init__.py +2 -0
- cognite_toolkit/_cdf_tk/apps/_core_app.py +7 -1
- cognite_toolkit/_cdf_tk/apps/_download_app.py +2 -2
- cognite_toolkit/_cdf_tk/apps/_dump_app.py +1 -1
- cognite_toolkit/_cdf_tk/apps/_import_app.py +41 -0
- cognite_toolkit/_cdf_tk/apps/_migrate_app.py +183 -8
- cognite_toolkit/_cdf_tk/builders/_function.py +81 -9
- cognite_toolkit/_cdf_tk/builders/_raw.py +1 -1
- cognite_toolkit/_cdf_tk/client/_resource_base.py +187 -0
- cognite_toolkit/_cdf_tk/client/_toolkit_client.py +44 -12
- cognite_toolkit/_cdf_tk/client/api/agents.py +107 -0
- cognite_toolkit/_cdf_tk/client/api/annotations.py +129 -0
- cognite_toolkit/_cdf_tk/client/api/assets.py +130 -0
- cognite_toolkit/_cdf_tk/client/api/containers.py +132 -0
- cognite_toolkit/_cdf_tk/client/api/data_models.py +137 -0
- cognite_toolkit/_cdf_tk/client/api/datasets.py +141 -0
- cognite_toolkit/_cdf_tk/client/api/events.py +129 -0
- cognite_toolkit/_cdf_tk/client/api/extraction_pipelines.py +148 -0
- cognite_toolkit/_cdf_tk/client/api/filemetadata.py +176 -0
- cognite_toolkit/_cdf_tk/client/api/function_schedules.py +115 -0
- cognite_toolkit/_cdf_tk/client/api/functions.py +113 -0
- cognite_toolkit/_cdf_tk/client/api/graphql_data_models.py +167 -0
- cognite_toolkit/_cdf_tk/client/api/groups.py +121 -0
- cognite_toolkit/_cdf_tk/client/api/hosted_extractor_destinations.py +131 -0
- cognite_toolkit/_cdf_tk/client/api/hosted_extractor_jobs.py +122 -0
- cognite_toolkit/_cdf_tk/client/api/hosted_extractor_mappings.py +129 -0
- cognite_toolkit/_cdf_tk/client/api/hosted_extractor_sources.py +136 -0
- cognite_toolkit/_cdf_tk/client/api/hosted_extractors.py +23 -0
- cognite_toolkit/_cdf_tk/client/api/infield.py +40 -35
- cognite_toolkit/_cdf_tk/client/api/instances.py +139 -0
- cognite_toolkit/_cdf_tk/client/api/labels.py +125 -0
- cognite_toolkit/_cdf_tk/client/api/{canvas.py → legacy/canvas.py} +16 -8
- cognite_toolkit/_cdf_tk/client/api/{charts.py → legacy/charts.py} +1 -1
- cognite_toolkit/_cdf_tk/client/api/{extended_data_modeling.py → legacy/extended_data_modeling.py} +1 -1
- cognite_toolkit/_cdf_tk/client/api/{extended_files.py → legacy/extended_files.py} +2 -2
- cognite_toolkit/_cdf_tk/client/api/{extended_functions.py → legacy/extended_functions.py} +9 -9
- cognite_toolkit/_cdf_tk/client/api/{extended_raw.py → legacy/extended_raw.py} +1 -1
- cognite_toolkit/_cdf_tk/client/api/{extended_timeseries.py → legacy/extended_timeseries.py} +5 -2
- cognite_toolkit/_cdf_tk/client/api/legacy/location_filters.py +112 -0
- cognite_toolkit/_cdf_tk/client/api/legacy/robotics/__init__.py +8 -0
- cognite_toolkit/_cdf_tk/client/api/{robotics → legacy/robotics}/capabilities.py +1 -1
- cognite_toolkit/_cdf_tk/client/api/{robotics → legacy/robotics}/data_postprocessing.py +1 -1
- cognite_toolkit/_cdf_tk/client/api/{robotics → legacy/robotics}/frames.py +1 -1
- cognite_toolkit/_cdf_tk/client/api/{robotics → legacy/robotics}/locations.py +1 -1
- cognite_toolkit/_cdf_tk/client/api/{robotics → legacy/robotics}/maps.py +1 -1
- cognite_toolkit/_cdf_tk/client/api/{robotics → legacy/robotics}/robots.py +2 -2
- cognite_toolkit/_cdf_tk/client/api/legacy/search_config.py +53 -0
- cognite_toolkit/_cdf_tk/client/api/location_filters.py +140 -75
- cognite_toolkit/_cdf_tk/client/api/migration.py +2 -3
- cognite_toolkit/_cdf_tk/client/api/project.py +9 -8
- cognite_toolkit/_cdf_tk/client/api/raw.py +204 -0
- cognite_toolkit/_cdf_tk/client/api/relationships.py +133 -0
- cognite_toolkit/_cdf_tk/client/api/robotics.py +19 -0
- cognite_toolkit/_cdf_tk/client/api/robotics_capabilities.py +127 -0
- cognite_toolkit/_cdf_tk/client/api/robotics_data_postprocessing.py +138 -0
- cognite_toolkit/_cdf_tk/client/api/robotics_frames.py +122 -0
- cognite_toolkit/_cdf_tk/client/api/robotics_locations.py +127 -0
- cognite_toolkit/_cdf_tk/client/api/robotics_maps.py +122 -0
- cognite_toolkit/_cdf_tk/client/api/robotics_robots.py +122 -0
- cognite_toolkit/_cdf_tk/client/api/search.py +2 -2
- cognite_toolkit/_cdf_tk/client/api/search_config.py +83 -31
- cognite_toolkit/_cdf_tk/client/api/security_categories.py +94 -0
- cognite_toolkit/_cdf_tk/client/api/sequences.py +133 -0
- cognite_toolkit/_cdf_tk/client/api/simulator_models.py +154 -0
- cognite_toolkit/_cdf_tk/client/api/simulators.py +8 -0
- cognite_toolkit/_cdf_tk/client/api/spaces.py +117 -0
- cognite_toolkit/_cdf_tk/client/api/streams.py +68 -56
- cognite_toolkit/_cdf_tk/client/api/three_d.py +385 -34
- cognite_toolkit/_cdf_tk/client/api/timeseries.py +137 -0
- cognite_toolkit/_cdf_tk/client/api/token.py +1 -1
- cognite_toolkit/_cdf_tk/client/api/transformations.py +146 -0
- cognite_toolkit/_cdf_tk/client/api/views.py +139 -0
- cognite_toolkit/_cdf_tk/client/api/workflow_triggers.py +128 -0
- cognite_toolkit/_cdf_tk/client/api/workflow_versions.py +138 -0
- cognite_toolkit/_cdf_tk/client/api/workflows.py +119 -0
- cognite_toolkit/_cdf_tk/client/cdf_client/__init__.py +10 -0
- cognite_toolkit/_cdf_tk/client/cdf_client/api.py +358 -0
- cognite_toolkit/_cdf_tk/client/cdf_client/responses.py +38 -0
- cognite_toolkit/_cdf_tk/{utils → client}/http_client/__init__.py +30 -0
- cognite_toolkit/_cdf_tk/{utils → client}/http_client/_client.py +26 -16
- cognite_toolkit/_cdf_tk/{utils → client}/http_client/_data_classes.py +18 -2
- cognite_toolkit/_cdf_tk/client/http_client/_data_classes2.py +151 -0
- cognite_toolkit/_cdf_tk/client/http_client/_exception.py +13 -0
- cognite_toolkit/_cdf_tk/client/http_client/_item_classes.py +118 -0
- cognite_toolkit/_cdf_tk/{utils → client}/http_client/_tracker.py +5 -2
- cognite_toolkit/_cdf_tk/client/request_classes/base.py +19 -0
- cognite_toolkit/_cdf_tk/client/request_classes/filters.py +113 -0
- cognite_toolkit/_cdf_tk/client/request_classes/graphql.py +28 -0
- cognite_toolkit/_cdf_tk/client/resource_classes/__init__.py +0 -0
- cognite_toolkit/_cdf_tk/client/resource_classes/agent.py +130 -0
- cognite_toolkit/_cdf_tk/client/resource_classes/annotation.py +79 -0
- cognite_toolkit/_cdf_tk/client/resource_classes/apm_config.py +128 -0
- cognite_toolkit/_cdf_tk/client/resource_classes/asset.py +47 -0
- cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes}/charts_data.py +1 -1
- cognite_toolkit/_cdf_tk/client/resource_classes/cognite_file.py +53 -0
- cognite_toolkit/_cdf_tk/client/resource_classes/data_modeling/__init__.py +168 -0
- cognite_toolkit/_cdf_tk/client/resource_classes/data_modeling/_constraints.py +37 -0
- cognite_toolkit/_cdf_tk/client/resource_classes/data_modeling/_container.py +50 -0
- cognite_toolkit/_cdf_tk/client/resource_classes/data_modeling/_data_model.py +73 -0
- cognite_toolkit/_cdf_tk/client/resource_classes/data_modeling/_data_types.py +116 -0
- cognite_toolkit/_cdf_tk/client/resource_classes/data_modeling/_indexes.py +26 -0
- cognite_toolkit/_cdf_tk/client/resource_classes/data_modeling/_instance.py +154 -0
- cognite_toolkit/_cdf_tk/client/resource_classes/data_modeling/_references.py +86 -0
- cognite_toolkit/_cdf_tk/client/resource_classes/data_modeling/_space.py +26 -0
- cognite_toolkit/_cdf_tk/client/resource_classes/data_modeling/_view.py +143 -0
- cognite_toolkit/_cdf_tk/client/resource_classes/data_modeling/_view_property.py +152 -0
- cognite_toolkit/_cdf_tk/client/resource_classes/dataset.py +35 -0
- cognite_toolkit/_cdf_tk/client/resource_classes/event.py +40 -0
- cognite_toolkit/_cdf_tk/client/resource_classes/extraction_pipeline.py +59 -0
- cognite_toolkit/_cdf_tk/client/resource_classes/filemetadata.py +52 -0
- cognite_toolkit/_cdf_tk/client/resource_classes/function.py +53 -0
- cognite_toolkit/_cdf_tk/client/resource_classes/function_schedule.py +65 -0
- cognite_toolkit/_cdf_tk/client/resource_classes/graphql_data_model.py +40 -0
- cognite_toolkit/_cdf_tk/client/resource_classes/group/__init__.py +187 -0
- cognite_toolkit/_cdf_tk/client/resource_classes/group/_constants.py +2 -0
- cognite_toolkit/_cdf_tk/client/resource_classes/group/acls.py +653 -0
- cognite_toolkit/_cdf_tk/client/resource_classes/group/capability.py +56 -0
- cognite_toolkit/_cdf_tk/client/resource_classes/group/group.py +63 -0
- cognite_toolkit/_cdf_tk/client/resource_classes/group/scopes.py +166 -0
- cognite_toolkit/_cdf_tk/client/resource_classes/hosted_extractor_destination.py +34 -0
- cognite_toolkit/_cdf_tk/client/resource_classes/hosted_extractor_job.py +134 -0
- cognite_toolkit/_cdf_tk/client/resource_classes/hosted_extractor_mapping.py +72 -0
- cognite_toolkit/_cdf_tk/client/resource_classes/hosted_extractor_source/__init__.py +63 -0
- cognite_toolkit/_cdf_tk/client/resource_classes/hosted_extractor_source/_auth.py +63 -0
- cognite_toolkit/_cdf_tk/client/resource_classes/hosted_extractor_source/_base.py +26 -0
- cognite_toolkit/_cdf_tk/client/resource_classes/hosted_extractor_source/_certificate.py +20 -0
- cognite_toolkit/_cdf_tk/client/resource_classes/hosted_extractor_source/_eventhub.py +31 -0
- cognite_toolkit/_cdf_tk/client/resource_classes/hosted_extractor_source/_kafka.py +53 -0
- cognite_toolkit/_cdf_tk/client/resource_classes/hosted_extractor_source/_mqtt.py +36 -0
- cognite_toolkit/_cdf_tk/client/resource_classes/hosted_extractor_source/_rest.py +49 -0
- cognite_toolkit/_cdf_tk/client/resource_classes/identifiers.py +59 -0
- cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes}/infield.py +1 -1
- cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes}/instance_api.py +53 -14
- cognite_toolkit/_cdf_tk/client/resource_classes/label.py +27 -0
- cognite_toolkit/_cdf_tk/client/resource_classes/legacy/__init__.py +0 -0
- cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes/legacy}/canvas.py +48 -15
- cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes/legacy}/charts.py +1 -1
- cognite_toolkit/_cdf_tk/client/resource_classes/location_filter.py +84 -0
- cognite_toolkit/_cdf_tk/client/resource_classes/raw.py +44 -0
- cognite_toolkit/_cdf_tk/client/resource_classes/relationship.py +49 -0
- cognite_toolkit/_cdf_tk/client/resource_classes/resource_view_mapping.py +38 -0
- cognite_toolkit/_cdf_tk/client/resource_classes/robotics/__init__.py +37 -0
- cognite_toolkit/_cdf_tk/client/resource_classes/robotics/_capability.py +53 -0
- cognite_toolkit/_cdf_tk/client/resource_classes/robotics/_common.py +34 -0
- cognite_toolkit/_cdf_tk/client/resource_classes/robotics/_data_post_processing.py +49 -0
- cognite_toolkit/_cdf_tk/client/resource_classes/robotics/_frame.py +46 -0
- cognite_toolkit/_cdf_tk/client/resource_classes/robotics/_location.py +36 -0
- cognite_toolkit/_cdf_tk/client/resource_classes/robotics/_map.py +65 -0
- cognite_toolkit/_cdf_tk/client/resource_classes/robotics/_robot.py +58 -0
- cognite_toolkit/_cdf_tk/client/resource_classes/search_config.py +54 -0
- cognite_toolkit/_cdf_tk/client/resource_classes/securitycategory.py +24 -0
- cognite_toolkit/_cdf_tk/client/resource_classes/sequence.py +45 -0
- cognite_toolkit/_cdf_tk/client/resource_classes/sequence_rows.py +56 -0
- cognite_toolkit/_cdf_tk/client/resource_classes/simulator_model.py +50 -0
- cognite_toolkit/_cdf_tk/client/resource_classes/streamlit_.py +71 -0
- cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes}/streams.py +9 -26
- cognite_toolkit/_cdf_tk/client/resource_classes/three_d.py +135 -0
- cognite_toolkit/_cdf_tk/client/resource_classes/timeseries.py +52 -0
- cognite_toolkit/_cdf_tk/client/resource_classes/transformation.py +140 -0
- cognite_toolkit/_cdf_tk/client/resource_classes/workflow.py +27 -0
- cognite_toolkit/_cdf_tk/client/resource_classes/workflow_trigger.py +63 -0
- cognite_toolkit/_cdf_tk/client/resource_classes/workflow_version.py +155 -0
- cognite_toolkit/_cdf_tk/client/testing.py +54 -17
- cognite_toolkit/_cdf_tk/commands/__init__.py +1 -0
- cognite_toolkit/_cdf_tk/commands/_migrate/command.py +103 -108
- cognite_toolkit/_cdf_tk/commands/_migrate/conversion.py +29 -16
- cognite_toolkit/_cdf_tk/commands/_migrate/creators.py +1 -1
- cognite_toolkit/_cdf_tk/commands/_migrate/data_classes.py +38 -6
- cognite_toolkit/_cdf_tk/commands/_migrate/data_mapper.py +262 -36
- cognite_toolkit/_cdf_tk/commands/_migrate/data_model.py +1 -0
- cognite_toolkit/_cdf_tk/commands/_migrate/default_mappings.py +1 -1
- cognite_toolkit/_cdf_tk/commands/_migrate/issues.py +39 -38
- cognite_toolkit/_cdf_tk/commands/_migrate/migration_io.py +227 -8
- cognite_toolkit/_cdf_tk/commands/_profile.py +1 -1
- cognite_toolkit/_cdf_tk/commands/_purge.py +14 -16
- cognite_toolkit/_cdf_tk/commands/_upload.py +1 -1
- cognite_toolkit/_cdf_tk/commands/build_cmd.py +12 -2
- cognite_toolkit/_cdf_tk/commands/build_v2/__init__.py +0 -0
- cognite_toolkit/_cdf_tk/commands/build_v2/_module_parser.py +138 -0
- cognite_toolkit/_cdf_tk/commands/build_v2/_modules_parser.py +163 -0
- cognite_toolkit/_cdf_tk/commands/build_v2/build_cmd.py +228 -0
- cognite_toolkit/_cdf_tk/commands/build_v2/build_parameters.py +71 -0
- cognite_toolkit/_cdf_tk/commands/build_v2/data_classes/_modules.py +27 -0
- cognite_toolkit/_cdf_tk/commands/build_v2/data_classes/_resource.py +22 -0
- cognite_toolkit/_cdf_tk/commands/dump_resource.py +4 -4
- cognite_toolkit/_cdf_tk/commands/pull.py +97 -2
- cognite_toolkit/_cdf_tk/commands/run.py +1 -1
- cognite_toolkit/_cdf_tk/cruds/__init__.py +16 -6
- cognite_toolkit/_cdf_tk/cruds/_data_cruds.py +9 -5
- cognite_toolkit/_cdf_tk/cruds/_resource_cruds/__init__.py +2 -0
- cognite_toolkit/_cdf_tk/cruds/_resource_cruds/auth.py +6 -2
- cognite_toolkit/_cdf_tk/cruds/_resource_cruds/classic.py +70 -89
- cognite_toolkit/_cdf_tk/cruds/_resource_cruds/configuration.py +1 -1
- cognite_toolkit/_cdf_tk/cruds/_resource_cruds/datamodel.py +1 -1
- cognite_toolkit/_cdf_tk/cruds/_resource_cruds/extraction_pipeline.py +1 -1
- cognite_toolkit/_cdf_tk/cruds/_resource_cruds/fieldops.py +34 -25
- cognite_toolkit/_cdf_tk/cruds/_resource_cruds/file.py +50 -59
- cognite_toolkit/_cdf_tk/cruds/_resource_cruds/function.py +14 -2
- cognite_toolkit/_cdf_tk/cruds/_resource_cruds/industrial_tool.py +1 -1
- cognite_toolkit/_cdf_tk/cruds/_resource_cruds/location.py +4 -3
- cognite_toolkit/_cdf_tk/cruds/_resource_cruds/migration.py +1 -1
- cognite_toolkit/_cdf_tk/cruds/_resource_cruds/raw.py +6 -1
- cognite_toolkit/_cdf_tk/cruds/_resource_cruds/relationship.py +5 -4
- cognite_toolkit/_cdf_tk/cruds/_resource_cruds/robotics.py +1 -1
- cognite_toolkit/_cdf_tk/cruds/_resource_cruds/simulators.py +122 -0
- cognite_toolkit/_cdf_tk/cruds/_resource_cruds/streams.py +15 -31
- cognite_toolkit/_cdf_tk/cruds/_resource_cruds/timeseries.py +42 -47
- cognite_toolkit/_cdf_tk/cruds/_resource_cruds/transformation.py +49 -14
- cognite_toolkit/_cdf_tk/data_classes/__init__.py +3 -0
- cognite_toolkit/_cdf_tk/data_classes/_issues.py +36 -0
- cognite_toolkit/_cdf_tk/data_classes/_module_directories.py +2 -1
- cognite_toolkit/_cdf_tk/data_classes/_module_toml.py +1 -0
- cognite_toolkit/_cdf_tk/data_classes/_tracking_info.py +4 -0
- cognite_toolkit/_cdf_tk/feature_flags.py +8 -0
- cognite_toolkit/_cdf_tk/resource_classes/__init__.py +2 -0
- cognite_toolkit/_cdf_tk/resource_classes/capabilities.py +6 -0
- cognite_toolkit/_cdf_tk/resource_classes/search_config.py +1 -1
- cognite_toolkit/_cdf_tk/resource_classes/simulator_model.py +17 -0
- cognite_toolkit/_cdf_tk/resource_classes/workflow_version.py +173 -5
- cognite_toolkit/_cdf_tk/storageio/_applications.py +53 -15
- cognite_toolkit/_cdf_tk/storageio/_asset_centric.py +117 -107
- cognite_toolkit/_cdf_tk/storageio/_base.py +3 -1
- cognite_toolkit/_cdf_tk/storageio/_datapoints.py +7 -7
- cognite_toolkit/_cdf_tk/storageio/_file_content.py +65 -56
- cognite_toolkit/_cdf_tk/storageio/_instances.py +1 -1
- cognite_toolkit/_cdf_tk/storageio/_raw.py +1 -1
- cognite_toolkit/_cdf_tk/storageio/logger.py +162 -0
- cognite_toolkit/_cdf_tk/storageio/selectors/__init__.py +10 -1
- cognite_toolkit/_cdf_tk/storageio/selectors/_three_d.py +34 -0
- cognite_toolkit/_cdf_tk/tk_warnings/__init__.py +2 -0
- cognite_toolkit/_cdf_tk/tk_warnings/fileread.py +20 -0
- cognite_toolkit/_cdf_tk/utils/__init__.py +11 -1
- cognite_toolkit/_cdf_tk/utils/cdf.py +1 -1
- cognite_toolkit/_cdf_tk/utils/interactive_select.py +53 -4
- cognite_toolkit/_cdf_tk/utils/modules.py +7 -0
- cognite_toolkit/_cdf_tk/utils/pip_validator.py +96 -0
- cognite_toolkit/_cdf_tk/utils/useful_types.py +4 -7
- cognite_toolkit/_cdf_tk/utils/useful_types2.py +14 -0
- cognite_toolkit/_cdf_tk/validation.py +4 -0
- cognite_toolkit/_repo_files/GitHub/.github/workflows/deploy.yaml +1 -1
- cognite_toolkit/_repo_files/GitHub/.github/workflows/dry-run.yaml +1 -1
- cognite_toolkit/_resources/cdf.toml +1 -1
- cognite_toolkit/_version.py +1 -1
- {cognite_toolkit-0.7.30.dist-info → cognite_toolkit-0.7.51.dist-info}/METADATA +13 -3
- cognite_toolkit-0.7.51.dist-info/RECORD +445 -0
- {cognite_toolkit-0.7.30.dist-info → cognite_toolkit-0.7.51.dist-info}/WHEEL +2 -2
- cognite_toolkit/_cdf_tk/client/api/robotics/__init__.py +0 -3
- cognite_toolkit/_cdf_tk/client/data_classes/api_classes.py +0 -17
- cognite_toolkit/_cdf_tk/client/data_classes/base.py +0 -87
- cognite_toolkit/_cdf_tk/client/data_classes/three_d.py +0 -47
- cognite_toolkit/_cdf_tk/prototypes/import_app.py +0 -41
- cognite_toolkit/_cdf_tk/utils/http_client/_data_classes2.py +0 -187
- cognite_toolkit/_cdf_tk/utils/http_client/_exception.py +0 -4
- cognite_toolkit-0.7.30.dist-info/RECORD +0 -316
- /cognite_toolkit/_cdf_tk/client/{data_classes → api/legacy}/__init__.py +0 -0
- /cognite_toolkit/_cdf_tk/client/api/{dml.py → legacy/dml.py} +0 -0
- /cognite_toolkit/_cdf_tk/client/api/{fixed_transformations.py → legacy/fixed_transformations.py} +0 -0
- /cognite_toolkit/_cdf_tk/client/api/{robotics → legacy/robotics}/api.py +0 -0
- /cognite_toolkit/_cdf_tk/client/api/{robotics → legacy/robotics}/utlis.py +0 -0
- /cognite_toolkit/_cdf_tk/{prototypes/commands → client/request_classes}/__init__.py +0 -0
- /cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes}/capabilities.py +0 -0
- /cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes/legacy}/apm_config_v1.py +0 -0
- /cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes/legacy}/extendable_cognite_file.py +0 -0
- /cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes/legacy}/extended_filemetadata.py +0 -0
- /cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes/legacy}/extended_filemetdata.py +0 -0
- /cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes/legacy}/extended_timeseries.py +0 -0
- /cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes/legacy}/functions.py +0 -0
- /cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes/legacy}/graphql_data_models.py +0 -0
- /cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes/legacy}/instances.py +0 -0
- /cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes/legacy}/location_filters.py +0 -0
- /cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes/legacy}/migration.py +0 -0
- /cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes/legacy}/pending_instances_ids.py +0 -0
- /cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes/legacy}/project.py +0 -0
- /cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes/legacy}/raw.py +0 -0
- /cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes/legacy}/robotics.py +0 -0
- /cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes/legacy}/search_config.py +0 -0
- /cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes/legacy}/sequences.py +0 -0
- /cognite_toolkit/_cdf_tk/client/{data_classes → resource_classes/legacy}/streamlit_.py +0 -0
- /cognite_toolkit/_cdf_tk/{prototypes/commands/import_.py → commands/_import_cmd.py} +0 -0
- {cognite_toolkit-0.7.30.dist-info → cognite_toolkit-0.7.51.dist-info}/entry_points.txt +0 -0
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import dataclasses
|
|
2
2
|
import itertools
|
|
3
|
+
import json
|
|
3
4
|
import re
|
|
4
5
|
import sys
|
|
5
6
|
import tempfile
|
|
@@ -28,6 +29,7 @@ from cognite_toolkit._cdf_tk.cruds import (
|
|
|
28
29
|
HostedExtractorSourceCRUD,
|
|
29
30
|
ResourceCRUD,
|
|
30
31
|
StreamlitCRUD,
|
|
32
|
+
ViewCRUD,
|
|
31
33
|
)
|
|
32
34
|
from cognite_toolkit._cdf_tk.data_classes import (
|
|
33
35
|
BuildEnvironment,
|
|
@@ -643,6 +645,44 @@ class PullCommand(ToolkitCommand):
|
|
|
643
645
|
loader: ResourceCRUD[T_ID, T_ResourceRequest, T_ResourceResponse],
|
|
644
646
|
source_file: Path,
|
|
645
647
|
) -> tuple[str, dict[Path, str]]:
|
|
648
|
+
"""Convert resource data from CDF into YAML file content ready to be written to disk.
|
|
649
|
+
|
|
650
|
+
This method takes the raw CDF resource data and transforms it back into a properly
|
|
651
|
+
formatted YAML file that preserves:
|
|
652
|
+
- Template variables (e.g., {{ variable_name }}) instead of their resolved values
|
|
653
|
+
- YAML comments from the original source file
|
|
654
|
+
- The original key ordering in dictionaries
|
|
655
|
+
|
|
656
|
+
The transformation process:
|
|
657
|
+
1. Replace all template variables with unique placeholders
|
|
658
|
+
2. Load source YAML content while preserving comments
|
|
659
|
+
3. Update the resource data with placeholder values where variables were used
|
|
660
|
+
4. Dump the updated data back to YAML format
|
|
661
|
+
5. Replace placeholders with the original template variable syntax
|
|
662
|
+
6. Restore the YAML comments
|
|
663
|
+
|
|
664
|
+
Args:
|
|
665
|
+
source: The original YAML file content as a string.
|
|
666
|
+
to_write: A mapping from resource identifiers to their updated data dictionaries
|
|
667
|
+
pulled from CDF.
|
|
668
|
+
resources: The list of built resources containing build variables and metadata.
|
|
669
|
+
environment_variables: A mapping of environment variable names to their values,
|
|
670
|
+
used to resolve variables like ${VAR_NAME} in template values.
|
|
671
|
+
loader: The ResourceCRUD loader instance for this resource type.
|
|
672
|
+
source_file: The path to the source file being processed.
|
|
673
|
+
|
|
674
|
+
Returns:
|
|
675
|
+
A tuple containing:
|
|
676
|
+
- The final YAML content string ready to be written to disk.
|
|
677
|
+
- A dictionary mapping extra file paths to their content (for resources
|
|
678
|
+
that have additional files, like SQL queries for transformations).
|
|
679
|
+
|
|
680
|
+
Raises:
|
|
681
|
+
ValueError: If the loaded YAML structure doesn't match between the original
|
|
682
|
+
and placeholder versions.
|
|
683
|
+
ToolkitMissingResourceError: If a resource identifier is not found in the
|
|
684
|
+
to_write or resources mappings.
|
|
685
|
+
"""
|
|
646
686
|
# 1. Replace all variables with placeholders
|
|
647
687
|
# 2. Load source and keep the comments
|
|
648
688
|
# 3. Update the to_write dict with the placeholders
|
|
@@ -762,9 +802,22 @@ class PullCommand(ToolkitCommand):
|
|
|
762
802
|
|
|
763
803
|
|
|
764
804
|
class ResourceReplacer:
|
|
765
|
-
"""Replaces values in a local resource
|
|
805
|
+
"""Replaces values in a local resource dictionary with the updated values from CDF.
|
|
766
806
|
|
|
767
807
|
The local resource dict order is maintained. In addition, placeholders are used for variables.
|
|
808
|
+
|
|
809
|
+
This class is responsible for merging CDF resource values back into local configuration files
|
|
810
|
+
while preserving:
|
|
811
|
+
- The original key ordering in dictionaries
|
|
812
|
+
- Template variable placeholders (e.g., {{ variable_name }})
|
|
813
|
+
- Comments and formatting where possible
|
|
814
|
+
|
|
815
|
+
Args:
|
|
816
|
+
value_by_placeholder: A mapping from placeholder strings to their corresponding
|
|
817
|
+
BuildVariable objects. Placeholders are temporary substitutes for template
|
|
818
|
+
variables during processing.
|
|
819
|
+
loader: The ResourceCRUD loader instance used to determine how to diff lists
|
|
820
|
+
and handle resource-specific logic.
|
|
768
821
|
"""
|
|
769
822
|
|
|
770
823
|
def __init__(self, value_by_placeholder: dict[str, BuildVariable], loader: ResourceCRUD) -> None:
|
|
@@ -777,7 +830,49 @@ class ResourceReplacer:
|
|
|
777
830
|
placeholder: dict[str, Any],
|
|
778
831
|
to_write: dict[str, Any],
|
|
779
832
|
) -> dict[str, Any]:
|
|
780
|
-
|
|
833
|
+
"""Replace values in a local resource dict with updated values from CDF.
|
|
834
|
+
|
|
835
|
+
Merges the CDF resource values into the local configuration while maintaining
|
|
836
|
+
the original dictionary key ordering and preserving template variable placeholders.
|
|
837
|
+
|
|
838
|
+
Args:
|
|
839
|
+
current: The current local resource dictionary with resolved variable values.
|
|
840
|
+
This represents the source file content after template variables have
|
|
841
|
+
been substituted with their actual values.
|
|
842
|
+
placeholder: The local resource dictionary with placeholder strings instead
|
|
843
|
+
of resolved values. Used to identify which values contain template
|
|
844
|
+
variables that should be preserved.
|
|
845
|
+
to_write: The resource dictionary from CDF containing the updated values
|
|
846
|
+
to merge into the local configuration.
|
|
847
|
+
|
|
848
|
+
Returns:
|
|
849
|
+
A new dictionary with CDF values merged in, maintaining the original key
|
|
850
|
+
order from `current`. Template variables are preserved as placeholders
|
|
851
|
+
(to be converted back to {{ variable }} syntax by the caller). New keys
|
|
852
|
+
from CDF are appended at the end, and removed keys are omitted.
|
|
853
|
+
|
|
854
|
+
Raises:
|
|
855
|
+
ToolkitValueError: If a list variable has changed and cannot be updated,
|
|
856
|
+
or if there's a type mismatch between local and CDF values.
|
|
857
|
+
"""
|
|
858
|
+
has_stringified_view_filter = False
|
|
859
|
+
if isinstance(self._loader, ViewCRUD):
|
|
860
|
+
# view.filter are recursive nested dicts that are complex. To avoid issues with comparing
|
|
861
|
+
# lists inside the filters, we stringify them before processing such that they are compared
|
|
862
|
+
# as strings.
|
|
863
|
+
processed = []
|
|
864
|
+
for d in (current, placeholder, to_write):
|
|
865
|
+
if isinstance(d.get("filter"), dict):
|
|
866
|
+
d = d.copy()
|
|
867
|
+
d["filter"] = json.dumps(d["filter"])
|
|
868
|
+
has_stringified_view_filter = True
|
|
869
|
+
processed.append(d)
|
|
870
|
+
current, placeholder, to_write = processed
|
|
871
|
+
output = self._replace_dict(current, placeholder, to_write, tuple())
|
|
872
|
+
if has_stringified_view_filter and "filter" in output:
|
|
873
|
+
# Special case for ViewCRUD where the filter is stringified in CDF
|
|
874
|
+
output["filter"] = json.loads(output["filter"])
|
|
875
|
+
return output
|
|
781
876
|
|
|
782
877
|
def _replace_dict(
|
|
783
878
|
self,
|
|
@@ -30,7 +30,7 @@ from rich.progress import Progress
|
|
|
30
30
|
from rich.table import Table
|
|
31
31
|
|
|
32
32
|
from cognite_toolkit._cdf_tk.client import ToolkitClient, ToolkitClientConfig
|
|
33
|
-
from cognite_toolkit._cdf_tk.client.
|
|
33
|
+
from cognite_toolkit._cdf_tk.client.resource_classes.legacy.functions import FunctionScheduleID
|
|
34
34
|
from cognite_toolkit._cdf_tk.constants import _RUNNING_IN_BROWSER
|
|
35
35
|
from cognite_toolkit._cdf_tk.cruds import FunctionCRUD, FunctionScheduleCRUD, WorkflowVersionCRUD
|
|
36
36
|
from cognite_toolkit._cdf_tk.cruds._resource_cruds.workflow import WorkflowTriggerCRUD
|
|
@@ -12,6 +12,7 @@
|
|
|
12
12
|
# See the License for the specific language governing permissions and
|
|
13
13
|
# limitations under the License.
|
|
14
14
|
import itertools
|
|
15
|
+
from collections import defaultdict
|
|
15
16
|
from typing import Literal, TypeAlias
|
|
16
17
|
|
|
17
18
|
from cognite_toolkit._cdf_tk.feature_flags import FeatureFlag, Flags
|
|
@@ -60,6 +61,7 @@ from ._resource_cruds import (
|
|
|
60
61
|
SecurityCategoryCRUD,
|
|
61
62
|
SequenceCRUD,
|
|
62
63
|
SequenceRowCRUD,
|
|
64
|
+
SimulatorModelCRUD,
|
|
63
65
|
SpaceCRUD,
|
|
64
66
|
StreamCRUD,
|
|
65
67
|
StreamlitCRUD,
|
|
@@ -86,26 +88,31 @@ if not FeatureFlag.is_enabled(Flags.MIGRATE):
|
|
|
86
88
|
_EXCLUDED_CRUDS.add(ResourceViewMappingCRUD)
|
|
87
89
|
if not FeatureFlag.is_enabled(Flags.STREAMS):
|
|
88
90
|
_EXCLUDED_CRUDS.add(StreamCRUD)
|
|
91
|
+
if not FeatureFlag.is_enabled(Flags.SIMULATORS):
|
|
92
|
+
_EXCLUDED_CRUDS.add(SimulatorModelCRUD)
|
|
89
93
|
|
|
90
|
-
|
|
91
|
-
CRUDS_BY_FOLDER_NAME:
|
|
94
|
+
CRUDS_BY_FOLDER_NAME_INCLUDE_ALPHA: defaultdict[str, list[type[Loader]]] = defaultdict(list)
|
|
95
|
+
CRUDS_BY_FOLDER_NAME: defaultdict[str, list[type[Loader]]] = defaultdict(list)
|
|
92
96
|
for _loader in itertools.chain(
|
|
93
97
|
ResourceCRUD.__subclasses__(),
|
|
94
98
|
ResourceContainerCRUD.__subclasses__(),
|
|
95
99
|
DataCRUD.__subclasses__(),
|
|
96
100
|
GroupCRUD.__subclasses__(),
|
|
97
101
|
):
|
|
98
|
-
if _loader in [ResourceCRUD, ResourceContainerCRUD, DataCRUD, GroupCRUD]
|
|
102
|
+
if _loader in [ResourceCRUD, ResourceContainerCRUD, DataCRUD, GroupCRUD]:
|
|
99
103
|
# Skipping base classes
|
|
100
104
|
continue
|
|
101
|
-
if _loader.folder_name not in CRUDS_BY_FOLDER_NAME: # type: ignore[attr-defined]
|
|
102
|
-
CRUDS_BY_FOLDER_NAME[_loader.folder_name] = [] # type: ignore[attr-defined]
|
|
103
105
|
# MyPy bug: https://github.com/python/mypy/issues/4717
|
|
104
|
-
|
|
106
|
+
CRUDS_BY_FOLDER_NAME_INCLUDE_ALPHA[_loader.folder_name].append(_loader) # type: ignore[arg-type, attr-defined]
|
|
107
|
+
|
|
108
|
+
if _loader not in _EXCLUDED_CRUDS:
|
|
109
|
+
CRUDS_BY_FOLDER_NAME[_loader.folder_name].append(_loader) # type: ignore[arg-type, attr-defined]
|
|
105
110
|
del _loader # cleanup module namespace
|
|
106
111
|
|
|
112
|
+
|
|
107
113
|
# For backwards compatibility
|
|
108
114
|
CRUDS_BY_FOLDER_NAME["data_models"] = CRUDS_BY_FOLDER_NAME["data_modeling"] # Todo: Remove in v1.0
|
|
115
|
+
CRUDS_BY_FOLDER_NAME_INCLUDE_ALPHA["data_models"] = CRUDS_BY_FOLDER_NAME_INCLUDE_ALPHA["data_modeling"]
|
|
109
116
|
RESOURCE_CRUD_BY_FOLDER_NAME = {
|
|
110
117
|
folder_name: cruds
|
|
111
118
|
for folder_name, loaders in CRUDS_BY_FOLDER_NAME.items()
|
|
@@ -142,6 +149,7 @@ ResourceTypes: TypeAlias = Literal[
|
|
|
142
149
|
"functions",
|
|
143
150
|
"raw",
|
|
144
151
|
"robotics",
|
|
152
|
+
"simulators",
|
|
145
153
|
"streams",
|
|
146
154
|
"streamlit",
|
|
147
155
|
"workflows",
|
|
@@ -163,6 +171,7 @@ __all__ = [
|
|
|
163
171
|
"RESOURCE_CRUD_CONTAINER_LIST",
|
|
164
172
|
"RESOURCE_CRUD_LIST",
|
|
165
173
|
"RESOURCE_DATA_CRUD_LIST",
|
|
174
|
+
"_EXCLUDED_CRUDS",
|
|
166
175
|
"AgentCRUD",
|
|
167
176
|
"AssetCRUD",
|
|
168
177
|
"CogniteFileCRUD",
|
|
@@ -209,6 +218,7 @@ __all__ = [
|
|
|
209
218
|
"SecurityCategoryCRUD",
|
|
210
219
|
"SequenceCRUD",
|
|
211
220
|
"SequenceRowCRUD",
|
|
221
|
+
"SimulatorModelCRUD",
|
|
212
222
|
"SpaceCRUD",
|
|
213
223
|
"StreamlitCRUD",
|
|
214
224
|
"ThreeDModelCRUD",
|
|
@@ -6,8 +6,9 @@ from typing import TYPE_CHECKING, cast, final
|
|
|
6
6
|
import pandas as pd
|
|
7
7
|
from cognite.client.data_classes import FileMetadataWrite
|
|
8
8
|
|
|
9
|
-
from cognite_toolkit._cdf_tk.client.
|
|
10
|
-
from cognite_toolkit._cdf_tk.client.
|
|
9
|
+
from cognite_toolkit._cdf_tk.client.resource_classes.identifiers import ExternalId
|
|
10
|
+
from cognite_toolkit._cdf_tk.client.resource_classes.legacy.extendable_cognite_file import ExtendableCogniteFileApply
|
|
11
|
+
from cognite_toolkit._cdf_tk.client.resource_classes.legacy.raw import RawTable
|
|
11
12
|
from cognite_toolkit._cdf_tk.constants import BUILD_FOLDER_ENCODING
|
|
12
13
|
from cognite_toolkit._cdf_tk.protocols import (
|
|
13
14
|
T_ResourceRequest,
|
|
@@ -119,11 +120,14 @@ class FileCRUD(DataCRUD):
|
|
|
119
120
|
if not datafile.exists():
|
|
120
121
|
continue
|
|
121
122
|
|
|
123
|
+
identifier = resource.identifier
|
|
124
|
+
if isinstance(identifier, ExternalId):
|
|
125
|
+
identifier = identifier.external_id
|
|
122
126
|
if dry_run:
|
|
123
|
-
yield f" Would upload file '{datafile!s}' to file with {id_name}={
|
|
127
|
+
yield f" Would upload file '{datafile!s}' to file with {id_name}={identifier!r}", 1
|
|
124
128
|
else:
|
|
125
|
-
self.client.files.upload_content(path=str(datafile), **{id_name:
|
|
126
|
-
yield f" Uploaded file '{datafile!s}' to file with {id_name}={
|
|
129
|
+
self.client.files.upload_content(path=str(datafile), **{id_name: identifier})
|
|
130
|
+
yield f" Uploaded file '{datafile!s}' to file with {id_name}={identifier!r}", 1
|
|
127
131
|
|
|
128
132
|
@staticmethod
|
|
129
133
|
def _read_metadata(
|
|
@@ -35,6 +35,7 @@ from .robotics import (
|
|
|
35
35
|
RoboticMapCRUD,
|
|
36
36
|
RoboticsDataPostProcessingCRUD,
|
|
37
37
|
)
|
|
38
|
+
from .simulators import SimulatorModelCRUD
|
|
38
39
|
from .streams import StreamCRUD
|
|
39
40
|
from .three_d_model import ThreeDModelCRUD
|
|
40
41
|
from .timeseries import DatapointSubscriptionCRUD, TimeSeriesCRUD
|
|
@@ -83,6 +84,7 @@ __all__ = [
|
|
|
83
84
|
"SecurityCategoryCRUD",
|
|
84
85
|
"SequenceCRUD",
|
|
85
86
|
"SequenceRowCRUD",
|
|
87
|
+
"SimulatorModelCRUD",
|
|
86
88
|
"SpaceCRUD",
|
|
87
89
|
"StreamCRUD",
|
|
88
90
|
"StreamlitCRUD",
|
|
@@ -41,7 +41,8 @@ from rich.console import Console
|
|
|
41
41
|
from rich.markup import escape
|
|
42
42
|
|
|
43
43
|
from cognite_toolkit._cdf_tk.client import ToolkitClient
|
|
44
|
-
from cognite_toolkit._cdf_tk.client.
|
|
44
|
+
from cognite_toolkit._cdf_tk.client.resource_classes.identifiers import ExternalId
|
|
45
|
+
from cognite_toolkit._cdf_tk.client.resource_classes.legacy.raw import RawDatabase, RawTable
|
|
45
46
|
from cognite_toolkit._cdf_tk.cruds._base_cruds import ResourceCRUD
|
|
46
47
|
from cognite_toolkit._cdf_tk.exceptions import ToolkitWrongResourceError
|
|
47
48
|
from cognite_toolkit._cdf_tk.resource_classes import GroupYAML, SecurityCategoriesYAML
|
|
@@ -190,7 +191,10 @@ class GroupCRUD(ResourceCRUD[str, GroupWrite, Group]):
|
|
|
190
191
|
loader = LocationFilterCRUD
|
|
191
192
|
if loader is not None and isinstance(ids, dict) and "ids" in ids:
|
|
192
193
|
for id_ in ids["ids"]:
|
|
193
|
-
|
|
194
|
+
if loader is TimeSeriesCRUD:
|
|
195
|
+
yield TimeSeriesCRUD, ExternalId(external_id=id_)
|
|
196
|
+
else:
|
|
197
|
+
yield loader, id_
|
|
194
198
|
|
|
195
199
|
def _substitute_scope_ids(self, group: dict[str, Any], is_dry_run: bool, reverse: bool = False) -> dict[str, Any]:
|
|
196
200
|
replace_method_by_acl = self._create_replace_method_by_acl_and_scope()
|
|
@@ -5,26 +5,27 @@ from pathlib import Path
|
|
|
5
5
|
from typing import Any, final
|
|
6
6
|
|
|
7
7
|
import pandas as pd
|
|
8
|
+
from cognite.client.data_classes import Sequence as CDFSequence
|
|
8
9
|
from cognite.client.data_classes import (
|
|
9
|
-
AggregateResultItem,
|
|
10
|
-
Asset,
|
|
11
|
-
AssetList,
|
|
12
|
-
AssetWrite,
|
|
13
|
-
Event,
|
|
14
|
-
EventList,
|
|
15
|
-
EventWrite,
|
|
16
10
|
SequenceList,
|
|
17
11
|
SequenceWrite,
|
|
18
12
|
capabilities,
|
|
19
13
|
)
|
|
20
|
-
from cognite.client.data_classes import Sequence as CDFSequence
|
|
21
14
|
from cognite.client.data_classes.capabilities import Capability
|
|
22
15
|
from cognite.client.exceptions import CogniteAPIError, CogniteNotFoundError
|
|
23
16
|
from cognite.client.utils.useful_types import SequenceNotStr
|
|
24
17
|
from rich.console import Console
|
|
25
18
|
|
|
26
19
|
from cognite_toolkit._cdf_tk.client import ToolkitClient
|
|
27
|
-
from cognite_toolkit._cdf_tk.client.
|
|
20
|
+
from cognite_toolkit._cdf_tk.client.request_classes.filters import ClassicFilter
|
|
21
|
+
from cognite_toolkit._cdf_tk.client.resource_classes.asset import (
|
|
22
|
+
AssetAggregateItem,
|
|
23
|
+
AssetRequest,
|
|
24
|
+
AssetResponse,
|
|
25
|
+
)
|
|
26
|
+
from cognite_toolkit._cdf_tk.client.resource_classes.event import EventRequest, EventResponse
|
|
27
|
+
from cognite_toolkit._cdf_tk.client.resource_classes.identifiers import ExternalId, InternalOrExternalId
|
|
28
|
+
from cognite_toolkit._cdf_tk.client.resource_classes.legacy.sequences import (
|
|
28
29
|
ToolkitSequenceRows,
|
|
29
30
|
ToolkitSequenceRowsList,
|
|
30
31
|
ToolkitSequenceRowsWrite,
|
|
@@ -44,10 +45,10 @@ _DEPRECATION_WARNING_ISSUED = False
|
|
|
44
45
|
|
|
45
46
|
|
|
46
47
|
@final
|
|
47
|
-
class AssetCRUD(ResourceCRUD[
|
|
48
|
+
class AssetCRUD(ResourceCRUD[ExternalId, AssetRequest, AssetResponse]):
|
|
48
49
|
folder_name = "classic"
|
|
49
|
-
resource_cls =
|
|
50
|
-
resource_write_cls =
|
|
50
|
+
resource_cls = AssetResponse
|
|
51
|
+
resource_write_cls = AssetRequest
|
|
51
52
|
yaml_cls = AssetYAML
|
|
52
53
|
kind = "Asset"
|
|
53
54
|
dependencies = frozenset({DataSetsCRUD, LabelCRUD})
|
|
@@ -78,15 +79,15 @@ class AssetCRUD(ResourceCRUD[str, AssetWrite, Asset]):
|
|
|
78
79
|
return "assets"
|
|
79
80
|
|
|
80
81
|
@classmethod
|
|
81
|
-
def get_id(cls, item:
|
|
82
|
+
def get_id(cls, item: AssetRequest | AssetResponse | dict) -> ExternalId:
|
|
82
83
|
if isinstance(item, dict):
|
|
83
|
-
return item["externalId"]
|
|
84
|
+
return ExternalId(external_id=item["externalId"])
|
|
84
85
|
if not item.external_id:
|
|
85
86
|
raise KeyError("Asset must have external_id")
|
|
86
|
-
return item.external_id
|
|
87
|
+
return ExternalId(external_id=item.external_id)
|
|
87
88
|
|
|
88
89
|
@classmethod
|
|
89
|
-
def get_internal_id(cls, item:
|
|
90
|
+
def get_internal_id(cls, item: AssetResponse | dict) -> int:
|
|
90
91
|
if isinstance(item, dict):
|
|
91
92
|
return item["id"]
|
|
92
93
|
if not item.id:
|
|
@@ -94,12 +95,12 @@ class AssetCRUD(ResourceCRUD[str, AssetWrite, Asset]):
|
|
|
94
95
|
return item.id
|
|
95
96
|
|
|
96
97
|
@classmethod
|
|
97
|
-
def dump_id(cls, id:
|
|
98
|
-
return
|
|
98
|
+
def dump_id(cls, id: ExternalId) -> dict[str, Any]:
|
|
99
|
+
return id.dump()
|
|
99
100
|
|
|
100
101
|
@classmethod
|
|
101
102
|
def get_required_capability(
|
|
102
|
-
cls, items: collections.abc.Sequence[
|
|
103
|
+
cls, items: collections.abc.Sequence[AssetRequest] | None, read_only: bool
|
|
103
104
|
) -> Capability | list[Capability]:
|
|
104
105
|
if not items and items is not None:
|
|
105
106
|
return []
|
|
@@ -119,45 +120,30 @@ class AssetCRUD(ResourceCRUD[str, AssetWrite, Asset]):
|
|
|
119
120
|
|
|
120
121
|
return capabilities.AssetsAcl(actions, scope)
|
|
121
122
|
|
|
122
|
-
def create(self, items: Sequence[
|
|
123
|
-
return self.client.assets.create(items)
|
|
123
|
+
def create(self, items: collections.abc.Sequence[AssetRequest]) -> list[AssetResponse]:
|
|
124
|
+
return self.client.tool.assets.create(items)
|
|
124
125
|
|
|
125
|
-
def retrieve(self, ids: SequenceNotStr[
|
|
126
|
-
return self.client.assets.
|
|
126
|
+
def retrieve(self, ids: SequenceNotStr[ExternalId]) -> list[AssetResponse]:
|
|
127
|
+
return self.client.tool.assets.retrieve(list(ids), ignore_unknown_ids=True)
|
|
127
128
|
|
|
128
|
-
def update(self, items: Sequence[
|
|
129
|
-
return self.client.assets.update(items, mode="replace")
|
|
129
|
+
def update(self, items: collections.abc.Sequence[AssetRequest]) -> list[AssetResponse]:
|
|
130
|
+
return self.client.tool.assets.update(items, mode="replace")
|
|
130
131
|
|
|
131
|
-
def delete(self, ids: SequenceNotStr[
|
|
132
|
+
def delete(self, ids: SequenceNotStr[InternalOrExternalId]) -> int:
|
|
132
133
|
if not ids:
|
|
133
134
|
return 0
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
self.client.assets.delete(id=internal_ids, external_id=external_ids)
|
|
137
|
-
except CogniteNotFoundError as e:
|
|
138
|
-
# Do a CogniteNotFoundError instead of passing 'ignore_unknown_ids=True' to the delete method
|
|
139
|
-
# to obtain an accurate list of deleted assets.
|
|
140
|
-
non_existing = set(e.failed or [])
|
|
141
|
-
if existing := [id_ for id_ in ids if id_ not in non_existing]:
|
|
142
|
-
internal_ids, external_ids = self._split_ids(existing)
|
|
143
|
-
self.client.assets.delete(id=internal_ids, external_id=external_ids)
|
|
144
|
-
return len(existing)
|
|
145
|
-
else:
|
|
146
|
-
return len(ids)
|
|
135
|
+
self.client.tool.assets.delete(list(ids), ignore_unknown_ids=True)
|
|
136
|
+
return len(ids)
|
|
147
137
|
|
|
148
138
|
def _iterate(
|
|
149
139
|
self,
|
|
150
140
|
data_set_external_id: str | None = None,
|
|
151
141
|
space: str | None = None,
|
|
152
142
|
parent_ids: list[Hashable] | None = None,
|
|
153
|
-
) -> Iterable[
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
# This is used in the purge command to delete the children before the parent.
|
|
158
|
-
aggregated_properties=["depth", "child_count", "path"],
|
|
159
|
-
)
|
|
160
|
-
)
|
|
143
|
+
) -> Iterable[AssetResponse]:
|
|
144
|
+
filter_ = ClassicFilter.from_asset_subtree_and_data_sets(data_set_id=data_set_external_id)
|
|
145
|
+
for assets in self.client.tool.assets.iterate(aggregated_properties=True, filter=filter_, limit=None):
|
|
146
|
+
yield from assets
|
|
161
147
|
|
|
162
148
|
@classmethod
|
|
163
149
|
def get_dependent_items(cls, item: dict) -> Iterable[tuple[type[ResourceCRUD], Hashable]]:
|
|
@@ -202,7 +188,7 @@ class AssetCRUD(ResourceCRUD[str, AssetWrite, Asset]):
|
|
|
202
188
|
|
|
203
189
|
return resources
|
|
204
190
|
|
|
205
|
-
def load_resource(self, resource: dict[str, Any], is_dry_run: bool = False) ->
|
|
191
|
+
def load_resource(self, resource: dict[str, Any], is_dry_run: bool = False) -> AssetRequest:
|
|
206
192
|
# Unpack metadata keys from table formats (e.g. csv, parquet)
|
|
207
193
|
metadata: dict = resource.get("metadata", {})
|
|
208
194
|
for key, value in list(resource.items()):
|
|
@@ -219,10 +205,10 @@ class AssetCRUD(ResourceCRUD[str, AssetWrite, Asset]):
|
|
|
219
205
|
|
|
220
206
|
if ds_external_id := resource.pop("dataSetExternalId", None):
|
|
221
207
|
resource["dataSetId"] = self.client.lookup.data_sets.id(ds_external_id, is_dry_run)
|
|
222
|
-
return
|
|
208
|
+
return AssetRequest.model_validate(resource)
|
|
223
209
|
|
|
224
|
-
def dump_resource(self, resource:
|
|
225
|
-
dumped = resource.
|
|
210
|
+
def dump_resource(self, resource: AssetResponse, local: dict[str, Any] | None = None) -> dict[str, Any]:
|
|
211
|
+
dumped = resource.as_request_resource().dump()
|
|
226
212
|
local = local or {}
|
|
227
213
|
if data_set_id := dumped.pop("dataSetId", None):
|
|
228
214
|
dumped["dataSetExternalId"] = self.client.lookup.data_sets.external_id(data_set_id)
|
|
@@ -234,7 +220,7 @@ class AssetCRUD(ResourceCRUD[str, AssetWrite, Asset]):
|
|
|
234
220
|
# This is only included when the asset is downloaded/migrated with aggregated properties
|
|
235
221
|
aggregates = (
|
|
236
222
|
resource.aggregates.dump()
|
|
237
|
-
if isinstance(resource.aggregates,
|
|
223
|
+
if isinstance(resource.aggregates, AssetAggregateItem)
|
|
238
224
|
else resource.aggregates
|
|
239
225
|
)
|
|
240
226
|
if "path" in aggregates:
|
|
@@ -372,7 +358,7 @@ class SequenceCRUD(ResourceCRUD[str, SequenceWrite, CDFSequence]):
|
|
|
372
358
|
if "dataSetExternalId" in item:
|
|
373
359
|
yield DataSetsCRUD, item["dataSetExternalId"]
|
|
374
360
|
if "assetExternalId" in item:
|
|
375
|
-
yield AssetCRUD, item["assetExternalId"]
|
|
361
|
+
yield AssetCRUD, ExternalId(external_id=item["assetExternalId"])
|
|
376
362
|
|
|
377
363
|
|
|
378
364
|
@final
|
|
@@ -500,10 +486,10 @@ class SequenceRowCRUD(ResourceCRUD[str, ToolkitSequenceRowsWrite, ToolkitSequenc
|
|
|
500
486
|
|
|
501
487
|
|
|
502
488
|
@final
|
|
503
|
-
class EventCRUD(ResourceCRUD[
|
|
489
|
+
class EventCRUD(ResourceCRUD[ExternalId, EventRequest, EventResponse]):
|
|
504
490
|
folder_name = "classic"
|
|
505
|
-
resource_cls =
|
|
506
|
-
resource_write_cls =
|
|
491
|
+
resource_cls = EventResponse
|
|
492
|
+
resource_write_cls = EventRequest
|
|
507
493
|
yaml_cls = EventYAML
|
|
508
494
|
kind = "Event"
|
|
509
495
|
dependencies = frozenset({DataSetsCRUD, AssetCRUD})
|
|
@@ -514,15 +500,15 @@ class EventCRUD(ResourceCRUD[str, EventWrite, Event]):
|
|
|
514
500
|
return "events"
|
|
515
501
|
|
|
516
502
|
@classmethod
|
|
517
|
-
def get_id(cls, item:
|
|
503
|
+
def get_id(cls, item: EventRequest | EventResponse | dict) -> ExternalId:
|
|
518
504
|
if isinstance(item, dict):
|
|
519
|
-
return item["externalId"]
|
|
505
|
+
return ExternalId(external_id=item["externalId"])
|
|
520
506
|
if not item.external_id:
|
|
521
507
|
raise KeyError("Event must have external_id")
|
|
522
|
-
return item.external_id
|
|
508
|
+
return ExternalId(external_id=item.external_id)
|
|
523
509
|
|
|
524
510
|
@classmethod
|
|
525
|
-
def get_internal_id(cls, item:
|
|
511
|
+
def get_internal_id(cls, item: EventResponse | dict) -> int:
|
|
526
512
|
if isinstance(item, dict):
|
|
527
513
|
return item["id"]
|
|
528
514
|
if not item.id:
|
|
@@ -530,12 +516,12 @@ class EventCRUD(ResourceCRUD[str, EventWrite, Event]):
|
|
|
530
516
|
return item.id
|
|
531
517
|
|
|
532
518
|
@classmethod
|
|
533
|
-
def dump_id(cls, id:
|
|
534
|
-
return
|
|
519
|
+
def dump_id(cls, id: ExternalId) -> dict[str, Any]:
|
|
520
|
+
return id.dump()
|
|
535
521
|
|
|
536
522
|
@classmethod
|
|
537
523
|
def get_required_capability(
|
|
538
|
-
cls, items: collections.abc.Sequence[
|
|
524
|
+
cls, items: collections.abc.Sequence[EventRequest] | None, read_only: bool
|
|
539
525
|
) -> Capability | list[Capability]:
|
|
540
526
|
if not items and items is not None:
|
|
541
527
|
return []
|
|
@@ -555,35 +541,30 @@ class EventCRUD(ResourceCRUD[str, EventWrite, Event]):
|
|
|
555
541
|
|
|
556
542
|
return capabilities.EventsAcl(actions, scope)
|
|
557
543
|
|
|
558
|
-
def create(self, items: Sequence[
|
|
559
|
-
return self.client.events.create(items)
|
|
544
|
+
def create(self, items: collections.abc.Sequence[EventRequest]) -> list[EventResponse]:
|
|
545
|
+
return self.client.tool.events.create(items)
|
|
560
546
|
|
|
561
|
-
def retrieve(self, ids: SequenceNotStr[
|
|
562
|
-
return self.client.events.
|
|
547
|
+
def retrieve(self, ids: SequenceNotStr[ExternalId]) -> list[EventResponse]:
|
|
548
|
+
return self.client.tool.events.retrieve(list(ids), ignore_unknown_ids=True)
|
|
563
549
|
|
|
564
|
-
def update(self, items: Sequence[
|
|
565
|
-
return self.client.events.update(items, mode="replace")
|
|
550
|
+
def update(self, items: collections.abc.Sequence[EventRequest]) -> list[EventResponse]:
|
|
551
|
+
return self.client.tool.events.update(items, mode="replace")
|
|
566
552
|
|
|
567
|
-
def delete(self, ids: SequenceNotStr[
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
non_existing = set(e.failed or [])
|
|
573
|
-
if existing := [id_ for id_ in ids if id_ not in non_existing]:
|
|
574
|
-
internal_ids, external_ids = self._split_ids(existing)
|
|
575
|
-
self.client.events.delete(id=internal_ids, external_id=external_ids)
|
|
576
|
-
return len(existing)
|
|
577
|
-
else:
|
|
578
|
-
return len(ids)
|
|
553
|
+
def delete(self, ids: SequenceNotStr[InternalOrExternalId]) -> int:
|
|
554
|
+
if not ids:
|
|
555
|
+
return 0
|
|
556
|
+
self.client.tool.events.delete(list(ids), ignore_unknown_ids=True)
|
|
557
|
+
return len(ids)
|
|
579
558
|
|
|
580
559
|
def _iterate(
|
|
581
560
|
self,
|
|
582
561
|
data_set_external_id: str | None = None,
|
|
583
562
|
space: str | None = None,
|
|
584
563
|
parent_ids: list[Hashable] | None = None,
|
|
585
|
-
) -> Iterable[
|
|
586
|
-
|
|
564
|
+
) -> Iterable[EventResponse]:
|
|
565
|
+
filter_ = ClassicFilter.from_asset_subtree_and_data_sets(data_set_id=data_set_external_id)
|
|
566
|
+
for events in self.client.tool.events.iterate(filter=filter_, limit=None):
|
|
567
|
+
yield from events
|
|
587
568
|
|
|
588
569
|
@classmethod
|
|
589
570
|
def get_dependent_items(cls, item: dict) -> Iterable[tuple[type[ResourceCRUD], Hashable]]:
|
|
@@ -596,17 +577,17 @@ class EventCRUD(ResourceCRUD[str, EventWrite, Event]):
|
|
|
596
577
|
yield DataSetsCRUD, item["dataSetExternalId"]
|
|
597
578
|
for asset_id in item.get("assetExternalIds", []):
|
|
598
579
|
if isinstance(asset_id, str):
|
|
599
|
-
yield AssetCRUD, asset_id
|
|
580
|
+
yield AssetCRUD, ExternalId(external_id=asset_id)
|
|
600
581
|
|
|
601
|
-
def load_resource(self, resource: dict[str, Any], is_dry_run: bool = False) ->
|
|
602
|
-
if ds_external_id := resource.
|
|
582
|
+
def load_resource(self, resource: dict[str, Any], is_dry_run: bool = False) -> EventRequest:
|
|
583
|
+
if ds_external_id := resource.pop("dataSetExternalId", None):
|
|
603
584
|
resource["dataSetId"] = self.client.lookup.data_sets.id(ds_external_id, is_dry_run)
|
|
604
585
|
if asset_external_ids := resource.pop("assetExternalIds", []):
|
|
605
586
|
resource["assetIds"] = self.client.lookup.assets.id(asset_external_ids, is_dry_run)
|
|
606
|
-
return
|
|
587
|
+
return EventRequest.model_validate(resource)
|
|
607
588
|
|
|
608
|
-
def dump_resource(self, resource:
|
|
609
|
-
dumped = resource.
|
|
589
|
+
def dump_resource(self, resource: EventResponse, local: dict[str, Any] | None = None) -> dict[str, Any]:
|
|
590
|
+
dumped = resource.as_request_resource().dump()
|
|
610
591
|
local = local or {}
|
|
611
592
|
if data_set_id := dumped.pop("dataSetId", None):
|
|
612
593
|
dumped["dataSetExternalId"] = self.client.lookup.data_sets.external_id(data_set_id)
|
|
@@ -7,7 +7,7 @@ from cognite.client.utils.useful_types import SequenceNotStr
|
|
|
7
7
|
from rich.console import Console
|
|
8
8
|
|
|
9
9
|
from cognite_toolkit._cdf_tk.client import ToolkitClient
|
|
10
|
-
from cognite_toolkit._cdf_tk.client.
|
|
10
|
+
from cognite_toolkit._cdf_tk.client.resource_classes.legacy.search_config import (
|
|
11
11
|
SearchConfig,
|
|
12
12
|
SearchConfigList,
|
|
13
13
|
SearchConfigWrite,
|
|
@@ -73,7 +73,7 @@ from rich.panel import Panel
|
|
|
73
73
|
|
|
74
74
|
from cognite_toolkit._cdf_tk import constants
|
|
75
75
|
from cognite_toolkit._cdf_tk.client import ToolkitClient
|
|
76
|
-
from cognite_toolkit._cdf_tk.client.
|
|
76
|
+
from cognite_toolkit._cdf_tk.client.resource_classes.legacy.graphql_data_models import (
|
|
77
77
|
GraphQLDataModel,
|
|
78
78
|
GraphQLDataModelList,
|
|
79
79
|
GraphQLDataModelWrite,
|
|
@@ -35,7 +35,7 @@ from cognite.client.data_classes.extractionpipelines import (
|
|
|
35
35
|
from cognite.client.exceptions import CogniteAPIError, CogniteDuplicatedError, CogniteNotFoundError
|
|
36
36
|
from cognite.client.utils.useful_types import SequenceNotStr
|
|
37
37
|
|
|
38
|
-
from cognite_toolkit._cdf_tk.client.
|
|
38
|
+
from cognite_toolkit._cdf_tk.client.resource_classes.legacy.raw import RawDatabase, RawTable
|
|
39
39
|
from cognite_toolkit._cdf_tk.constants import BUILD_FOLDER_ENCODING
|
|
40
40
|
from cognite_toolkit._cdf_tk.cruds._base_cruds import ResourceCRUD
|
|
41
41
|
from cognite_toolkit._cdf_tk.exceptions import (
|