cognite-neat 0.124.0__tar.gz → 0.125.1__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.
Potentially problematic release.
This version of cognite-neat might be problematic. Click here for more details.
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/.github/workflows/code-quality.yaml +1 -1
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/PKG-INFO +1 -1
- cognite_neat-0.125.1/cognite/neat/_data_model/importers/__init__.py +4 -0
- cognite_neat-0.125.1/cognite/neat/_data_model/importers/_table_importer/data_classes.py +141 -0
- cognite_neat-0.125.1/cognite/neat/_data_model/importers/_table_importer/importer.py +76 -0
- cognite_neat-0.125.1/cognite/neat/_data_model/importers/_table_importer/source.py +89 -0
- cognite_neat-0.125.1/cognite/neat/_exceptions.py +17 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/_utils/text.py +22 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/_utils/useful_types.py +4 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/_utils/validation.py +7 -4
- cognite_neat-0.125.1/cognite/neat/_version.py +2 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/v0/core/_data_model/_constants.py +1 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/v0/core/_data_model/exporters/_data_model2excel.py +3 -3
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/v0/core/_data_model/importers/_dms2data_model.py +4 -3
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/v0/core/_data_model/importers/_spreadsheet2data_model.py +85 -5
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/v0/core/_data_model/models/entities/__init__.py +2 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/v0/core/_data_model/models/entities/_single_value.py +14 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/v0/core/_data_model/models/entities/_types.py +10 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/v0/core/_data_model/models/physical/_exporter.py +3 -11
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/v0/core/_data_model/models/physical/_unverified.py +61 -12
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/v0/core/_data_model/models/physical/_validation.py +8 -4
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/v0/core/_data_model/models/physical/_verified.py +86 -15
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/v0/core/_data_model/transformers/_converters.py +11 -4
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/v0/core/_instances/queries/_select.py +13 -29
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/v0/core/_store/_instance.py +2 -2
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/v0/core/_utils/spreadsheet.py +17 -3
- cognite_neat-0.125.1/docs/artifacts/rules/cdf-dms-architect-alice.xlsx +0 -0
- cognite_neat-0.125.1/last_changelog_entry.md +6 -0
- cognite_neat-0.125.1/last_git_message.txt +26 -0
- cognite_neat-0.125.1/last_version.txt +1 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/pyproject.toml +8 -1
- cognite_neat-0.125.1/tests/tests_unit/test_data_model/test_importers/test_dms_table_importer.py +259 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/tests/tests_unit/test_utils/test_validation.py +1 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/tests/v0/tests_end_to_end/test_rules_flow/test_excel_importer_to_yaml.yml +6 -6
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/tests/v0/tests_end_to_end/test_rules_flow.py +0 -3
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/tests/v0/tests_integration/test_session/test_graph_flow/test_snapshot_workflow_ids_to_python.yml +11 -11
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/tests/v0/tests_integration/test_session/test_graph_flow/test_snapshot_workflow_to_python.yml +11 -11
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/tests/v0/tests_integration/test_session/test_read/test_read_cdm.yml +19 -19
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/tests/v0/tests_integration/test_session/test_read.py +2 -9
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/tests/v0/tests_unit/test_rules/test_exporters/test_rules2dms.py +0 -26
- cognite_neat-0.125.1/tests/v0/tests_unit/test_rules/test_models/test_constraints.py +112 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/tests/v0/tests_unit/test_rules/test_models/test_entities.py +14 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/tests/v0/tests_unit/test_rules/test_models/test_physical_data_model.py +60 -12
- cognite_neat-0.125.1/tests/v0/tests_unit/test_store/__init__.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/tests/v0/tests_unit/test_store/test_select_queries.py +16 -45
- cognite_neat-0.125.1/tests/v0/tests_unit/test_utils/__init__.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/uv.lock +1 -1
- cognite_neat-0.124.0/cognite/neat/_data_model/importers/__init__.py +0 -3
- cognite_neat-0.124.0/cognite/neat/_version.py +0 -2
- cognite_neat-0.124.0/docs/artifacts/rules/cdf-dms-architect-alice.xlsx +0 -0
- cognite_neat-0.124.0/last_changelog_entry.md +0 -5
- cognite_neat-0.124.0/last_git_message.txt +0 -25
- cognite_neat-0.124.0/last_version.txt +0 -1
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/.coveragerc +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/.gemini/styleguide.md +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/.github/CODEOWNERS +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/.github/ISSUE_TEMPLATE/bug-report.md +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/.github/ISSUE_TEMPLATE/feature-request.md +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/.github/pull_request_template.md +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/.github/renovate.json +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/.github/workflows/release.yaml +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/.gitignore +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/.pre-commit-config.yaml +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/.readthedocs.yaml +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/CODE_OF_CONDUCT.md +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/CONTRIBUTING.md +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/LICENSE +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/README.md +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cdf.toml +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/codecov.yml +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/__init__.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/_data_model/__init__.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/_data_model/_constants.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/_data_model/_identifiers.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/_data_model/importers/_base.py +0 -0
- {cognite_neat-0.124.0/cognite/neat/_data_model/models → cognite_neat-0.125.1/cognite/neat/_data_model/importers/_table_importer}/__init__.py +0 -0
- {cognite_neat-0.124.0/cognite/neat/_data_model/models/conceptual → cognite_neat-0.125.1/cognite/neat/_data_model/models}/__init__.py +0 -0
- {cognite_neat-0.124.0/cognite/neat/_session → cognite_neat-0.125.1/cognite/neat/_data_model/models/conceptual}/__init__.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/_data_model/models/conceptual/_base.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/_data_model/models/conceptual/_concept.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/_data_model/models/conceptual/_data_model.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/_data_model/models/conceptual/_properties.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/_data_model/models/conceptual/_property.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/_data_model/models/dms/__init__.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/_data_model/models/dms/_base.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/_data_model/models/dms/_constants.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/_data_model/models/dms/_constraints.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/_data_model/models/dms/_container.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/_data_model/models/dms/_data_model.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/_data_model/models/dms/_data_types.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/_data_model/models/dms/_indexes.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/_data_model/models/dms/_references.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/_data_model/models/dms/_schema.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/_data_model/models/dms/_space.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/_data_model/models/dms/_types.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/_data_model/models/dms/_view_property.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/_data_model/models/dms/_views.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/_data_model/models/entities/__init__.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/_data_model/models/entities/_base.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/_data_model/models/entities/_constants.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/_data_model/models/entities/_data_types.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/_data_model/models/entities/_identifiers.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/_data_model/models/entities/_parser.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/_issues.py +0 -0
- {cognite_neat-0.124.0/cognite/neat/_utils → cognite_neat-0.125.1/cognite/neat/_session}/__init__.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/_session/_session.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/_session/_state_machine/__init__.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/_session/_state_machine/_base.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/_session/_state_machine/_states.py +0 -0
- {cognite_neat-0.124.0/cognite/neat/v0 → cognite_neat-0.125.1/cognite/neat/_utils}/__init__.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/_utils/auxiliary.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/_utils/http_client/__init__.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/_utils/http_client/_client.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/_utils/http_client/_config.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/_utils/http_client/_data_classes.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/_utils/http_client/_tracker.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/py.typed +0 -0
- {cognite_neat-0.124.0/cognite/neat/v0/core → cognite_neat-0.125.1/cognite/neat/v0}/__init__.py +0 -0
- {cognite_neat-0.124.0/cognite/neat/v0/core/_client/_api → cognite_neat-0.125.1/cognite/neat/v0/core}/__init__.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/v0/core/_client/__init__.py +0 -0
- {cognite_neat-0.124.0/cognite/neat/v0/core/_client/data_classes → cognite_neat-0.125.1/cognite/neat/v0/core/_client/_api}/__init__.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/v0/core/_client/_api/data_modeling_loaders.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/v0/core/_client/_api/neat_instances.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/v0/core/_client/_api/schema.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/v0/core/_client/_api/statistics.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/v0/core/_client/_api_client.py +0 -0
- {cognite_neat-0.124.0/cognite/neat/v0/core/_data_model → cognite_neat-0.125.1/cognite/neat/v0/core/_client/data_classes}/__init__.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/v0/core/_client/data_classes/data_modeling.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/v0/core/_client/data_classes/neat_sequence.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/v0/core/_client/data_classes/schema.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/v0/core/_client/data_classes/statistics.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/v0/core/_client/testing.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/v0/core/_config.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/v0/core/_constants.py +0 -0
- {cognite_neat-0.124.0/cognite/neat/v0/core/_instances → cognite_neat-0.125.1/cognite/neat/v0/core/_data_model}/__init__.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/v0/core/_data_model/_shared.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/v0/core/_data_model/analysis/__init__.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/v0/core/_data_model/analysis/_base.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/v0/core/_data_model/catalog/__init__.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/v0/core/_data_model/catalog/classic_model.xlsx +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/v0/core/_data_model/catalog/conceptual-imf-data-model.xlsx +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/v0/core/_data_model/catalog/hello_world_pump.xlsx +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/v0/core/_data_model/exporters/__init__.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/v0/core/_data_model/exporters/_base.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/v0/core/_data_model/exporters/_data_model2dms.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/v0/core/_data_model/exporters/_data_model2instance_template.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/v0/core/_data_model/exporters/_data_model2semantic_model.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/v0/core/_data_model/exporters/_data_model2yaml.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/v0/core/_data_model/importers/__init__.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/v0/core/_data_model/importers/_base.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/v0/core/_data_model/importers/_base_file_reader.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/v0/core/_data_model/importers/_dict2data_model.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/v0/core/_data_model/importers/_graph2data_model.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/v0/core/_data_model/importers/_rdf/__init__.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/v0/core/_data_model/importers/_rdf/_base.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/v0/core/_data_model/importers/_rdf/_inference2rdata_model.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/v0/core/_data_model/importers/_rdf/_owl2data_model.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/v0/core/_data_model/importers/_rdf/_shared.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/v0/core/_data_model/models/__init__.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/v0/core/_data_model/models/_base_unverified.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/v0/core/_data_model/models/_base_verified.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/v0/core/_data_model/models/_import_contexts.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/v0/core/_data_model/models/_types.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/v0/core/_data_model/models/conceptual/__init__.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/v0/core/_data_model/models/conceptual/_unverified.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/v0/core/_data_model/models/conceptual/_validation.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/v0/core/_data_model/models/conceptual/_verified.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/v0/core/_data_model/models/data_types.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/v0/core/_data_model/models/entities/_constants.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/v0/core/_data_model/models/entities/_loaders.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/v0/core/_data_model/models/entities/_multi_value.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/v0/core/_data_model/models/entities/_restrictions.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/v0/core/_data_model/models/entities/_wrapped.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/v0/core/_data_model/models/mapping/__init__.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/v0/core/_data_model/models/mapping/_classic2core.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/v0/core/_data_model/models/mapping/_classic2core.yaml +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/v0/core/_data_model/models/physical/__init__.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/v0/core/_data_model/transformers/__init__.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/v0/core/_data_model/transformers/_base.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/v0/core/_data_model/transformers/_mapping.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/v0/core/_data_model/transformers/_union_conceptual.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/v0/core/_data_model/transformers/_verification.py +0 -0
- {cognite_neat-0.124.0/cognite/neat/v0/core/_instances/extractors/_classic_cdf → cognite_neat-0.125.1/cognite/neat/v0/core/_instances}/__init__.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/v0/core/_instances/_shared.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/v0/core/_instances/_tracking/__init__.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/v0/core/_instances/_tracking/base.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/v0/core/_instances/_tracking/log.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/v0/core/_instances/examples/Knowledge-Graph-Nordic44-dirty.xml +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/v0/core/_instances/examples/Knowledge-Graph-Nordic44.xml +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/v0/core/_instances/examples/__init__.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/v0/core/_instances/examples/skos-capturing-sheet-wind-topics.xlsx +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/v0/core/_instances/extractors/__init__.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/v0/core/_instances/extractors/_base.py +0 -0
- {cognite_neat-0.124.0/cognite/neat/v0/core/_utils → cognite_neat-0.125.1/cognite/neat/v0/core/_instances/extractors/_classic_cdf}/__init__.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/v0/core/_instances/extractors/_classic_cdf/_assets.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/v0/core/_instances/extractors/_classic_cdf/_base.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/v0/core/_instances/extractors/_classic_cdf/_classic.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/v0/core/_instances/extractors/_classic_cdf/_data_sets.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/v0/core/_instances/extractors/_classic_cdf/_events.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/v0/core/_instances/extractors/_classic_cdf/_files.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/v0/core/_instances/extractors/_classic_cdf/_labels.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/v0/core/_instances/extractors/_classic_cdf/_relationships.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/v0/core/_instances/extractors/_classic_cdf/_sequences.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/v0/core/_instances/extractors/_classic_cdf/_timeseries.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/v0/core/_instances/extractors/_dict.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/v0/core/_instances/extractors/_dms.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/v0/core/_instances/extractors/_dms_graph.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/v0/core/_instances/extractors/_mock_graph_generator.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/v0/core/_instances/extractors/_raw.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/v0/core/_instances/extractors/_rdf_file.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/v0/core/_instances/loaders/__init__.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/v0/core/_instances/loaders/_base.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/v0/core/_instances/loaders/_rdf2dms.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/v0/core/_instances/loaders/_rdf_to_instance_space.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/v0/core/_instances/queries/__init__.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/v0/core/_instances/queries/_base.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/v0/core/_instances/queries/_queries.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/v0/core/_instances/queries/_update.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/v0/core/_instances/transformers/__init__.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/v0/core/_instances/transformers/_base.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/v0/core/_instances/transformers/_classic_cdf.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/v0/core/_instances/transformers/_prune_graph.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/v0/core/_instances/transformers/_rdfpath.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/v0/core/_instances/transformers/_value_type.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/v0/core/_issues/__init__.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/v0/core/_issues/_base.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/v0/core/_issues/_contextmanagers.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/v0/core/_issues/_factory.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/v0/core/_issues/errors/__init__.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/v0/core/_issues/errors/_external.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/v0/core/_issues/errors/_general.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/v0/core/_issues/errors/_properties.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/v0/core/_issues/errors/_resources.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/v0/core/_issues/errors/_wrapper.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/v0/core/_issues/formatters.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/v0/core/_issues/warnings/__init__.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/v0/core/_issues/warnings/_external.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/v0/core/_issues/warnings/_general.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/v0/core/_issues/warnings/_models.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/v0/core/_issues/warnings/_properties.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/v0/core/_issues/warnings/_resources.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/v0/core/_issues/warnings/user_modeling.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/v0/core/_shared.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/v0/core/_store/__init__.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/v0/core/_store/_data_model.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/v0/core/_store/_provenance.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/v0/core/_store/exceptions.py +0 -0
- {cognite_neat-0.124.0/tests → cognite_neat-0.125.1/cognite/neat/v0/core/_utils}/__init__.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/v0/core/_utils/auth.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/v0/core/_utils/auxiliary.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/v0/core/_utils/collection_.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/v0/core/_utils/graph_transformations_report.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/v0/core/_utils/io_.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/v0/core/_utils/rdf_.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/v0/core/_utils/reader/__init__.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/v0/core/_utils/reader/_base.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/v0/core/_utils/tarjan.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/v0/core/_utils/text.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/v0/core/_utils/time_.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/v0/core/_utils/upload.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/v0/core/_utils/xml_.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/v0/plugins/__init__.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/v0/plugins/_base.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/v0/plugins/_data_model.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/v0/plugins/_issues.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/v0/plugins/_manager.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/v0/session/__init__.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/v0/session/_base.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/v0/session/_collector.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/v0/session/_diff.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/v0/session/_drop.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/v0/session/_experimental.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/v0/session/_explore.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/v0/session/_fix.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/v0/session/_inspect.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/v0/session/_mapping.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/v0/session/_plugin.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/v0/session/_prepare.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/v0/session/_read.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/v0/session/_set.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/v0/session/_show.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/v0/session/_state/README.md +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/v0/session/_state.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/v0/session/_subset.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/v0/session/_template.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/v0/session/_to.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/v0/session/_wizard.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/v0/session/engine/__init__.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/v0/session/engine/_import.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/v0/session/engine/_interface.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/v0/session/engine/_load.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/v0/session/exceptions.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/dev.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/docs/artifacts/figs/DataModelCDF.PNG +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/docs/artifacts/figs/DataModelInstancesCDF.PNG +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/docs/artifacts/figs/DataModelInstancesVizCDF.PNG +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/docs/artifacts/figs/aml-dm-cdf.png +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/docs/artifacts/figs/aml-dm.png +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/docs/artifacts/figs/aml-instances-cdf.png +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/docs/artifacts/figs/aml-instances-full.png +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/docs/artifacts/figs/asset_hierarchy_lift_pump_stations.png +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/docs/artifacts/figs/asset_hierarchy_lift_pump_stations_dms.png +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/docs/artifacts/figs/asset_hierarchy_lift_pump_stations_dms_typed.png +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/docs/artifacts/figs/asset_hierarchy_lift_pump_stations_populated.png +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/docs/artifacts/figs/asset_hierarchy_lift_pump_stations_populated_with_typed.png +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/docs/artifacts/figs/authorship.png +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/docs/artifacts/figs/base-components.png +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/docs/artifacts/figs/bid_capacity_data_model.png +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/docs/artifacts/figs/change_validate_step.png +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/docs/artifacts/figs/connecting_metadata_dm.png +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/docs/artifacts/figs/connecting_metadata_populated.png +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/docs/artifacts/figs/connecting_metadata_published_dm.png +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/docs/artifacts/figs/container_spec.png +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/docs/artifacts/figs/core_extension.png +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/docs/artifacts/figs/core_extension_excel.png +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/docs/artifacts/figs/core_extension_no_connection.png +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/docs/artifacts/figs/core_extension_with_properties.png +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/docs/artifacts/figs/data-exploration.gif +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/docs/artifacts/figs/data-model-nordic44.png +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/docs/artifacts/figs/data-modeling-flow.png +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/docs/artifacts/figs/dexpi-dm-cdf.png +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/docs/artifacts/figs/dexpi-dm-viz.png +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/docs/artifacts/figs/dexpi-graph-viz.png +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/docs/artifacts/figs/dexpi-instance-cdf.png +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/docs/artifacts/figs/dexpi-transformed-graph-viz.png +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/docs/artifacts/figs/dm-classes.png +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/docs/artifacts/figs/dm-object-shapes.png +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/docs/artifacts/figs/dm-prefixes.png +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/docs/artifacts/figs/dm-source-to-solution-mapping.png +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/docs/artifacts/figs/dm2cdf-asset.png +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/docs/artifacts/figs/dm2cdf-mapping.png +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/docs/artifacts/figs/execution-history.gif +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/docs/artifacts/figs/export_dms_config.png +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/docs/artifacts/figs/export_dms_executed.png +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/docs/artifacts/figs/export_dms_workflow.png +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/docs/artifacts/figs/features.png +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/docs/artifacts/figs/graph-etl-flow.png +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/docs/artifacts/figs/high-level-io.png +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/docs/artifacts/figs/instances-nordic44.png +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/docs/artifacts/figs/instances-sheet.png +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/docs/artifacts/figs/key-aspects-of-neat.png +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/docs/artifacts/figs/knowledge-graph-viz-filtering.gif +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/docs/artifacts/figs/knowledge-graph-viz.gif +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/docs/artifacts/figs/life_cycle_analitic_solution_export_dms.png +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/docs/artifacts/figs/life_cycle_converter_model_analytic_solution_model.png +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/docs/artifacts/figs/life_cycle_download_reference_model_analytic_soluteion_model.png +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/docs/artifacts/figs/life_cycle_download_reference_model_analytic_solution_model_export.png +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/docs/artifacts/figs/logo.png +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/docs/artifacts/figs/metadata-sheet.png +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/docs/artifacts/figs/multi-hop.png +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/docs/artifacts/figs/neat-high-level.png +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/docs/artifacts/figs/neat-two_flows.png +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/docs/artifacts/figs/neat_shift_tab.png +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/docs/artifacts/figs/neat_tab.png +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/docs/artifacts/figs/prefixes-sheet.png +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/docs/artifacts/figs/pump_hello_world_published.png +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/docs/artifacts/figs/rdf-in-nutshell.png +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/docs/artifacts/figs/rdf2cdf-graph-change.jpg +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/docs/artifacts/figs/rdf2cdf-graph-resurrect.jpg +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/docs/artifacts/figs/rdf2cdf-graph.jpg +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/docs/artifacts/figs/rdf2cdf-init-run-step1.jpg +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/docs/artifacts/figs/rdf2cdf-init-run-step2.png +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/docs/artifacts/figs/rdf2cdf-init-run.jpg +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/docs/artifacts/figs/rdf2cdf-post-init.jpg +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/docs/artifacts/figs/run_workflow.png +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/docs/artifacts/figs/sheet2cdf-asset-hierarchy.png +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/docs/artifacts/figs/sheet2cdf-running-workflow.gif +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/docs/artifacts/figs/sheet2cdf-transformation-rules-ui.png +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/docs/artifacts/figs/sheet2cdf-upload-rules.gif +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/docs/artifacts/figs/sheet2cdf-workflow-steps.png +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/docs/artifacts/figs/sheet2cdf-workflow.gif +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/docs/artifacts/figs/sheet2cdf-workflow.png +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/docs/artifacts/figs/step-configurables.png +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/docs/artifacts/figs/step-metrics.png +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/docs/artifacts/figs/tutorial-notebooks-part-2_graph-capturing-sheet.gif +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/docs/artifacts/figs/validate_workflow.png +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/docs/artifacts/figs/wf-ephemeral-mode.png +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/docs/artifacts/figs/wf-overview.gif +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/docs/artifacts/figs/wf-persistent-blocking-mode.png +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/docs/artifacts/figs/wf-persistent-non-blocking.png +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/docs/artifacts/figs/wf-start-mode-ui.png +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/docs/artifacts/figs/wind_farm_classic_knowledge_graph.png +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/docs/artifacts/figs/wind_farm_data_product_instances.png +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/docs/artifacts/figs/work-in-progress.png +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/docs/artifacts/figs/workflow-context.jpg +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/docs/artifacts/figs/working_with_metadata_provenance.png +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/docs/artifacts/figs/working_with_metadata_published_dm.png +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/docs/artifacts/rules/dms-addition-svein-harald.xlsx +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/docs/artifacts/rules/dms-analytics-olav.xlsx +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/docs/artifacts/rules/dms-architect-rules-raw-filter-example.xlsx +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/docs/artifacts/rules/dms-architect-rules-template.xlsx +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/docs/artifacts/rules/dms-rebuild-olav.xlsx +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/docs/artifacts/rules/domain-expert-rules-template.xlsx +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/docs/artifacts/rules/expert-grid-emma.xlsx +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/docs/artifacts/rules/expert-wind-energy-jon.xlsx +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/docs/artifacts/rules/information-addition-svein-harald.xlsx +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/docs/artifacts/rules/information-analytics-olav-ref.xlsx +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/docs/artifacts/rules/information-analytics-olav.xlsx +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/docs/artifacts/rules/information-architect-david.xlsx +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/docs/artifacts/rules/information-architect-rules-template.xlsx +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/docs/artifacts/videos/tutorial-1-defining-data-model.mp4 +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/docs/artifacts/videos/tutorial-1-download-rules-template.mp4 +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/docs/artifacts/videos/tutorial-1-upload-gql-schema-to-cdf.mp4 +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/docs/artifacts/videos/tutorial-2-graph-capturing-sheet.mp4 +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/docs/artifacts/videos/tutorial-3-asset-hierarchy.mp4 +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/docs/artifacts/videos/tutorial-3-decommissioning.mp4 +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/docs/artifacts/videos/tutorial-3-relationships.mp4 +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/docs/artifacts/videos/tutorial-3-resurrection.mp4 +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/docs/artifacts/videos/tutorial-4-asset-hierarchy.mp4 +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/docs/data-modeling-principles.md +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/docs/excel_data_modeling/conceptual/overview.md +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/docs/excel_data_modeling/conceptual/reference.md +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/docs/excel_data_modeling/data_model.md +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/docs/excel_data_modeling/physical/enum.md +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/docs/excel_data_modeling/physical/overview.md +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/docs/excel_data_modeling/physical/properties.md +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/docs/excel_data_modeling/physical/reference.md +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/docs/excel_data_modeling/physical/views.md +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/docs/excel_data_modeling/units.md +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/docs/gettingstarted/installation.md +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/docs/gettingstarted/why-neat.md +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/docs/index.md +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/docs/reference/NeatSession/base.md +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/docs/reference/NeatSession/drop.md +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/docs/reference/NeatSession/fix.md +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/docs/reference/NeatSession/inspect.md +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/docs/reference/NeatSession/mapping.md +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/docs/reference/NeatSession/prepare.md +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/docs/reference/NeatSession/read.md +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/docs/reference/NeatSession/set.md +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/docs/reference/NeatSession/show.md +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/docs/reference/NeatSession/subset.md +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/docs/reference/NeatSession/template.md +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/docs/reference/NeatSession/to.md +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/docs/reference/issues/base.md +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/docs/reference/issues/errors.md +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/docs/reference/issues/user_model_warnings.md +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/docs/reference/issues/warnings.md +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/docs/reference/overview.md +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/docs/tutorials/data-modeling/cold_start.ipynb +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/docs/tutorials/data-modeling/figs/data-modeling-flow.png +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/docs/tutorials/data-modeling/files/wind_farm_prospecting_conceptual_data_model.xlsx +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/docs/tutorials/data-modeling/files/wind_farm_prospecting_conceptual_data_model_expanded.xlsx +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/docs/tutorials/data-modeling/files/wind_farm_prospecting_physical_data_model.xlsx +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/docs/tutorials/data-modeling/from-conceptual-to-physical-via-CDM.ipynb +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/docs/tutorials/data-modeling/http_purl.org_cognite_neat_data-model_verified_conceptual_wind_energy_WindFarmProspecting_v1.html +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/docs/tutorials/data-modeling/http_purl.org_cognite_neat_data-model_verified_conceptual_wind_energy_WindFarmProspecting_v1_implements.html +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/docs/tutorials/data-modeling/http_purl.org_cognite_neat_data-model_verified_physical_neat_playground_NeatHelloWorld_v1.html +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/docs/tutorials/data-modeling/my_first_model.xlsx +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/docs/tutorials/data-modeling/physical-data-model.xlsx +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/docs/tutorials/introduction/introduction.ipynb +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/mkdocs.yml +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/scripts/clean_space.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/scripts/core_classic_mapping.xlsx +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/scripts/create_classic_core_mapping_yaml.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/scripts/dependency_profiler.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/scripts/docs_generate_reference.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/scripts/docs_generate_unit.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/scripts/generate_steps_md.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/scripts/integration_runner/.gitignore +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/scripts/integration_runner/README.md +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/scripts/integration_runner/config.dev.yaml +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/scripts/integration_runner/modules/neat_integration_runner/README.md +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/scripts/integration_runner/modules/neat_integration_runner/auth/neat_cicd_testing.group.yaml +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/scripts/integration_runner/modules/test_data/lift_pumps/classic/lift_pump_stations_root.Asset.csv +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/scripts/integration_runner/modules/test_data/lift_pumps/data_sets/hierarchies.DataSet.yaml +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/scripts/integration_runner/modules/test_data/lift_pumps/raw/collections_pump.Table.csv +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/scripts/integration_runner/modules/test_data/lift_pumps/raw/collections_pump.Table.yaml +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/scripts/integration_runner/modules/test_data/windfarm/classic/Measurement.Asset.yaml +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/scripts/integration_runner/modules/test_data/windfarm/classic/Measurement.Label.yaml +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/scripts/integration_runner/modules/test_data/windfarm/classic/MetMast.Asset.yaml +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/scripts/integration_runner/modules/test_data/windfarm/classic/PowerGeneratingUnit.Label.yaml +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/scripts/integration_runner/modules/test_data/windfarm/classic/Utsira.Asset.yaml +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/scripts/integration_runner/modules/test_data/windfarm/classic/WT-01.Asset.yaml +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/scripts/integration_runner/modules/test_data/windfarm/classic/WT-01_to_MetMast.Relationship.yaml +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/scripts/integration_runner/modules/test_data/windfarm/classic/WT-02.Asset.yaml +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/scripts/integration_runner/modules/test_data/windfarm/classic/WT-02_to_MetMast.Relationship.yaml +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/scripts/integration_runner/modules/test_data/windfarm/classic/WindTurbine.Label.yaml +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/scripts/integration_runner/modules/test_data/windfarm/classic/metMast.Label.yaml +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/scripts/integration_runner/modules/test_data/windfarm/classic/planned_WT-01_2022-01-01.Event.yaml +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/scripts/integration_runner/modules/test_data/windfarm/classic/power_curve_manufacturer1.Sequence.yaml +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/scripts/integration_runner/modules/test_data/windfarm/data_sets/maintenance.DataSet.yaml +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/scripts/integration_runner/modules/test_data/windfarm/data_sets/source_ds.DataSet.yaml +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/scripts/integration_runner/modules/test_data/windfarm/data_sets/usecase_01.DataSet.yaml +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/scripts/integration_runner/modules/test_data/windfarm/files/WT-01_datasheet.FileMetadata.yaml +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/scripts/integration_runner/modules/test_data/windfarm/files/WT-01_datasheet.txt +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/scripts/integration_runner/modules/test_data/windfarm/timeseries/WT-01_forecast.TimeSeries.yaml +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/scripts/integration_runner/modules/test_data/windfarm/timeseries/WT-01_production.TimeSeries.yaml +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/scripts/integration_runner/modules/test_data/windfarm/timeseries/WT-02_forecast.TimeSeries.yaml +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/scripts/integration_runner/modules/test_data/windfarm/timeseries/WT-02_production.TimeSeries.yaml +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/scripts/manual_test_dms_importer.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/scripts/migration.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/scripts/oxi_remote/README.md +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/scripts/oxi_remote/docker-compose.yaml +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/scripts/test_lookup_table.csv +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/scripts/windfarm_to_toolkit.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/test-pyodide.js +0 -0
- {cognite_neat-0.124.0/tests/tests_data_model → cognite_neat-0.125.1/tests}/__init__.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/tests/config.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/tests/data/_misc/state_machine_diagram.md +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/tests/data/_misc/state_machine_table.md +0 -0
- {cognite_neat-0.124.0/tests/tests_data_model/test_models → cognite_neat-0.125.1/tests/tests_data_model}/__init__.py +0 -0
- {cognite_neat-0.124.0/tests/tests_data_model/test_models/test_conceptual → cognite_neat-0.125.1/tests/tests_data_model/test_models}/__init__.py +0 -0
- {cognite_neat-0.124.0/tests/tests_data_model/test_models/test_entities → cognite_neat-0.125.1/tests/tests_data_model/test_models/test_conceptual}/__init__.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/tests/tests_data_model/test_models/test_conceptual/test_concept.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/tests/tests_data_model/test_models/test_conceptual/test_data_model.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/tests/tests_data_model/test_models/test_conceptual/test_property.py +0 -0
- {cognite_neat-0.124.0/tests/tests_unit → cognite_neat-0.125.1/tests/tests_data_model/test_models/test_entities}/__init__.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/tests/tests_data_model/test_models/test_entities/test_base_entities.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/tests/tests_data_model/test_models/test_entities/test_data_type.py +0 -0
- {cognite_neat-0.124.0/tests/tests_unit/test_data_model → cognite_neat-0.125.1/tests/tests_unit}/__init__.py +0 -0
- {cognite_neat-0.124.0/tests/tests_unit/test_data_model/test_models → cognite_neat-0.125.1/tests/tests_unit/test_data_model}/__init__.py +0 -0
- {cognite_neat-0.124.0/tests/tests_unit/test_data_model/test_models/test_dms → cognite_neat-0.125.1/tests/tests_unit/test_data_model/test_importers}/__init__.py +0 -0
- {cognite_neat-0.124.0/tests/tests_unit/test_data_model/test_models/test_entities → cognite_neat-0.125.1/tests/tests_unit/test_data_model/test_models}/__init__.py +0 -0
- {cognite_neat-0.124.0/tests/tests_unit/test_utils → cognite_neat-0.125.1/tests/tests_unit/test_data_model/test_models/test_dms}/__init__.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/tests/tests_unit/test_data_model/test_models/test_dms/strategies.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/tests/tests_unit/test_data_model/test_models/test_dms/test_containers.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/tests/tests_unit/test_data_model/test_models/test_dms/test_data_models.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/tests/tests_unit/test_data_model/test_models/test_dms/test_resources.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/tests/tests_unit/test_data_model/test_models/test_dms/test_space.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/tests/tests_unit/test_data_model/test_models/test_dms/test_views.py +0 -0
- {cognite_neat-0.124.0/tests/v0/tests_end_to_end → cognite_neat-0.125.1/tests/tests_unit/test_data_model/test_models/test_entities}/__init__.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/tests/tests_unit/test_data_model/test_models/test_entities/test_identifiers.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/tests/tests_unit/test_session.py +0 -0
- {cognite_neat-0.124.0/tests/v0/tests_integration → cognite_neat-0.125.1/tests/tests_unit/test_utils}/__init__.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/tests/tests_unit/test_utils/test_auxiliary.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/tests/tests_unit_v1/test_data_model/test_models/test_dms/test_containers.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/tests/tests_unit_v1/test_data_model/test_models/test_dms/test_spaces.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/tests/tests_unit_v1/test_data_model/test_models/test_entities/test_parser.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/tests/tests_unit_v1/test_utils/test_http_client.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/tests/v0/config.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/tests/v0/conftest.py +0 -0
- {cognite_neat-0.124.0/tests/v0/tests_integration/test_api → cognite_neat-0.125.1/tests/v0/tests_end_to_end}/__init__.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/tests/v0/tests_end_to_end/test_rules_flow/test_cdm_extension_verification.yaml +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/tests/v0/tests_end_to_end/test_rules_flow/test_excel_importer_to_yaml_new_endpoint.yml +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/tests/v0/tests_end_to_end/test_rules_flow/test_ontology_importer_to_yaml.yml +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/tests/v0/tests_end_to_end/test_rules_flow/test_to_extension_transformer.yml +0 -0
- {cognite_neat-0.124.0/tests/v0/tests_integration/test_graph → cognite_neat-0.125.1/tests/v0/tests_integration}/__init__.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/tests/v0/tests_integration/conftest.py +0 -0
- {cognite_neat-0.124.0/tests/v0/tests_integration/test_graph/test_loaders → cognite_neat-0.125.1/tests/v0/tests_integration/test_api}/__init__.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/tests/v0/tests_integration/test_api/test_conversion.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/tests/v0/tests_integration/test_api/test_validate_rules.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/tests/v0/tests_integration/test_client_available.py +0 -0
- {cognite_neat-0.124.0/tests/v0/tests_integration/test_neat_client → cognite_neat-0.125.1/tests/v0/tests_integration/test_graph}/__init__.py +0 -0
- {cognite_neat-0.124.0/tests/v0/tests_integration/test_rules → cognite_neat-0.125.1/tests/v0/tests_integration/test_graph/test_loaders}/__init__.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/tests/v0/tests_integration/test_graph/test_loaders/test_dms_loader.py +0 -0
- {cognite_neat-0.124.0/tests/v0/tests_integration/test_rules/test_exporters → cognite_neat-0.125.1/tests/v0/tests_integration/test_neat_client}/__init__.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/tests/v0/tests_integration/test_neat_client/test_cdf_loaders.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/tests/v0/tests_integration/test_neat_client/test_statistics.py +0 -0
- {cognite_neat-0.124.0/tests/v0/tests_integration/test_rules/test_importers → cognite_neat-0.125.1/tests/v0/tests_integration/test_rules}/__init__.py +0 -0
- {cognite_neat-0.124.0/tests/v0/tests_integration/test_session → cognite_neat-0.125.1/tests/v0/tests_integration/test_rules/test_exporters}/__init__.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/tests/v0/tests_integration/test_rules/test_exporters/test_dms_exporters.py +0 -0
- {cognite_neat-0.124.0/tests/v0/tests_integration/test_utils → cognite_neat-0.125.1/tests/v0/tests_integration/test_rules/test_importers}/__init__.py +0 -0
- {cognite_neat-0.124.0/tests/v0/tests_unit → cognite_neat-0.125.1/tests/v0/tests_integration/test_session}/__init__.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/tests/v0/tests_integration/test_session/test_create_enterprise.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/tests/v0/tests_integration/test_session/test_data_model_prepare_fix/test_prefix_dms_rules_entities.yml +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/tests/v0/tests_integration/test_session/test_data_model_prepare_fix/test_prefix_info_rules_entities.yml +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/tests/v0/tests_integration/test_session/test_data_model_prepare_fix/test_standardize_space_and_version.yml +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/tests/v0/tests_integration/test_session/test_data_model_prepare_fix.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/tests/v0/tests_integration/test_session/test_data_model_to/test_raw_filter.yml +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/tests/v0/tests_integration/test_session/test_data_model_to.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/tests/v0/tests_integration/test_session/test_graph_flow/test_aml_to_dms.yml +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/tests/v0/tests_integration/test_session/test_graph_flow/test_create_extension_template.yml +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/tests/v0/tests_integration/test_session/test_graph_flow/test_dexpi_to_dms.yml +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/tests/v0/tests_integration/test_session/test_graph_flow/test_uplift_workflow_to_python.yml +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/tests/v0/tests_integration/test_session/test_graph_flow.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/tests/v0/tests_integration/test_session/test_read/test_read_model_referencing_core.yml +0 -0
- {cognite_neat-0.124.0/tests/v0/tests_unit/test_graph → cognite_neat-0.125.1/tests/v0/tests_integration/test_utils}/__init__.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/tests/v0/tests_integration/test_utils/test_reader.py +0 -0
- {cognite_neat-0.124.0/tests/v0/tests_unit/test_graph/test_extractors → cognite_neat-0.125.1/tests/v0/tests_unit}/__init__.py +0 -0
- {cognite_neat-0.124.0/tests/v0/tests_unit/test_graph/test_loaders → cognite_neat-0.125.1/tests/v0/tests_unit/test_graph}/__init__.py +0 -0
- {cognite_neat-0.124.0/tests/v0/tests_unit/test_graph/test_transformers → cognite_neat-0.125.1/tests/v0/tests_unit/test_graph/test_extractors}/__init__.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/tests/v0/tests_unit/test_graph/test_extractors/test_asset_extractor.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/tests/v0/tests_unit/test_graph/test_extractors/test_dms_extractor.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/tests/v0/tests_unit/test_graph/test_extractors/test_dms_graph_extractor.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/tests/v0/tests_unit/test_graph/test_extractors/test_events_extractor.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/tests/v0/tests_unit/test_graph/test_extractors/test_files_extractor.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/tests/v0/tests_unit/test_graph/test_extractors/test_labels_extractor.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/tests/v0/tests_unit/test_graph/test_extractors/test_raw_extractor.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/tests/v0/tests_unit/test_graph/test_extractors/test_relationship_extractor.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/tests/v0/tests_unit/test_graph/test_extractors/test_sequences_extractor.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/tests/v0/tests_unit/test_graph/test_extractors/test_timeseries_extractor.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/tests/v0/tests_unit/test_graph/test_graph_read.py +0 -0
- {cognite_neat-0.124.0/tests/v0/tests_unit/test_issues → cognite_neat-0.125.1/tests/v0/tests_unit/test_graph/test_loaders}/__init__.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/tests/v0/tests_unit/test_graph/test_loaders/test_dms_loader.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/tests/v0/tests_unit/test_graph/test_loaders/test_rdf2dms.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/tests/v0/tests_unit/test_graph/test_loaders/test_rdf_to_instance_space.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/tests/v0/tests_unit/test_graph/test_provenance.py +0 -0
- {cognite_neat-0.124.0/tests/v0/tests_unit/test_neat_client → cognite_neat-0.125.1/tests/v0/tests_unit/test_graph/test_transformers}/__init__.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/tests/v0/tests_unit/test_graph/test_transformers/test_asset_depth_transformer.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/tests/v0/tests_unit/test_graph/test_transformers/test_asset_event_connector_transformer.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/tests/v0/tests_unit/test_graph/test_transformers/test_asset_file_connector_transformer.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/tests/v0/tests_unit/test_graph/test_transformers/test_asset_relationship_connector_transformer.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/tests/v0/tests_unit/test_graph/test_transformers/test_asset_sequence_connector_transformer.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/tests/v0/tests_unit/test_graph/test_transformers/test_asset_ts_connector_transformer.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/tests/v0/tests_unit/test_graph/test_transformers/test_attach_property_from_target2source.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/tests/v0/tests_unit/test_graph/test_transformers/test_connection_to_literal.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/tests/v0/tests_unit/test_graph/test_transformers/test_make_connection_on_exact_match.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/tests/v0/tests_unit/test_graph/test_transformers/test_prune_graph.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/tests/v0/tests_unit/test_graph/test_transformers/test_split_multi_value_property_transformer.py +0 -0
- {cognite_neat-0.124.0/tests/v0/tests_unit/test_rules → cognite_neat-0.125.1/tests/v0/tests_unit/test_issues}/__init__.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/tests/v0/tests_unit/test_issues/test_formatters.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/tests/v0/tests_unit/test_issues/test_issue_behavior.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/tests/v0/tests_unit/test_issues/test_issues_metatests.py +0 -0
- {cognite_neat-0.124.0/tests/v0/tests_unit/test_rules/test_exporters → cognite_neat-0.125.1/tests/v0/tests_unit/test_neat_client}/__init__.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/tests/v0/tests_unit/test_neat_client/test_instances.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/tests/v0/tests_unit/test_neat_client/test_loaders.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/tests/v0/tests_unit/test_neat_client/test_schema.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/tests/v0/tests_unit/test_neat_package_metadata.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/tests/v0/tests_unit/test_plugins.py +0 -0
- {cognite_neat-0.124.0/tests/v0/tests_unit/test_rules/test_importers → cognite_neat-0.125.1/tests/v0/tests_unit/test_rules}/__init__.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/tests/v0/tests_unit/test_rules/test_analysis.py +0 -0
- {cognite_neat-0.124.0/tests/v0/tests_unit/test_rules/test_models → cognite_neat-0.125.1/tests/v0/tests_unit/test_rules/test_exporters}/__init__.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/tests/v0/tests_unit/test_rules/test_exporters/test_exporters_meta.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/tests/v0/tests_unit/test_rules/test_exporters/test_rules2excel.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/tests/v0/tests_unit/test_rules/test_exporters/test_rules2ontology.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/tests/v0/tests_unit/test_rules/test_exporters/test_rules2yaml.py +0 -0
- {cognite_neat-0.124.0/tests/v0/tests_unit/test_rules/test_transformers → cognite_neat-0.125.1/tests/v0/tests_unit/test_rules/test_importers}/__init__.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/tests/v0/tests_unit/test_rules/test_importers/constants.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/tests/v0/tests_unit/test_rules/test_importers/test_dms_importer.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/tests/v0/tests_unit/test_rules/test_importers/test_excel_importer.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/tests/v0/tests_unit/test_rules/test_importers/test_graph_data_model_importer.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/tests/v0/tests_unit/test_rules/test_importers/test_inference_importer.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/tests/v0/tests_unit/test_rules/test_importers/test_owl_importer.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/tests/v0/tests_unit/test_rules/test_importers/test_subinference_importer.py +0 -0
- {cognite_neat-0.124.0/tests/v0/tests_unit/test_session → cognite_neat-0.125.1/tests/v0/tests_unit/test_rules/test_models}/__init__.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/tests/v0/tests_unit/test_rules/test_models/test_asset_rules.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/tests/v0/tests_unit/test_rules/test_models/test_base_rules.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/tests/v0/tests_unit/test_rules/test_models/test_conceptual_model.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/tests/v0/tests_unit/test_rules/test_models/test_data_types.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/tests/v0/tests_unit/test_rules/test_models/test_dms_schema.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/tests/v0/tests_unit/test_rules/test_models/test_input_rules.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/tests/v0/tests_unit/test_rules/test_models/test_restrictions.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/tests/v0/tests_unit/test_rules/test_models/test_wrapped_entities.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/tests/v0/tests_unit/test_rules/test_models/utils.py +0 -0
- {cognite_neat-0.124.0/tests/v0/tests_unit/test_store → cognite_neat-0.125.1/tests/v0/tests_unit/test_rules/test_transformers}/__init__.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/tests/v0/tests_unit/test_rules/test_transformers/test_converters.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/tests/v0/tests_unit/test_rules/test_transformers/test_mapping.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/tests/v0/tests_unit/test_rules/test_transformers/test_transformer_meta.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/tests/v0/tests_unit/test_rules/test_transformers/test_union_conceptual.py +0 -0
- {cognite_neat-0.124.0/tests/v0/tests_unit/test_utils → cognite_neat-0.125.1/tests/v0/tests_unit/test_session}/__init__.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/tests/v0/tests_unit/test_session/test_diff.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/tests/v0/tests_unit/test_session/test_flows.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/tests/v0/tests_unit/test_session/test_meta.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/tests/v0/tests_unit/test_session/test_plugin.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/tests/v0/tests_unit/test_session/test_read.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/tests/v0/tests_unit/test_session/test_to_yaml.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/tests/v0/tests_unit/test_store/test_instance_diff.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/tests/v0/tests_unit/test_store/tests_rules_store/test_import_export.yml +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/tests/v0/tests_unit/test_store/tests_rules_store.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/tests/v0/tests_unit/test_utils/test_auxiliary.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/tests/v0/tests_unit/test_utils/test_cdf_classes.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/tests/v0/tests_unit/test_utils/test_rdf.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/tests/v0/tests_unit/test_utils/test_reader.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/tests/v0/tests_unit/test_utils/test_tarjan.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/tests/v0/tests_unit/test_utils/test_text.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/tests/v0/tests_unit/test_utils/test_utils.py +0 -0
- {cognite_neat-0.124.0 → cognite_neat-0.125.1}/tests/v0/utils.py +0 -0
|
@@ -124,7 +124,7 @@ jobs:
|
|
|
124
124
|
with:
|
|
125
125
|
coverageFile: coverage.xml
|
|
126
126
|
token: ${{ secrets.GITHUB_TOKEN }}
|
|
127
|
-
thresholdAll: 0.
|
|
127
|
+
thresholdAll: 0.9
|
|
128
128
|
- name: Upload coverage reports to Codecov
|
|
129
129
|
uses: codecov/codecov-action@5a1091511ad55cbe89839c7260b706298ca349f7 # v5
|
|
130
130
|
with:
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
from collections.abc import Mapping
|
|
2
|
+
from typing import Annotated, cast
|
|
3
|
+
|
|
4
|
+
from pydantic import AliasGenerator, BaseModel, BeforeValidator, Field, model_validator
|
|
5
|
+
from pydantic.alias_generators import to_camel
|
|
6
|
+
|
|
7
|
+
from cognite.neat._data_model.models.entities import ParsedEntity, parse_entities, parse_entity
|
|
8
|
+
from cognite.neat._utils.text import title_case
|
|
9
|
+
from cognite.neat._utils.useful_types import CellValueType
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
def parse_entity_str(v: str) -> ParsedEntity:
|
|
13
|
+
try:
|
|
14
|
+
return parse_entity(v)
|
|
15
|
+
except ValueError as e:
|
|
16
|
+
raise ValueError(f"Invalid entity syntax: {e}") from e
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
def parse_entities_str(v: str) -> list[ParsedEntity] | None:
|
|
20
|
+
try:
|
|
21
|
+
return parse_entities(v)
|
|
22
|
+
except ValueError as e:
|
|
23
|
+
raise ValueError(f"Invalid entity list syntax: {e}") from e
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
Entity = Annotated[ParsedEntity, BeforeValidator(parse_entity_str, str)]
|
|
27
|
+
EntityList = Annotated[list[ParsedEntity], BeforeValidator(parse_entities_str, str)]
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
class TableObj(
|
|
31
|
+
BaseModel,
|
|
32
|
+
extra="ignore",
|
|
33
|
+
alias_generator=AliasGenerator(
|
|
34
|
+
validation_alias=title_case,
|
|
35
|
+
serialization_alias=to_camel,
|
|
36
|
+
),
|
|
37
|
+
): ...
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
class MetadataValue(TableObj):
|
|
41
|
+
key: str
|
|
42
|
+
value: CellValueType
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
class DMSProperty(TableObj):
|
|
46
|
+
view: Entity
|
|
47
|
+
view_property: str
|
|
48
|
+
name: str | None = None
|
|
49
|
+
description: str | None = None
|
|
50
|
+
connection: Entity | None
|
|
51
|
+
value_type: Entity
|
|
52
|
+
min_count: int | None
|
|
53
|
+
max_count: int | None
|
|
54
|
+
immutable: bool | None = None
|
|
55
|
+
default: CellValueType | None = None
|
|
56
|
+
auto_increment: bool | None = None
|
|
57
|
+
container: Entity | None = None
|
|
58
|
+
container_property: str | None = None
|
|
59
|
+
container_property_name: str | None = None
|
|
60
|
+
container_property_description: str | None = None
|
|
61
|
+
index: EntityList | None = None
|
|
62
|
+
constraint: EntityList | None = None
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
class DMSView(TableObj):
|
|
66
|
+
view: Entity
|
|
67
|
+
name: str | None = None
|
|
68
|
+
description: str | None = None
|
|
69
|
+
implements: EntityList | None = None
|
|
70
|
+
filter: str | None = None
|
|
71
|
+
in_model: bool | None = None
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
class DMSContainer(TableObj):
|
|
75
|
+
container: Entity
|
|
76
|
+
name: str | None = None
|
|
77
|
+
description: str | None = None
|
|
78
|
+
constraint: EntityList | None = None
|
|
79
|
+
used_for: str | None = None
|
|
80
|
+
|
|
81
|
+
|
|
82
|
+
class DMSEnum(TableObj):
|
|
83
|
+
collection: str
|
|
84
|
+
value: str
|
|
85
|
+
name: str | None = None
|
|
86
|
+
description: str | None = None
|
|
87
|
+
|
|
88
|
+
|
|
89
|
+
class DMSNode(TableObj):
|
|
90
|
+
node: Entity
|
|
91
|
+
|
|
92
|
+
|
|
93
|
+
class TableDMS(TableObj):
|
|
94
|
+
metadata: list[MetadataValue]
|
|
95
|
+
properties: list[DMSProperty]
|
|
96
|
+
views: list[DMSView]
|
|
97
|
+
containers: list[DMSContainer] = Field(default_factory=list)
|
|
98
|
+
enum: list[DMSEnum] = Field(default_factory=list)
|
|
99
|
+
nodes: list[DMSNode] = Field(default_factory=list)
|
|
100
|
+
|
|
101
|
+
@model_validator(mode="before")
|
|
102
|
+
def _title_case_keys(
|
|
103
|
+
cls, data: dict[str, list[dict[str, CellValueType]]]
|
|
104
|
+
) -> dict[str, list[dict[str, CellValueType]]]:
|
|
105
|
+
if isinstance(data, dict):
|
|
106
|
+
# We are case-insensitive on the table names.
|
|
107
|
+
return {title_case(k): v for k, v in data.items()}
|
|
108
|
+
return data
|
|
109
|
+
|
|
110
|
+
|
|
111
|
+
DMS_API_MAPPING: Mapping[str, Mapping[str, str]] = {
|
|
112
|
+
"Views": {
|
|
113
|
+
"space": "View",
|
|
114
|
+
"externalId": "View",
|
|
115
|
+
"version": "View",
|
|
116
|
+
**{
|
|
117
|
+
cast(str, field_.serialization_alias): cast(str, field_.validation_alias)
|
|
118
|
+
for field_id, field_ in DMSView.model_fields.items()
|
|
119
|
+
if field_id != "View"
|
|
120
|
+
},
|
|
121
|
+
},
|
|
122
|
+
"Containers": {
|
|
123
|
+
"space": "Container",
|
|
124
|
+
"externalId": "Container",
|
|
125
|
+
**{
|
|
126
|
+
cast(str, field_.serialization_alias): cast(str, field_.validation_alias)
|
|
127
|
+
for field_id, field_ in DMSContainer.model_fields.items()
|
|
128
|
+
if field_id != "Container"
|
|
129
|
+
},
|
|
130
|
+
},
|
|
131
|
+
"Properties": {
|
|
132
|
+
"space": "View",
|
|
133
|
+
"externalId": "View",
|
|
134
|
+
"property": "ViewProperty",
|
|
135
|
+
**{
|
|
136
|
+
cast(str, field_.serialization_alias): cast(str, field_.validation_alias)
|
|
137
|
+
for field_id, field_ in DMSProperty.model_fields.items()
|
|
138
|
+
if field_id not in ("View", "ViewProperty")
|
|
139
|
+
},
|
|
140
|
+
},
|
|
141
|
+
}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
from collections.abc import Mapping
|
|
2
|
+
from typing import ClassVar, cast
|
|
3
|
+
|
|
4
|
+
from pydantic import ValidationError
|
|
5
|
+
|
|
6
|
+
from cognite.neat._data_model.importers._base import DMSImporter
|
|
7
|
+
from cognite.neat._data_model.models.dms import (
|
|
8
|
+
RequestSchema,
|
|
9
|
+
)
|
|
10
|
+
from cognite.neat._exceptions import DataModelImportError
|
|
11
|
+
from cognite.neat._issues import ModelSyntaxError
|
|
12
|
+
from cognite.neat._utils.useful_types import CellValueType
|
|
13
|
+
from cognite.neat._utils.validation import as_json_path, humanize_validation_error
|
|
14
|
+
|
|
15
|
+
from .data_classes import TableDMS
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
class DMSTableImporter(DMSImporter):
|
|
19
|
+
"""Imports DMS from a table structure.
|
|
20
|
+
|
|
21
|
+
The tables can are expected to be a dictionary where the keys are the table names and the values
|
|
22
|
+
are lists of dictionaries representing the rows in the table.
|
|
23
|
+
"""
|
|
24
|
+
|
|
25
|
+
# We can safely cast as we know the validation_alias is always set to a str.
|
|
26
|
+
REQUIRED_SHEETS = tuple(
|
|
27
|
+
cast(str, field_.validation_alias) for field_ in TableDMS.model_fields.values() if field_.is_required()
|
|
28
|
+
)
|
|
29
|
+
REQUIRED_SHEET_MESSAGES: ClassVar[Mapping[str, str]] = {
|
|
30
|
+
f"Missing required column: {sheet!r}": f"Missing required sheet: {sheet!r}" for sheet in REQUIRED_SHEETS
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
def __init__(self, tables: dict[str, list[dict[str, CellValueType]]]) -> None:
|
|
34
|
+
self._table = tables
|
|
35
|
+
|
|
36
|
+
def to_data_model(self) -> RequestSchema:
|
|
37
|
+
raise NotImplementedError()
|
|
38
|
+
|
|
39
|
+
def _read_tables(self) -> TableDMS:
|
|
40
|
+
try:
|
|
41
|
+
# Check tables, columns, data type and entity syntax.
|
|
42
|
+
table = TableDMS.model_validate(self._table)
|
|
43
|
+
except ValidationError as e:
|
|
44
|
+
errors = self._create_error_messages(e)
|
|
45
|
+
raise DataModelImportError(errors) from None
|
|
46
|
+
return table
|
|
47
|
+
|
|
48
|
+
def _create_error_messages(self, error: ValidationError) -> list[ModelSyntaxError]:
|
|
49
|
+
errors: list[ModelSyntaxError] = []
|
|
50
|
+
seen: set[str] = set()
|
|
51
|
+
for message in humanize_validation_error(
|
|
52
|
+
error,
|
|
53
|
+
humanize_location=self._location,
|
|
54
|
+
field_name="column",
|
|
55
|
+
missing_required_descriptor="missing",
|
|
56
|
+
):
|
|
57
|
+
# Replace messages about missing required columns with missing required sheets.
|
|
58
|
+
message = self.REQUIRED_SHEET_MESSAGES.get(message, message)
|
|
59
|
+
if message in seen:
|
|
60
|
+
# We treat all rows as the same, so we get duplicated errors for each row.
|
|
61
|
+
continue
|
|
62
|
+
seen.add(message)
|
|
63
|
+
errors.append(ModelSyntaxError(message=message))
|
|
64
|
+
return errors
|
|
65
|
+
|
|
66
|
+
@staticmethod
|
|
67
|
+
def _location(loc: tuple[str | int, ...]) -> str:
|
|
68
|
+
if isinstance(loc[0], str) and len(loc) == 2: # Sheet + row.
|
|
69
|
+
# We skip the row as we treat all rows as the same. For example, if a required column is missing in one
|
|
70
|
+
# row, it is missing in all rows.
|
|
71
|
+
return f"{loc[0]} sheet"
|
|
72
|
+
elif len(loc) == 3 and isinstance(loc[0], str) and isinstance(loc[1], int) and isinstance(loc[2], str):
|
|
73
|
+
# This means there is something wrong in a specific cell.
|
|
74
|
+
return f"{loc[0]} sheet row {loc[1] + 1} column {loc[2]!r}"
|
|
75
|
+
# This should be unreachable as the TableDMS model only has 2 levels.
|
|
76
|
+
return as_json_path(loc)
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
from collections.abc import Mapping
|
|
2
|
+
from dataclasses import dataclass, field
|
|
3
|
+
|
|
4
|
+
from .data_classes import DMS_API_MAPPING
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
@dataclass
|
|
8
|
+
class SpreadsheetReadContext:
|
|
9
|
+
"""This class is used to store information about the source spreadsheet.
|
|
10
|
+
|
|
11
|
+
It is used to adjust row numbers to account for header rows and empty rows
|
|
12
|
+
such that the error/warning messages are accurate.
|
|
13
|
+
"""
|
|
14
|
+
|
|
15
|
+
header_row: int = 1
|
|
16
|
+
empty_rows: list[int] = field(default_factory=list)
|
|
17
|
+
skipped_rows: list[int] = field(default_factory=list)
|
|
18
|
+
is_one_indexed: bool = True
|
|
19
|
+
|
|
20
|
+
def __post_init__(self) -> None:
|
|
21
|
+
self.empty_rows.sort()
|
|
22
|
+
self.skipped_rows.sort()
|
|
23
|
+
|
|
24
|
+
def adjusted_row_number(self, row_no: int) -> int:
|
|
25
|
+
output = row_no
|
|
26
|
+
for empty_row in self.empty_rows:
|
|
27
|
+
if empty_row <= output:
|
|
28
|
+
output += 1
|
|
29
|
+
else:
|
|
30
|
+
break
|
|
31
|
+
|
|
32
|
+
for skipped_rows in self.skipped_rows:
|
|
33
|
+
if skipped_rows <= output:
|
|
34
|
+
output += 1
|
|
35
|
+
else:
|
|
36
|
+
break
|
|
37
|
+
|
|
38
|
+
return output + self.header_row + (1 if self.is_one_indexed else 0)
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
@dataclass
|
|
42
|
+
class TableSource:
|
|
43
|
+
source: str
|
|
44
|
+
table_read: dict[str, SpreadsheetReadContext] = field(default_factory=dict)
|
|
45
|
+
|
|
46
|
+
def location(self, path: tuple[int | str, ...]) -> str:
|
|
47
|
+
table_id: str | None = None
|
|
48
|
+
row_no: int | None = None
|
|
49
|
+
column: str | None = None
|
|
50
|
+
if len(path) >= 1 and isinstance(path[0], str):
|
|
51
|
+
table_id = path[0]
|
|
52
|
+
if len(path) >= 2 and isinstance(path[1], int):
|
|
53
|
+
row_no = path[1]
|
|
54
|
+
if len(path) >= 3 and isinstance(path[2], str):
|
|
55
|
+
column = path[2]
|
|
56
|
+
column = self.field_to_column(table_id, column)
|
|
57
|
+
if isinstance(row_no, int):
|
|
58
|
+
row_no = self.adjust_row_number(table_id, row_no)
|
|
59
|
+
location_parts = []
|
|
60
|
+
if table_id is not None:
|
|
61
|
+
location_parts.append(f"table {table_id!r}")
|
|
62
|
+
if row_no is not None:
|
|
63
|
+
location_parts.append(f"row {row_no}")
|
|
64
|
+
if column is not None:
|
|
65
|
+
location_parts.append(f"column {column!r}")
|
|
66
|
+
if len(path) > 4:
|
|
67
|
+
location_parts.append("-> " + ".".join(str(p) for p in path[3:]))
|
|
68
|
+
|
|
69
|
+
return " ".join(location_parts)
|
|
70
|
+
|
|
71
|
+
def adjust_row_number(self, table_id: str | None, row_no: int) -> int:
|
|
72
|
+
table_read = table_id and self.table_read.get(table_id)
|
|
73
|
+
if table_read:
|
|
74
|
+
return table_read.adjusted_row_number(row_no)
|
|
75
|
+
return row_no + 1 # Convert to 1-indexed if no table read info is available
|
|
76
|
+
|
|
77
|
+
@classmethod
|
|
78
|
+
def field_to_column(cls, table_id: str | None, field_: str) -> str:
|
|
79
|
+
"""Maps the field name used in the DMS API to the column named used by Neat."""
|
|
80
|
+
mapping = cls.field_mapping(table_id)
|
|
81
|
+
if mapping is not None:
|
|
82
|
+
return mapping.get(field_, field_)
|
|
83
|
+
return field_
|
|
84
|
+
|
|
85
|
+
@classmethod
|
|
86
|
+
def field_mapping(cls, table_id: str | int | None) -> Mapping[str, str] | None:
|
|
87
|
+
if not isinstance(table_id, str):
|
|
88
|
+
return None
|
|
89
|
+
return DMS_API_MAPPING.get(table_id)
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
from ._issues import ModelSyntaxError
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
class NeatException(Exception):
|
|
5
|
+
"""Base class for all exceptions raised by Neat."""
|
|
6
|
+
|
|
7
|
+
pass
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
class DataModelImportError(NeatException):
|
|
11
|
+
"""Raised when there is an error importing a model."""
|
|
12
|
+
|
|
13
|
+
def __init__(self, errors: list[ModelSyntaxError]) -> None:
|
|
14
|
+
self.errors = errors
|
|
15
|
+
|
|
16
|
+
def __str__(self) -> str:
|
|
17
|
+
return f"Model import failed with {len(self.errors)} errors: " + "; ".join(map(str, self.errors))
|
|
@@ -38,3 +38,25 @@ def humanize_collection(collection: Collection[Any], /, *, sort: bool = True, bi
|
|
|
38
38
|
sequence = list(strings)
|
|
39
39
|
|
|
40
40
|
return f"{', '.join(sequence[:-1])} {bind_word} {sequence[-1]}"
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
def title_case(s: str) -> str:
|
|
44
|
+
"""Convert a string to title case, handling underscores and hyphens.
|
|
45
|
+
|
|
46
|
+
Args:
|
|
47
|
+
s: The string to convert.
|
|
48
|
+
Returns:
|
|
49
|
+
The title-cased string.
|
|
50
|
+
Examples:
|
|
51
|
+
>>> title_case("hello world")
|
|
52
|
+
'Hello World'
|
|
53
|
+
>>> title_case("hello_world")
|
|
54
|
+
'Hello World'
|
|
55
|
+
>>> title_case("hello-world")
|
|
56
|
+
'Hello World'
|
|
57
|
+
>>> title_case("hello_world-and-universe")
|
|
58
|
+
'Hello World And Universe'
|
|
59
|
+
>>> title_case("HELLO WORLD")
|
|
60
|
+
'Hello World'
|
|
61
|
+
"""
|
|
62
|
+
return " ".join(word.capitalize() for word in s.replace("_", " ").replace("-", " ").split())
|
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
from collections.abc import Hashable
|
|
2
|
+
from datetime import date, datetime, time, timedelta
|
|
2
3
|
from typing import TypeAlias, TypeVar
|
|
3
4
|
|
|
4
5
|
JsonVal: TypeAlias = None | str | int | float | bool | dict[str, "JsonVal"] | list["JsonVal"]
|
|
5
6
|
|
|
6
7
|
|
|
7
8
|
T_ID = TypeVar("T_ID", bound=Hashable)
|
|
9
|
+
|
|
10
|
+
# These are the types that openpyxl supports in cells
|
|
11
|
+
CellValueType: TypeAlias = str | int | float | bool | datetime | date | time | timedelta | None
|
|
@@ -31,6 +31,7 @@ def humanize_validation_error(
|
|
|
31
31
|
humanize_location: Callable[[tuple[int | str, ...]], str] = as_json_path,
|
|
32
32
|
field_name: Literal["field", "column", "value"] = "field",
|
|
33
33
|
field_renaming: Mapping[str, str] | None = None,
|
|
34
|
+
missing_required_descriptor: Literal["empty", "missing"] = "missing",
|
|
34
35
|
) -> list[str]:
|
|
35
36
|
"""Converts a ValidationError to a human-readable format.
|
|
36
37
|
|
|
@@ -50,6 +51,8 @@ def humanize_validation_error(
|
|
|
50
51
|
This is useful when the field names in the model are different from the names in the source.
|
|
51
52
|
For example, if the model field is "asset_id" but the source column is "Asset ID",
|
|
52
53
|
you can provide a mapping {"asset_id": "Asset ID"} to have the error messages use the source names.
|
|
54
|
+
missing_required_descriptor: How to describe missing required fields. Default is "missing".
|
|
55
|
+
Other option is "empty" which can be more suitable for table data.
|
|
53
56
|
Returns:
|
|
54
57
|
A list of human-readable error messages.
|
|
55
58
|
"""
|
|
@@ -60,9 +63,9 @@ def humanize_validation_error(
|
|
|
60
63
|
loc = (*parent_loc, *item["loc"])
|
|
61
64
|
error_type = item["type"]
|
|
62
65
|
if error_type == "missing":
|
|
63
|
-
msg = f"Missing required
|
|
66
|
+
msg = f"Missing required {field_name}: {loc[-1]!r}"
|
|
64
67
|
elif error_type == "extra_forbidden":
|
|
65
|
-
msg = f"Unused
|
|
68
|
+
msg = f"Unused {field_name}: {loc[-1]!r}"
|
|
66
69
|
elif error_type == "value_error":
|
|
67
70
|
msg = str(item["ctx"]["error"])
|
|
68
71
|
elif error_type == "literal_error":
|
|
@@ -92,10 +95,10 @@ def humanize_validation_error(
|
|
|
92
95
|
|
|
93
96
|
error_suffix = f"{msg[:1].casefold()}{msg[1:]}"
|
|
94
97
|
if len(loc) > 1 and error_type in {"extra_forbidden", "missing"}:
|
|
95
|
-
if
|
|
98
|
+
if missing_required_descriptor == "empty" and error_type == "missing":
|
|
96
99
|
# This is a table so we modify the error message.
|
|
97
100
|
msg = (
|
|
98
|
-
f"In {humanize_location(loc[:-1])} the
|
|
101
|
+
f"In {humanize_location(loc[:-1])} the {field_name} {field_renaming.get(str(loc[-1]), loc[-1])!r} "
|
|
99
102
|
"cannot be empty."
|
|
100
103
|
)
|
|
101
104
|
else:
|
{cognite_neat-0.124.0 → cognite_neat-0.125.1}/cognite/neat/v0/core/_data_model/_constants.py
RENAMED
|
@@ -43,6 +43,7 @@ class EntityTypes(StrEnum):
|
|
|
43
43
|
prefix = "prefix"
|
|
44
44
|
space = "space"
|
|
45
45
|
container_index = "container_index"
|
|
46
|
+
container_constraint = "container_constraint"
|
|
46
47
|
concept_restriction = "conceptRestriction"
|
|
47
48
|
value_constraint = "valueConstraint"
|
|
48
49
|
cardinality_constraint = "cardinalityConstraint"
|
|
@@ -32,7 +32,7 @@ from cognite.neat.v0.core._data_model.models.data_types import (
|
|
|
32
32
|
)
|
|
33
33
|
from cognite.neat.v0.core._data_model.models.physical._verified import PhysicalDataModel
|
|
34
34
|
from cognite.neat.v0.core._utils.spreadsheet import (
|
|
35
|
-
|
|
35
|
+
find_column_and_row_with_value,
|
|
36
36
|
generate_data_validation,
|
|
37
37
|
)
|
|
38
38
|
|
|
@@ -217,7 +217,7 @@ class ExcelExporter(BaseExporter[VerifiedDataModel, Workbook]):
|
|
|
217
217
|
continue
|
|
218
218
|
ws = workbook[sheet]
|
|
219
219
|
for col in get_internal_properties():
|
|
220
|
-
column_letter =
|
|
220
|
+
column_letter = find_column_and_row_with_value(ws, col)[0]
|
|
221
221
|
if column_letter:
|
|
222
222
|
ws.column_dimensions[column_letter].hidden = True
|
|
223
223
|
|
|
@@ -451,7 +451,7 @@ class ExcelExporter(BaseExporter[VerifiedDataModel, Workbook]):
|
|
|
451
451
|
workbook[sheet_name].add_data_validation(data_validators[data_validator_name])
|
|
452
452
|
|
|
453
453
|
# APPLY VALIDATOR TO SPECIFIC COLUMN
|
|
454
|
-
if column_letter :=
|
|
454
|
+
if column_letter := find_column_and_row_with_value(workbook[sheet_name], column_name)[0]:
|
|
455
455
|
data_validators[data_validator_name].add(f"{column_letter}{3}:{column_letter}{3 + total_rows}")
|
|
456
456
|
|
|
457
457
|
def _create_sheet_with_header(
|
|
@@ -54,6 +54,7 @@ from cognite.neat.v0.core._data_model.models.entities import (
|
|
|
54
54
|
ReverseConnectionEntity,
|
|
55
55
|
ViewEntity,
|
|
56
56
|
)
|
|
57
|
+
from cognite.neat.v0.core._data_model.models.entities._single_value import ContainerConstraintEntity
|
|
57
58
|
from cognite.neat.v0.core._data_model.models.physical import (
|
|
58
59
|
UnverifiedPhysicalContainer,
|
|
59
60
|
UnverifiedPhysicalEnum,
|
|
@@ -571,17 +572,17 @@ class DMSImporter(BaseImporter[UnverifiedPhysicalDataModel]):
|
|
|
571
572
|
index.append(ContainerIndexEntity(prefix="inverted", suffix=index_name, order=order))
|
|
572
573
|
return index or None
|
|
573
574
|
|
|
574
|
-
def _get_constraint(self, prop: ViewPropertyApply, prop_id: str) -> list[
|
|
575
|
+
def _get_constraint(self, prop: ViewPropertyApply, prop_id: str) -> list[ContainerConstraintEntity] | None:
|
|
575
576
|
if not isinstance(prop, dm.MappedPropertyApply):
|
|
576
577
|
return None
|
|
577
578
|
container = self._all_containers_by_id[prop.container]
|
|
578
|
-
unique_constraints: list[
|
|
579
|
+
unique_constraints: list[ContainerConstraintEntity] = []
|
|
579
580
|
for constraint_name, constraint_obj in (container.constraints or {}).items():
|
|
580
581
|
if isinstance(constraint_obj, dm.RequiresConstraint):
|
|
581
582
|
# This is handled in the .from_container method of DMSContainer
|
|
582
583
|
continue
|
|
583
584
|
elif isinstance(constraint_obj, dm.UniquenessConstraint) and prop_id in constraint_obj.properties:
|
|
584
|
-
unique_constraints.append(constraint_name)
|
|
585
|
+
unique_constraints.append(ContainerConstraintEntity(prefix="uniqueness", suffix=constraint_name))
|
|
585
586
|
elif isinstance(constraint_obj, dm.UniquenessConstraint):
|
|
586
587
|
# This does not apply to this property
|
|
587
588
|
continue
|
|
@@ -10,8 +10,10 @@ import pandas as pd
|
|
|
10
10
|
from openpyxl import load_workbook
|
|
11
11
|
from openpyxl.worksheet.worksheet import Worksheet
|
|
12
12
|
from pandas import ExcelFile
|
|
13
|
+
from pydantic import ValidationError
|
|
13
14
|
from rdflib import Namespace, URIRef
|
|
14
15
|
|
|
16
|
+
from cognite.neat.v0.core._data_model._constants import SPLIT_ON_COMMA_PATTERN
|
|
15
17
|
from cognite.neat.v0.core._data_model._shared import (
|
|
16
18
|
ImportedDataModel,
|
|
17
19
|
T_UnverifiedDataModel,
|
|
@@ -23,6 +25,7 @@ from cognite.neat.v0.core._data_model.models import (
|
|
|
23
25
|
SchemaCompleteness,
|
|
24
26
|
)
|
|
25
27
|
from cognite.neat.v0.core._data_model.models._import_contexts import SpreadsheetContext
|
|
28
|
+
from cognite.neat.v0.core._data_model.models.entities._single_value import ContainerConstraintEntity, ContainerEntity
|
|
26
29
|
from cognite.neat.v0.core._issues import IssueList, MultiValueError
|
|
27
30
|
from cognite.neat.v0.core._issues.errors import (
|
|
28
31
|
FileMissingRequiredFieldError,
|
|
@@ -30,7 +33,11 @@ from cognite.neat.v0.core._issues.errors import (
|
|
|
30
33
|
FileReadError,
|
|
31
34
|
)
|
|
32
35
|
from cognite.neat.v0.core._issues.warnings import FileMissingRequiredFieldWarning
|
|
33
|
-
from cognite.neat.v0.core._utils.spreadsheet import
|
|
36
|
+
from cognite.neat.v0.core._utils.spreadsheet import (
|
|
37
|
+
SpreadsheetRead,
|
|
38
|
+
find_column_and_row_with_value,
|
|
39
|
+
read_individual_sheet,
|
|
40
|
+
)
|
|
34
41
|
from cognite.neat.v0.core._utils.text import humanize_collection
|
|
35
42
|
|
|
36
43
|
from ._base import BaseImporter
|
|
@@ -306,7 +313,7 @@ class ExcelImporter(BaseImporter[T_UnverifiedDataModel]):
|
|
|
306
313
|
|
|
307
314
|
"""
|
|
308
315
|
|
|
309
|
-
workbook = load_workbook(filepath)
|
|
316
|
+
workbook = load_workbook(filepath, data_only=True)
|
|
310
317
|
|
|
311
318
|
if "Classes" in workbook.sheetnames:
|
|
312
319
|
print(
|
|
@@ -323,13 +330,17 @@ class ExcelImporter(BaseImporter[T_UnverifiedDataModel]):
|
|
|
323
330
|
if "Properties" in workbook.sheetnames:
|
|
324
331
|
_replace_class_with_concept_cell(workbook["Properties"])
|
|
325
332
|
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
333
|
+
elif "Containers" in workbook.sheetnames:
|
|
334
|
+
_replace_legacy_constraint_form(workbook["Containers"])
|
|
335
|
+
_replace_legacy_constraint_form(workbook["Properties"])
|
|
329
336
|
|
|
330
337
|
else:
|
|
331
338
|
return filepath
|
|
332
339
|
|
|
340
|
+
with tempfile.NamedTemporaryFile(prefix="temp_neat_file", suffix=".xlsx", delete=False) as temp_file:
|
|
341
|
+
workbook.save(temp_file.name)
|
|
342
|
+
return Path(temp_file.name)
|
|
343
|
+
|
|
333
344
|
|
|
334
345
|
def _replace_class_with_concept_cell(sheet: Worksheet) -> None:
|
|
335
346
|
"""
|
|
@@ -342,3 +353,72 @@ def _replace_class_with_concept_cell(sheet: Worksheet) -> None:
|
|
|
342
353
|
for cell in row:
|
|
343
354
|
if cell.value == "Class":
|
|
344
355
|
cell.value = "Concept"
|
|
356
|
+
|
|
357
|
+
|
|
358
|
+
def _replace_legacy_constraint_form(sheet: Worksheet) -> None:
|
|
359
|
+
"""
|
|
360
|
+
Replaces the legacy form of container constraints with the new form in the given sheet.
|
|
361
|
+
|
|
362
|
+
Args:
|
|
363
|
+
sheet (Worksheet): The sheet in which to replace the old form of container constraints.
|
|
364
|
+
"""
|
|
365
|
+
column, row = find_column_and_row_with_value(sheet, "Constraint", False)
|
|
366
|
+
|
|
367
|
+
if not column or not row:
|
|
368
|
+
return None
|
|
369
|
+
|
|
370
|
+
# Iterate over values in the constraint column and replace old form with new form
|
|
371
|
+
replaced: bool = False
|
|
372
|
+
for cell_row in sheet.iter_rows(min_row=row + 1, min_col=column, max_col=column):
|
|
373
|
+
cell = cell_row[0]
|
|
374
|
+
if cell.value is not None: # Skip empty cells
|
|
375
|
+
# Container sheet update
|
|
376
|
+
if sheet.title.lower() == "containers":
|
|
377
|
+
constraints = []
|
|
378
|
+
for constraint in SPLIT_ON_COMMA_PATTERN.split(str(cell.value)):
|
|
379
|
+
# latest format, do nothing
|
|
380
|
+
if "container" in constraint.lower():
|
|
381
|
+
constraints.append(constraint)
|
|
382
|
+
continue
|
|
383
|
+
|
|
384
|
+
try:
|
|
385
|
+
container = ContainerEntity.load(constraint, space="default")
|
|
386
|
+
container_str = container.external_id if container.space == "default" else str(container)
|
|
387
|
+
constraints.append(
|
|
388
|
+
f"requires:{container.space}_{container.external_id}(container={container_str})"
|
|
389
|
+
)
|
|
390
|
+
replaced = True
|
|
391
|
+
except ValidationError:
|
|
392
|
+
constraints.append(constraint)
|
|
393
|
+
|
|
394
|
+
cell.value = ",".join(constraints)
|
|
395
|
+
|
|
396
|
+
# Properties sheet update
|
|
397
|
+
elif sheet.title.lower() == "properties":
|
|
398
|
+
constraints = []
|
|
399
|
+
for constraint in SPLIT_ON_COMMA_PATTERN.split(str(cell.value)):
|
|
400
|
+
try:
|
|
401
|
+
constraint_entity = ContainerConstraintEntity.load(constraint)
|
|
402
|
+
|
|
403
|
+
if constraint_entity.prefix in ["uniqueness", "requires"]:
|
|
404
|
+
constraints.append(constraint)
|
|
405
|
+
|
|
406
|
+
# Replace old format with new format
|
|
407
|
+
else:
|
|
408
|
+
constraints.append(f"uniqueness:{constraint}")
|
|
409
|
+
replaced = True
|
|
410
|
+
|
|
411
|
+
# If the constraint is not valid, we keep it as is
|
|
412
|
+
# to be caught by validation later
|
|
413
|
+
except ValidationError:
|
|
414
|
+
constraints.append(constraint)
|
|
415
|
+
|
|
416
|
+
cell.value = ",".join(constraints)
|
|
417
|
+
|
|
418
|
+
if replaced:
|
|
419
|
+
print(
|
|
420
|
+
(
|
|
421
|
+
"You are using a legacy container constraints format "
|
|
422
|
+
f"in the {sheet.title} sheet. Please update to the latest format."
|
|
423
|
+
),
|
|
424
|
+
)
|
|
@@ -7,6 +7,7 @@ from ._single_value import (
|
|
|
7
7
|
AssetFields,
|
|
8
8
|
ConceptEntity,
|
|
9
9
|
ConceptualEntity,
|
|
10
|
+
ContainerConstraintEntity,
|
|
10
11
|
ContainerEntity,
|
|
11
12
|
ContainerIndexEntity,
|
|
12
13
|
DataModelEntity,
|
|
@@ -35,6 +36,7 @@ __all__ = [
|
|
|
35
36
|
"ConceptPropertyCardinalityConstraint",
|
|
36
37
|
"ConceptPropertyValueConstraint",
|
|
37
38
|
"ConceptualEntity",
|
|
39
|
+
"ContainerConstraintEntity",
|
|
38
40
|
"ContainerEntity",
|
|
39
41
|
"ContainerEntityList",
|
|
40
42
|
"ContainerIndexEntity",
|
|
@@ -660,3 +660,17 @@ class ContainerIndexEntity(PhysicalEntity[None]):
|
|
|
660
660
|
@classmethod
|
|
661
661
|
def from_id(cls, id: None) -> Self:
|
|
662
662
|
return cls(suffix="dummy")
|
|
663
|
+
|
|
664
|
+
|
|
665
|
+
class ContainerConstraintEntity(PhysicalEntity[None]):
|
|
666
|
+
type_: ClassVar[EntityTypes] = EntityTypes.container_constraint
|
|
667
|
+
prefix: _UndefinedType | Literal["uniqueness", "requires"] = Undefined # type: ignore[assignment]
|
|
668
|
+
suffix: str
|
|
669
|
+
container: ContainerEntity | None = None
|
|
670
|
+
|
|
671
|
+
def as_id(self) -> None:
|
|
672
|
+
return None
|
|
673
|
+
|
|
674
|
+
@classmethod
|
|
675
|
+
def from_id(cls, id: None) -> Self:
|
|
676
|
+
return cls(suffix="dummy")
|