cognite-toolkit 0.7.27__tar.gz → 0.7.29__tar.gz
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-0.7.27 → cognite_toolkit-0.7.29}/PKG-INFO +1 -1
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/client/_toolkit_client.py +10 -3
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/client/api/extended_functions.py +6 -9
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/client/data_classes/charts.py +3 -3
- cognite_toolkit-0.7.29/cognite_toolkit/_cdf_tk/client/data_classes/charts_data.py +184 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/commands/_migrate/data_mapper.py +3 -5
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/commands/_migrate/migration_io.py +15 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/cruds/_resource_cruds/function.py +2 -2
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/storageio/_annotations.py +2 -1
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/utils/http_client/_client.py +126 -11
- cognite_toolkit-0.7.29/cognite_toolkit/_cdf_tk/utils/http_client/_data_classes2.py +97 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_repo_files/GitHub/.github/workflows/deploy.yaml +1 -1
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_repo_files/GitHub/.github/workflows/dry-run.yaml +1 -1
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_resources/cdf.toml +1 -1
- cognite_toolkit-0.7.29/cognite_toolkit/_version.py +1 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/pyproject.toml +1 -1
- cognite_toolkit-0.7.27/cognite_toolkit/_cdf_tk/client/data_classes/charts_data.py +0 -322
- cognite_toolkit-0.7.27/cognite_toolkit/_version.py +0 -1
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/README.md +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/__init__.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/__init__.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/apps/__init__.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/apps/_auth_app.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/apps/_core_app.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/apps/_data_app.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/apps/_dev_app.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/apps/_download_app.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/apps/_dump_app.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/apps/_landing_app.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/apps/_migrate_app.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/apps/_modules_app.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/apps/_profile_app.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/apps/_purge.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/apps/_repo_app.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/apps/_run.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/apps/_upload_app.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/builders/__init__.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/builders/_base.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/builders/_datamodels.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/builders/_file.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/builders/_function.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/builders/_location.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/builders/_raw.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/builders/_streamlit.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/builders/_transformation.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/cdf_toml.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/client/__init__.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/client/_constants.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/client/api/__init__.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/client/api/canvas.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/client/api/charts.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/client/api/dml.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/client/api/extended_data_modeling.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/client/api/extended_files.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/client/api/extended_raw.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/client/api/extended_timeseries.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/client/api/fixed_transformations.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/client/api/infield.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/client/api/location_filters.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/client/api/lookup.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/client/api/migration.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/client/api/project.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/client/api/robotics/__init__.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/client/api/robotics/api.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/client/api/robotics/capabilities.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/client/api/robotics/data_postprocessing.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/client/api/robotics/frames.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/client/api/robotics/locations.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/client/api/robotics/maps.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/client/api/robotics/robots.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/client/api/robotics/utlis.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/client/api/search.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/client/api/search_config.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/client/api/streams.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/client/api/three_d.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/client/api/token.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/client/api/verify.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/client/api_client.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/client/config.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/client/data_classes/__init__.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/client/data_classes/api_classes.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/client/data_classes/apm_config_v1.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/client/data_classes/base.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/client/data_classes/canvas.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/client/data_classes/capabilities.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/client/data_classes/extendable_cognite_file.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/client/data_classes/extended_filemetadata.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/client/data_classes/extended_filemetdata.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/client/data_classes/extended_timeseries.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/client/data_classes/functions.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/client/data_classes/graphql_data_models.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/client/data_classes/infield.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/client/data_classes/instance_api.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/client/data_classes/instances.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/client/data_classes/location_filters.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/client/data_classes/migration.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/client/data_classes/pending_instances_ids.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/client/data_classes/project.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/client/data_classes/raw.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/client/data_classes/robotics.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/client/data_classes/search_config.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/client/data_classes/sequences.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/client/data_classes/streamlit_.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/client/data_classes/streams.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/client/data_classes/three_d.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/client/testing.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/client/utils/__init__.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/client/utils/_concurrency.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/client/utils/_http_client.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/commands/__init__.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/commands/_base.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/commands/_changes.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/commands/_cli_commands.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/commands/_download.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/commands/_migrate/__init__.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/commands/_migrate/command.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/commands/_migrate/conversion.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/commands/_migrate/creators.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/commands/_migrate/data_classes.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/commands/_migrate/data_model.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/commands/_migrate/default_mappings.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/commands/_migrate/issues.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/commands/_migrate/prepare.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/commands/_migrate/selectors.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/commands/_profile.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/commands/_purge.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/commands/_questionary_style.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/commands/_upload.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/commands/_utils.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/commands/_virtual_env.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/commands/about.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/commands/auth.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/commands/build_cmd.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/commands/clean.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/commands/collect.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/commands/deploy.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/commands/dump_resource.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/commands/init.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/commands/modules.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/commands/pull.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/commands/repo.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/commands/resources.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/commands/run.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/constants.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/cruds/__init__.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/cruds/_base_cruds.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/cruds/_data_cruds.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/cruds/_resource_cruds/__init__.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/cruds/_resource_cruds/agent.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/cruds/_resource_cruds/auth.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/cruds/_resource_cruds/classic.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/cruds/_resource_cruds/configuration.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/cruds/_resource_cruds/data_organization.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/cruds/_resource_cruds/datamodel.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/cruds/_resource_cruds/extraction_pipeline.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/cruds/_resource_cruds/fieldops.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/cruds/_resource_cruds/file.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/cruds/_resource_cruds/group_scoped.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/cruds/_resource_cruds/hosted_extractors.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/cruds/_resource_cruds/industrial_tool.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/cruds/_resource_cruds/location.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/cruds/_resource_cruds/migration.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/cruds/_resource_cruds/raw.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/cruds/_resource_cruds/relationship.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/cruds/_resource_cruds/robotics.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/cruds/_resource_cruds/streams.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/cruds/_resource_cruds/three_d_model.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/cruds/_resource_cruds/timeseries.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/cruds/_resource_cruds/transformation.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/cruds/_resource_cruds/workflow.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/cruds/_worker.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/data_classes/__init__.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/data_classes/_base.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/data_classes/_build_files.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/data_classes/_build_variables.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/data_classes/_built_modules.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/data_classes/_built_resources.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/data_classes/_config_yaml.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/data_classes/_deploy_results.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/data_classes/_module_directories.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/data_classes/_module_resources.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/data_classes/_module_toml.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/data_classes/_packages.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/data_classes/_tracking_info.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/data_classes/_yaml_comments.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/exceptions.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/feature_flags.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/hints.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/plugins.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/protocols.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/prototypes/commands/__init__.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/prototypes/commands/import_.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/prototypes/import_app.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/resource_classes/__init__.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/resource_classes/agent.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/resource_classes/agent_tools.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/resource_classes/asset.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/resource_classes/authentication.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/resource_classes/base.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/resource_classes/capabilities.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/resource_classes/cognitefile.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/resource_classes/container_field_definitions.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/resource_classes/containers.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/resource_classes/data_model.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/resource_classes/datapoint_subscription.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/resource_classes/dataset.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/resource_classes/event.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/resource_classes/extraction_pipeline.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/resource_classes/extraction_pipeline_config.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/resource_classes/filemetadata.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/resource_classes/function_schedule.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/resource_classes/functions.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/resource_classes/graphql_model.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/resource_classes/groups.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/resource_classes/hosted_extractor_destination.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/resource_classes/hosted_extractor_job.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/resource_classes/hosted_extractor_mapping.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/resource_classes/hosted_extractor_source.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/resource_classes/infield_cdm_location_config.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/resource_classes/infield_location_config.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/resource_classes/infield_v1.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/resource_classes/instance.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/resource_classes/labels.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/resource_classes/location.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/resource_classes/migration.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/resource_classes/raw_database_table.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/resource_classes/relationship.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/resource_classes/robotics/__init__.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/resource_classes/robotics/capability.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/resource_classes/robotics/data_postprocessing.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/resource_classes/robotics/frame.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/resource_classes/robotics/location.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/resource_classes/robotics/map.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/resource_classes/search_config.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/resource_classes/securitycategories.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/resource_classes/sequence.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/resource_classes/space.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/resource_classes/streamlit_.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/resource_classes/streams.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/resource_classes/threedmodels.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/resource_classes/timeseries.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/resource_classes/transformation_destination.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/resource_classes/transformation_notification.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/resource_classes/transformation_schedule.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/resource_classes/transformations.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/resource_classes/view_field_definitions.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/resource_classes/views.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/resource_classes/workflow.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/resource_classes/workflow_trigger.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/resource_classes/workflow_version.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/storageio/__init__.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/storageio/_applications.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/storageio/_asset_centric.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/storageio/_base.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/storageio/_data_classes.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/storageio/_datapoints.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/storageio/_file_content.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/storageio/_instances.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/storageio/_raw.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/storageio/selectors/__init__.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/storageio/selectors/_asset_centric.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/storageio/selectors/_base.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/storageio/selectors/_canvas.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/storageio/selectors/_charts.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/storageio/selectors/_datapoints.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/storageio/selectors/_file_content.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/storageio/selectors/_instances.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/storageio/selectors/_raw.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/tk_warnings/__init__.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/tk_warnings/base.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/tk_warnings/fileread.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/tk_warnings/other.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/tracker.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/utils/__init__.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/utils/_auxiliary.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/utils/aggregators.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/utils/auth.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/utils/auxiliary.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/utils/cdf.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/utils/cicd.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/utils/cli_args.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/utils/collection.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/utils/diff_list.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/utils/dtype_conversion.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/utils/file.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/utils/fileio/__init__.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/utils/fileio/_base.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/utils/fileio/_compression.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/utils/fileio/_readers.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/utils/fileio/_writers.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/utils/graphql_parser.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/utils/hashing.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/utils/http_client/__init__.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/utils/http_client/_data_classes.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/utils/http_client/_exception.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/utils/http_client/_tracker.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/utils/interactive_select.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/utils/modules.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/utils/producer_worker.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/utils/progress_tracker.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/utils/repository.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/utils/sentry_utils.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/utils/sql_parser.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/utils/text.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/utils/thread_safe_dict.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/utils/useful_types.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/utils/validate_access.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/validation.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_repo_files/.env.tmpl +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_repo_files/.gitignore +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_repo_files/AzureDevOps/.devops/README.md +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_repo_files/AzureDevOps/.devops/deploy-pipeline.yml +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_repo_files/AzureDevOps/.devops/dry-run-pipeline.yml +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/config.dev.yaml +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/demo/__init__.py +0 -0
- {cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/demo/_base.py +0 -0
{cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/client/_toolkit_client.py
RENAMED
|
@@ -35,19 +35,26 @@ class ToolAPI:
|
|
|
35
35
|
|
|
36
36
|
|
|
37
37
|
class ToolkitClient(CogniteClient):
|
|
38
|
-
def __init__(
|
|
38
|
+
def __init__(
|
|
39
|
+
self,
|
|
40
|
+
config: ToolkitClientConfig | None = None,
|
|
41
|
+
enable_set_pending_ids: bool = False,
|
|
42
|
+
console: Console | None = None,
|
|
43
|
+
) -> None:
|
|
39
44
|
super().__init__(config=config)
|
|
40
45
|
http_client = HTTPClient(self.config)
|
|
41
46
|
self.http_client = http_client
|
|
42
47
|
toolkit_config = ToolkitClientConfig.from_client_config(self.config)
|
|
43
|
-
self.console = Console()
|
|
48
|
+
self.console = console or Console()
|
|
44
49
|
self.tool = ToolAPI(http_client, self.console)
|
|
45
50
|
self.search = SearchAPI(self._config, self._API_VERSION, self)
|
|
46
51
|
self.robotics = RoboticsAPI(self._config, self._API_VERSION, self)
|
|
47
52
|
self.dml = DMLAPI(self._config, self._API_VERSION, self)
|
|
48
53
|
self.verify = VerifyAPI(self._config, self._API_VERSION, self)
|
|
49
54
|
self.lookup = LookUpGroup(self._config, self._API_VERSION, self, self.console)
|
|
50
|
-
self.functions: ExtendedFunctionsAPI = ExtendedFunctionsAPI(
|
|
55
|
+
self.functions: ExtendedFunctionsAPI = ExtendedFunctionsAPI(
|
|
56
|
+
toolkit_config, self._API_VERSION, self, self.console
|
|
57
|
+
)
|
|
51
58
|
self.data_modeling: ExtendedDataModelingAPI = ExtendedDataModelingAPI(self._config, self._API_VERSION, self)
|
|
52
59
|
if enable_set_pending_ids:
|
|
53
60
|
self.time_series: ExtendedTimeSeriesAPI = ExtendedTimeSeriesAPI(self._config, self._API_VERSION, self)
|
|
@@ -17,15 +17,16 @@ class ExtendedFunctionsAPI(FunctionsAPI):
|
|
|
17
17
|
config: ToolkitClientConfig,
|
|
18
18
|
api_version: str | None,
|
|
19
19
|
cognite_client: CogniteClient,
|
|
20
|
+
console: Console | None = None,
|
|
20
21
|
) -> None:
|
|
21
22
|
"""
|
|
22
23
|
Extended Functions API to include custom headers and payload preparation.
|
|
23
24
|
"""
|
|
24
25
|
super().__init__(config, api_version, cognite_client)
|
|
25
26
|
self._toolkit_config = config
|
|
26
|
-
self._toolkit_http_client = HTTPClient(config, max_retries=global_config.max_retries)
|
|
27
|
+
self._toolkit_http_client = HTTPClient(config, max_retries=global_config.max_retries, console=console)
|
|
27
28
|
|
|
28
|
-
def create_with_429_retry(self, function: FunctionWrite
|
|
29
|
+
def create_with_429_retry(self, function: FunctionWrite) -> Function:
|
|
29
30
|
"""Create a function with manual retry handling for 429 Too Many Requests responses.
|
|
30
31
|
|
|
31
32
|
This method is a workaround for scenarios where the function creation API is temporarily unavailable
|
|
@@ -43,16 +44,13 @@ class ExtendedFunctionsAPI(FunctionsAPI):
|
|
|
43
44
|
endpoint_url=self._toolkit_config.create_api_url("/functions"),
|
|
44
45
|
method="POST",
|
|
45
46
|
body_content={"items": [function.dump(camel_case=True)]},
|
|
46
|
-
)
|
|
47
|
-
console=console,
|
|
47
|
+
)
|
|
48
48
|
)
|
|
49
49
|
result.raise_for_status()
|
|
50
50
|
# We assume the API response is one item on a successful creation
|
|
51
51
|
return Function._load(result.get_first_body()["items"][0], cognite_client=self._cognite_client) # type: ignore[arg-type,index]
|
|
52
52
|
|
|
53
|
-
def delete_with_429_retry(
|
|
54
|
-
self, external_id: SequenceNotStr[str], ignore_unknown_ids: bool = False, console: Console | None = None
|
|
55
|
-
) -> None:
|
|
53
|
+
def delete_with_429_retry(self, external_id: SequenceNotStr[str], ignore_unknown_ids: bool = False) -> None:
|
|
56
54
|
"""Delete one or more functions with retry handling for 429 Too Many Requests responses.
|
|
57
55
|
|
|
58
56
|
This method is an improvement over the standard delete method in the FunctionsAPI.
|
|
@@ -77,7 +75,6 @@ class ExtendedFunctionsAPI(FunctionsAPI):
|
|
|
77
75
|
endpoint_url=self._toolkit_config.create_api_url("/functions/delete"),
|
|
78
76
|
method="POST",
|
|
79
77
|
body_content=body_content,
|
|
80
|
-
)
|
|
81
|
-
console=console,
|
|
78
|
+
)
|
|
82
79
|
).raise_for_status()
|
|
83
80
|
return None
|
|
@@ -36,7 +36,7 @@ class ChartCore(WriteableCogniteResource["ChartWrite"], ABC):
|
|
|
36
36
|
def dump(self, camel_case: bool = True) -> dict[str, Any]:
|
|
37
37
|
"""Convert the chart to a dictionary representation."""
|
|
38
38
|
output = super().dump(camel_case=camel_case)
|
|
39
|
-
output["data"] = self.data.
|
|
39
|
+
output["data"] = self.data.model_dump(mode="json", by_alias=camel_case, exclude_unset=True)
|
|
40
40
|
return output
|
|
41
41
|
|
|
42
42
|
|
|
@@ -58,7 +58,7 @@ class ChartWrite(ChartCore):
|
|
|
58
58
|
return cls(
|
|
59
59
|
external_id=resource["externalId"],
|
|
60
60
|
visibility=resource["visibility"],
|
|
61
|
-
data=ChartData._load(resource["data"]
|
|
61
|
+
data=ChartData._load(resource["data"]),
|
|
62
62
|
)
|
|
63
63
|
|
|
64
64
|
|
|
@@ -98,7 +98,7 @@ class Chart(ChartCore):
|
|
|
98
98
|
created_time=resource["createdTime"],
|
|
99
99
|
last_updated_time=resource["lastUpdatedTime"],
|
|
100
100
|
visibility=resource["visibility"],
|
|
101
|
-
data=ChartData._load(resource["data"]
|
|
101
|
+
data=ChartData._load(resource["data"]),
|
|
102
102
|
owner_id=resource["ownerId"],
|
|
103
103
|
)
|
|
104
104
|
|
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
from typing import Any
|
|
2
|
+
|
|
3
|
+
from cognite.client.data_classes.data_modeling import NodeId, ViewId
|
|
4
|
+
from pydantic import JsonValue, field_serializer, field_validator
|
|
5
|
+
|
|
6
|
+
from .base import BaseModelObject
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
class UserInfo(BaseModelObject):
|
|
10
|
+
id: str | None = None
|
|
11
|
+
email: str | None = None
|
|
12
|
+
display_name: str | None = None
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
class ChartSettings(BaseModelObject):
|
|
16
|
+
show_y_axis: bool = True
|
|
17
|
+
show_min_max: bool = True
|
|
18
|
+
show_gridlines: bool = True
|
|
19
|
+
merge_units: bool = False
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
class ThresholdFilter(BaseModelObject):
|
|
23
|
+
min_unit: str | None = None
|
|
24
|
+
max_unit: str | None = None
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
class ChartCall(BaseModelObject):
|
|
28
|
+
id: str | None = None
|
|
29
|
+
hash: int | None = None
|
|
30
|
+
call_id: str | None = None
|
|
31
|
+
call_date: int | None = None
|
|
32
|
+
status: str | None = None
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
class SubSetting(BaseModelObject):
|
|
36
|
+
auto_align: bool | None = None
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
class ChartPosition(BaseModelObject):
|
|
40
|
+
x: float | None = None
|
|
41
|
+
y: float | None = None
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
class FlowElement(BaseModelObject):
|
|
45
|
+
id: str | None = None
|
|
46
|
+
type: str | None = None
|
|
47
|
+
position: ChartPosition | None = None
|
|
48
|
+
data: JsonValue | None = None
|
|
49
|
+
source: str | None = None
|
|
50
|
+
target: str | None = None
|
|
51
|
+
source_handle: str | None = None
|
|
52
|
+
target_handle: str | None = None
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
class Flow(BaseModelObject):
|
|
56
|
+
zoom: float | None = None
|
|
57
|
+
elements: list[FlowElement] | None = None
|
|
58
|
+
position: tuple[float | None, float | None] | None = None
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
class ChartElement(BaseModelObject):
|
|
62
|
+
id: str | None = None
|
|
63
|
+
type: str | None = None
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
class ChartSource(ChartElement): ...
|
|
67
|
+
|
|
68
|
+
|
|
69
|
+
class ChartCoreTimeseries(ChartElement):
|
|
70
|
+
node_reference: NodeId | None = None
|
|
71
|
+
view_reference: ViewId | None = None
|
|
72
|
+
display_mode: str | None = None
|
|
73
|
+
color: str | None = None
|
|
74
|
+
created_at: int | None = None
|
|
75
|
+
enabled: bool | None = None
|
|
76
|
+
interpolation: str | None = None
|
|
77
|
+
line_style: str | None = None
|
|
78
|
+
line_weight: float | None = None
|
|
79
|
+
name: str | None = None
|
|
80
|
+
preferred_unit: str | None = None
|
|
81
|
+
range: list[float | None] | None = None
|
|
82
|
+
|
|
83
|
+
@field_serializer("node_reference", when_used="always")
|
|
84
|
+
def serialize_node_reference(self, node_reference: NodeId | None) -> dict[str, Any] | None:
|
|
85
|
+
if node_reference:
|
|
86
|
+
return node_reference.dump(include_instance_type=False)
|
|
87
|
+
return None
|
|
88
|
+
|
|
89
|
+
@field_serializer("view_reference", when_used="always")
|
|
90
|
+
def serialize_view_reference(self, view_reference: ViewId | None) -> dict[str, Any] | None:
|
|
91
|
+
if view_reference:
|
|
92
|
+
return view_reference.dump(include_type=False)
|
|
93
|
+
return None
|
|
94
|
+
|
|
95
|
+
@field_validator("node_reference", mode="before")
|
|
96
|
+
@classmethod
|
|
97
|
+
def validate_node_reference(cls, value: Any) -> NodeId | None:
|
|
98
|
+
if value is None or isinstance(value, NodeId):
|
|
99
|
+
return value
|
|
100
|
+
return NodeId.load(value)
|
|
101
|
+
|
|
102
|
+
@field_validator("view_reference", mode="before")
|
|
103
|
+
@classmethod
|
|
104
|
+
def validate_view_reference(cls, value: Any) -> ViewId | None:
|
|
105
|
+
if value is None or isinstance(value, ViewId):
|
|
106
|
+
return value
|
|
107
|
+
return ViewId.load(value)
|
|
108
|
+
|
|
109
|
+
|
|
110
|
+
class ChartTimeseries(ChartElement):
|
|
111
|
+
color: str | None = None
|
|
112
|
+
created_at: int | None = None
|
|
113
|
+
enabled: bool | None = None
|
|
114
|
+
interpolation: str | None = None
|
|
115
|
+
line_style: str | None = None
|
|
116
|
+
line_weight: float | None = None
|
|
117
|
+
name: str | None = None
|
|
118
|
+
preferred_unit: str | None = None
|
|
119
|
+
range: list[float | None] | None = None
|
|
120
|
+
unit: str | None = None
|
|
121
|
+
ts_id: int | None = None
|
|
122
|
+
ts_external_id: str | None = None
|
|
123
|
+
display_mode: str | None = None
|
|
124
|
+
original_unit: str | None = None
|
|
125
|
+
description: str | None = None
|
|
126
|
+
|
|
127
|
+
|
|
128
|
+
class ChartWorkflow(ChartElement):
|
|
129
|
+
version: str | None = None
|
|
130
|
+
name: str | None = None
|
|
131
|
+
color: str | None = None
|
|
132
|
+
enabled: bool | None = None
|
|
133
|
+
line_weight: float | None = None
|
|
134
|
+
line_style: str | None = None
|
|
135
|
+
interpolation: str | None = None
|
|
136
|
+
unit: str | None = None
|
|
137
|
+
preferred_unit: str | None = None
|
|
138
|
+
range: list[float | None] | None = None
|
|
139
|
+
created_at: int | None = None
|
|
140
|
+
settings: SubSetting | None = None
|
|
141
|
+
flow: Flow | None = None
|
|
142
|
+
calls: list[ChartCall] | None = None
|
|
143
|
+
|
|
144
|
+
|
|
145
|
+
class ChartThreshold(ChartElement):
|
|
146
|
+
visible: bool | None = None
|
|
147
|
+
name: str | None = None
|
|
148
|
+
source_id: str | None = None
|
|
149
|
+
upper_limit: float | None = None
|
|
150
|
+
filter: ThresholdFilter | None = None
|
|
151
|
+
calls: list[ChartCall] | None = None
|
|
152
|
+
|
|
153
|
+
|
|
154
|
+
class ChartScheduledCalculation(ChartElement):
|
|
155
|
+
color: str | None = None
|
|
156
|
+
created_at: int | None = None
|
|
157
|
+
description: str | None = None
|
|
158
|
+
enabled: bool | None = None
|
|
159
|
+
interpolation: str | None = None
|
|
160
|
+
line_style: str | None = None
|
|
161
|
+
line_weight: float | None = None
|
|
162
|
+
name: str | None = None
|
|
163
|
+
preferred_unit: str | None = None
|
|
164
|
+
range: list[float | None] | None = None
|
|
165
|
+
unit: str | None = None
|
|
166
|
+
version: str | None = None
|
|
167
|
+
settings: SubSetting | None = None
|
|
168
|
+
flow: Flow | None = None
|
|
169
|
+
|
|
170
|
+
|
|
171
|
+
class ChartData(BaseModelObject):
|
|
172
|
+
version: int | None = None
|
|
173
|
+
name: str | None = None
|
|
174
|
+
date_from: str | None = None
|
|
175
|
+
date_to: str | None = None
|
|
176
|
+
user_info: UserInfo | None = None
|
|
177
|
+
live_mode: bool | None = None
|
|
178
|
+
time_series_collection: list[ChartTimeseries] | None = None
|
|
179
|
+
core_timeseries_collection: list[ChartCoreTimeseries] | None = None
|
|
180
|
+
workflow_collection: list[ChartWorkflow] | None = None
|
|
181
|
+
source_collection: list[ChartSource] | None = None
|
|
182
|
+
threshold_collection: list[ChartThreshold] | None = None
|
|
183
|
+
scheduled_calculation_collection: list[ChartScheduledCalculation] | None = None
|
|
184
|
+
settings: ChartSettings | None = None
|
|
@@ -210,16 +210,14 @@ class ChartMapper(DataMapper[ChartSelector, Chart, ChartWrite]):
|
|
|
210
210
|
def _create_new_timeseries_core(
|
|
211
211
|
self, ts_item: ChartTimeseries, node_id: NodeId, consumer_view_id: ViewId | None
|
|
212
212
|
) -> ChartCoreTimeseries:
|
|
213
|
-
dumped = ts_item.
|
|
214
|
-
for asset_centric_key in ["tsId", "tsExternalId", "originalUnit"]:
|
|
215
|
-
dumped.pop(asset_centric_key, None)
|
|
216
|
-
|
|
213
|
+
dumped = ts_item.model_dump(mode="json", by_alias=True, exclude_unset=True)
|
|
217
214
|
dumped["nodeReference"] = node_id
|
|
218
215
|
dumped["viewReference"] = consumer_view_id
|
|
219
216
|
new_uuid = str(uuid4())
|
|
220
217
|
dumped["id"] = new_uuid
|
|
221
218
|
dumped["type"] = "coreTimeseries"
|
|
222
|
-
|
|
219
|
+
# We ignore extra here to only include the fields that are shared between ChartTimeseries and ChartCoreTimeseries
|
|
220
|
+
core_timeseries = ChartCoreTimeseries.model_validate(dumped, extra="ignore")
|
|
223
221
|
return core_timeseries
|
|
224
222
|
|
|
225
223
|
def _get_node_id_consumer_view_id(self, ts_item: ChartTimeseries) -> tuple[NodeId | None, ViewId | None]:
|
|
@@ -231,6 +231,8 @@ class AnnotationMigrationIO(
|
|
|
231
231
|
CHUNK_SIZE = 1000
|
|
232
232
|
UPLOAD_ENDPOINT = InstanceIO.UPLOAD_ENDPOINT
|
|
233
233
|
|
|
234
|
+
SUPPORTED_ANNOTATION_TYPES = frozenset({"diagrams.AssetLink", "diagrams.FileLink"})
|
|
235
|
+
|
|
234
236
|
def __init__(
|
|
235
237
|
self,
|
|
236
238
|
client: ToolkitClient,
|
|
@@ -272,6 +274,10 @@ class AnnotationMigrationIO(
|
|
|
272
274
|
for data_chunk in self.annotation_io.stream_data(asset_centric_selector, limit):
|
|
273
275
|
mapping_list = AssetCentricMappingList[Annotation]([])
|
|
274
276
|
for resource in data_chunk.items:
|
|
277
|
+
if resource.annotation_type not in self.SUPPORTED_ANNOTATION_TYPES:
|
|
278
|
+
# This should not happen, as the annotation_io should already filter these out.
|
|
279
|
+
# This is just in case.
|
|
280
|
+
continue
|
|
275
281
|
mapping = AnnotationMapping(
|
|
276
282
|
instance_id=EdgeId(space=self.instance_space, external_id=f"annotation_{resource.id!r}"),
|
|
277
283
|
id=resource.id,
|
|
@@ -294,11 +300,15 @@ class AnnotationMigrationIO(
|
|
|
294
300
|
resources = self.client.annotations.retrieve_multiple(current_batch.get_ids())
|
|
295
301
|
resources_by_id = {resource.id: resource for resource in resources}
|
|
296
302
|
not_found = 0
|
|
303
|
+
incorrect_type_count = 0
|
|
297
304
|
for mapping in current_batch:
|
|
298
305
|
resource = resources_by_id.get(mapping.id)
|
|
299
306
|
if resource is None:
|
|
300
307
|
not_found += 1
|
|
301
308
|
continue
|
|
309
|
+
if resource.annotation_type not in self.SUPPORTED_ANNOTATION_TYPES:
|
|
310
|
+
incorrect_type_count += 1
|
|
311
|
+
continue
|
|
302
312
|
mapping.ingestion_view = self._get_mapping(mapping.ingestion_view, resource)
|
|
303
313
|
chunk.append(AssetCentricMapping(mapping=mapping, resource=resource))
|
|
304
314
|
if chunk:
|
|
@@ -308,6 +318,11 @@ class AnnotationMigrationIO(
|
|
|
308
318
|
MediumSeverityWarning(
|
|
309
319
|
f"Could not find {not_found} annotations referenced in the CSV file. They will be skipped during migration."
|
|
310
320
|
).print_warning(include_timestamp=True, console=self.client.console)
|
|
321
|
+
if incorrect_type_count:
|
|
322
|
+
MediumSeverityWarning(
|
|
323
|
+
f"Found {incorrect_type_count} annotations with unsupported types. Only 'diagrams.AssetLink' and "
|
|
324
|
+
"'diagrams.FileLink' are supported. These annotations will be skipped during migration."
|
|
325
|
+
).print_warning(include_timestamp=True, console=self.client.console)
|
|
311
326
|
|
|
312
327
|
def _get_mapping(self, current_mapping: str | None, resource: Annotation) -> str:
|
|
313
328
|
try:
|
|
@@ -320,7 +320,7 @@ class FunctionCRUD(ResourceCRUD[str, FunctionWrite, Function]):
|
|
|
320
320
|
" problem persists, please contact Cognite support."
|
|
321
321
|
)
|
|
322
322
|
item.file_id = file_id
|
|
323
|
-
created_item = self.client.functions.create_with_429_retry(item
|
|
323
|
+
created_item = self.client.functions.create_with_429_retry(item)
|
|
324
324
|
self._warn_if_cpu_or_memory_changed(created_item, item)
|
|
325
325
|
created.append(created_item)
|
|
326
326
|
return created
|
|
@@ -404,7 +404,7 @@ class FunctionCRUD(ResourceCRUD[str, FunctionWrite, Function]):
|
|
|
404
404
|
def delete(self, ids: SequenceNotStr[str]) -> int:
|
|
405
405
|
functions = self.retrieve(ids)
|
|
406
406
|
|
|
407
|
-
self.client.functions.delete_with_429_retry(external_id=ids, ignore_unknown_ids=True
|
|
407
|
+
self.client.functions.delete_with_429_retry(external_id=ids, ignore_unknown_ids=True)
|
|
408
408
|
file_ids = {func.file_id for func in functions if func.file_id}
|
|
409
409
|
self.client.files.delete(id=list(file_ids), ignore_unknown_ids=True)
|
|
410
410
|
return len(ids)
|
{cognite_toolkit-0.7.27 → cognite_toolkit-0.7.29}/cognite_toolkit/_cdf_tk/storageio/_annotations.py
RENAMED
|
@@ -33,7 +33,8 @@ class AnnotationIO(StorageIO[AssetCentricSelector, Annotation]):
|
|
|
33
33
|
annotated_resource_type="file",
|
|
34
34
|
annotated_resource_ids=[{"id": file_metadata.id} for file_metadata in file_chunk.items],
|
|
35
35
|
annotation_type=annotation_type,
|
|
36
|
-
)
|
|
36
|
+
),
|
|
37
|
+
limit=-1,
|
|
37
38
|
)
|
|
38
39
|
if limit is not None and total + len(results) > limit:
|
|
39
40
|
results = results[: limit - total]
|
|
@@ -23,6 +23,15 @@ from cognite_toolkit._cdf_tk.utils.http_client._data_classes import (
|
|
|
23
23
|
ResponseList,
|
|
24
24
|
ResponseMessage,
|
|
25
25
|
)
|
|
26
|
+
from cognite_toolkit._cdf_tk.utils.http_client._data_classes2 import (
|
|
27
|
+
BaseRequestMessage,
|
|
28
|
+
ErrorDetails2,
|
|
29
|
+
FailedRequest2,
|
|
30
|
+
FailedResponse2,
|
|
31
|
+
HTTPResult2,
|
|
32
|
+
RequestMessage2,
|
|
33
|
+
SuccessResponse2,
|
|
34
|
+
)
|
|
26
35
|
from cognite_toolkit._cdf_tk.utils.useful_types import PrimitiveType
|
|
27
36
|
|
|
28
37
|
if sys.version_info >= (3, 11):
|
|
@@ -48,6 +57,7 @@ class HTTPClient:
|
|
|
48
57
|
Default is {408, 429, 502, 503, 504}.
|
|
49
58
|
split_items_status_codes (frozenset[int]): In the case of ItemRequest with multiple
|
|
50
59
|
items, these status codes will trigger splitting the request into smaller batches.
|
|
60
|
+
console (Console | None): Optional Rich Console for printing warnings.
|
|
51
61
|
|
|
52
62
|
"""
|
|
53
63
|
|
|
@@ -59,6 +69,7 @@ class HTTPClient:
|
|
|
59
69
|
pool_maxsize: int = 20,
|
|
60
70
|
retry_status_codes: Set[int] = frozenset({408, 429, 502, 503, 504}),
|
|
61
71
|
split_items_status_codes: Set[int] = frozenset({400, 408, 409, 422, 502, 503, 504}),
|
|
72
|
+
console: Console | None = None,
|
|
62
73
|
):
|
|
63
74
|
self.config = config
|
|
64
75
|
self._max_retries = max_retries
|
|
@@ -66,6 +77,7 @@ class HTTPClient:
|
|
|
66
77
|
self._pool_maxsize = pool_maxsize
|
|
67
78
|
self._retry_status_codes = retry_status_codes
|
|
68
79
|
self._split_items_status_codes = split_items_status_codes
|
|
80
|
+
self._console = console
|
|
69
81
|
|
|
70
82
|
# Thread-safe session for connection pooling
|
|
71
83
|
self.session = self._create_thread_safe_session()
|
|
@@ -80,12 +92,11 @@ class HTTPClient:
|
|
|
80
92
|
self.session.close()
|
|
81
93
|
return False # Do not suppress exceptions
|
|
82
94
|
|
|
83
|
-
def request(self, message: RequestMessage
|
|
95
|
+
def request(self, message: RequestMessage) -> Sequence[HTTPMessage]:
|
|
84
96
|
"""Send an HTTP request and return the response.
|
|
85
97
|
|
|
86
98
|
Args:
|
|
87
99
|
message (RequestMessage): The request message to send.
|
|
88
|
-
console (Console | None): The rich console to use for printing warnings.
|
|
89
100
|
|
|
90
101
|
Returns:
|
|
91
102
|
Sequence[HTTPMessage]: The response message(s). This can also
|
|
@@ -98,12 +109,12 @@ class HTTPClient:
|
|
|
98
109
|
return message.create_failed_request(error_msg)
|
|
99
110
|
try:
|
|
100
111
|
response = self._make_request(message)
|
|
101
|
-
results = self._handle_response(response, message
|
|
112
|
+
results = self._handle_response(response, message)
|
|
102
113
|
except Exception as e:
|
|
103
114
|
results = self._handle_error(e, message)
|
|
104
115
|
return results
|
|
105
116
|
|
|
106
|
-
def request_with_retries(self, message: RequestMessage
|
|
117
|
+
def request_with_retries(self, message: RequestMessage) -> ResponseList:
|
|
107
118
|
"""Send an HTTP request and handle retries.
|
|
108
119
|
|
|
109
120
|
This method will keep retrying the request until it either succeeds or
|
|
@@ -114,7 +125,6 @@ class HTTPClient:
|
|
|
114
125
|
|
|
115
126
|
Args:
|
|
116
127
|
message (RequestMessage): The request message to send.
|
|
117
|
-
console (Console | None): The rich console to use for printing warnings.
|
|
118
128
|
|
|
119
129
|
Returns:
|
|
120
130
|
Sequence[ResponseMessage | FailedRequestMessage]: The final response
|
|
@@ -127,7 +137,7 @@ class HTTPClient:
|
|
|
127
137
|
final_responses = ResponseList([])
|
|
128
138
|
while pending_requests:
|
|
129
139
|
current_request = pending_requests.popleft()
|
|
130
|
-
results = self.request(current_request
|
|
140
|
+
results = self.request(current_request)
|
|
131
141
|
|
|
132
142
|
for result in results:
|
|
133
143
|
if isinstance(result, RequestMessage):
|
|
@@ -194,9 +204,7 @@ class HTTPClient:
|
|
|
194
204
|
follow_redirects=False,
|
|
195
205
|
)
|
|
196
206
|
|
|
197
|
-
def _handle_response(
|
|
198
|
-
self, response: httpx.Response, request: RequestMessage, console: Console | None = None
|
|
199
|
-
) -> Sequence[HTTPMessage]:
|
|
207
|
+
def _handle_response(self, response: httpx.Response, request: RequestMessage) -> Sequence[HTTPMessage]:
|
|
200
208
|
if 200 <= response.status_code < 300:
|
|
201
209
|
return request.create_success_response(response)
|
|
202
210
|
elif (
|
|
@@ -216,11 +224,11 @@ class HTTPClient:
|
|
|
216
224
|
|
|
217
225
|
retry_after = self._get_retry_after_in_header(response)
|
|
218
226
|
if retry_after is not None and response.status_code == 429 and request.status_attempt < self._max_retries:
|
|
219
|
-
if
|
|
227
|
+
if self._console is not None:
|
|
220
228
|
short_url = request.endpoint_url.removeprefix(self.config.base_api_url)
|
|
221
229
|
HighSeverityWarning(
|
|
222
230
|
f"Rate limit exceeded for the {short_url!r} endpoint. Retrying after {retry_after} seconds."
|
|
223
|
-
).print_warning(console=
|
|
231
|
+
).print_warning(console=self._console)
|
|
224
232
|
request.status_attempt += 1
|
|
225
233
|
time.sleep(retry_after)
|
|
226
234
|
return [request]
|
|
@@ -273,3 +281,110 @@ class HTTPClient:
|
|
|
273
281
|
error_msg = f"RequestException after {request.total_attempts - 1} attempts ({error_type} error): {e!s}"
|
|
274
282
|
|
|
275
283
|
return request.create_failed_request(error_msg)
|
|
284
|
+
|
|
285
|
+
def request_single(self, message: RequestMessage2) -> RequestMessage2 | HTTPResult2:
|
|
286
|
+
"""Send an HTTP request and return the response.
|
|
287
|
+
|
|
288
|
+
Args:
|
|
289
|
+
message (RequestMessage2): The request message to send.
|
|
290
|
+
Returns:
|
|
291
|
+
HTTPMessage: The response message.
|
|
292
|
+
"""
|
|
293
|
+
try:
|
|
294
|
+
response = self._make_request2(message)
|
|
295
|
+
result = self._handle_response_single(response, message)
|
|
296
|
+
except Exception as e:
|
|
297
|
+
result = self._handle_error_single(e, message)
|
|
298
|
+
return result
|
|
299
|
+
|
|
300
|
+
def request_single_retries(self, message: RequestMessage2) -> HTTPResult2:
|
|
301
|
+
"""Send an HTTP request and handle retries.
|
|
302
|
+
|
|
303
|
+
This method will keep retrying the request until it either succeeds or
|
|
304
|
+
exhausts the maximum number of retries.
|
|
305
|
+
|
|
306
|
+
Note this method will use the current thread to process all request, thus
|
|
307
|
+
it is blocking.
|
|
308
|
+
|
|
309
|
+
Args:
|
|
310
|
+
message (RequestMessage2): The request message to send.
|
|
311
|
+
Returns:
|
|
312
|
+
HTTPMessage2: The final response message, which can be either successful response or failed request.
|
|
313
|
+
"""
|
|
314
|
+
if message.total_attempts > 0:
|
|
315
|
+
raise RuntimeError(f"RequestMessage has already been attempted {message.total_attempts} times.")
|
|
316
|
+
current_request = message
|
|
317
|
+
while True:
|
|
318
|
+
result = self.request_single(current_request)
|
|
319
|
+
if isinstance(result, RequestMessage2):
|
|
320
|
+
current_request = result
|
|
321
|
+
elif isinstance(result, HTTPResult2):
|
|
322
|
+
return result
|
|
323
|
+
else:
|
|
324
|
+
raise TypeError(f"Unexpected result type: {type(result)}")
|
|
325
|
+
|
|
326
|
+
def _make_request2(self, message: BaseRequestMessage) -> httpx.Response:
|
|
327
|
+
headers = self._create_headers(message.api_version, message.content_type, message.accept)
|
|
328
|
+
return self.session.request(
|
|
329
|
+
method=message.method,
|
|
330
|
+
url=message.endpoint_url,
|
|
331
|
+
content=message.content,
|
|
332
|
+
headers=headers,
|
|
333
|
+
params=message.parameters,
|
|
334
|
+
timeout=self.config.timeout,
|
|
335
|
+
follow_redirects=False,
|
|
336
|
+
)
|
|
337
|
+
|
|
338
|
+
def _handle_response_single(
|
|
339
|
+
self, response: httpx.Response, request: RequestMessage2
|
|
340
|
+
) -> RequestMessage2 | HTTPResult2:
|
|
341
|
+
if 200 <= response.status_code < 300:
|
|
342
|
+
return SuccessResponse2(
|
|
343
|
+
status_code=response.status_code,
|
|
344
|
+
body=response.text,
|
|
345
|
+
content=response.content,
|
|
346
|
+
)
|
|
347
|
+
retry_after = self._get_retry_after_in_header(response)
|
|
348
|
+
if retry_after is not None and response.status_code == 429 and request.status_attempt < self._max_retries:
|
|
349
|
+
if self._console is not None:
|
|
350
|
+
short_url = request.endpoint_url.removeprefix(self.config.base_api_url)
|
|
351
|
+
HighSeverityWarning(
|
|
352
|
+
f"Rate limit exceeded for the {short_url!r} endpoint. Retrying after {retry_after} seconds."
|
|
353
|
+
).print_warning(console=self._console)
|
|
354
|
+
request.status_attempt += 1
|
|
355
|
+
time.sleep(retry_after)
|
|
356
|
+
return request
|
|
357
|
+
|
|
358
|
+
if request.status_attempt < self._max_retries and response.status_code in self._retry_status_codes:
|
|
359
|
+
request.status_attempt += 1
|
|
360
|
+
time.sleep(self._backoff_time(request.total_attempts))
|
|
361
|
+
return request
|
|
362
|
+
else:
|
|
363
|
+
# Permanent failure
|
|
364
|
+
return FailedResponse2(
|
|
365
|
+
status_code=response.status_code,
|
|
366
|
+
body=response.text,
|
|
367
|
+
error=ErrorDetails2.from_response(response),
|
|
368
|
+
)
|
|
369
|
+
|
|
370
|
+
def _handle_error_single(self, e: Exception, request: RequestMessage2) -> RequestMessage2 | HTTPResult2:
|
|
371
|
+
if isinstance(e, httpx.ReadTimeout | httpx.TimeoutException):
|
|
372
|
+
error_type = "read"
|
|
373
|
+
request.read_attempt += 1
|
|
374
|
+
attempts = request.read_attempt
|
|
375
|
+
elif isinstance(e, ConnectionError | httpx.ConnectError | httpx.ConnectTimeout):
|
|
376
|
+
error_type = "connect"
|
|
377
|
+
request.connect_attempt += 1
|
|
378
|
+
attempts = request.connect_attempt
|
|
379
|
+
else:
|
|
380
|
+
error_msg = f"Unexpected exception: {e!s}"
|
|
381
|
+
return FailedRequest2(error=error_msg)
|
|
382
|
+
|
|
383
|
+
if attempts <= self._max_retries:
|
|
384
|
+
time.sleep(self._backoff_time(request.total_attempts))
|
|
385
|
+
return request
|
|
386
|
+
else:
|
|
387
|
+
# We have already incremented the attempt count, so we subtract 1 here
|
|
388
|
+
error_msg = f"RequestException after {request.total_attempts - 1} attempts ({error_type} error): {e!s}"
|
|
389
|
+
|
|
390
|
+
return FailedRequest2(error=error_msg)
|