cognite-toolkit 0.5.97__py3-none-any.whl → 0.7.34__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 +24 -26
- cognite_toolkit/_cdf_tk/apps/__init__.py +10 -2
- cognite_toolkit/_cdf_tk/apps/_core_app.py +21 -7
- cognite_toolkit/_cdf_tk/apps/_data_app.py +24 -0
- cognite_toolkit/_cdf_tk/apps/_dev_app.py +86 -0
- cognite_toolkit/_cdf_tk/apps/_download_app.py +1146 -0
- cognite_toolkit/_cdf_tk/apps/_dump_app.py +302 -92
- cognite_toolkit/_cdf_tk/apps/_import_app.py +41 -0
- cognite_toolkit/_cdf_tk/apps/_landing_app.py +18 -4
- cognite_toolkit/_cdf_tk/apps/_migrate_app.py +890 -34
- cognite_toolkit/_cdf_tk/apps/_modules_app.py +24 -0
- cognite_toolkit/_cdf_tk/apps/_profile_app.py +13 -3
- cognite_toolkit/_cdf_tk/apps/_purge.py +188 -27
- cognite_toolkit/_cdf_tk/apps/_run.py +11 -0
- cognite_toolkit/_cdf_tk/apps/_upload_app.py +107 -0
- cognite_toolkit/_cdf_tk/builders/__init__.py +2 -2
- cognite_toolkit/_cdf_tk/builders/_base.py +35 -49
- cognite_toolkit/_cdf_tk/builders/_datamodels.py +4 -4
- cognite_toolkit/_cdf_tk/builders/_file.py +5 -5
- cognite_toolkit/_cdf_tk/builders/_function.py +7 -7
- cognite_toolkit/_cdf_tk/builders/_location.py +3 -3
- cognite_toolkit/_cdf_tk/builders/_raw.py +9 -9
- cognite_toolkit/_cdf_tk/builders/_streamlit.py +4 -4
- cognite_toolkit/_cdf_tk/builders/_transformation.py +4 -4
- cognite_toolkit/_cdf_tk/cdf_toml.py +33 -10
- cognite_toolkit/_cdf_tk/client/__init__.py +2 -1
- cognite_toolkit/_cdf_tk/client/_toolkit_client.py +36 -58
- cognite_toolkit/_cdf_tk/client/api/canvas.py +2 -1
- cognite_toolkit/_cdf_tk/client/api/charts.py +125 -0
- cognite_toolkit/_cdf_tk/client/api/extended_data_modeling.py +0 -13
- cognite_toolkit/_cdf_tk/client/api/extended_files.py +68 -2
- cognite_toolkit/_cdf_tk/client/api/extended_functions.py +80 -0
- cognite_toolkit/_cdf_tk/client/api/extended_timeseries.py +1 -1
- cognite_toolkit/_cdf_tk/client/api/infield.py +254 -0
- cognite_toolkit/_cdf_tk/client/api/location_filters.py +19 -1
- cognite_toolkit/_cdf_tk/client/api/lookup.py +176 -71
- cognite_toolkit/_cdf_tk/client/api/migration.py +375 -19
- cognite_toolkit/_cdf_tk/client/api/project.py +24 -0
- cognite_toolkit/_cdf_tk/client/api/streams.py +89 -0
- cognite_toolkit/_cdf_tk/client/api/three_d.py +131 -0
- cognite_toolkit/_cdf_tk/client/config.py +120 -0
- cognite_toolkit/_cdf_tk/client/data_classes/api_classes.py +17 -0
- cognite_toolkit/_cdf_tk/client/data_classes/base.py +71 -0
- cognite_toolkit/_cdf_tk/client/data_classes/canvas.py +86 -8
- cognite_toolkit/_cdf_tk/client/data_classes/charts.py +114 -0
- cognite_toolkit/_cdf_tk/client/data_classes/charts_data.py +184 -0
- cognite_toolkit/_cdf_tk/client/data_classes/infield.py +116 -0
- cognite_toolkit/_cdf_tk/client/data_classes/instance_api.py +162 -0
- cognite_toolkit/_cdf_tk/client/data_classes/instances.py +24 -2
- cognite_toolkit/_cdf_tk/client/data_classes/migration.py +205 -74
- cognite_toolkit/_cdf_tk/client/data_classes/project.py +41 -0
- cognite_toolkit/_cdf_tk/client/data_classes/search_config.py +50 -35
- cognite_toolkit/_cdf_tk/client/data_classes/streamlit_.py +11 -11
- cognite_toolkit/_cdf_tk/client/data_classes/streams.py +90 -0
- cognite_toolkit/_cdf_tk/client/data_classes/three_d.py +53 -0
- cognite_toolkit/_cdf_tk/client/testing.py +60 -4
- cognite_toolkit/_cdf_tk/commands/__init__.py +11 -14
- cognite_toolkit/_cdf_tk/commands/_base.py +8 -1
- cognite_toolkit/_cdf_tk/commands/_changes.py +3 -42
- cognite_toolkit/_cdf_tk/commands/_download.py +154 -0
- cognite_toolkit/_cdf_tk/commands/_migrate/__init__.py +2 -8
- cognite_toolkit/_cdf_tk/commands/_migrate/command.py +309 -0
- cognite_toolkit/_cdf_tk/commands/_migrate/conversion.py +373 -0
- cognite_toolkit/_cdf_tk/commands/_migrate/creators.py +232 -0
- cognite_toolkit/_cdf_tk/commands/_migrate/data_classes.py +244 -132
- cognite_toolkit/_cdf_tk/commands/_migrate/data_mapper.py +471 -0
- cognite_toolkit/_cdf_tk/commands/_migrate/data_model.py +108 -29
- cognite_toolkit/_cdf_tk/commands/_migrate/default_mappings.py +137 -0
- cognite_toolkit/_cdf_tk/commands/_migrate/issues.py +212 -0
- cognite_toolkit/_cdf_tk/commands/_migrate/migration_io.py +456 -0
- cognite_toolkit/_cdf_tk/commands/_migrate/prepare.py +27 -18
- cognite_toolkit/_cdf_tk/commands/_migrate/selectors.py +71 -0
- cognite_toolkit/_cdf_tk/commands/_profile.py +139 -42
- cognite_toolkit/_cdf_tk/commands/_purge.py +652 -690
- cognite_toolkit/_cdf_tk/commands/_questionary_style.py +16 -0
- cognite_toolkit/_cdf_tk/commands/_upload.py +289 -0
- cognite_toolkit/_cdf_tk/commands/_utils.py +1 -24
- cognite_toolkit/_cdf_tk/commands/about.py +221 -0
- cognite_toolkit/_cdf_tk/commands/auth.py +45 -25
- cognite_toolkit/_cdf_tk/commands/build_cmd.py +69 -109
- cognite_toolkit/_cdf_tk/commands/build_v2/build_cmd.py +241 -0
- cognite_toolkit/_cdf_tk/commands/build_v2/build_input.py +85 -0
- cognite_toolkit/_cdf_tk/commands/build_v2/build_issues.py +27 -0
- cognite_toolkit/_cdf_tk/commands/clean.py +84 -31
- cognite_toolkit/_cdf_tk/commands/deploy.py +147 -60
- cognite_toolkit/_cdf_tk/commands/dump_resource.py +396 -88
- cognite_toolkit/_cdf_tk/commands/init.py +219 -18
- cognite_toolkit/_cdf_tk/commands/modules.py +158 -82
- cognite_toolkit/_cdf_tk/commands/pull.py +33 -40
- cognite_toolkit/_cdf_tk/commands/repo.py +1 -1
- cognite_toolkit/_cdf_tk/commands/resources.py +179 -0
- cognite_toolkit/_cdf_tk/commands/run.py +11 -11
- cognite_toolkit/_cdf_tk/constants.py +38 -7
- cognite_toolkit/_cdf_tk/cruds/__init__.py +224 -0
- cognite_toolkit/_cdf_tk/{loaders/_base_loaders.py → cruds/_base_cruds.py} +64 -130
- cognite_toolkit/_cdf_tk/{loaders/_data_loaders.py → cruds/_data_cruds.py} +26 -33
- cognite_toolkit/_cdf_tk/cruds/_resource_cruds/__init__.py +98 -0
- cognite_toolkit/_cdf_tk/{loaders/_resource_loaders/agent_loaders.py → cruds/_resource_cruds/agent.py} +33 -29
- cognite_toolkit/_cdf_tk/{loaders/_resource_loaders/auth_loaders.py → cruds/_resource_cruds/auth.py} +30 -68
- cognite_toolkit/_cdf_tk/{loaders/_resource_loaders/classic_loaders.py → cruds/_resource_cruds/classic.py} +84 -121
- cognite_toolkit/_cdf_tk/cruds/_resource_cruds/configuration.py +149 -0
- cognite_toolkit/_cdf_tk/{loaders/_resource_loaders/data_organization_loaders.py → cruds/_resource_cruds/data_organization.py} +13 -49
- cognite_toolkit/_cdf_tk/{loaders/_resource_loaders/datamodel_loaders.py → cruds/_resource_cruds/datamodel.py} +264 -367
- cognite_toolkit/_cdf_tk/{loaders/_resource_loaders/extraction_pipeline_loaders.py → cruds/_resource_cruds/extraction_pipeline.py} +54 -96
- cognite_toolkit/_cdf_tk/cruds/_resource_cruds/fieldops.py +438 -0
- cognite_toolkit/_cdf_tk/{loaders/_resource_loaders/file_loader.py → cruds/_resource_cruds/file.py} +26 -83
- cognite_toolkit/_cdf_tk/{loaders/_resource_loaders/function_loaders.py → cruds/_resource_cruds/function.py} +128 -91
- cognite_toolkit/_cdf_tk/{loaders/_resource_loaders/group_scoped_loader.py → cruds/_resource_cruds/group_scoped.py} +18 -18
- cognite_toolkit/_cdf_tk/{loaders/_resource_loaders → cruds/_resource_cruds}/hosted_extractors.py +32 -100
- cognite_toolkit/_cdf_tk/{loaders/_resource_loaders/industrial_tool_loaders.py → cruds/_resource_cruds/industrial_tool.py} +13 -25
- cognite_toolkit/_cdf_tk/{loaders/_resource_loaders/location_loaders.py → cruds/_resource_cruds/location.py} +25 -156
- cognite_toolkit/_cdf_tk/cruds/_resource_cruds/migration.py +111 -0
- cognite_toolkit/_cdf_tk/{loaders/_resource_loaders/raw_loaders.py → cruds/_resource_cruds/raw.py} +17 -25
- cognite_toolkit/_cdf_tk/{loaders/_resource_loaders/relationship_loader.py → cruds/_resource_cruds/relationship.py} +21 -43
- cognite_toolkit/_cdf_tk/{loaders/_resource_loaders/robotics_loaders.py → cruds/_resource_cruds/robotics.py} +29 -48
- cognite_toolkit/_cdf_tk/cruds/_resource_cruds/streams.py +94 -0
- cognite_toolkit/_cdf_tk/{loaders/_resource_loaders/three_d_model_loaders.py → cruds/_resource_cruds/three_d_model.py} +9 -31
- cognite_toolkit/_cdf_tk/{loaders/_resource_loaders/timeseries_loaders.py → cruds/_resource_cruds/timeseries.py} +200 -96
- cognite_toolkit/_cdf_tk/{loaders/_resource_loaders/transformation_loaders.py → cruds/_resource_cruds/transformation.py} +150 -141
- cognite_toolkit/_cdf_tk/{loaders/_resource_loaders/workflow_loaders.py → cruds/_resource_cruds/workflow.py} +73 -194
- cognite_toolkit/_cdf_tk/{loaders → cruds}/_worker.py +33 -41
- cognite_toolkit/_cdf_tk/data_classes/__init__.py +2 -0
- cognite_toolkit/_cdf_tk/data_classes/_build_files.py +3 -3
- cognite_toolkit/_cdf_tk/data_classes/_build_variables.py +120 -14
- cognite_toolkit/_cdf_tk/data_classes/_built_modules.py +13 -3
- cognite_toolkit/_cdf_tk/data_classes/_built_resources.py +8 -8
- cognite_toolkit/_cdf_tk/data_classes/_config_yaml.py +14 -9
- cognite_toolkit/_cdf_tk/data_classes/_module_directories.py +22 -0
- cognite_toolkit/_cdf_tk/data_classes/_module_resources.py +2 -2
- cognite_toolkit/_cdf_tk/data_classes/_module_toml.py +7 -0
- cognite_toolkit/_cdf_tk/data_classes/_packages.py +24 -7
- cognite_toolkit/_cdf_tk/data_classes/_tracking_info.py +43 -0
- cognite_toolkit/_cdf_tk/exceptions.py +10 -1
- cognite_toolkit/_cdf_tk/feature_flags.py +59 -52
- cognite_toolkit/_cdf_tk/hints.py +5 -3
- cognite_toolkit/_cdf_tk/plugins.py +2 -1
- cognite_toolkit/_cdf_tk/protocols.py +97 -0
- cognite_toolkit/_cdf_tk/resource_classes/__init__.py +61 -0
- cognite_toolkit/_cdf_tk/resource_classes/agent.py +58 -0
- cognite_toolkit/_cdf_tk/resource_classes/agent_tools.py +101 -0
- cognite_toolkit/_cdf_tk/resource_classes/authentication.py +15 -0
- cognite_toolkit/_cdf_tk/resource_classes/capabilities.py +12 -0
- cognite_toolkit/_cdf_tk/resource_classes/cognitefile.py +51 -0
- cognite_toolkit/_cdf_tk/resource_classes/container_field_definitions.py +2 -2
- cognite_toolkit/_cdf_tk/resource_classes/containers.py +2 -2
- cognite_toolkit/_cdf_tk/resource_classes/data_model.py +51 -0
- cognite_toolkit/_cdf_tk/resource_classes/datapoint_subscription.py +77 -0
- cognite_toolkit/_cdf_tk/resource_classes/extraction_pipeline.py +54 -0
- cognite_toolkit/_cdf_tk/resource_classes/extraction_pipeline_config.py +15 -0
- cognite_toolkit/_cdf_tk/resource_classes/function_schedule.py +1 -5
- cognite_toolkit/_cdf_tk/resource_classes/functions.py +12 -1
- cognite_toolkit/_cdf_tk/resource_classes/graphql_model.py +50 -0
- cognite_toolkit/_cdf_tk/resource_classes/hosted_extractor_destination.py +19 -0
- cognite_toolkit/_cdf_tk/resource_classes/hosted_extractor_job.py +255 -0
- cognite_toolkit/_cdf_tk/resource_classes/hosted_extractor_mapping.py +117 -0
- cognite_toolkit/_cdf_tk/resource_classes/hosted_extractor_source.py +390 -0
- cognite_toolkit/_cdf_tk/resource_classes/infield_cdm_location_config.py +109 -0
- cognite_toolkit/_cdf_tk/resource_classes/infield_location_config.py +94 -0
- cognite_toolkit/_cdf_tk/resource_classes/infield_v1.py +100 -0
- cognite_toolkit/_cdf_tk/resource_classes/instance.py +93 -0
- cognite_toolkit/_cdf_tk/resource_classes/migration.py +28 -0
- cognite_toolkit/_cdf_tk/resource_classes/raw_database_table.py +1 -1
- cognite_toolkit/_cdf_tk/resource_classes/relationship.py +50 -0
- cognite_toolkit/_cdf_tk/resource_classes/robotics/__init__.py +13 -0
- cognite_toolkit/_cdf_tk/resource_classes/robotics/capability.py +19 -0
- cognite_toolkit/_cdf_tk/resource_classes/robotics/data_postprocessing.py +15 -0
- cognite_toolkit/_cdf_tk/resource_classes/robotics/frame.py +25 -0
- cognite_toolkit/_cdf_tk/resource_classes/robotics/location.py +12 -0
- cognite_toolkit/_cdf_tk/resource_classes/robotics/map.py +16 -0
- cognite_toolkit/_cdf_tk/resource_classes/search_config.py +1 -1
- cognite_toolkit/_cdf_tk/resource_classes/sequence.py +107 -0
- cognite_toolkit/_cdf_tk/resource_classes/streamlit_.py +26 -0
- cognite_toolkit/_cdf_tk/resource_classes/streams.py +29 -0
- cognite_toolkit/_cdf_tk/resource_classes/transformation_notification.py +8 -0
- cognite_toolkit/_cdf_tk/resource_classes/transformations.py +2 -13
- cognite_toolkit/_cdf_tk/resource_classes/view_field_definitions.py +7 -8
- cognite_toolkit/_cdf_tk/resource_classes/views.py +4 -4
- cognite_toolkit/_cdf_tk/resource_classes/workflow_trigger.py +115 -0
- cognite_toolkit/_cdf_tk/resource_classes/workflow_version.py +233 -0
- cognite_toolkit/_cdf_tk/storageio/__init__.py +69 -0
- cognite_toolkit/_cdf_tk/storageio/_annotations.py +105 -0
- cognite_toolkit/_cdf_tk/storageio/_applications.py +408 -0
- cognite_toolkit/_cdf_tk/storageio/_asset_centric.py +693 -0
- cognite_toolkit/_cdf_tk/storageio/_base.py +328 -0
- cognite_toolkit/_cdf_tk/storageio/_data_classes.py +91 -0
- cognite_toolkit/_cdf_tk/storageio/_datapoints.py +448 -0
- cognite_toolkit/_cdf_tk/storageio/_file_content.py +436 -0
- cognite_toolkit/_cdf_tk/storageio/_instances.py +225 -0
- cognite_toolkit/_cdf_tk/storageio/_raw.py +124 -0
- cognite_toolkit/_cdf_tk/storageio/selectors/__init__.py +133 -0
- cognite_toolkit/_cdf_tk/storageio/selectors/_asset_centric.py +60 -0
- cognite_toolkit/_cdf_tk/storageio/selectors/_base.py +80 -0
- cognite_toolkit/_cdf_tk/storageio/selectors/_canvas.py +22 -0
- cognite_toolkit/_cdf_tk/storageio/selectors/_charts.py +45 -0
- cognite_toolkit/_cdf_tk/storageio/selectors/_datapoints.py +89 -0
- cognite_toolkit/_cdf_tk/storageio/selectors/_file_content.py +164 -0
- cognite_toolkit/_cdf_tk/storageio/selectors/_instances.py +162 -0
- cognite_toolkit/_cdf_tk/storageio/selectors/_raw.py +24 -0
- cognite_toolkit/_cdf_tk/storageio/selectors/_three_d.py +34 -0
- cognite_toolkit/_cdf_tk/tk_warnings/fileread.py +5 -3
- cognite_toolkit/_cdf_tk/tk_warnings/other.py +9 -1
- cognite_toolkit/_cdf_tk/tracker.py +21 -22
- cognite_toolkit/_cdf_tk/utils/__init__.py +2 -2
- cognite_toolkit/_cdf_tk/utils/_auxiliary.py +11 -2
- cognite_toolkit/_cdf_tk/utils/aggregators.py +121 -16
- cognite_toolkit/_cdf_tk/utils/auxiliary.py +23 -0
- cognite_toolkit/_cdf_tk/utils/cdf.py +10 -6
- cognite_toolkit/_cdf_tk/utils/cli_args.py +34 -0
- cognite_toolkit/_cdf_tk/utils/collection.py +42 -1
- cognite_toolkit/_cdf_tk/utils/dtype_conversion.py +307 -15
- cognite_toolkit/_cdf_tk/utils/file.py +55 -2
- cognite_toolkit/_cdf_tk/utils/fileio/__init__.py +61 -0
- cognite_toolkit/_cdf_tk/utils/fileio/_base.py +32 -0
- cognite_toolkit/_cdf_tk/utils/fileio/_compression.py +61 -0
- cognite_toolkit/_cdf_tk/utils/fileio/_readers.py +422 -0
- cognite_toolkit/_cdf_tk/utils/fileio/_writers.py +429 -0
- cognite_toolkit/_cdf_tk/utils/graphql_parser.py +4 -0
- cognite_toolkit/_cdf_tk/utils/http_client/__init__.py +69 -0
- cognite_toolkit/_cdf_tk/utils/http_client/_client.py +536 -0
- cognite_toolkit/_cdf_tk/utils/http_client/_data_classes.py +412 -0
- cognite_toolkit/_cdf_tk/utils/http_client/_data_classes2.py +249 -0
- cognite_toolkit/_cdf_tk/utils/http_client/_exception.py +4 -0
- cognite_toolkit/_cdf_tk/utils/http_client/_tracker.py +34 -0
- cognite_toolkit/_cdf_tk/utils/interactive_select.py +452 -57
- cognite_toolkit/_cdf_tk/utils/modules.py +10 -14
- cognite_toolkit/_cdf_tk/utils/producer_worker.py +216 -58
- cognite_toolkit/_cdf_tk/utils/progress_tracker.py +87 -0
- cognite_toolkit/_cdf_tk/utils/sentry_utils.py +1 -1
- cognite_toolkit/_cdf_tk/utils/sql_parser.py +2 -3
- cognite_toolkit/_cdf_tk/utils/text.py +55 -0
- cognite_toolkit/_cdf_tk/utils/thread_safe_dict.py +99 -0
- cognite_toolkit/_cdf_tk/utils/useful_types.py +27 -1
- cognite_toolkit/_cdf_tk/utils/validate_access.py +350 -36
- cognite_toolkit/_cdf_tk/validation.py +143 -76
- cognite_toolkit/_repo_files/.gitignore +2 -0
- cognite_toolkit/_repo_files/AzureDevOps/.devops/deploy-pipeline.yml +1 -1
- cognite_toolkit/_repo_files/AzureDevOps/.devops/dry-run-pipeline.yml +1 -1
- 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 +18 -0
- cognite_toolkit/_version.py +1 -1
- cognite_toolkit/config.dev.yaml +9 -3
- cognite_toolkit/demo/_base.py +3 -3
- {cognite_toolkit-0.5.97.dist-info → cognite_toolkit-0.7.34.dist-info}/METADATA +24 -23
- cognite_toolkit-0.7.34.dist-info/RECORD +320 -0
- cognite_toolkit-0.7.34.dist-info/WHEEL +4 -0
- {cognite_toolkit-0.5.97.dist-info → cognite_toolkit-0.7.34.dist-info}/entry_points.txt +1 -0
- cognite_toolkit/_builtin_modules/README.md +0 -7
- cognite_toolkit/_builtin_modules/bootcamp/README.md +0 -5
- cognite_toolkit/_builtin_modules/bootcamp/default.config.yaml +0 -3
- cognite_toolkit/_builtin_modules/bootcamp/ice_cream_api/default.config.yaml +0 -9
- cognite_toolkit/_builtin_modules/bootcamp/ice_cream_api/functions/icapi_datapoints_extractor/handler.py +0 -168
- cognite_toolkit/_builtin_modules/bootcamp/ice_cream_api/functions/icapi_datapoints_extractor/ice_cream_factory_api.py +0 -61
- cognite_toolkit/_builtin_modules/bootcamp/ice_cream_api/functions/icapi_datapoints_extractor/requirements.txt +0 -3
- cognite_toolkit/_builtin_modules/bootcamp/ice_cream_api/module.toml +0 -3
- cognite_toolkit/_builtin_modules/bootcamp/module.toml +0 -3
- cognite_toolkit/_builtin_modules/bootcamp/use_cases/oee/default.config.yaml +0 -6
- cognite_toolkit/_builtin_modules/bootcamp/use_cases/oee/functions/oee_timeseries/handler.py +0 -229
- cognite_toolkit/_builtin_modules/bootcamp/use_cases/oee/functions/oee_timeseries/requirements.txt +0 -2
- cognite_toolkit/_builtin_modules/bootcamp/use_cases/oee/module.toml +0 -3
- cognite_toolkit/_builtin_modules/cdf.toml +0 -13
- cognite_toolkit/_builtin_modules/cdf_common/data_models/demo.Space.yaml +0 -3
- cognite_toolkit/_builtin_modules/cdf_common/data_sets/demo.DataSet.yaml +0 -3
- cognite_toolkit/_builtin_modules/cdf_common/default.config.yaml +0 -8
- cognite_toolkit/_builtin_modules/cdf_common/extraction_pipelines/ctx_files_direct_relation_write.ExtractionPipeline.yaml +0 -54
- cognite_toolkit/_builtin_modules/cdf_common/extraction_pipelines/ctx_files_direct_relation_write.config.yaml +0 -28
- cognite_toolkit/_builtin_modules/cdf_common/functions/contextualization_connection_writer/handler.py +0 -342
- cognite_toolkit/_builtin_modules/cdf_common/functions/contextualization_connection_writer/requirements.txt +0 -3
- cognite_toolkit/_builtin_modules/cdf_common/functions/write.Function.yaml +0 -7
- cognite_toolkit/_builtin_modules/cdf_common/module.toml +0 -3
- cognite_toolkit/_builtin_modules/cdf_common/raw/contextualization_state.DataBase.yaml +0 -1
- cognite_toolkit/_builtin_modules/cdf_common/raw/contextualization_state.Table.yaml +0 -2
- cognite_toolkit/_builtin_modules/cdf_common/raw/source.DataBase.yaml +0 -1
- cognite_toolkit/_builtin_modules/cdf_ingestion/auth/user.Group.yaml +0 -124
- cognite_toolkit/_builtin_modules/cdf_ingestion/auth/workflow.Group.yaml +0 -114
- cognite_toolkit/_builtin_modules/cdf_ingestion/default.config.yaml +0 -34
- cognite_toolkit/_builtin_modules/cdf_ingestion/module.toml +0 -9
- cognite_toolkit/_builtin_modules/cdf_ingestion/workflows/ingest.Workflow.yaml +0 -3
- cognite_toolkit/_builtin_modules/cdf_ingestion/workflows/trigger.WorkflowTrigger.yaml +0 -9
- cognite_toolkit/_builtin_modules/cdf_ingestion/workflows/v1.WorkflowVersion.yaml +0 -150
- cognite_toolkit/_builtin_modules/common/README.md +0 -5
- cognite_toolkit/_builtin_modules/common/cdf_apm_base/data_models/apm.datamodel.yaml +0 -18
- cognite_toolkit/_builtin_modules/common/cdf_apm_base/data_models/apm_config.datamodel.yaml +0 -10
- cognite_toolkit/_builtin_modules/common/cdf_apm_base/data_models/config.space.yaml +0 -3
- cognite_toolkit/_builtin_modules/common/cdf_apm_base/data_models/containers/APM_Activity.container.yaml +0 -108
- cognite_toolkit/_builtin_modules/common/cdf_apm_base/data_models/containers/APM_Notification.container.yaml +0 -85
- cognite_toolkit/_builtin_modules/common/cdf_apm_base/data_models/containers/APM_Operation.container.yaml +0 -83
- cognite_toolkit/_builtin_modules/common/cdf_apm_base/data_models/containers/ApmConfig.container.yaml +0 -39
- cognite_toolkit/_builtin_modules/common/cdf_apm_base/data_models/source.space.yaml +0 -3
- cognite_toolkit/_builtin_modules/common/cdf_apm_base/data_models/views/APM_Activity.view.yaml +0 -119
- cognite_toolkit/_builtin_modules/common/cdf_apm_base/data_models/views/APM_Notification.view.yaml +0 -84
- cognite_toolkit/_builtin_modules/common/cdf_apm_base/data_models/views/APM_Operation.view.yaml +0 -86
- cognite_toolkit/_builtin_modules/common/cdf_apm_base/data_models/views/ApmConfig.view.yaml +0 -48
- cognite_toolkit/_builtin_modules/common/cdf_apm_base/default.config.yaml +0 -1
- cognite_toolkit/_builtin_modules/common/cdf_apm_base/module.toml +0 -3
- cognite_toolkit/_builtin_modules/common/cdf_auth_readwrite_all/README.md +0 -23
- cognite_toolkit/_builtin_modules/common/cdf_auth_readwrite_all/auth/admin.readonly.group.yaml +0 -265
- cognite_toolkit/_builtin_modules/common/cdf_auth_readwrite_all/auth/admin.readwrite.group.yaml +0 -329
- cognite_toolkit/_builtin_modules/common/cdf_auth_readwrite_all/default.config.yaml +0 -2
- cognite_toolkit/_builtin_modules/common/cdf_auth_readwrite_all/module.toml +0 -2
- cognite_toolkit/_builtin_modules/contextualization/cdf_connection_sql/default.config.yaml +0 -10
- cognite_toolkit/_builtin_modules/contextualization/cdf_connection_sql/module.toml +0 -13
- cognite_toolkit/_builtin_modules/contextualization/cdf_connection_sql/transformations/activity_to_asset.Transformation.sql +0 -31
- cognite_toolkit/_builtin_modules/contextualization/cdf_connection_sql/transformations/activity_to_asset.Transformation.yaml +0 -13
- cognite_toolkit/_builtin_modules/contextualization/cdf_connection_sql/transformations/activity_to_equipment.Transformation.sql +0 -31
- cognite_toolkit/_builtin_modules/contextualization/cdf_connection_sql/transformations/activity_to_equipment.Transformation.yaml +0 -14
- cognite_toolkit/_builtin_modules/contextualization/cdf_connection_sql/transformations/activity_to_timeseries.Transformation.sql +0 -34
- cognite_toolkit/_builtin_modules/contextualization/cdf_connection_sql/transformations/activity_to_timeseries.Transformation.yaml +0 -13
- cognite_toolkit/_builtin_modules/contextualization/cdf_connection_sql/transformations/timeseries_to_asset.Transformation.sql +0 -32
- cognite_toolkit/_builtin_modules/contextualization/cdf_connection_sql/transformations/timeseries_to_asset.Transformation.yaml +0 -14
- cognite_toolkit/_builtin_modules/contextualization/cdf_connection_sql/transformations/timeseries_to_equipment.Transformation.sql +0 -32
- cognite_toolkit/_builtin_modules/contextualization/cdf_connection_sql/transformations/timeseries_to_equipment.Transformation.yaml +0 -13
- cognite_toolkit/_builtin_modules/contextualization/cdf_entity_matching/auth/workflow.Group.yaml +0 -83
- cognite_toolkit/_builtin_modules/contextualization/cdf_entity_matching/data_models/annotation_type.Node.yaml +0 -2
- cognite_toolkit/_builtin_modules/contextualization/cdf_entity_matching/data_models/sourceSystem.node.yaml +0 -13
- cognite_toolkit/_builtin_modules/contextualization/cdf_entity_matching/default.config.yaml +0 -16
- cognite_toolkit/_builtin_modules/contextualization/cdf_entity_matching/extraction_pipelines/ctx_files_entity_matcher.ExtractionPipeline.yaml +0 -48
- cognite_toolkit/_builtin_modules/contextualization/cdf_entity_matching/extraction_pipelines/ctx_files_entity_matcher.config.yaml +0 -35
- cognite_toolkit/_builtin_modules/contextualization/cdf_entity_matching/functions/contextualization_entity_matcher/handler.py +0 -476
- cognite_toolkit/_builtin_modules/contextualization/cdf_entity_matching/functions/contextualization_entity_matcher/requirements.txt +0 -3
- cognite_toolkit/_builtin_modules/contextualization/cdf_entity_matching/functions/functions.Function.yaml +0 -7
- cognite_toolkit/_builtin_modules/contextualization/cdf_entity_matching/module.toml +0 -23
- cognite_toolkit/_builtin_modules/contextualization/cdf_entity_matching/raw/state.Table.yaml +0 -2
- cognite_toolkit/_builtin_modules/contextualization/cdf_entity_matching/workflows/entity_matching.Workflow.yaml +0 -3
- cognite_toolkit/_builtin_modules/contextualization/cdf_entity_matching/workflows/trigger.WorkflowTrigger.yaml +0 -9
- cognite_toolkit/_builtin_modules/contextualization/cdf_entity_matching/workflows/v1.WorkflowVersion.yaml +0 -22
- cognite_toolkit/_builtin_modules/contextualization/cdf_p_and_id_parser/auth/function.Group.yaml +0 -89
- cognite_toolkit/_builtin_modules/contextualization/cdf_p_and_id_parser/data_models/sourceSystem.node.yaml +0 -13
- cognite_toolkit/_builtin_modules/contextualization/cdf_p_and_id_parser/default.config.yaml +0 -13
- cognite_toolkit/_builtin_modules/contextualization/cdf_p_and_id_parser/extraction_pipelines/ctx_files_pandid_annotater.ExtractionPipeline.yaml +0 -44
- cognite_toolkit/_builtin_modules/contextualization/cdf_p_and_id_parser/extraction_pipelines/ctx_files_pandid_annotater.config.yaml +0 -33
- cognite_toolkit/_builtin_modules/contextualization/cdf_p_and_id_parser/functions/contextualization_p_and_id_annotater/handler.py +0 -405
- cognite_toolkit/_builtin_modules/contextualization/cdf_p_and_id_parser/functions/contextualization_p_and_id_annotater/requirements.txt +0 -3
- cognite_toolkit/_builtin_modules/contextualization/cdf_p_and_id_parser/functions/functions.Function.yaml +0 -7
- cognite_toolkit/_builtin_modules/contextualization/cdf_p_and_id_parser/module.toml +0 -25
- cognite_toolkit/_builtin_modules/contextualization/cdf_p_and_id_parser/workflows/p_and_id_parser.Workflow.yaml +0 -3
- cognite_toolkit/_builtin_modules/contextualization/cdf_p_and_id_parser/workflows/trigger.WorkflowTrigger.yaml +0 -9
- cognite_toolkit/_builtin_modules/contextualization/cdf_p_and_id_parser/workflows/v1.WorkflowVersion.yaml +0 -22
- cognite_toolkit/_builtin_modules/custom/my_module/auth/.gitkeep +0 -0
- cognite_toolkit/_builtin_modules/custom/my_module/default.config.yaml +0 -1
- cognite_toolkit/_builtin_modules/custom/my_module/module.toml +0 -2
- cognite_toolkit/_builtin_modules/industrial_tools/cdf_location_filter_asset_centric/classic/root.Asset.yaml +0 -9
- cognite_toolkit/_builtin_modules/industrial_tools/cdf_location_filter_asset_centric/data_sets/data_sets.DataSet.yaml +0 -3
- cognite_toolkit/_builtin_modules/industrial_tools/cdf_location_filter_asset_centric/default.config.yaml +0 -4
- cognite_toolkit/_builtin_modules/industrial_tools/cdf_location_filter_asset_centric/locations/individualFilters.LocationFilter.yaml +0 -19
- cognite_toolkit/_builtin_modules/industrial_tools/cdf_location_filter_asset_centric/locations/oneFilter.LocationFilter.yaml +0 -12
- cognite_toolkit/_builtin_modules/industrial_tools/cdf_location_filter_asset_centric/module.toml +0 -2
- cognite_toolkit/_builtin_modules/industrial_tools/cdf_location_filter_datamodel_based/data_models/instance.Space.yaml +0 -2
- cognite_toolkit/_builtin_modules/industrial_tools/cdf_location_filter_datamodel_based/default.config.yaml +0 -2
- cognite_toolkit/_builtin_modules/industrial_tools/cdf_location_filter_datamodel_based/locations/dataModel.LocationFilter.yaml +0 -17
- cognite_toolkit/_builtin_modules/industrial_tools/cdf_location_filter_datamodel_based/module.toml +0 -2
- cognite_toolkit/_builtin_modules/industrial_tools/cdf_search/auth/locationfilter.Group.yaml +0 -12
- cognite_toolkit/_builtin_modules/industrial_tools/cdf_search/default.config.yaml +0 -3
- cognite_toolkit/_builtin_modules/industrial_tools/cdf_search/locations/user.LocationFilter.yaml +0 -9
- cognite_toolkit/_builtin_modules/industrial_tools/cdf_search/module.toml +0 -5
- cognite_toolkit/_builtin_modules/infield/cdf_infield_common/README.md +0 -3
- cognite_toolkit/_builtin_modules/infield/cdf_infield_common/auth/applications-configuration.Group.yaml +0 -22
- cognite_toolkit/_builtin_modules/infield/cdf_infield_common/data_models/infieldAppData.space.yaml +0 -3
- cognite_toolkit/_builtin_modules/infield/cdf_infield_common/data_models/infield_apm_app_config.node.yaml +0 -28
- cognite_toolkit/_builtin_modules/infield/cdf_infield_common/default.config.yaml +0 -2
- cognite_toolkit/_builtin_modules/infield/cdf_infield_common/module.toml +0 -6
- cognite_toolkit/_builtin_modules/infield/cdf_infield_location/README.md +0 -61
- cognite_toolkit/_builtin_modules/infield/cdf_infield_location/auth/infield_checklist_admin_role.group.yaml +0 -100
- cognite_toolkit/_builtin_modules/infield/cdf_infield_location/auth/infield_normal_role.group.yaml +0 -100
- cognite_toolkit/_builtin_modules/infield/cdf_infield_location/auth/infield_template_admin_role.group.yaml +0 -100
- cognite_toolkit/_builtin_modules/infield/cdf_infield_location/auth/infield_viewer_role.group.yaml +0 -85
- cognite_toolkit/_builtin_modules/infield/cdf_infield_location/data_models/infieldLocationAppData.space.yaml +0 -3
- cognite_toolkit/_builtin_modules/infield/cdf_infield_location/data_models/infieldLocationSourceData.space.yaml +0 -3
- cognite_toolkit/_builtin_modules/infield/cdf_infield_location/data_sets/location_app_data_set.DataSet.yaml +0 -3
- cognite_toolkit/_builtin_modules/infield/cdf_infield_location/data_sets/location_source_data_set.DataSet.yaml +0 -20
- cognite_toolkit/_builtin_modules/infield/cdf_infield_location/default.config.yaml +0 -23
- cognite_toolkit/_builtin_modules/infield/cdf_infield_location/module.toml +0 -3
- cognite_toolkit/_builtin_modules/infield/cdf_infield_location/transformations/tr_asset_oid_workmate_infield_sync_assets_from_hierarchy_to_apm.Transformation.sql +0 -34
- cognite_toolkit/_builtin_modules/infield/cdf_infield_location/transformations/tr_asset_oid_workmate_infield_sync_assets_from_hierarchy_to_apm.Transformation.yaml +0 -24
- cognite_toolkit/_builtin_modules/infield/cdf_infield_location/transformations/tr_asset_oid_workmate_infield_sync_assets_from_hierarchy_to_apm.schedule.yaml +0 -3
- cognite_toolkit/_builtin_modules/infield/cdf_infield_location/transformations/tr_workorder_oid_workmate_infield_sync_workorders_to_apm_activities.Transformation.sql +0 -17
- cognite_toolkit/_builtin_modules/infield/cdf_infield_location/transformations/tr_workorder_oid_workmate_infield_sync_workorders_to_apm_activities.Transformation.yaml +0 -25
- cognite_toolkit/_builtin_modules/infield/cdf_infield_location/transformations/tr_workorder_oid_workmate_infield_sync_workorders_to_apm_activities.schedule.yaml +0 -3
- cognite_toolkit/_builtin_modules/infield/cdf_infield_second_location/README.md +0 -61
- cognite_toolkit/_builtin_modules/infield/cdf_infield_second_location/auth/infield_checklist_admin_role.group.yaml +0 -100
- cognite_toolkit/_builtin_modules/infield/cdf_infield_second_location/auth/infield_normal_role.group.yaml +0 -100
- cognite_toolkit/_builtin_modules/infield/cdf_infield_second_location/auth/infield_template_admin_role.group.yaml +0 -100
- cognite_toolkit/_builtin_modules/infield/cdf_infield_second_location/auth/infield_viewer_role.group.yaml +0 -85
- cognite_toolkit/_builtin_modules/infield/cdf_infield_second_location/data_models/infieldLocationAppData.space.yaml +0 -3
- cognite_toolkit/_builtin_modules/infield/cdf_infield_second_location/data_models/infieldLocationSourceData.space.yaml +0 -3
- cognite_toolkit/_builtin_modules/infield/cdf_infield_second_location/data_sets/location_app_data_set.DataSet.yaml +0 -3
- cognite_toolkit/_builtin_modules/infield/cdf_infield_second_location/data_sets/location_source_data_set.DataSet.yaml +0 -20
- cognite_toolkit/_builtin_modules/infield/cdf_infield_second_location/default.config.yaml +0 -23
- cognite_toolkit/_builtin_modules/infield/cdf_infield_second_location/module.toml +0 -3
- cognite_toolkit/_builtin_modules/infield/cdf_infield_second_location/transformations/tr_asset_oid_workmate_infield_sync_assets_from_hierarchy_to_apm.Transformation.sql +0 -34
- cognite_toolkit/_builtin_modules/infield/cdf_infield_second_location/transformations/tr_asset_oid_workmate_infield_sync_assets_from_hierarchy_to_apm.Transformation.yaml +0 -24
- cognite_toolkit/_builtin_modules/infield/cdf_infield_second_location/transformations/tr_asset_oid_workmate_infield_sync_assets_from_hierarchy_to_apm.schedule.yaml +0 -3
- cognite_toolkit/_builtin_modules/infield/cdf_infield_second_location/transformations/tr_workorder_oid_workmate_infield_sync_workorders_to_apm_activities.Transformation.sql +0 -17
- cognite_toolkit/_builtin_modules/infield/cdf_infield_second_location/transformations/tr_workorder_oid_workmate_infield_sync_workorders_to_apm_activities.Transformation.yaml +0 -25
- cognite_toolkit/_builtin_modules/infield/cdf_infield_second_location/transformations/tr_workorder_oid_workmate_infield_sync_workorders_to_apm_activities.schedule.yaml +0 -3
- cognite_toolkit/_builtin_modules/infield/default.config.yaml +0 -21
- cognite_toolkit/_builtin_modules/inrobot/README.md +0 -41
- cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_common/README.md +0 -53
- cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_common/auth/run-function-user.Group.yaml +0 -89
- cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_common/classic/robot.Label.yaml +0 -6
- cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_common/data_models/cogniteAppData.space.yaml +0 -3
- cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_common/data_models/inrobotApmConfig.node.yaml +0 -17
- cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_common/data_sets/robot_1.dataset.yaml +0 -2
- cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_common/default.config.yaml +0 -3
- cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_common/functions/.gitkeep +0 -0
- cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_common/functions/fn_contextualize_robot_data/README.md +0 -30
- cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_common/functions/fn_contextualize_robot_data/__init__.py +0 -1
- cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_common/functions/fn_contextualize_robot_data/common/README.md +0 -58
- cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_common/functions/fn_contextualize_robot_data/common/__init__.py +0 -0
- cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_common/functions/fn_contextualize_robot_data/common/apm_helpers.py +0 -269
- cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_common/functions/fn_contextualize_robot_data/common/cdf_helpers.py +0 -112
- cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_common/functions/fn_contextualize_robot_data/common/dataclass/__init__.py +0 -0
- cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_common/functions/fn_contextualize_robot_data/common/dataclass/common.py +0 -16
- cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_common/functions/fn_contextualize_robot_data/common/dataclass/vision.py +0 -66
- cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_common/functions/fn_contextualize_robot_data/common/utils.py +0 -17
- cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_common/functions/fn_contextualize_robot_data/handler.py +0 -269
- cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_common/functions/fn_contextualize_robot_data/requirements.txt +0 -22
- cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_common/functions/fn_gauge_reading/README.md +0 -56
- cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_common/functions/fn_gauge_reading/__init__.py +0 -1
- cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_common/functions/fn_gauge_reading/common/README.md +0 -58
- cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_common/functions/fn_gauge_reading/common/__init__.py +0 -0
- cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_common/functions/fn_gauge_reading/common/apm_helpers.py +0 -269
- cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_common/functions/fn_gauge_reading/common/cdf_helpers.py +0 -112
- cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_common/functions/fn_gauge_reading/common/dataclass/__init__.py +0 -0
- cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_common/functions/fn_gauge_reading/common/dataclass/common.py +0 -16
- cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_common/functions/fn_gauge_reading/common/dataclass/vision.py +0 -66
- cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_common/functions/fn_gauge_reading/common/utils.py +0 -17
- cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_common/functions/fn_gauge_reading/handler.py +0 -396
- cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_common/functions/fn_gauge_reading/requirements.txt +0 -22
- cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_common/functions/fn_get_ir_data_from_ir_raw/README.md +0 -18
- cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_common/functions/fn_get_ir_data_from_ir_raw/__init__.py +0 -1
- cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_common/functions/fn_get_ir_data_from_ir_raw/common/README.md +0 -58
- cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_common/functions/fn_get_ir_data_from_ir_raw/common/__init__.py +0 -0
- cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_common/functions/fn_get_ir_data_from_ir_raw/common/apm_helpers.py +0 -269
- cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_common/functions/fn_get_ir_data_from_ir_raw/common/cdf_helpers.py +0 -112
- cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_common/functions/fn_get_ir_data_from_ir_raw/common/dataclass/__init__.py +0 -0
- cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_common/functions/fn_get_ir_data_from_ir_raw/common/dataclass/common.py +0 -16
- cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_common/functions/fn_get_ir_data_from_ir_raw/common/dataclass/vision.py +0 -66
- cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_common/functions/fn_get_ir_data_from_ir_raw/common/utils.py +0 -17
- cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_common/functions/fn_get_ir_data_from_ir_raw/handler.py +0 -195
- cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_common/functions/fn_get_ir_data_from_ir_raw/requirements.txt +0 -23
- cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_common/functions/fn_threesixty/README.md +0 -14
- cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_common/functions/fn_threesixty/__init__.py +0 -1
- cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_common/functions/fn_threesixty/cognite_threesixty_images.py +0 -284
- cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_common/functions/fn_threesixty/handler.py +0 -257
- cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_common/functions/fn_threesixty/requirements.txt +0 -7
- cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_common/functions/robots.functions.Function.yaml +0 -51
- cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_common/functions/schedules.Schedule.yaml +0 -94
- cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_common/module.toml +0 -6
- cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_common/robotics/acoustic_video.RobotCapability.yaml +0 -72
- cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_common/robotics/process_threesixty.DataPostProcessing.yaml +0 -23
- cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_common/robotics/pt_ir_video.RobotCapability.yaml +0 -64
- cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_common/robotics/ptz.RobotCapability.yaml +0 -63
- cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_common/robotics/ptz_ir.RobotCapability.yaml +0 -80
- cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_common/robotics/ptz_video.RobotCapability.yaml +0 -68
- cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_common/robotics/read_dial_gauge.DataPostProcessing.yaml +0 -31
- cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_common/robotics/read_digital_gauge.DataPostProcessing.yaml +0 -35
- cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_common/robotics/read_level_gauge.DataPostProcessing.yaml +0 -29
- cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_common/robotics/read_valve.DataPostProcessing.yaml +0 -23
- cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_common/robotics/threesixty.RobotCapability.yaml +0 -47
- cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_common/robotics/threesixty_video.RobotCapability.yaml +0 -47
- cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_location/README.md +0 -33
- cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_location/auth/inrobot-admin.Group.yaml +0 -107
- cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_location/auth/inrobot-users.Group.yaml +0 -94
- cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_location/auth/robot-1.Group.yaml +0 -77
- cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_location/data_models/locationAppData.space.yaml +0 -3
- cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_location/data_models/locationSourceData.space.yaml +0 -3
- cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_location/default.config.yaml +0 -7
- cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_location/module.toml +0 -3
- cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_location/robotics/root.Frame.yaml +0 -15
- cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_location/robotics/root.Location.yaml +0 -3
- cognite_toolkit/_builtin_modules/inrobot/cdf_inrobot_location/robotics/root.Map.yaml +0 -10
- cognite_toolkit/_builtin_modules/inrobot/default.config.yaml +0 -3
- cognite_toolkit/_builtin_modules/models/cdf_cdm_extension/data_models/containers/Activity.Container.yaml +0 -13
- cognite_toolkit/_builtin_modules/models/cdf_cdm_extension/data_models/containers/Asset.Container.yaml +0 -13
- cognite_toolkit/_builtin_modules/models/cdf_cdm_extension/data_models/containers/Equipment.Container.yaml +0 -13
- cognite_toolkit/_builtin_modules/models/cdf_cdm_extension/data_models/containers/File.Container.yaml +0 -13
- cognite_toolkit/_builtin_modules/models/cdf_cdm_extension/data_models/containers/TimeSeries.Container.yaml +0 -13
- cognite_toolkit/_builtin_modules/models/cdf_cdm_extension/data_models/enterprise.datamodel.yaml +0 -54
- cognite_toolkit/_builtin_modules/models/cdf_cdm_extension/data_models/schema.space.yaml +0 -1
- cognite_toolkit/_builtin_modules/models/cdf_cdm_extension/data_models/views/Activity.view.yaml +0 -69
- cognite_toolkit/_builtin_modules/models/cdf_cdm_extension/data_models/views/Asset.view.yaml +0 -186
- cognite_toolkit/_builtin_modules/models/cdf_cdm_extension/data_models/views/Equipment.view.yaml +0 -100
- cognite_toolkit/_builtin_modules/models/cdf_cdm_extension/data_models/views/File.view.yaml +0 -72
- cognite_toolkit/_builtin_modules/models/cdf_cdm_extension/data_models/views/TimeSeries.view.yaml +0 -85
- cognite_toolkit/_builtin_modules/models/cdf_cdm_extension/default.config.yaml +0 -2
- cognite_toolkit/_builtin_modules/models/cdf_cdm_extension/module.toml +0 -2
- cognite_toolkit/_builtin_modules/models/cdf_cdm_extension_full/data_models/containers/360Image.Container.yaml +0 -13
- cognite_toolkit/_builtin_modules/models/cdf_cdm_extension_full/data_models/containers/360ImageAnnotation.Container.yaml +0 -13
- cognite_toolkit/_builtin_modules/models/cdf_cdm_extension_full/data_models/containers/360ImageCollection.Container.yaml +0 -13
- cognite_toolkit/_builtin_modules/models/cdf_cdm_extension_full/data_models/containers/360ImageModel.Container.yaml +0 -13
- cognite_toolkit/_builtin_modules/models/cdf_cdm_extension_full/data_models/containers/360ImageStation.Container.yaml +0 -13
- cognite_toolkit/_builtin_modules/models/cdf_cdm_extension_full/data_models/containers/3DModel.Container.yaml +0 -13
- cognite_toolkit/_builtin_modules/models/cdf_cdm_extension_full/data_models/containers/3DObject.Container.yaml +0 -13
- cognite_toolkit/_builtin_modules/models/cdf_cdm_extension_full/data_models/containers/3DRevision.Container.yaml +0 -13
- cognite_toolkit/_builtin_modules/models/cdf_cdm_extension_full/data_models/containers/3DTransformation.Container.yaml +0 -13
- cognite_toolkit/_builtin_modules/models/cdf_cdm_extension_full/data_models/containers/Activity.Container.yaml +0 -13
- cognite_toolkit/_builtin_modules/models/cdf_cdm_extension_full/data_models/containers/Annotation.Container.yaml +0 -14
- cognite_toolkit/_builtin_modules/models/cdf_cdm_extension_full/data_models/containers/Asset.Container.yaml +0 -13
- cognite_toolkit/_builtin_modules/models/cdf_cdm_extension_full/data_models/containers/AssetClass.Container.yaml +0 -13
- cognite_toolkit/_builtin_modules/models/cdf_cdm_extension_full/data_models/containers/AssetType.Container.yaml +0 -13
- cognite_toolkit/_builtin_modules/models/cdf_cdm_extension_full/data_models/containers/CADModel.Container.yaml +0 -13
- cognite_toolkit/_builtin_modules/models/cdf_cdm_extension_full/data_models/containers/CADNode.Container.yaml +0 -13
- cognite_toolkit/_builtin_modules/models/cdf_cdm_extension_full/data_models/containers/CADRevision.Container.yaml +0 -13
- cognite_toolkit/_builtin_modules/models/cdf_cdm_extension_full/data_models/containers/CubeMap.Container.yaml +0 -13
- cognite_toolkit/_builtin_modules/models/cdf_cdm_extension_full/data_models/containers/Describable.Container.yaml +0 -13
- cognite_toolkit/_builtin_modules/models/cdf_cdm_extension_full/data_models/containers/DiagramAnnotation.Container.yaml +0 -13
- cognite_toolkit/_builtin_modules/models/cdf_cdm_extension_full/data_models/containers/Equipment.Container.yaml +0 -13
- cognite_toolkit/_builtin_modules/models/cdf_cdm_extension_full/data_models/containers/EquipmentType.Container.yaml +0 -13
- cognite_toolkit/_builtin_modules/models/cdf_cdm_extension_full/data_models/containers/File.Container.yaml +0 -13
- cognite_toolkit/_builtin_modules/models/cdf_cdm_extension_full/data_models/containers/FileCategory.Container.yaml +0 -13
- cognite_toolkit/_builtin_modules/models/cdf_cdm_extension_full/data_models/containers/PointCloudModel.Container.yaml +0 -13
- cognite_toolkit/_builtin_modules/models/cdf_cdm_extension_full/data_models/containers/PointCloudRevision.Container.yaml +0 -13
- cognite_toolkit/_builtin_modules/models/cdf_cdm_extension_full/data_models/containers/PointCloudVolume.Container.yaml +0 -13
- cognite_toolkit/_builtin_modules/models/cdf_cdm_extension_full/data_models/containers/Schedulable.Container.yaml +0 -13
- cognite_toolkit/_builtin_modules/models/cdf_cdm_extension_full/data_models/containers/SourceSystem.Container.yaml +0 -13
- cognite_toolkit/_builtin_modules/models/cdf_cdm_extension_full/data_models/containers/Sourceable.Container.yaml +0 -13
- cognite_toolkit/_builtin_modules/models/cdf_cdm_extension_full/data_models/containers/TimeSeries.Container.yaml +0 -13
- cognite_toolkit/_builtin_modules/models/cdf_cdm_extension_full/data_models/containers/Unit.Container.yaml +0 -13
- cognite_toolkit/_builtin_modules/models/cdf_cdm_extension_full/data_models/containers/Visualizable.Container.yaml +0 -13
- cognite_toolkit/_builtin_modules/models/cdf_cdm_extension_full/data_models/enterprise.datamodel.yaml +0 -138
- cognite_toolkit/_builtin_modules/models/cdf_cdm_extension_full/data_models/schema.space.yaml +0 -1
- cognite_toolkit/_builtin_modules/models/cdf_cdm_extension_full/data_models/views/360Image.view.yaml +0 -119
- cognite_toolkit/_builtin_modules/models/cdf_cdm_extension_full/data_models/views/360ImageAnnotation.view.yaml +0 -28
- cognite_toolkit/_builtin_modules/models/cdf_cdm_extension_full/data_models/views/360ImageCollection.view.yaml +0 -39
- cognite_toolkit/_builtin_modules/models/cdf_cdm_extension_full/data_models/views/360ImageModel.view.yaml +0 -55
- cognite_toolkit/_builtin_modules/models/cdf_cdm_extension_full/data_models/views/360ImageStation.view.yaml +0 -29
- cognite_toolkit/_builtin_modules/models/cdf_cdm_extension_full/data_models/views/3DModel.view.yaml +0 -29
- cognite_toolkit/_builtin_modules/models/cdf_cdm_extension_full/data_models/views/3DObject.view.yaml +0 -81
- cognite_toolkit/_builtin_modules/models/cdf_cdm_extension_full/data_models/views/3DRevision.view.yaml +0 -30
- cognite_toolkit/_builtin_modules/models/cdf_cdm_extension_full/data_models/views/3DTransformation.view.yaml +0 -23
- cognite_toolkit/_builtin_modules/models/cdf_cdm_extension_full/data_models/views/Activity.view.yaml +0 -69
- cognite_toolkit/_builtin_modules/models/cdf_cdm_extension_full/data_models/views/Annotation.view.yaml +0 -28
- cognite_toolkit/_builtin_modules/models/cdf_cdm_extension_full/data_models/views/Asset.view.yaml +0 -191
- cognite_toolkit/_builtin_modules/models/cdf_cdm_extension_full/data_models/views/AssetClass.view.yaml +0 -17
- cognite_toolkit/_builtin_modules/models/cdf_cdm_extension_full/data_models/views/AssetType.view.yaml +0 -31
- cognite_toolkit/_builtin_modules/models/cdf_cdm_extension_full/data_models/views/CADModel.view.yaml +0 -55
- cognite_toolkit/_builtin_modules/models/cdf_cdm_extension_full/data_models/views/CADNode.view.yaml +0 -53
- cognite_toolkit/_builtin_modules/models/cdf_cdm_extension_full/data_models/views/CADRevision.view.yaml +0 -39
- cognite_toolkit/_builtin_modules/models/cdf_cdm_extension_full/data_models/views/CubeMap.view.yaml +0 -97
- cognite_toolkit/_builtin_modules/models/cdf_cdm_extension_full/data_models/views/Describable.view.yaml +0 -19
- cognite_toolkit/_builtin_modules/models/cdf_cdm_extension_full/data_models/views/DiagramAnnotation.view.yaml +0 -28
- cognite_toolkit/_builtin_modules/models/cdf_cdm_extension_full/data_models/views/Equipment.view.yaml +0 -100
- cognite_toolkit/_builtin_modules/models/cdf_cdm_extension_full/data_models/views/EquipmentType.view.yaml +0 -17
- cognite_toolkit/_builtin_modules/models/cdf_cdm_extension_full/data_models/views/File.view.yaml +0 -72
- cognite_toolkit/_builtin_modules/models/cdf_cdm_extension_full/data_models/views/FileCategory.view.yaml +0 -18
- cognite_toolkit/_builtin_modules/models/cdf_cdm_extension_full/data_models/views/PointCloudModel.view.yaml +0 -55
- cognite_toolkit/_builtin_modules/models/cdf_cdm_extension_full/data_models/views/PointCloudRevision.view.yaml +0 -39
- cognite_toolkit/_builtin_modules/models/cdf_cdm_extension_full/data_models/views/PointCloudVolume.view.yaml +0 -52
- cognite_toolkit/_builtin_modules/models/cdf_cdm_extension_full/data_models/views/Schedulable.view.yaml +0 -17
- cognite_toolkit/_builtin_modules/models/cdf_cdm_extension_full/data_models/views/SourceSystem.view.yaml +0 -17
- cognite_toolkit/_builtin_modules/models/cdf_cdm_extension_full/data_models/views/Sourceable.view.yaml +0 -27
- cognite_toolkit/_builtin_modules/models/cdf_cdm_extension_full/data_models/views/TimeSeries.view.yaml +0 -85
- cognite_toolkit/_builtin_modules/models/cdf_cdm_extension_full/data_models/views/Unit.view.yaml +0 -16
- cognite_toolkit/_builtin_modules/models/cdf_cdm_extension_full/data_models/views/Visualizable.view.yaml +0 -29
- cognite_toolkit/_builtin_modules/models/cdf_cdm_extension_full/default.config.yaml +0 -2
- cognite_toolkit/_builtin_modules/models/cdf_cdm_extension_full/module.toml +0 -2
- cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension/data_models/containers/Activity.Container.yaml +0 -13
- cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension/data_models/containers/Asset.Container.yaml +0 -13
- cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension/data_models/containers/Equipment.Container.yaml +0 -13
- cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension/data_models/containers/File.Container.yaml +0 -13
- cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension/data_models/containers/MaintenanceOrder.Container.yaml +0 -13
- cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension/data_models/containers/Notification.Container.yaml +0 -13
- cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension/data_models/containers/Operation.Container.yaml +0 -13
- cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension/data_models/containers/TimeSeries.Container.yaml +0 -13
- cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension/data_models/enterprise.datamodel.yaml +0 -66
- cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension/data_models/schema.space.yaml +0 -1
- cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension/data_models/views/Activity.view.yaml +0 -69
- cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension/data_models/views/Asset.view.yaml +0 -186
- cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension/data_models/views/Equipment.view.yaml +0 -100
- cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension/data_models/views/File.view.yaml +0 -72
- cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension/data_models/views/MaintenanceOrder.view.yaml +0 -100
- cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension/data_models/views/Notification.view.yaml +0 -56
- cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension/data_models/views/Operation.view.yaml +0 -96
- cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension/data_models/views/TimeSeries.view.yaml +0 -85
- cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension/default.config.yaml +0 -3
- cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension/module.toml +0 -2
- cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/containers/360Image.Container.yaml +0 -13
- cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/containers/360ImageAnnotation.Container.yaml +0 -14
- cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/containers/360ImageCollection.Container.yaml +0 -13
- cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/containers/360ImageModel.Container.yaml +0 -13
- cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/containers/360ImageStation.Container.yaml +0 -13
- cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/containers/3DModel.Container.yaml +0 -13
- cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/containers/3DObject.Container.yaml +0 -13
- cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/containers/3DRevision.Container.yaml +0 -13
- cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/containers/3DTransformation.Container.yaml +0 -13
- cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/containers/Activity.Container.yaml +0 -13
- cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/containers/Annotation.Container.yaml +0 -14
- cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/containers/Asset.Container.yaml +0 -13
- cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/containers/AssetClass.Container.yaml +0 -13
- cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/containers/AssetType.Container.yaml +0 -13
- cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/containers/CADModel.Container.yaml +0 -13
- cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/containers/CADNode.Container.yaml +0 -13
- cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/containers/CADRevision.Container.yaml +0 -13
- cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/containers/CubeMap.Container.yaml +0 -13
- cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/containers/Describable.Container.yaml +0 -13
- cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/containers/DiagramAnnotation.Container.yaml +0 -14
- cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/containers/Equipment.Container.yaml +0 -13
- cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/containers/EquipmentType.Container.yaml +0 -13
- cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/containers/File.Container.yaml +0 -13
- cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/containers/FileCategory.Container.yaml +0 -13
- cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/containers/MaintenanceOrder.Container.yaml +0 -13
- cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/containers/Notification.Container.yaml +0 -13
- cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/containers/Operation.Container.yaml +0 -13
- cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/containers/PointCloudModel.Container.yaml +0 -13
- cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/containers/PointCloudRevision.Container.yaml +0 -13
- cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/containers/PointCloudVolume.Container.yaml +0 -13
- cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/containers/Schedulable.Container.yaml +0 -13
- cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/containers/SourceSystem.Container.yaml +0 -13
- cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/containers/Sourceable.Container.yaml +0 -13
- cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/containers/TimeSeries.Container.yaml +0 -13
- cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/containers/Unit.Container.yaml +0 -13
- cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/containers/Visualizable.Container.yaml +0 -13
- cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/enterprise.datamodel.yaml +0 -150
- cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/schema.space.yaml +0 -1
- cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/views/360Image.view.yaml +0 -119
- cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/views/360ImageAnnotation.view.yaml +0 -28
- cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/views/360ImageCollection.view.yaml +0 -39
- cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/views/360ImageModel.view.yaml +0 -55
- cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/views/360ImageStation.view.yaml +0 -29
- cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/views/3DModel.view.yaml +0 -29
- cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/views/3DObject.view.yaml +0 -81
- cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/views/3DRevision.view.yaml +0 -30
- cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/views/3DTransformation.view.yaml +0 -23
- cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/views/Activity.view.yaml +0 -69
- cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/views/Annotation.view.yaml +0 -28
- cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/views/Asset.view.yaml +0 -191
- cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/views/AssetClass.view.yaml +0 -17
- cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/views/AssetType.view.yaml +0 -31
- cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/views/CADModel.view.yaml +0 -55
- cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/views/CADNode.view.yaml +0 -53
- cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/views/CADRevision.view.yaml +0 -39
- cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/views/CubeMap.view.yaml +0 -97
- cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/views/Describable.view.yaml +0 -19
- cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/views/DiagramAnnotation.view.yaml +0 -28
- cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/views/Equipment.view.yaml +0 -100
- cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/views/EquipmentType.view.yaml +0 -17
- cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/views/File.view.yaml +0 -72
- cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/views/FileCategory.view.yaml +0 -18
- cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/views/MaintenanceOrder.view.yaml +0 -100
- cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/views/Notification.view.yaml +0 -56
- cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/views/Operation.view.yaml +0 -96
- cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/views/PointCloudModel.view.yaml +0 -55
- cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/views/PointCloudRevision.view.yaml +0 -39
- cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/views/PointCloudVolume.view.yaml +0 -52
- cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/views/Schedulable.view.yaml +0 -17
- cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/views/SourceSystem.view.yaml +0 -17
- cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/views/Sourceable.view.yaml +0 -27
- cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/views/TimeSeries.view.yaml +0 -85
- cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/views/Unit.view.yaml +0 -16
- cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/data_models/views/Visualizable.view.yaml +0 -29
- cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/default.config.yaml +0 -2
- cognite_toolkit/_builtin_modules/models/cdf_process_industry_extension_full/module.toml +0 -2
- cognite_toolkit/_builtin_modules/models/cdf_scene/data_models/containers/scene_Cdf3dRevisionProperties.Container.yaml +0 -13
- cognite_toolkit/_builtin_modules/models/cdf_scene/data_models/containers/scene_EnvironmentMap.Container.yaml +0 -12
- cognite_toolkit/_builtin_modules/models/cdf_scene/data_models/containers/scene_Image360CollectionProperties.Container.yaml +0 -23
- cognite_toolkit/_builtin_modules/models/cdf_scene/data_models/containers/scene_Image360CollectionScene.Container.yaml +0 -12
- cognite_toolkit/_builtin_modules/models/cdf_scene/data_models/containers/scene_SceneConfiguration.Container.yaml +0 -152
- cognite_toolkit/_builtin_modules/models/cdf_scene/data_models/containers/scene_TexturedMap.Container.yaml +0 -21
- cognite_toolkit/_builtin_modules/models/cdf_scene/data_models/containers/scene_TexturedPlane.Container.yaml +0 -29
- cognite_toolkit/_builtin_modules/models/cdf_scene/data_models/scene.Space.yaml +0 -3
- cognite_toolkit/_builtin_modules/models/cdf_scene/data_models/scene_data_model.DataModel.yaml +0 -66
- cognite_toolkit/_builtin_modules/models/cdf_scene/data_models/views/EnvironmentMap.View.yaml +0 -28
- cognite_toolkit/_builtin_modules/models/cdf_scene/data_models/views/Image360CollectionProperties.View.yaml +0 -22
- cognite_toolkit/_builtin_modules/models/cdf_scene/data_models/views/Image360CollectionScene.View.yaml +0 -20
- cognite_toolkit/_builtin_modules/models/cdf_scene/data_models/views/RevisionProperties.View.yaml +0 -16
- cognite_toolkit/_builtin_modules/models/cdf_scene/data_models/views/SceneConfiguration.View.yaml +0 -166
- cognite_toolkit/_builtin_modules/models/cdf_scene/data_models/views/TexturedMap.View.yaml +0 -17
- cognite_toolkit/_builtin_modules/models/cdf_scene/data_models/views/TexturedPlane.View.yaml +0 -40
- cognite_toolkit/_builtin_modules/models/cdf_scene/default.config.yaml +0 -1
- cognite_toolkit/_builtin_modules/models/cdf_scene/module.toml +0 -2
- cognite_toolkit/_builtin_modules/packages.toml +0 -102
- cognite_toolkit/_builtin_modules/sourcesystem/README.md +0 -4
- cognite_toolkit/_builtin_modules/sourcesystem/cdf_pi/auth/workflow.Group.yaml +0 -53
- cognite_toolkit/_builtin_modules/sourcesystem/cdf_pi/default.config.yaml +0 -13
- cognite_toolkit/_builtin_modules/sourcesystem/cdf_pi/extraction_pipelines/extractor.Config.yaml +0 -5
- cognite_toolkit/_builtin_modules/sourcesystem/cdf_pi/extraction_pipelines/extractor.ExtractionPipeline.yaml +0 -12
- cognite_toolkit/_builtin_modules/sourcesystem/cdf_pi/module.toml +0 -24
- cognite_toolkit/_builtin_modules/sourcesystem/cdf_pi/raw/timeseries.Table.yaml +0 -2
- cognite_toolkit/_builtin_modules/sourcesystem/cdf_pi/transformations/population/timeseries.Transformation.sql +0 -9
- cognite_toolkit/_builtin_modules/sourcesystem/cdf_pi/transformations/population/timeseries.Transformation.yaml +0 -14
- cognite_toolkit/_builtin_modules/sourcesystem/cdf_pi/workflows/population.Workflow.yaml +0 -3
- cognite_toolkit/_builtin_modules/sourcesystem/cdf_pi/workflows/trigger.WorkflowTrigger.yaml +0 -9
- cognite_toolkit/_builtin_modules/sourcesystem/cdf_pi/workflows/v1.WorkflowVersion.yaml +0 -12
- cognite_toolkit/_builtin_modules/sourcesystem/cdf_sap_assets/auth/workflow.Group.yaml +0 -54
- cognite_toolkit/_builtin_modules/sourcesystem/cdf_sap_assets/default.config.yaml +0 -16
- cognite_toolkit/_builtin_modules/sourcesystem/cdf_sap_assets/module.toml +0 -24
- cognite_toolkit/_builtin_modules/sourcesystem/cdf_sap_assets/raw/dump.Table.yaml +0 -2
- cognite_toolkit/_builtin_modules/sourcesystem/cdf_sap_assets/transformations/connection/equipment_to_asset.Transformation.sql +0 -14
- cognite_toolkit/_builtin_modules/sourcesystem/cdf_sap_assets/transformations/connection/equipment_to_asset.Transformation.yaml +0 -14
- cognite_toolkit/_builtin_modules/sourcesystem/cdf_sap_assets/transformations/population/asset.Transformation.sql +0 -35
- cognite_toolkit/_builtin_modules/sourcesystem/cdf_sap_assets/transformations/population/asset.Transformation.yaml +0 -14
- cognite_toolkit/_builtin_modules/sourcesystem/cdf_sap_assets/transformations/population/equipment.Transformation.sql +0 -17
- cognite_toolkit/_builtin_modules/sourcesystem/cdf_sap_assets/transformations/population/equipment.Transformation.yaml +0 -13
- cognite_toolkit/_builtin_modules/sourcesystem/cdf_sap_assets/workflows/population.Workflow.yaml +0 -3
- cognite_toolkit/_builtin_modules/sourcesystem/cdf_sap_assets/workflows/trigger.WorkflowTrigger.yaml +0 -9
- cognite_toolkit/_builtin_modules/sourcesystem/cdf_sap_assets/workflows/v1.WorkflowVersion.yaml +0 -28
- cognite_toolkit/_builtin_modules/sourcesystem/cdf_sap_events/auth/workflow.Group.yaml +0 -46
- cognite_toolkit/_builtin_modules/sourcesystem/cdf_sap_events/default.config.yaml +0 -15
- cognite_toolkit/_builtin_modules/sourcesystem/cdf_sap_events/module.toml +0 -20
- cognite_toolkit/_builtin_modules/sourcesystem/cdf_sap_events/raw/workitem.Table.yaml +0 -2
- cognite_toolkit/_builtin_modules/sourcesystem/cdf_sap_events/raw/workorder.Table.yaml +0 -2
- cognite_toolkit/_builtin_modules/sourcesystem/cdf_sap_events/raw/workpackage.Table.yaml +0 -2
- cognite_toolkit/_builtin_modules/sourcesystem/cdf_sap_events/raw/worktask.Table.yaml +0 -3
- cognite_toolkit/_builtin_modules/sourcesystem/cdf_sap_events/transformations/connection/operation_to_maintenance_order.Transformation.sql +0 -32
- cognite_toolkit/_builtin_modules/sourcesystem/cdf_sap_events/transformations/connection/operation_to_maintenance_order.Transformation.yaml +0 -13
- cognite_toolkit/_builtin_modules/sourcesystem/cdf_sap_events/transformations/population/maintenanceOrder.Transformation.sql +0 -18
- cognite_toolkit/_builtin_modules/sourcesystem/cdf_sap_events/transformations/population/maintenanceOrder.Transformation.yaml +0 -14
- cognite_toolkit/_builtin_modules/sourcesystem/cdf_sap_events/transformations/population/operation.Transformation.sql +0 -18
- cognite_toolkit/_builtin_modules/sourcesystem/cdf_sap_events/transformations/population/operation.Transformation.yaml +0 -14
- cognite_toolkit/_builtin_modules/sourcesystem/cdf_sap_events/workflows/population.Workflow.yaml +0 -3
- cognite_toolkit/_builtin_modules/sourcesystem/cdf_sap_events/workflows/trigger.WorkflowTrigger.yaml +0 -9
- cognite_toolkit/_builtin_modules/sourcesystem/cdf_sap_events/workflows/v1.WorkflowVersion.yaml +0 -28
- cognite_toolkit/_builtin_modules/sourcesystem/cdf_sharepoint/auth/workflow.Group.yaml +0 -47
- cognite_toolkit/_builtin_modules/sourcesystem/cdf_sharepoint/default.config.yaml +0 -13
- cognite_toolkit/_builtin_modules/sourcesystem/cdf_sharepoint/files/upload.CogniteFile.yaml +0 -4
- cognite_toolkit/_builtin_modules/sourcesystem/cdf_sharepoint/module.toml +0 -26
- cognite_toolkit/_builtin_modules/sourcesystem/cdf_sharepoint/raw/files.Table.yaml +0 -2
- cognite_toolkit/_builtin_modules/sourcesystem/cdf_sharepoint/transformations/population/files.Transformation.sql +0 -9
- cognite_toolkit/_builtin_modules/sourcesystem/cdf_sharepoint/transformations/population/files.Transformation.yaml +0 -13
- cognite_toolkit/_builtin_modules/sourcesystem/cdf_sharepoint/workflows/population.Workflow.yaml +0 -3
- cognite_toolkit/_builtin_modules/sourcesystem/cdf_sharepoint/workflows/trigger.WorkflowTrigger.yaml +0 -9
- cognite_toolkit/_builtin_modules/sourcesystem/cdf_sharepoint/workflows/v1.WorkflowVersion.yaml +0 -11
- cognite_toolkit/_cdf_tk/_parameters/__init__.py +0 -18
- cognite_toolkit/_cdf_tk/_parameters/constants.py +0 -82
- cognite_toolkit/_cdf_tk/_parameters/data_classes.py +0 -200
- cognite_toolkit/_cdf_tk/_parameters/functions.py +0 -190
- cognite_toolkit/_cdf_tk/_parameters/get_type_hints.py +0 -123
- cognite_toolkit/_cdf_tk/_parameters/type_hint.py +0 -116
- cognite_toolkit/_cdf_tk/apps/_populate_app.py +0 -80
- cognite_toolkit/_cdf_tk/commands/_migrate/assets.py +0 -144
- cognite_toolkit/_cdf_tk/commands/_migrate/base.py +0 -88
- cognite_toolkit/_cdf_tk/commands/_migrate/canvas.py +0 -145
- cognite_toolkit/_cdf_tk/commands/_migrate/files.py +0 -165
- cognite_toolkit/_cdf_tk/commands/_migrate/timeseries.py +0 -165
- cognite_toolkit/_cdf_tk/commands/_populate.py +0 -306
- cognite_toolkit/_cdf_tk/commands/dump_data.py +0 -490
- cognite_toolkit/_cdf_tk/commands/featureflag.py +0 -27
- cognite_toolkit/_cdf_tk/loaders/__init__.py +0 -198
- cognite_toolkit/_cdf_tk/loaders/_resource_loaders/__init__.py +0 -90
- cognite_toolkit/_cdf_tk/loaders/_resource_loaders/fieldops_loaders.py +0 -260
- cognite_toolkit/_cdf_tk/prototypes/_packages/__init__.py +0 -1
- cognite_toolkit/_cdf_tk/prototypes/_packages/reference/manifest.yaml +0 -4
- cognite_toolkit/_cdf_tk/prototypes/_packages/reference/references/auth/reference.Group.yaml +0 -375
- cognite_toolkit/_cdf_tk/prototypes/_packages/reference/references/auth/reference.SecurityCategory.yaml +0 -1
- cognite_toolkit/_cdf_tk/prototypes/_packages/reference/references/data_models/reference.DataModel.yaml +0 -19
- cognite_toolkit/_cdf_tk/prototypes/_packages/reference/references/data_models/reference.View.yaml +0 -8
- cognite_toolkit/_cdf_tk/prototypes/_packages/reference/references/data_sets/reference.DataSet.yaml +0 -8
- cognite_toolkit/_cdf_tk/prototypes/_packages/reference/references/extraction_pipelines/reference.ExtractionPipeline.yaml +0 -27
- cognite_toolkit/_cdf_tk/prototypes/_packages/reference/references/extraction_pipelines/reference.ExtractionPipelineConfig.yaml +0 -3
- cognite_toolkit/_cdf_tk/prototypes/_packages/reference/references/functions/reference.Function.yaml +0 -22
- cognite_toolkit/_cdf_tk/prototypes/_packages/reference/references/functions/reference.FunctionSchedule.yaml +0 -6
- cognite_toolkit/_cdf_tk/prototypes/_packages/reference/references/labels/reference.LabelDefinition.yaml +0 -4
- cognite_toolkit/_cdf_tk/prototypes/_packages/reference/references/timeseries/reference.DataPointSubscription.yaml +0 -7
- cognite_toolkit/_cdf_tk/prototypes/_packages/reference/references/transformations/reference.Transformation.yaml +0 -51
- cognite_toolkit/_cdf_tk/prototypes/_packages/reference/references/transformations/reference.TransformationNotification.yaml +0 -3
- cognite_toolkit/_cdf_tk/prototypes/_packages/reference/references/transformations/reference.TransformationSchedule.yaml +0 -4
- cognite_toolkit/_cdf_tk/prototypes/_packages/reference/references/workflows/reference.WorkflowUpsert.yaml +0 -2
- cognite_toolkit/_cdf_tk/prototypes/_packages/reference/references/workflows/reference.WorkflowVersionUpsert.yaml +0 -10
- cognite_toolkit/_cdf_tk/prototypes/_packages/update_references.py +0 -337
- cognite_toolkit/_cdf_tk/prototypes/commands/__init__.py +0 -0
- cognite_toolkit/_cdf_tk/prototypes/import_app.py +0 -41
- cognite_toolkit/_cdf_tk/utils/table_writers.py +0 -434
- cognite_toolkit/_cdf_tk/utils/tarjan.py +0 -46
- cognite_toolkit-0.5.97.dist-info/RECORD +0 -726
- cognite_toolkit-0.5.97.dist-info/WHEEL +0 -4
- cognite_toolkit-0.5.97.dist-info/licenses/LICENSE +0 -18
- /cognite_toolkit/_cdf_tk/{prototypes/commands/import_.py → commands/_import_cmd.py} +0 -0
- /cognite_toolkit/{_builtin_modules → _cdf_tk/commands/build_v2}/__init__.py +0 -0
|
@@ -1,209 +1,559 @@
|
|
|
1
1
|
import uuid
|
|
2
|
-
from
|
|
2
|
+
from abc import ABC, abstractmethod
|
|
3
|
+
from collections.abc import Callable, Hashable, Iterable, Sequence
|
|
4
|
+
from dataclasses import dataclass
|
|
3
5
|
from functools import partial
|
|
4
|
-
from graphlib import CycleError, TopologicalSorter
|
|
5
6
|
from typing import Literal, cast
|
|
6
7
|
|
|
7
8
|
import questionary
|
|
8
|
-
from cognite.client.data_classes import
|
|
9
|
-
from cognite.client.data_classes.
|
|
10
|
-
from cognite.client.data_classes.data_modeling import
|
|
11
|
-
from cognite.client.exceptions import CogniteAPIError
|
|
9
|
+
from cognite.client.data_classes import DataSetUpdate
|
|
10
|
+
from cognite.client.data_classes.data_modeling import Edge, NodeId
|
|
11
|
+
from cognite.client.data_classes.data_modeling.statistics import SpaceStatistics
|
|
12
|
+
from cognite.client.exceptions import CogniteAPIError
|
|
12
13
|
from cognite.client.utils._identifier import InstanceId
|
|
13
14
|
from rich import print
|
|
14
15
|
from rich.console import Console
|
|
15
16
|
from rich.panel import Panel
|
|
16
|
-
from rich.status import Status
|
|
17
17
|
|
|
18
18
|
from cognite_toolkit._cdf_tk.client import ToolkitClient
|
|
19
|
-
from cognite_toolkit._cdf_tk.
|
|
19
|
+
from cognite_toolkit._cdf_tk.cruds import (
|
|
20
|
+
AssetCRUD,
|
|
21
|
+
ContainerCRUD,
|
|
22
|
+
DataModelCRUD,
|
|
23
|
+
EdgeCRUD,
|
|
24
|
+
EventCRUD,
|
|
25
|
+
ExtractionPipelineCRUD,
|
|
26
|
+
FileMetadataCRUD,
|
|
27
|
+
LabelCRUD,
|
|
28
|
+
NodeCRUD,
|
|
29
|
+
RelationshipCRUD,
|
|
30
|
+
ResourceCRUD,
|
|
31
|
+
SequenceCRUD,
|
|
32
|
+
SpaceCRUD,
|
|
33
|
+
ThreeDModelCRUD,
|
|
34
|
+
TimeSeriesCRUD,
|
|
35
|
+
TransformationCRUD,
|
|
36
|
+
ViewCRUD,
|
|
37
|
+
WorkflowCRUD,
|
|
38
|
+
)
|
|
20
39
|
from cognite_toolkit._cdf_tk.data_classes import DeployResults, ResourceDeployResult
|
|
21
40
|
from cognite_toolkit._cdf_tk.exceptions import (
|
|
22
|
-
|
|
23
|
-
ResourceDeleteError,
|
|
41
|
+
AuthorizationError,
|
|
24
42
|
ToolkitMissingResourceError,
|
|
25
|
-
ToolkitNotImplementedError,
|
|
26
|
-
ToolkitRequiredValueError,
|
|
27
|
-
ToolkitValueError,
|
|
28
|
-
)
|
|
29
|
-
from cognite_toolkit._cdf_tk.loaders import (
|
|
30
|
-
RESOURCE_LOADER_LIST,
|
|
31
|
-
AssetLoader,
|
|
32
|
-
CogniteFileLoader,
|
|
33
|
-
DataSetsLoader,
|
|
34
|
-
FunctionLoader,
|
|
35
|
-
GraphQLLoader,
|
|
36
|
-
GroupAllScopedLoader,
|
|
37
|
-
GroupLoader,
|
|
38
|
-
GroupResourceScopedLoader,
|
|
39
|
-
HostedExtractorDestinationLoader,
|
|
40
|
-
LocationFilterLoader,
|
|
41
|
-
NodeLoader,
|
|
42
|
-
ResourceLoader,
|
|
43
|
-
SpaceLoader,
|
|
44
|
-
StreamlitLoader,
|
|
45
|
-
TransformationLoader,
|
|
46
|
-
ViewLoader,
|
|
47
43
|
)
|
|
44
|
+
from cognite_toolkit._cdf_tk.protocols import ResourceResponseProtocol
|
|
45
|
+
from cognite_toolkit._cdf_tk.storageio import InstanceIO
|
|
46
|
+
from cognite_toolkit._cdf_tk.storageio.selectors import InstanceSelector
|
|
48
47
|
from cognite_toolkit._cdf_tk.tk_warnings import (
|
|
49
48
|
HighSeverityWarning,
|
|
50
49
|
LimitedAccessWarning,
|
|
51
|
-
MediumSeverityWarning,
|
|
52
50
|
)
|
|
53
51
|
from cognite_toolkit._cdf_tk.utils import humanize_collection
|
|
54
|
-
from cognite_toolkit._cdf_tk.utils.
|
|
55
|
-
|
|
52
|
+
from cognite_toolkit._cdf_tk.utils.aggregators import (
|
|
53
|
+
AssetAggregator,
|
|
54
|
+
EventAggregator,
|
|
55
|
+
FileAggregator,
|
|
56
|
+
LabelCountAggregator,
|
|
57
|
+
RelationshipAggregator,
|
|
58
|
+
SequenceAggregator,
|
|
59
|
+
TimeSeriesAggregator,
|
|
60
|
+
)
|
|
61
|
+
from cognite_toolkit._cdf_tk.utils.http_client import (
|
|
62
|
+
FailedRequestItems,
|
|
63
|
+
FailedResponseItems,
|
|
64
|
+
HTTPClient,
|
|
65
|
+
ItemsRequest,
|
|
66
|
+
SuccessResponseItems,
|
|
67
|
+
)
|
|
56
68
|
from cognite_toolkit._cdf_tk.utils.producer_worker import ProducerWorkerExecutor
|
|
69
|
+
from cognite_toolkit._cdf_tk.utils.useful_types import JsonVal
|
|
57
70
|
from cognite_toolkit._cdf_tk.utils.validate_access import ValidateAccess
|
|
58
71
|
|
|
59
72
|
from ._base import ToolkitCommand
|
|
60
73
|
|
|
61
74
|
|
|
75
|
+
@dataclass
|
|
76
|
+
class DeleteResults:
|
|
77
|
+
deleted: int = 0
|
|
78
|
+
failed: int = 0
|
|
79
|
+
|
|
80
|
+
|
|
81
|
+
@dataclass
|
|
82
|
+
class DeleteItem:
|
|
83
|
+
item: JsonVal
|
|
84
|
+
as_id_fun: Callable[[JsonVal], Hashable]
|
|
85
|
+
|
|
86
|
+
def dump(self) -> JsonVal:
|
|
87
|
+
return self.item
|
|
88
|
+
|
|
89
|
+
def as_id(self) -> Hashable:
|
|
90
|
+
return self.as_id_fun(self.item)
|
|
91
|
+
|
|
92
|
+
|
|
93
|
+
@dataclass
|
|
94
|
+
class ToDelete(ABC):
|
|
95
|
+
crud: ResourceCRUD
|
|
96
|
+
total: int
|
|
97
|
+
delete_url: str
|
|
98
|
+
|
|
99
|
+
@property
|
|
100
|
+
def display_name(self) -> str:
|
|
101
|
+
return self.crud.display_name
|
|
102
|
+
|
|
103
|
+
@abstractmethod
|
|
104
|
+
def get_process_function(
|
|
105
|
+
self, client: ToolkitClient, console: Console, verbose: bool, process_results: ResourceDeployResult
|
|
106
|
+
) -> Callable[[list[ResourceResponseProtocol]], list[JsonVal]]:
|
|
107
|
+
raise NotImplementedError()
|
|
108
|
+
|
|
109
|
+
def get_extra_fields(self) -> dict[str, JsonVal]:
|
|
110
|
+
return {}
|
|
111
|
+
|
|
112
|
+
|
|
113
|
+
@dataclass
|
|
114
|
+
class DataModelingToDelete(ToDelete):
|
|
115
|
+
def get_process_function(
|
|
116
|
+
self, client: ToolkitClient, console: Console, verbose: bool, process_results: ResourceDeployResult
|
|
117
|
+
) -> Callable[[list[ResourceResponseProtocol]], list[JsonVal]]:
|
|
118
|
+
def as_id(chunk: list[ResourceResponseProtocol]) -> list[JsonVal]:
|
|
119
|
+
# We know that all data modeling resources implement as_id
|
|
120
|
+
return [item.as_id().dump(include_type=False) for item in chunk] # type: ignore[attr-defined]
|
|
121
|
+
|
|
122
|
+
return as_id
|
|
123
|
+
|
|
124
|
+
|
|
125
|
+
@dataclass
|
|
126
|
+
class EdgeToDelete(ToDelete):
|
|
127
|
+
def get_process_function(
|
|
128
|
+
self, client: ToolkitClient, console: Console, verbose: bool, process_results: ResourceDeployResult
|
|
129
|
+
) -> Callable[[list[ResourceResponseProtocol]], list[JsonVal]]:
|
|
130
|
+
def as_id(chunk: list[ResourceResponseProtocol]) -> list[JsonVal]:
|
|
131
|
+
return [
|
|
132
|
+
{"space": item.space, "externalId": item.external_id, "instanceType": "edge"}
|
|
133
|
+
for item in cast(list[Edge], chunk)
|
|
134
|
+
]
|
|
135
|
+
|
|
136
|
+
return as_id
|
|
137
|
+
|
|
138
|
+
|
|
139
|
+
@dataclass
|
|
140
|
+
class NodesToDelete(ToDelete):
|
|
141
|
+
delete_datapoints: bool
|
|
142
|
+
delete_file_content: bool
|
|
143
|
+
|
|
144
|
+
def get_process_function(
|
|
145
|
+
self, client: ToolkitClient, console: Console, verbose: bool, process_results: ResourceDeployResult
|
|
146
|
+
) -> Callable[[list[ResourceResponseProtocol]], list[JsonVal]]:
|
|
147
|
+
def check_for_data(chunk: list[ResourceResponseProtocol]) -> list[JsonVal]:
|
|
148
|
+
# We know that all node resources implement as_id
|
|
149
|
+
node_ids = [item.as_id() for item in chunk] # type: ignore[attr-defined]
|
|
150
|
+
found_ids: set[InstanceId] = set()
|
|
151
|
+
if not self.delete_datapoints:
|
|
152
|
+
timeseries = client.time_series.retrieve_multiple(instance_ids=node_ids, ignore_unknown_ids=True)
|
|
153
|
+
found_ids |= {ts.instance_id for ts in timeseries if ts.instance_id is not None}
|
|
154
|
+
if not self.delete_file_content:
|
|
155
|
+
files = client.files.retrieve_multiple(instance_ids=node_ids, ignore_unknown_ids=True)
|
|
156
|
+
found_ids |= {f.instance_id for f in files if f.instance_id is not None}
|
|
157
|
+
if found_ids and verbose:
|
|
158
|
+
console.print(f"Skipping {found_ids} nodes as they have datapoints or file content")
|
|
159
|
+
process_results.unchanged += len(found_ids)
|
|
160
|
+
result: list[JsonVal] = []
|
|
161
|
+
for node_id in (n for n in node_ids if n not in found_ids):
|
|
162
|
+
dumped = node_id.dump(include_instance_type=True)
|
|
163
|
+
# The delete endpoint expects "instanceType" instead of "type"
|
|
164
|
+
dumped["instanceType"] = dumped.pop("type")
|
|
165
|
+
result.append(dumped)
|
|
166
|
+
return result
|
|
167
|
+
|
|
168
|
+
return check_for_data
|
|
169
|
+
|
|
170
|
+
|
|
171
|
+
@dataclass
|
|
172
|
+
class IdResourceToDelete(ToDelete):
|
|
173
|
+
def get_process_function(
|
|
174
|
+
self, client: ToolkitClient, console: Console, verbose: bool, process_results: ResourceDeployResult
|
|
175
|
+
) -> Callable[[list[ResourceResponseProtocol]], list[JsonVal]]:
|
|
176
|
+
def as_id(chunk: list[ResourceResponseProtocol]) -> list[JsonVal]:
|
|
177
|
+
# We know that all id resources have an id attribute
|
|
178
|
+
return [{"id": item.id} for item in chunk] # type: ignore[attr-defined]
|
|
179
|
+
|
|
180
|
+
return as_id
|
|
181
|
+
|
|
182
|
+
|
|
183
|
+
@dataclass
|
|
184
|
+
class ExternalIdToDelete(ToDelete):
|
|
185
|
+
def get_process_function(
|
|
186
|
+
self, client: ToolkitClient, console: Console, verbose: bool, process_results: ResourceDeployResult
|
|
187
|
+
) -> Callable[[list[ResourceResponseProtocol]], list[JsonVal]]:
|
|
188
|
+
def as_external_id(chunk: list[ResourceResponseProtocol]) -> list[JsonVal]:
|
|
189
|
+
# We know that all external id resources have an external_id attribute
|
|
190
|
+
return [{"externalId": item.external_id} for item in chunk] # type: ignore[attr-defined]
|
|
191
|
+
|
|
192
|
+
return as_external_id
|
|
193
|
+
|
|
194
|
+
|
|
195
|
+
@dataclass
|
|
196
|
+
class AssetToDelete(IdResourceToDelete):
|
|
197
|
+
recursive: bool
|
|
198
|
+
|
|
199
|
+
def get_extra_fields(self) -> dict[str, JsonVal]:
|
|
200
|
+
return {"recursive": self.recursive}
|
|
201
|
+
|
|
202
|
+
|
|
62
203
|
class PurgeCommand(ToolkitCommand):
|
|
204
|
+
BATCH_SIZE_DM = 1000
|
|
205
|
+
|
|
63
206
|
def space(
|
|
64
207
|
self,
|
|
65
208
|
client: ToolkitClient,
|
|
66
|
-
|
|
209
|
+
selected_space: str,
|
|
67
210
|
include_space: bool = False,
|
|
211
|
+
delete_datapoints: bool = False,
|
|
212
|
+
delete_file_content: bool = False,
|
|
68
213
|
dry_run: bool = False,
|
|
69
214
|
auto_yes: bool = False,
|
|
70
215
|
verbose: bool = False,
|
|
71
|
-
) ->
|
|
72
|
-
|
|
73
|
-
selected_space = self._get_selected_space(space, client)
|
|
74
|
-
if space is None:
|
|
75
|
-
# Interactive mode
|
|
76
|
-
include_space = questionary.confirm("Do you also want to delete the space itself?", default=False).ask()
|
|
77
|
-
dry_run = questionary.confirm("Dry run?", default=True).ask()
|
|
216
|
+
) -> DeployResults:
|
|
217
|
+
# Warning Messages
|
|
78
218
|
if not dry_run:
|
|
79
219
|
self._print_panel("space", selected_space)
|
|
80
|
-
if not auto_yes:
|
|
81
|
-
confirm = questionary.confirm(
|
|
82
|
-
f"Are you really sure you want to purge the {selected_space!r} space?", default=False
|
|
83
|
-
).ask()
|
|
84
|
-
if not confirm:
|
|
85
|
-
return
|
|
86
|
-
|
|
87
|
-
loaders = self._get_dependencies(
|
|
88
|
-
SpaceLoader,
|
|
89
|
-
exclude={
|
|
90
|
-
GraphQLLoader,
|
|
91
|
-
GroupResourceScopedLoader,
|
|
92
|
-
LocationFilterLoader,
|
|
93
|
-
TransformationLoader,
|
|
94
|
-
CogniteFileLoader,
|
|
95
|
-
},
|
|
96
|
-
)
|
|
97
|
-
is_purged = self._purge(client, loaders, selected_space, dry_run=dry_run, verbose=verbose)
|
|
98
|
-
if include_space and is_purged:
|
|
99
|
-
space_loader = SpaceLoader.create_loader(client)
|
|
100
|
-
if dry_run:
|
|
101
|
-
print(f"Would delete space {selected_space}")
|
|
102
|
-
else:
|
|
103
|
-
try:
|
|
104
|
-
space_loader.delete([selected_space])
|
|
105
|
-
print(f"Space {selected_space} deleted")
|
|
106
|
-
except CogniteAPIError as e:
|
|
107
|
-
self.warn(HighSeverityWarning(f"Failed to delete space {selected_space!r}: {e}"))
|
|
108
|
-
elif include_space:
|
|
109
|
-
self.warn(HighSeverityWarning(f"Space {selected_space!r} was not deleted due to errors during the purge"))
|
|
110
|
-
|
|
111
|
-
if not dry_run and is_purged:
|
|
112
|
-
print(f"Purge space {selected_space!r} completed.")
|
|
113
|
-
elif not dry_run:
|
|
114
|
-
print(f"Purge space {selected_space!r} partly completed. See warnings for details.")
|
|
115
220
|
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
221
|
+
if not dry_run and not auto_yes:
|
|
222
|
+
confirm = questionary.confirm(
|
|
223
|
+
f"Are you really sure you want to purge the {selected_space!r} space?", default=False
|
|
224
|
+
).ask()
|
|
225
|
+
if not confirm:
|
|
226
|
+
return DeployResults([], "purge", dry_run=dry_run)
|
|
227
|
+
|
|
228
|
+
stats = client.data_modeling.statistics.spaces.retrieve(selected_space)
|
|
229
|
+
if stats is None:
|
|
230
|
+
raise ToolkitMissingResourceError(f"Space {selected_space!r} does not exist")
|
|
231
|
+
|
|
232
|
+
# ValidateAuth
|
|
233
|
+
validator = ValidateAccess(client, "purge")
|
|
234
|
+
if include_space or (stats.containers + stats.views + stats.data_models) > 0:
|
|
235
|
+
# We check for write even in dry-run mode. This is because dry-run is expected to fail
|
|
236
|
+
# if the user cannot perform the purge.
|
|
237
|
+
validator.data_model(["read", "write"], spaces={selected_space})
|
|
238
|
+
if (stats.nodes + stats.edges) > 0:
|
|
239
|
+
validator.instances(["read", "write"], spaces={selected_space})
|
|
240
|
+
|
|
241
|
+
to_delete = self._create_to_delete_list_purge_space(client, delete_datapoints, delete_file_content, stats)
|
|
242
|
+
if dry_run:
|
|
243
|
+
results = DeployResults([], "purge", dry_run=True)
|
|
244
|
+
for item in to_delete:
|
|
245
|
+
results[item.display_name] = ResourceDeployResult(item.display_name, deleted=item.total)
|
|
246
|
+
if include_space:
|
|
247
|
+
space_loader = SpaceCRUD.create_loader(client)
|
|
248
|
+
results[space_loader.display_name] = ResourceDeployResult(space_loader.display_name, deleted=1)
|
|
249
|
+
else:
|
|
250
|
+
results = self._delete_resources(to_delete, client, verbose, selected_space, None)
|
|
251
|
+
if include_space:
|
|
252
|
+
self._delete_space(client, selected_space, results)
|
|
253
|
+
print(results.counts_table(exclude_columns={"Created", "Changed", "Total"}))
|
|
254
|
+
return results
|
|
125
255
|
|
|
126
256
|
@staticmethod
|
|
127
|
-
def
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
)
|
|
257
|
+
def _create_to_delete_list_purge_space(
|
|
258
|
+
client: ToolkitClient, delete_datapoints: bool, delete_file_content: bool, stats: SpaceStatistics
|
|
259
|
+
) -> list[ToDelete]:
|
|
260
|
+
config = client.config
|
|
261
|
+
to_delete = [
|
|
262
|
+
EdgeToDelete(
|
|
263
|
+
EdgeCRUD.create_loader(client), stats.edges, config.create_api_url("/models/instances/delete")
|
|
264
|
+
),
|
|
265
|
+
NodesToDelete(
|
|
266
|
+
NodeCRUD.create_loader(client),
|
|
267
|
+
stats.nodes,
|
|
268
|
+
config.create_api_url(
|
|
269
|
+
"/models/instances/delete",
|
|
270
|
+
),
|
|
271
|
+
delete_datapoints=delete_datapoints,
|
|
272
|
+
delete_file_content=delete_file_content,
|
|
273
|
+
),
|
|
274
|
+
DataModelingToDelete(
|
|
275
|
+
DataModelCRUD.create_loader(client),
|
|
276
|
+
stats.data_models,
|
|
277
|
+
config.create_api_url("/models/datamodels/delete"),
|
|
278
|
+
),
|
|
279
|
+
DataModelingToDelete(
|
|
280
|
+
ViewCRUD.create_loader(client), stats.views, config.create_api_url("/models/views/delete")
|
|
281
|
+
),
|
|
282
|
+
DataModelingToDelete(
|
|
283
|
+
ContainerCRUD.create_loader(client),
|
|
284
|
+
stats.containers,
|
|
285
|
+
config.create_api_url("/models/containers/delete"),
|
|
286
|
+
),
|
|
287
|
+
]
|
|
288
|
+
return to_delete
|
|
289
|
+
|
|
290
|
+
def _delete_space(self, client: ToolkitClient, selected_space: str, results: DeployResults) -> None:
|
|
291
|
+
space_loader = SpaceCRUD.create_loader(client)
|
|
292
|
+
try:
|
|
293
|
+
space_loader.delete([selected_space])
|
|
294
|
+
print(f"Space {selected_space} deleted")
|
|
295
|
+
except CogniteAPIError as e:
|
|
296
|
+
self.warn(HighSeverityWarning(f"Failed to delete space {selected_space!r}: {e}"))
|
|
135
297
|
else:
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
298
|
+
results[space_loader.display_name] = ResourceDeployResult(space_loader.display_name, deleted=1)
|
|
299
|
+
|
|
300
|
+
def _delete_resources(
|
|
301
|
+
self,
|
|
302
|
+
to_delete: list[ToDelete],
|
|
303
|
+
client: ToolkitClient,
|
|
304
|
+
verbose: bool,
|
|
305
|
+
space: str | None,
|
|
306
|
+
data_set_external_id: str | None,
|
|
307
|
+
) -> DeployResults:
|
|
308
|
+
results = DeployResults([], "purge", dry_run=False)
|
|
309
|
+
console = Console()
|
|
310
|
+
with HTTPClient(client.config, max_retries=10) as delete_client:
|
|
311
|
+
for item in to_delete:
|
|
312
|
+
if item.total == 0:
|
|
313
|
+
results[item.display_name] = ResourceDeployResult(item.display_name, deleted=0)
|
|
314
|
+
continue
|
|
315
|
+
# Two results objects since they are updated concurrently
|
|
316
|
+
process_results = ResourceDeployResult(item.display_name)
|
|
317
|
+
write_results = ResourceDeployResult(item.display_name)
|
|
318
|
+
iteration_count: int | None = None
|
|
319
|
+
if item.total > 0:
|
|
320
|
+
iteration_count = item.total // self.BATCH_SIZE_DM + (
|
|
321
|
+
1 if item.total % self.BATCH_SIZE_DM > 0 else 0
|
|
322
|
+
)
|
|
323
|
+
executor = ProducerWorkerExecutor[list[ResourceResponseProtocol], list[JsonVal]](
|
|
324
|
+
download_iterable=self._iterate_batch(
|
|
325
|
+
item.crud, space, data_set_external_id, batch_size=self.BATCH_SIZE_DM
|
|
326
|
+
),
|
|
327
|
+
process=item.get_process_function(client, console, verbose, process_results),
|
|
328
|
+
write=self._purge_batch(item, item.delete_url, delete_client, write_results),
|
|
329
|
+
max_queue_size=10,
|
|
330
|
+
iteration_count=iteration_count,
|
|
331
|
+
download_description=f"Downloading {item.display_name}",
|
|
332
|
+
process_description=f"Preparing {item.display_name} for deletion",
|
|
333
|
+
write_description=f"Deleting {item.display_name}",
|
|
334
|
+
console=console,
|
|
335
|
+
)
|
|
336
|
+
executor.run()
|
|
337
|
+
write_results += process_results
|
|
338
|
+
results[item.display_name] = write_results
|
|
339
|
+
if executor.error_occurred:
|
|
340
|
+
if verbose and executor.error_traceback:
|
|
341
|
+
executor.print_traceback()
|
|
342
|
+
self.warn(
|
|
343
|
+
HighSeverityWarning(f"Failed to delete all {item.display_name}. {executor.error_message}")
|
|
344
|
+
)
|
|
345
|
+
return results
|
|
346
|
+
|
|
347
|
+
@staticmethod
|
|
348
|
+
def _iterate_batch(
|
|
349
|
+
crud: ResourceCRUD, selected_space: str | None, data_set_external_id: str | None, batch_size: int
|
|
350
|
+
) -> Iterable[list[ResourceResponseProtocol]]:
|
|
351
|
+
batch: list[ResourceResponseProtocol] = []
|
|
352
|
+
for resource in crud.iterate(space=selected_space, data_set_external_id=data_set_external_id):
|
|
353
|
+
batch.append(resource)
|
|
354
|
+
if len(batch) >= batch_size:
|
|
355
|
+
yield batch
|
|
356
|
+
batch = []
|
|
357
|
+
if batch:
|
|
358
|
+
yield batch
|
|
359
|
+
|
|
360
|
+
@staticmethod
|
|
361
|
+
def _purge_batch(
|
|
362
|
+
delete_item: ToDelete, delete_url: str, delete_client: HTTPClient, result: ResourceDeployResult
|
|
363
|
+
) -> Callable[[list[JsonVal]], None]:
|
|
364
|
+
crud = delete_item.crud
|
|
365
|
+
|
|
366
|
+
def as_id(item: JsonVal) -> Hashable:
|
|
367
|
+
try:
|
|
368
|
+
return crud.get_id(item)
|
|
369
|
+
except KeyError:
|
|
370
|
+
# Fallback to internal ID
|
|
371
|
+
return crud.get_internal_id(item)
|
|
372
|
+
|
|
373
|
+
def process(items: list[JsonVal]) -> None:
|
|
374
|
+
responses = delete_client.request_with_retries(
|
|
375
|
+
ItemsRequest(
|
|
376
|
+
endpoint_url=delete_url,
|
|
377
|
+
method="POST",
|
|
378
|
+
items=[DeleteItem(item=item, as_id_fun=as_id) for item in items],
|
|
379
|
+
extra_body_fields=delete_item.get_extra_fields(),
|
|
380
|
+
)
|
|
381
|
+
)
|
|
382
|
+
for response in responses:
|
|
383
|
+
if isinstance(response, SuccessResponseItems):
|
|
384
|
+
result.deleted += len(response.ids)
|
|
385
|
+
else:
|
|
386
|
+
result.unchanged += len(items)
|
|
140
387
|
|
|
141
|
-
|
|
142
|
-
raise ToolkitValueError("No space selected")
|
|
143
|
-
return selected_space
|
|
388
|
+
return process
|
|
144
389
|
|
|
145
390
|
def dataset(
|
|
146
391
|
self,
|
|
147
392
|
client: ToolkitClient,
|
|
148
|
-
|
|
149
|
-
|
|
393
|
+
selected_data_set_external_id: str,
|
|
394
|
+
archive_dataset: bool = False,
|
|
395
|
+
include_data: bool = True,
|
|
396
|
+
include_configurations: bool = False,
|
|
397
|
+
asset_recursive: bool = False,
|
|
150
398
|
dry_run: bool = False,
|
|
151
399
|
auto_yes: bool = False,
|
|
152
400
|
verbose: bool = False,
|
|
153
|
-
) ->
|
|
154
|
-
"""Purge a dataset and all its content
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
401
|
+
) -> DeployResults:
|
|
402
|
+
"""Purge a dataset and all its content
|
|
403
|
+
|
|
404
|
+
Args:
|
|
405
|
+
client: The ToolkitClient to use
|
|
406
|
+
selected_data_set_external_id: The external ID of the dataset to purge
|
|
407
|
+
archive_dataset: Whether to archive the dataset itself after the purge
|
|
408
|
+
include_data: Whether to include data (assets, events, time series, files, sequences, 3D models, relationships, labels) in the purge
|
|
409
|
+
include_configurations: Whether to include configurations (workflows, transformations, extraction pipelines) in the purge
|
|
410
|
+
asset_recursive: Whether to recursively delete assets.
|
|
411
|
+
dry_run: Whether to perform a dry run
|
|
412
|
+
auto_yes: Whether to automatically confirm the purge
|
|
413
|
+
verbose: Whether to print verbose output
|
|
414
|
+
|
|
415
|
+
Returns:
|
|
416
|
+
DeployResults: The results of the purge operation
|
|
417
|
+
|
|
418
|
+
"""
|
|
419
|
+
# Warning Messages
|
|
162
420
|
if not dry_run:
|
|
163
|
-
self._print_panel("
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
421
|
+
self._print_panel("dataSet", selected_data_set_external_id)
|
|
422
|
+
if not dry_run and not auto_yes:
|
|
423
|
+
confirm = questionary.confirm(
|
|
424
|
+
f"Are you really sure you want to purge the {selected_data_set_external_id!r} dataSet?", default=False
|
|
425
|
+
).ask()
|
|
426
|
+
if not confirm:
|
|
427
|
+
return DeployResults([], "purge", dry_run=dry_run)
|
|
428
|
+
|
|
429
|
+
# Validate Auth
|
|
430
|
+
validator = ValidateAccess(client, "purge")
|
|
431
|
+
data_set_id = client.lookup.data_sets.id(selected_data_set_external_id)
|
|
432
|
+
if data_set_id is None:
|
|
433
|
+
raise ToolkitMissingResourceError(f"DataSet {selected_data_set_external_id!r} does not exist")
|
|
434
|
+
action = cast(Sequence[Literal["read", "write"]], ["read"] if dry_run else ["read", "write"])
|
|
435
|
+
if include_data:
|
|
436
|
+
# Check asset, events, time series, files, and sequences access, relationships, labels, 3D access.
|
|
437
|
+
validator.dataset_data(action, dataset_ids={data_set_id})
|
|
438
|
+
if include_configurations:
|
|
439
|
+
# Check workflow, transformations, extraction pipeline access
|
|
440
|
+
validator.dataset_configurations(action, dataset_ids={data_set_id})
|
|
441
|
+
|
|
442
|
+
to_delete: list[ToDelete] = self._create_to_delete_list_purge_dataset(
|
|
443
|
+
client,
|
|
444
|
+
include_data,
|
|
445
|
+
include_configurations,
|
|
446
|
+
selected_data_set_external_id,
|
|
447
|
+
asset_recursive,
|
|
182
448
|
)
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
)
|
|
194
|
-
client.data_sets.update(archived)
|
|
195
|
-
print(f"DataSet {selected_dataset} archived")
|
|
196
|
-
elif include_dataset:
|
|
197
|
-
self.warn(
|
|
198
|
-
HighSeverityWarning(f"DataSet {selected_dataset} was not archived due to errors during the purge")
|
|
199
|
-
)
|
|
449
|
+
if dry_run:
|
|
450
|
+
results = DeployResults([], "purge", dry_run=True)
|
|
451
|
+
for item in to_delete:
|
|
452
|
+
results[item.display_name] = ResourceDeployResult(item.display_name, deleted=item.total)
|
|
453
|
+
else:
|
|
454
|
+
results = self._delete_resources(to_delete, client, verbose, None, selected_data_set_external_id)
|
|
455
|
+
print(results.counts_table(exclude_columns={"Created", "Changed", "Total"}))
|
|
456
|
+
if archive_dataset and not dry_run:
|
|
457
|
+
self._archive_dataset(client, selected_data_set_external_id)
|
|
458
|
+
return results
|
|
200
459
|
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
460
|
+
@staticmethod
|
|
461
|
+
def _archive_dataset(client: ToolkitClient, data_set: str) -> None:
|
|
462
|
+
archived = (
|
|
463
|
+
DataSetUpdate(external_id=data_set)
|
|
464
|
+
.external_id.set(str(uuid.uuid4()))
|
|
465
|
+
.metadata.add({"archived": "true"})
|
|
466
|
+
.write_protected.set(True)
|
|
467
|
+
)
|
|
468
|
+
client.data_sets.update(archived)
|
|
469
|
+
print(f"DataSet {data_set} archived")
|
|
470
|
+
|
|
471
|
+
@staticmethod
|
|
472
|
+
def _create_to_delete_list_purge_dataset(
|
|
473
|
+
client: ToolkitClient,
|
|
474
|
+
include_data: bool,
|
|
475
|
+
include_configurations: bool,
|
|
476
|
+
data_set_external_id: str,
|
|
477
|
+
asset_recursive: bool,
|
|
478
|
+
) -> list[ToDelete]:
|
|
479
|
+
config = client.config
|
|
480
|
+
to_delete: list[ToDelete] = []
|
|
481
|
+
|
|
482
|
+
if include_data:
|
|
483
|
+
three_d_crud = ThreeDModelCRUD.create_loader(client)
|
|
484
|
+
to_delete.extend(
|
|
485
|
+
[
|
|
486
|
+
ExternalIdToDelete(
|
|
487
|
+
RelationshipCRUD.create_loader(client),
|
|
488
|
+
RelationshipAggregator(client).count(data_set_external_id=data_set_external_id),
|
|
489
|
+
config.create_api_url("/relationships/delete"),
|
|
490
|
+
),
|
|
491
|
+
IdResourceToDelete(
|
|
492
|
+
EventCRUD.create_loader(client),
|
|
493
|
+
EventAggregator(client).count(data_set_external_id=data_set_external_id),
|
|
494
|
+
config.create_api_url("/events/delete"),
|
|
495
|
+
),
|
|
496
|
+
IdResourceToDelete(
|
|
497
|
+
FileMetadataCRUD.create_loader(client),
|
|
498
|
+
FileAggregator(client).count(data_set_external_id=data_set_external_id),
|
|
499
|
+
config.create_api_url("/files/delete"),
|
|
500
|
+
),
|
|
501
|
+
IdResourceToDelete(
|
|
502
|
+
TimeSeriesCRUD.create_loader(client),
|
|
503
|
+
TimeSeriesAggregator(client).count(data_set_external_id=data_set_external_id),
|
|
504
|
+
config.create_api_url("/timeseries/delete"),
|
|
505
|
+
),
|
|
506
|
+
IdResourceToDelete(
|
|
507
|
+
SequenceCRUD.create_loader(client),
|
|
508
|
+
SequenceAggregator(client).count(data_set_external_id=data_set_external_id),
|
|
509
|
+
config.create_api_url("/sequences/delete"),
|
|
510
|
+
),
|
|
511
|
+
IdResourceToDelete(
|
|
512
|
+
three_d_crud,
|
|
513
|
+
sum(1 for _ in three_d_crud.iterate(data_set_external_id=data_set_external_id)),
|
|
514
|
+
config.create_api_url("/3d/models/delete"),
|
|
515
|
+
),
|
|
516
|
+
AssetToDelete(
|
|
517
|
+
AssetCRUD.create_loader(client),
|
|
518
|
+
AssetAggregator(client).count(data_set_external_id=data_set_external_id),
|
|
519
|
+
config.create_api_url("/assets/delete"),
|
|
520
|
+
recursive=asset_recursive,
|
|
521
|
+
),
|
|
522
|
+
ExternalIdToDelete(
|
|
523
|
+
LabelCRUD.create_loader(client),
|
|
524
|
+
LabelCountAggregator(client).count(data_set_external_id=data_set_external_id),
|
|
525
|
+
config.create_api_url("/labels/delete"),
|
|
526
|
+
),
|
|
527
|
+
]
|
|
528
|
+
)
|
|
529
|
+
if include_configurations:
|
|
530
|
+
transformation_crud = TransformationCRUD.create_loader(client)
|
|
531
|
+
workflow_crud = WorkflowCRUD.create_loader(client)
|
|
532
|
+
extraction_pipeline_crud = ExtractionPipelineCRUD.create_loader(client)
|
|
533
|
+
|
|
534
|
+
to_delete.extend(
|
|
535
|
+
[
|
|
536
|
+
IdResourceToDelete(
|
|
537
|
+
transformation_crud,
|
|
538
|
+
sum(1 for _ in transformation_crud.iterate(data_set_external_id=data_set_external_id)),
|
|
539
|
+
config.create_api_url("/transformations/delete"),
|
|
540
|
+
),
|
|
541
|
+
ExternalIdToDelete(
|
|
542
|
+
workflow_crud,
|
|
543
|
+
sum(1 for _ in workflow_crud.iterate(data_set_external_id=data_set_external_id)),
|
|
544
|
+
config.create_api_url("/workflows/delete"),
|
|
545
|
+
),
|
|
546
|
+
IdResourceToDelete(
|
|
547
|
+
extraction_pipeline_crud,
|
|
548
|
+
sum(1 for _ in extraction_pipeline_crud.iterate(data_set_external_id=data_set_external_id)),
|
|
549
|
+
config.create_api_url("/extpipes/delete"),
|
|
550
|
+
),
|
|
551
|
+
]
|
|
552
|
+
)
|
|
553
|
+
return to_delete
|
|
205
554
|
|
|
206
|
-
|
|
555
|
+
@staticmethod
|
|
556
|
+
def _print_panel(resource_type: str, resource: str) -> None:
|
|
207
557
|
print(
|
|
208
558
|
Panel(
|
|
209
559
|
f"[red]WARNING:[/red] This operation [bold]cannot be undone[/bold]! "
|
|
@@ -216,565 +566,173 @@ class PurgeCommand(ToolkitCommand):
|
|
|
216
566
|
)
|
|
217
567
|
)
|
|
218
568
|
|
|
219
|
-
@staticmethod
|
|
220
|
-
def _get_selected_dataset(external_id: str | None, client: ToolkitClient) -> str:
|
|
221
|
-
if external_id is None:
|
|
222
|
-
datasets = client.data_sets.list(limit=-1)
|
|
223
|
-
selected_dataset: str = questionary.select(
|
|
224
|
-
"Which space are you going to purge (delete all resources in dataset)?",
|
|
225
|
-
sorted([dataset.external_id for dataset in datasets if dataset.external_id]),
|
|
226
|
-
).ask()
|
|
227
|
-
else:
|
|
228
|
-
retrieved = client.data_sets.retrieve(external_id=external_id)
|
|
229
|
-
if retrieved is None:
|
|
230
|
-
raise ToolkitMissingResourceError(f"DataSet {external_id!r} does not exist")
|
|
231
|
-
selected_dataset = external_id
|
|
232
|
-
|
|
233
|
-
if selected_dataset is None:
|
|
234
|
-
raise ToolkitValueError("No space selected")
|
|
235
|
-
return selected_dataset
|
|
236
|
-
|
|
237
|
-
def _purge(
|
|
238
|
-
self,
|
|
239
|
-
client: ToolkitClient,
|
|
240
|
-
loaders: dict[type[ResourceLoader], frozenset[type[ResourceLoader]]],
|
|
241
|
-
selected_space: str | None = None,
|
|
242
|
-
selected_data_set: str | None = None,
|
|
243
|
-
dry_run: bool = False,
|
|
244
|
-
verbose: bool = False,
|
|
245
|
-
batch_size: int = 1000,
|
|
246
|
-
) -> bool:
|
|
247
|
-
is_purged = True
|
|
248
|
-
results = DeployResults([], "purge", dry_run=dry_run)
|
|
249
|
-
loader_cls: type[ResourceLoader]
|
|
250
|
-
has_purged_views = False
|
|
251
|
-
with Console().status("...", spinner="aesthetic", speed=0.4) as status:
|
|
252
|
-
for loader_cls in reversed(list(TopologicalSorter(loaders).static_order())):
|
|
253
|
-
if loader_cls not in loaders:
|
|
254
|
-
# Dependency that is included
|
|
255
|
-
continue
|
|
256
|
-
loader = loader_cls.create_loader(client, console=status.console)
|
|
257
|
-
status_prefix = "Would have deleted" if dry_run else "Deleted"
|
|
258
|
-
if isinstance(loader, ViewLoader) and not dry_run:
|
|
259
|
-
status_prefix = "Expected deleted" # Views are not always deleted immediately
|
|
260
|
-
has_purged_views = True
|
|
261
|
-
|
|
262
|
-
if not dry_run and isinstance(loader, NodeLoader):
|
|
263
|
-
# Special handling of nodes as node type must be deleted after regular nodes
|
|
264
|
-
# In dry-run mode, we are not deleting the nodes, so we can skip this.
|
|
265
|
-
warnings_before = len(self.warning_list)
|
|
266
|
-
deleted_nodes = self._purge_nodes(loader, status, selected_space, verbose)
|
|
267
|
-
results[loader.display_name] = ResourceDeployResult(
|
|
268
|
-
name=loader.display_name,
|
|
269
|
-
deleted=deleted_nodes,
|
|
270
|
-
total=deleted_nodes,
|
|
271
|
-
)
|
|
272
|
-
if len(self.warning_list) > warnings_before and any(
|
|
273
|
-
isinstance(warn, HighSeverityWarning) for warn in self.warning_list[warnings_before:]
|
|
274
|
-
):
|
|
275
|
-
is_purged = False
|
|
276
|
-
continue
|
|
277
|
-
elif not dry_run and isinstance(loader, AssetLoader):
|
|
278
|
-
# Special handling of assets as we must ensure all children are deleted before the parent.
|
|
279
|
-
# In dry-run mode, we are not deleting the assets, so we can skip this.
|
|
280
|
-
deleted_assets = self._purge_assets(loader, status, selected_data_set)
|
|
281
|
-
results[loader.display_name] = ResourceDeployResult(
|
|
282
|
-
loader.display_name, deleted=deleted_assets, total=deleted_assets
|
|
283
|
-
)
|
|
284
|
-
continue
|
|
285
|
-
|
|
286
|
-
# Child loaders are, for example, WorkflowTriggerLoader, WorkflowVersionLoader for WorkflowLoader
|
|
287
|
-
# These must delete all resources that are connected to the resource that the loader is deleting
|
|
288
|
-
# Exclude loaders that we are already iterating over
|
|
289
|
-
child_loader_classes = self._get_dependencies(loader_cls, exclude=set(loaders))
|
|
290
|
-
child_loaders = [
|
|
291
|
-
child_loader.create_loader(client)
|
|
292
|
-
for child_loader in reversed(list(TopologicalSorter(child_loader_classes).static_order()))
|
|
293
|
-
# Necessary as the topological sort includes dependencies that are not in the loaders
|
|
294
|
-
if child_loader in child_loader_classes
|
|
295
|
-
]
|
|
296
|
-
count = 0
|
|
297
|
-
status.update(f"{status_prefix} {count:,} {loader.display_name}...")
|
|
298
|
-
batch_ids: list[Hashable] = []
|
|
299
|
-
for resource in loader.iterate(data_set_external_id=selected_data_set, space=selected_space):
|
|
300
|
-
try:
|
|
301
|
-
batch_ids.append(loader.get_id(resource))
|
|
302
|
-
except (ToolkitRequiredValueError, KeyError) as e:
|
|
303
|
-
try:
|
|
304
|
-
batch_ids.append(loader.get_internal_id(resource))
|
|
305
|
-
except (AttributeError, NotImplementedError):
|
|
306
|
-
self.warn(
|
|
307
|
-
HighSeverityWarning(
|
|
308
|
-
f"Cannot delete {type(resource).__name__}. Failed to obtain ID: {e}"
|
|
309
|
-
),
|
|
310
|
-
console=status.console,
|
|
311
|
-
)
|
|
312
|
-
is_purged = False
|
|
313
|
-
continue
|
|
314
|
-
|
|
315
|
-
if len(batch_ids) >= batch_size:
|
|
316
|
-
child_deletion = self._delete_children(
|
|
317
|
-
batch_ids, child_loaders, dry_run, status.console, verbose
|
|
318
|
-
)
|
|
319
|
-
batch_delete, batch_size = self._delete_batch(
|
|
320
|
-
batch_ids, dry_run, loader, batch_size, status.console, verbose
|
|
321
|
-
)
|
|
322
|
-
count += batch_delete
|
|
323
|
-
status.update(f"{status_prefix} {count:,} {loader.display_name}...")
|
|
324
|
-
batch_ids = []
|
|
325
|
-
# The DeployResults is overloaded such that the below accumulates the counts
|
|
326
|
-
for name, child_count in child_deletion.items():
|
|
327
|
-
results[name] = ResourceDeployResult(name, deleted=child_count, total=child_count)
|
|
328
|
-
|
|
329
|
-
if batch_ids:
|
|
330
|
-
child_deletion = self._delete_children(batch_ids, child_loaders, dry_run, status.console, verbose)
|
|
331
|
-
batch_delete, batch_size = self._delete_batch(
|
|
332
|
-
batch_ids, dry_run, loader, batch_size, status.console, verbose
|
|
333
|
-
)
|
|
334
|
-
count += batch_delete
|
|
335
|
-
status.update(f"{status_prefix} {count:,} {loader.display_name}...")
|
|
336
|
-
for name, child_count in child_deletion.items():
|
|
337
|
-
results[name] = ResourceDeployResult(name, deleted=child_count, total=child_count)
|
|
338
|
-
if count > 0:
|
|
339
|
-
status.console.print(f"{status_prefix} {count:,} {loader.display_name}.")
|
|
340
|
-
results[loader.display_name] = ResourceDeployResult(
|
|
341
|
-
name=loader.display_name,
|
|
342
|
-
deleted=count,
|
|
343
|
-
total=count,
|
|
344
|
-
)
|
|
345
|
-
print(results.counts_table(exclude_columns={"Created", "Changed", "Untouched", "Total"}))
|
|
346
|
-
if has_purged_views:
|
|
347
|
-
print("You might need to run the purge command multiple times to delete all views.")
|
|
348
|
-
return is_purged
|
|
349
|
-
|
|
350
|
-
def _delete_batch(
|
|
351
|
-
self,
|
|
352
|
-
batch_ids: list[Hashable],
|
|
353
|
-
dry_run: bool,
|
|
354
|
-
loader: ResourceLoader,
|
|
355
|
-
batch_size: int,
|
|
356
|
-
console: Console,
|
|
357
|
-
verbose: bool,
|
|
358
|
-
) -> tuple[int, int]:
|
|
359
|
-
if dry_run:
|
|
360
|
-
deleted = len(batch_ids)
|
|
361
|
-
else:
|
|
362
|
-
try:
|
|
363
|
-
deleted = loader.delete(batch_ids)
|
|
364
|
-
except CogniteAPIError as delete_error:
|
|
365
|
-
if (
|
|
366
|
-
delete_error.code == 408
|
|
367
|
-
and "timed out" in delete_error.message.casefold()
|
|
368
|
-
and batch_size > 1
|
|
369
|
-
and (len(batch_ids) > 1)
|
|
370
|
-
):
|
|
371
|
-
self.warn(
|
|
372
|
-
MediumSeverityWarning(
|
|
373
|
-
f"Timed out deleting {loader.display_name}. Trying again with a smaller batch size."
|
|
374
|
-
),
|
|
375
|
-
include_timestamp=True,
|
|
376
|
-
console=console,
|
|
377
|
-
)
|
|
378
|
-
new_batch_size = len(batch_ids) // 2
|
|
379
|
-
first = batch_ids[:new_batch_size]
|
|
380
|
-
second = batch_ids[new_batch_size:]
|
|
381
|
-
first_deleted, first_batch_size = self._delete_batch(
|
|
382
|
-
first, dry_run, loader, new_batch_size, console, verbose
|
|
383
|
-
)
|
|
384
|
-
second_deleted, second_batch_size = self._delete_batch(
|
|
385
|
-
second, dry_run, loader, new_batch_size, console, verbose
|
|
386
|
-
)
|
|
387
|
-
return first_deleted + second_deleted, min(first_batch_size, second_batch_size)
|
|
388
|
-
else:
|
|
389
|
-
raise delete_error
|
|
390
|
-
|
|
391
|
-
if verbose:
|
|
392
|
-
prefix = "Would delete" if dry_run else "Finished purging"
|
|
393
|
-
console.print(f"{prefix} {deleted:,} {loader.display_name}")
|
|
394
|
-
return deleted, batch_size
|
|
395
|
-
|
|
396
|
-
@staticmethod
|
|
397
|
-
def _delete_children(
|
|
398
|
-
parent_ids: list[Hashable], child_loaders: list[ResourceLoader], dry_run: bool, console: Console, verbose: bool
|
|
399
|
-
) -> dict[str, int]:
|
|
400
|
-
child_deletion: dict[str, int] = {}
|
|
401
|
-
for child_loader in child_loaders:
|
|
402
|
-
child_ids = set()
|
|
403
|
-
for child in child_loader.iterate(parent_ids=parent_ids):
|
|
404
|
-
child_ids.add(child_loader.get_id(child))
|
|
405
|
-
count = 0
|
|
406
|
-
if child_ids:
|
|
407
|
-
if dry_run:
|
|
408
|
-
count = len(child_ids)
|
|
409
|
-
else:
|
|
410
|
-
count = child_loader.delete(list(child_ids))
|
|
411
|
-
|
|
412
|
-
if verbose:
|
|
413
|
-
prefix = "Would delete" if dry_run else "Deleted"
|
|
414
|
-
console.print(f"{prefix} {count:,} {child_loader.display_name}")
|
|
415
|
-
child_deletion[child_loader.display_name] = count
|
|
416
|
-
return child_deletion
|
|
417
|
-
|
|
418
|
-
def _purge_nodes(
|
|
419
|
-
self,
|
|
420
|
-
loader: NodeLoader,
|
|
421
|
-
status: Status,
|
|
422
|
-
selected_space: str | None = None,
|
|
423
|
-
verbose: bool = False,
|
|
424
|
-
batch_size: int = 1000,
|
|
425
|
-
) -> int:
|
|
426
|
-
"""Special handling of nodes as we must ensure all node types are deleted last."""
|
|
427
|
-
# First find all Node Types
|
|
428
|
-
node_types: dict[NodeId, set[NodeId]] = {}
|
|
429
|
-
total_count = 0
|
|
430
|
-
for node in loader.iterate(space=selected_space):
|
|
431
|
-
if node.type and (selected_space is None or node.space == selected_space):
|
|
432
|
-
node_id = NodeId(node.type.space, node.type.external_id)
|
|
433
|
-
node_types[node_id] = set()
|
|
434
|
-
total_count += 1
|
|
435
|
-
status.update(f"Looking up node.type {total_count:,}...")
|
|
436
|
-
|
|
437
|
-
count = 0
|
|
438
|
-
batch_ids: list[NodeId] = []
|
|
439
|
-
for node in loader.iterate(space=selected_space):
|
|
440
|
-
node_id = node.as_id()
|
|
441
|
-
if node_id in node_types:
|
|
442
|
-
# Skip if it is a node type
|
|
443
|
-
continue
|
|
444
|
-
batch_ids.append(node_id)
|
|
445
|
-
if len(batch_ids) >= batch_size:
|
|
446
|
-
deleted, batch_size = self._delete_node_batch(batch_ids, loader, batch_size, status.console, verbose)
|
|
447
|
-
count += deleted
|
|
448
|
-
status.update(f"Deleted {count:,}/{total_count} {loader.display_name}...")
|
|
449
|
-
batch_ids = []
|
|
450
|
-
|
|
451
|
-
if batch_ids:
|
|
452
|
-
deleted, batch_size = self._delete_node_batch(batch_ids, loader, batch_size, status.console, verbose)
|
|
453
|
-
count += deleted
|
|
454
|
-
|
|
455
|
-
# Finally delete all node types, first do a lookup and topological sort to ensure deleting in the right order.
|
|
456
|
-
# Note this is an edge case, and is a result of some strange usage. But we need to handle it.
|
|
457
|
-
for node_type in loader.retrieve(list(node_types.keys())):
|
|
458
|
-
if node_type.type:
|
|
459
|
-
required = NodeId(node_type.type.space, node_type.type.external_id)
|
|
460
|
-
if required in node_types:
|
|
461
|
-
node_types[required].add(node_type.as_id())
|
|
462
|
-
|
|
463
|
-
try:
|
|
464
|
-
node_type_ids = list(TopologicalSorter(node_types).static_order())
|
|
465
|
-
except CycleError as e:
|
|
466
|
-
self.warn(
|
|
467
|
-
HighSeverityWarning(f"Failed to delete node-types: Cycle detected. {e.args}"), console=status.console
|
|
468
|
-
)
|
|
469
|
-
return count
|
|
470
|
-
|
|
471
|
-
deleted, batch_size = self._delete_node_batch(node_type_ids, loader, batch_size, status.console, verbose)
|
|
472
|
-
count += deleted
|
|
473
|
-
if count > 0:
|
|
474
|
-
status.console.print(f"Finished purging {loader.display_name}.")
|
|
475
|
-
return count
|
|
476
|
-
|
|
477
|
-
def _delete_node_batch(
|
|
478
|
-
self, batch_ids: list[NodeId], loader: NodeLoader, batch_size: int, console: Console, verbose: bool
|
|
479
|
-
) -> tuple[int, int]:
|
|
480
|
-
try:
|
|
481
|
-
deleted = loader.delete(batch_ids)
|
|
482
|
-
except CogniteAPIError as delete_error:
|
|
483
|
-
if (
|
|
484
|
-
delete_error.code == 400
|
|
485
|
-
and "Attempted to delete a node which is used as a type" in delete_error.message
|
|
486
|
-
):
|
|
487
|
-
# Fallback to delete one by one
|
|
488
|
-
deleted = 0
|
|
489
|
-
for node_id in batch_ids:
|
|
490
|
-
try:
|
|
491
|
-
loader.delete([node_id])
|
|
492
|
-
deleted += 1
|
|
493
|
-
except CogniteAPIError:
|
|
494
|
-
is_type = filters.Equals(["node", "type"], node_id.dump(include_instance_type=False))
|
|
495
|
-
instance_spaces = {node.space for node in loader.client.data_modeling.instances(filter=is_type)}
|
|
496
|
-
if instance_spaces:
|
|
497
|
-
suffix = (
|
|
498
|
-
"It is used as a node type in the following spaces, "
|
|
499
|
-
f"which must be purged first: {humanize_collection(instance_spaces)}"
|
|
500
|
-
)
|
|
501
|
-
else:
|
|
502
|
-
suffix = "It is used as a node type, but failed to find the spaces where it is used."
|
|
503
|
-
self.warn(HighSeverityWarning(f"Failed to delete {node_id!r}. {suffix}"), console=console)
|
|
504
|
-
elif (
|
|
505
|
-
delete_error.code == 408
|
|
506
|
-
and "timed out" in delete_error.message.casefold()
|
|
507
|
-
and batch_size > 1
|
|
508
|
-
and (len(batch_ids) > 1)
|
|
509
|
-
):
|
|
510
|
-
self.warn(
|
|
511
|
-
MediumSeverityWarning(
|
|
512
|
-
f"Timed out deleting {loader.display_name}. Trying again with a smaller batch size."
|
|
513
|
-
),
|
|
514
|
-
include_timestamp=True,
|
|
515
|
-
console=console,
|
|
516
|
-
)
|
|
517
|
-
new_batch_size = len(batch_ids) // 2
|
|
518
|
-
first = batch_ids[:new_batch_size]
|
|
519
|
-
second = batch_ids[new_batch_size:]
|
|
520
|
-
first_deleted, first_batch_size = self._delete_node_batch(
|
|
521
|
-
first, loader, new_batch_size, console, verbose
|
|
522
|
-
)
|
|
523
|
-
second_deleted, second_batch_size = self._delete_node_batch(
|
|
524
|
-
second, loader, new_batch_size, console, verbose
|
|
525
|
-
)
|
|
526
|
-
return first_deleted + second_deleted, min(first_batch_size, second_batch_size)
|
|
527
|
-
else:
|
|
528
|
-
raise delete_error
|
|
529
|
-
|
|
530
|
-
if verbose:
|
|
531
|
-
console.print(f"Deleted {deleted:,} {loader.display_name}")
|
|
532
|
-
return deleted, batch_size
|
|
533
|
-
|
|
534
|
-
def _purge_assets(
|
|
535
|
-
self,
|
|
536
|
-
loader: AssetLoader,
|
|
537
|
-
status: Status,
|
|
538
|
-
selected_data_set: str | None = None,
|
|
539
|
-
batch_size: int = 1000,
|
|
540
|
-
) -> int:
|
|
541
|
-
# Using sets to avoid duplicates
|
|
542
|
-
children_ids: set[int] = set()
|
|
543
|
-
parent_ids: set[int] = set()
|
|
544
|
-
is_first = True
|
|
545
|
-
last_failed = False
|
|
546
|
-
count = level = depth = last_parent_count = 0
|
|
547
|
-
total_asset_count: int | None = None
|
|
548
|
-
# Iterate through the asset hierarchy once per depth level. This is to delete all children before the parent.
|
|
549
|
-
while is_first or level < depth:
|
|
550
|
-
for asset in loader.iterate(data_set_external_id=selected_data_set):
|
|
551
|
-
aggregates = cast(AggregateResultItem, asset.aggregates)
|
|
552
|
-
if is_first and aggregates.depth is not None:
|
|
553
|
-
depth = max(depth, aggregates.depth)
|
|
554
|
-
|
|
555
|
-
if aggregates.child_count == 0:
|
|
556
|
-
children_ids.add(asset.id)
|
|
557
|
-
else:
|
|
558
|
-
parent_ids.add(asset.id)
|
|
559
|
-
|
|
560
|
-
if len(children_ids) >= batch_size:
|
|
561
|
-
count += loader.delete(list(children_ids))
|
|
562
|
-
if total_asset_count:
|
|
563
|
-
status.update(f"Deleted {count:,}/{total_asset_count:,} {loader.display_name}...")
|
|
564
|
-
else:
|
|
565
|
-
status.update(f"Deleted {count:,} {loader.display_name}...")
|
|
566
|
-
children_ids = set()
|
|
567
|
-
|
|
568
|
-
if is_first:
|
|
569
|
-
total_asset_count = count + len(parent_ids) + len(children_ids)
|
|
570
|
-
if children_ids:
|
|
571
|
-
count += loader.delete(list(children_ids))
|
|
572
|
-
status.update(f"Deleted {count:,}/{total_asset_count:,} {loader.display_name}...")
|
|
573
|
-
children_ids = set()
|
|
574
|
-
|
|
575
|
-
if len(parent_ids) == last_parent_count and last_failed:
|
|
576
|
-
try:
|
|
577
|
-
# Just try to delete them all at once
|
|
578
|
-
count += loader.delete(list(parent_ids))
|
|
579
|
-
except CogniteAPIError as e:
|
|
580
|
-
raise CDFAPIError(
|
|
581
|
-
f"Failed to delete {len(parent_ids)} assets. This could be due to a parent-child cycle or an "
|
|
582
|
-
"eventual consistency issue. Wait a few seconds and try again. An alternative is to use the "
|
|
583
|
-
"Python-SDK to delete the asset hierarchy "
|
|
584
|
-
"`client.assets.delete(external_id='my_root_asset', recursive=True)`"
|
|
585
|
-
) from e
|
|
586
|
-
else:
|
|
587
|
-
status.update(f"Deleted {count:,}/{total_asset_count:,} {loader.display_name}...")
|
|
588
|
-
break
|
|
589
|
-
elif len(parent_ids) == last_parent_count:
|
|
590
|
-
last_failed = True
|
|
591
|
-
else:
|
|
592
|
-
last_failed = False
|
|
593
|
-
level += 1
|
|
594
|
-
last_parent_count = len(parent_ids)
|
|
595
|
-
parent_ids.clear()
|
|
596
|
-
is_first = False
|
|
597
|
-
status.console.print(f"Finished purging {loader.display_name}.")
|
|
598
|
-
return count
|
|
599
|
-
|
|
600
569
|
def instances(
|
|
601
570
|
self,
|
|
602
571
|
client: ToolkitClient,
|
|
603
|
-
|
|
604
|
-
instance_space: list[str] | None = None,
|
|
605
|
-
instance_type: str = "node",
|
|
572
|
+
selector: InstanceSelector,
|
|
606
573
|
dry_run: bool = False,
|
|
607
574
|
auto_yes: bool = False,
|
|
608
575
|
unlink: bool = True,
|
|
609
576
|
verbose: bool = False,
|
|
610
|
-
) ->
|
|
611
|
-
|
|
577
|
+
) -> DeleteResults:
|
|
578
|
+
"""Purge instances"""
|
|
579
|
+
io = InstanceIO(client)
|
|
580
|
+
console = Console()
|
|
612
581
|
validator = ValidateAccess(client, default_operation="purge")
|
|
613
|
-
self.
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
|
|
617
|
-
selector.select_view(include_global=True) if view is None else self._get_selected_view(view, client)
|
|
618
|
-
)
|
|
619
|
-
self.validate_timeseries_access(validator, selected_view, unlink)
|
|
620
|
-
|
|
621
|
-
if is_interactive:
|
|
622
|
-
selected_instance_type = selector.select_instance_type(selected_view.used_for)
|
|
623
|
-
instance_space = selector.select_instance_spaces(selected_view.as_id(), selected_instance_type)
|
|
624
|
-
dry_run = questionary.confirm("Dry run?", default=True).ask()
|
|
625
|
-
if self._is_timeseries(selected_view):
|
|
626
|
-
unlink = questionary.confirm(
|
|
627
|
-
"Do you want to unlink timeseries from the datapoints before deleting the instances?", default=True
|
|
628
|
-
).ask()
|
|
629
|
-
else:
|
|
630
|
-
selected_instance_type = self._validate_instance_type(instance_type, selected_view.used_for)
|
|
582
|
+
self.validate_instance_access(validator, selector.get_instance_spaces())
|
|
583
|
+
if unlink:
|
|
584
|
+
self.validate_timeseries_access(validator)
|
|
585
|
+
self.validate_file_access(validator)
|
|
631
586
|
|
|
587
|
+
total = io.count(selector)
|
|
588
|
+
if total is None or total == 0:
|
|
589
|
+
print("No instances found.")
|
|
590
|
+
return DeleteResults()
|
|
632
591
|
if not dry_run:
|
|
633
|
-
self._print_panel("
|
|
592
|
+
self._print_panel("instances", str(selector))
|
|
634
593
|
if not auto_yes:
|
|
635
594
|
confirm = questionary.confirm(
|
|
636
|
-
f"Are you really sure you want to purge all {
|
|
595
|
+
f"Are you really sure you want to purge all {total:,} instances in {selector!s}?",
|
|
637
596
|
default=False,
|
|
638
597
|
).ask()
|
|
639
598
|
if not confirm:
|
|
640
|
-
return
|
|
641
|
-
|
|
642
|
-
process: Callable[[list[InstanceId]], list[
|
|
643
|
-
if
|
|
644
|
-
process = partial(self.
|
|
645
|
-
|
|
646
|
-
|
|
647
|
-
|
|
648
|
-
|
|
649
|
-
|
|
650
|
-
|
|
651
|
-
|
|
652
|
-
|
|
653
|
-
|
|
654
|
-
|
|
655
|
-
|
|
656
|
-
|
|
657
|
-
|
|
658
|
-
|
|
659
|
-
|
|
660
|
-
return
|
|
661
|
-
|
|
662
|
-
iteration_count = int(total // 1000 + (1 if total % 1000 > 0 else 0))
|
|
663
|
-
console = Console()
|
|
664
|
-
|
|
665
|
-
executor = ProducerWorkerExecutor[list[InstanceId], list[InstanceId]](
|
|
666
|
-
download_iterable=self._iterate_instances(
|
|
667
|
-
client=client,
|
|
668
|
-
view_id=selected_view.as_id(),
|
|
669
|
-
instance_space=instance_space,
|
|
670
|
-
instance_type=selected_instance_type,
|
|
599
|
+
return DeleteResults()
|
|
600
|
+
|
|
601
|
+
process: Callable[[list[InstanceId]], list[dict[str, JsonVal]]] = self._prepare
|
|
602
|
+
if unlink:
|
|
603
|
+
process = partial(self._unlink_prepare, client=client, dry_run=dry_run, console=console, verbose=verbose)
|
|
604
|
+
|
|
605
|
+
iteration_count = int(total // io.CHUNK_SIZE + (1 if total % io.CHUNK_SIZE > 0 else 0))
|
|
606
|
+
with HTTPClient(config=client.config) as delete_client:
|
|
607
|
+
process_str = "Would be unlinking" if dry_run else "Unlinking"
|
|
608
|
+
write_str = "Would be deleting" if dry_run else "Deleting"
|
|
609
|
+
results = DeleteResults()
|
|
610
|
+
executor = ProducerWorkerExecutor[list[InstanceId], list[dict[str, JsonVal]]](
|
|
611
|
+
download_iterable=io.download_ids(selector),
|
|
612
|
+
process=process,
|
|
613
|
+
write=partial(self._delete_instance_ids, dry_run=dry_run, delete_client=delete_client, results=results),
|
|
614
|
+
iteration_count=iteration_count,
|
|
615
|
+
max_queue_size=10,
|
|
616
|
+
download_description=f"Retrieving instances from {selector!s}",
|
|
617
|
+
process_description=f"{process_str} instances from files/timeseries" if unlink else "",
|
|
618
|
+
write_description=f"{write_str} instances",
|
|
671
619
|
console=console,
|
|
672
|
-
)
|
|
673
|
-
process=process,
|
|
674
|
-
write=self._no_delete if dry_run else client.data_modeling.instances.delete_fast, # type: ignore[arg-type]
|
|
675
|
-
iteration_count=iteration_count,
|
|
676
|
-
max_queue_size=10,
|
|
677
|
-
download_description=f"Retrieving {instance_type}s",
|
|
678
|
-
process_description=f"Preparing {instance_type}s for deletion",
|
|
679
|
-
write_description=f"Deleting {instance_type}s",
|
|
680
|
-
console=console,
|
|
681
|
-
)
|
|
620
|
+
)
|
|
682
621
|
|
|
683
|
-
|
|
684
|
-
|
|
685
|
-
raise ResourceDeleteError(executor.error_message)
|
|
622
|
+
executor.run()
|
|
623
|
+
executor.raise_on_error()
|
|
686
624
|
|
|
687
625
|
prefix = "Would have purged" if dry_run else "Purged"
|
|
688
|
-
|
|
689
|
-
f"{prefix} {
|
|
626
|
+
if results.failed == 0:
|
|
627
|
+
console.print(f"{prefix} {results.deleted:,} instances in {selector!s}")
|
|
628
|
+
else:
|
|
629
|
+
console.print(
|
|
630
|
+
f"{prefix} {results.deleted:,} instances in {selector!s}, but failed to purge {results.failed:,} instances"
|
|
631
|
+
)
|
|
632
|
+
return results
|
|
633
|
+
|
|
634
|
+
def validate_instance_access(self, validator: ValidateAccess, instance_spaces: list[str] | None) -> None:
|
|
635
|
+
space_ids = validator.instances(
|
|
636
|
+
["read", "write"], spaces=set(instance_spaces) if instance_spaces else None, operation="purge"
|
|
637
|
+
)
|
|
638
|
+
if space_ids is None:
|
|
639
|
+
# Full access
|
|
640
|
+
return
|
|
641
|
+
self.warn(
|
|
642
|
+
LimitedAccessWarning(
|
|
643
|
+
f"You can only purge instances in the following instance spaces: {humanize_collection(space_ids)}."
|
|
644
|
+
)
|
|
690
645
|
)
|
|
646
|
+
return
|
|
691
647
|
|
|
692
648
|
def validate_model_access(self, validator: ValidateAccess, view: list[str] | None) -> None:
|
|
693
649
|
space = view[0] if isinstance(view, list) and view and isinstance(view[0], str) else None
|
|
694
|
-
if space_ids := validator.data_model(["read"],
|
|
650
|
+
if space_ids := validator.data_model(["read"], spaces={space} if space else None):
|
|
695
651
|
self.warn(
|
|
696
652
|
LimitedAccessWarning(
|
|
697
653
|
f"You can only select views in the {len(space_ids)} spaces you have access to: {humanize_collection(space_ids)}."
|
|
698
654
|
)
|
|
699
655
|
)
|
|
700
656
|
|
|
701
|
-
def
|
|
702
|
-
|
|
703
|
-
|
|
704
|
-
|
|
705
|
-
|
|
706
|
-
)
|
|
707
|
-
)
|
|
708
|
-
|
|
709
|
-
def validate_timeseries_access(self, validator: ValidateAccess, view: View, unlink: bool) -> None:
|
|
710
|
-
if unlink is False or not self._is_timeseries(view):
|
|
657
|
+
def validate_timeseries_access(self, validator: ValidateAccess) -> None:
|
|
658
|
+
try:
|
|
659
|
+
ids_by_scope = validator.timeseries(["read", "write"], operation="unlink")
|
|
660
|
+
except AuthorizationError as e:
|
|
661
|
+
self.warn(HighSeverityWarning(f"You cannot unlink time series. You need read and write access: {e!s}"))
|
|
711
662
|
return
|
|
712
|
-
if ids_by_scope
|
|
713
|
-
|
|
714
|
-
|
|
715
|
-
|
|
716
|
-
|
|
717
|
-
|
|
718
|
-
|
|
719
|
-
@staticmethod
|
|
720
|
-
def _validate_instance_type(
|
|
721
|
-
instance_type: str, view_used_for: Literal["node", "edge", "all"]
|
|
722
|
-
) -> Literal["node", "edge"]:
|
|
723
|
-
if instance_type not in ["node", "edge"]:
|
|
724
|
-
raise ToolkitValueError(f"Invalid instance type: {instance_type!r}. Must be 'node' or 'edge'.")
|
|
725
|
-
if view_used_for == "all":
|
|
726
|
-
return instance_type # type: ignore[return-value]
|
|
727
|
-
if view_used_for != instance_type:
|
|
728
|
-
raise ToolkitValueError(
|
|
729
|
-
f"View {view_used_for!r} does not support instance type {instance_type!r}. "
|
|
730
|
-
f"You must purge {view_used_for!r} instances or select another view."
|
|
731
|
-
)
|
|
732
|
-
return instance_type # type: ignore[return-value]
|
|
733
|
-
|
|
734
|
-
@staticmethod
|
|
735
|
-
def _is_timeseries(view: View) -> bool:
|
|
736
|
-
return COGNITE_TIME_SERIES_CONTAINER in view.referenced_containers()
|
|
663
|
+
if ids_by_scope is None:
|
|
664
|
+
return
|
|
665
|
+
scope_str = humanize_collection(
|
|
666
|
+
[f"{scope_name} ({humanize_collection(ids)})" for scope_name, ids in ids_by_scope.items()],
|
|
667
|
+
bind_word="and",
|
|
668
|
+
)
|
|
669
|
+
self.warn(LimitedAccessWarning(f"You can only unlink time series in the following scopes: {scope_str}."))
|
|
737
670
|
|
|
738
|
-
|
|
739
|
-
|
|
740
|
-
|
|
671
|
+
def validate_file_access(self, validator: ValidateAccess) -> None:
|
|
672
|
+
try:
|
|
673
|
+
ids_by_scope = validator.files(["read", "write"], operation="unlink")
|
|
674
|
+
except AuthorizationError as e:
|
|
675
|
+
self.warn(HighSeverityWarning(f"You cannot unlink files. You need read and write access: {e!s}"))
|
|
676
|
+
return
|
|
677
|
+
if ids_by_scope is None:
|
|
678
|
+
return
|
|
679
|
+
scope_str = humanize_collection(
|
|
680
|
+
[f"{scope_name} ({humanize_collection(ids)})" for scope_name, ids in ids_by_scope.items()],
|
|
681
|
+
bind_word="and",
|
|
682
|
+
)
|
|
683
|
+
self.warn(LimitedAccessWarning(f"You can only unlink files in the following scopes: {scope_str}."))
|
|
741
684
|
|
|
742
685
|
@staticmethod
|
|
743
|
-
def
|
|
686
|
+
def _prepare(instance_ids: list[InstanceId]) -> list[dict[str, JsonVal]]:
|
|
687
|
+
output: list[dict[str, JsonVal]] = []
|
|
688
|
+
for instance_id in instance_ids:
|
|
689
|
+
dumped = instance_id.dump(include_instance_type=True)
|
|
690
|
+
# The PySDK uses 'type' instead of 'instanceType' which is required by the delete endpoint
|
|
691
|
+
dumped["instanceType"] = dumped.pop("type")
|
|
692
|
+
# MyPy does not understand that InstanceId.dump() returns dict[str, JsonVal]
|
|
693
|
+
output.append(dumped) # type: ignore[arg-type]
|
|
694
|
+
|
|
695
|
+
return output
|
|
696
|
+
|
|
697
|
+
def _unlink_prepare(
|
|
698
|
+
self,
|
|
699
|
+
instance_ids: list[InstanceId],
|
|
744
700
|
client: ToolkitClient,
|
|
745
|
-
|
|
746
|
-
instance_space: list[str] | None,
|
|
747
|
-
instance_type: Literal["node", "edge"],
|
|
701
|
+
dry_run: bool,
|
|
748
702
|
console: Console,
|
|
749
|
-
|
|
750
|
-
|
|
751
|
-
|
|
752
|
-
|
|
753
|
-
|
|
754
|
-
source=view_id,
|
|
755
|
-
space=instance_space,
|
|
756
|
-
console=console,
|
|
757
|
-
):
|
|
758
|
-
chunk.append(instance.as_id())
|
|
759
|
-
if len(chunk) >= 1000:
|
|
760
|
-
yield chunk
|
|
761
|
-
chunk = []
|
|
762
|
-
if chunk:
|
|
763
|
-
yield chunk
|
|
703
|
+
verbose: bool = False,
|
|
704
|
+
) -> list[dict[str, JsonVal]]:
|
|
705
|
+
self._unlink_timeseries(instance_ids, client, dry_run, console, verbose)
|
|
706
|
+
self._unlink_files(instance_ids, client, dry_run, console, verbose)
|
|
707
|
+
return self._prepare(instance_ids)
|
|
764
708
|
|
|
765
709
|
@staticmethod
|
|
766
|
-
def
|
|
767
|
-
|
|
768
|
-
|
|
710
|
+
def _delete_instance_ids(
|
|
711
|
+
items: list[dict[str, JsonVal]], dry_run: bool, delete_client: HTTPClient, results: DeleteResults
|
|
712
|
+
) -> None:
|
|
713
|
+
if dry_run:
|
|
714
|
+
results.deleted += len(items)
|
|
715
|
+
return
|
|
769
716
|
|
|
770
|
-
|
|
771
|
-
|
|
772
|
-
|
|
773
|
-
|
|
774
|
-
|
|
717
|
+
responses = delete_client.request_with_retries(
|
|
718
|
+
ItemsRequest(
|
|
719
|
+
delete_client.config.create_api_url("/models/instances/delete"),
|
|
720
|
+
method="POST",
|
|
721
|
+
# MyPy does not understand that InstanceId.load handles dict[str, JsonVal]
|
|
722
|
+
items=[DeleteItem(item=item, as_id_fun=InstanceId.load) for item in items], # type: ignore[arg-type]
|
|
723
|
+
)
|
|
724
|
+
)
|
|
725
|
+
for response in responses:
|
|
726
|
+
if isinstance(response, SuccessResponseItems):
|
|
727
|
+
results.deleted += len(response.ids)
|
|
728
|
+
elif isinstance(response, FailedResponseItems | FailedRequestItems):
|
|
729
|
+
results.failed += len(response.ids)
|
|
730
|
+
else:
|
|
731
|
+
results.failed += len(items)
|
|
775
732
|
|
|
733
|
+
@staticmethod
|
|
776
734
|
def _unlink_timeseries(
|
|
777
|
-
|
|
735
|
+
instances: list[InstanceId], client: ToolkitClient, dry_run: bool, console: Console, verbose: bool
|
|
778
736
|
) -> list[InstanceId]:
|
|
779
737
|
node_ids = [instance for instance in instances if isinstance(instance, NodeId)]
|
|
780
738
|
if node_ids:
|
|
@@ -783,23 +741,27 @@ class PurgeCommand(ToolkitCommand):
|
|
|
783
741
|
migrated_timeseries_ids = [ts.id for ts in timeseries if ts.instance_id and ts.pending_instance_id] # type: ignore[attr-defined]
|
|
784
742
|
client.time_series.unlink_instance_ids(id=migrated_timeseries_ids)
|
|
785
743
|
if verbose:
|
|
786
|
-
|
|
744
|
+
console.print(f"Unlinked {len(migrated_timeseries_ids)} timeseries from datapoints.")
|
|
745
|
+
elif verbose and timeseries:
|
|
746
|
+
console.print(f"Would have unlinked {len(timeseries)} timeseries from datapoints.")
|
|
787
747
|
return instances
|
|
788
748
|
|
|
789
749
|
@staticmethod
|
|
790
|
-
def
|
|
791
|
-
|
|
792
|
-
|
|
793
|
-
|
|
794
|
-
|
|
795
|
-
|
|
796
|
-
|
|
797
|
-
|
|
798
|
-
|
|
799
|
-
|
|
800
|
-
|
|
801
|
-
|
|
802
|
-
|
|
803
|
-
|
|
804
|
-
|
|
805
|
-
|
|
750
|
+
def _unlink_files(
|
|
751
|
+
instances: list[InstanceId], client: ToolkitClient, dry_run: bool, console: Console, verbose: bool
|
|
752
|
+
) -> list[InstanceId]:
|
|
753
|
+
file_ids = [instance for instance in instances if isinstance(instance, NodeId)]
|
|
754
|
+
if file_ids:
|
|
755
|
+
files = client.files.retrieve_multiple(instance_ids=file_ids, ignore_unknown_ids=True)
|
|
756
|
+
if not dry_run and files:
|
|
757
|
+
migrated_file_ids = [
|
|
758
|
+
file.id
|
|
759
|
+
for file in files
|
|
760
|
+
if file.instance_id and file.pending_instance_id and file.id is not None # type: ignore[attr-defined]
|
|
761
|
+
]
|
|
762
|
+
client.files.unlink_instance_ids(id=migrated_file_ids)
|
|
763
|
+
if verbose:
|
|
764
|
+
console.print(f"Unlinked {len(migrated_file_ids)} files from nodes.")
|
|
765
|
+
elif verbose and files:
|
|
766
|
+
console.print(f"Would have unlinked {len(files)} files from their blob content.")
|
|
767
|
+
return instances
|