cognite-neat 0.123.26__py3-none-any.whl → 1.0.22__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- cognite/neat/__init__.py +4 -3
- cognite/neat/_client/__init__.py +5 -0
- cognite/neat/_client/api.py +8 -0
- cognite/neat/_client/client.py +21 -0
- cognite/neat/_client/config.py +40 -0
- cognite/neat/_client/containers_api.py +138 -0
- cognite/neat/_client/data_classes.py +44 -0
- cognite/neat/_client/data_model_api.py +115 -0
- cognite/neat/_client/init/credentials.py +70 -0
- cognite/neat/_client/init/env_vars.py +131 -0
- cognite/neat/_client/init/main.py +51 -0
- cognite/neat/_client/spaces_api.py +115 -0
- cognite/neat/_client/statistics_api.py +24 -0
- cognite/neat/_client/views_api.py +144 -0
- cognite/neat/_config.py +266 -0
- cognite/neat/_data_model/_analysis.py +571 -0
- cognite/neat/_data_model/_constants.py +74 -0
- cognite/neat/_data_model/_identifiers.py +61 -0
- cognite/neat/_data_model/_shared.py +41 -0
- cognite/neat/_data_model/_snapshot.py +134 -0
- cognite/neat/_data_model/deployer/_differ.py +140 -0
- cognite/neat/_data_model/deployer/_differ_container.py +360 -0
- cognite/neat/_data_model/deployer/_differ_data_model.py +54 -0
- cognite/neat/_data_model/deployer/_differ_space.py +9 -0
- cognite/neat/_data_model/deployer/_differ_view.py +299 -0
- cognite/neat/_data_model/deployer/data_classes.py +644 -0
- cognite/neat/_data_model/deployer/deployer.py +431 -0
- cognite/neat/_data_model/exporters/__init__.py +15 -0
- cognite/neat/_data_model/exporters/_api_exporter.py +37 -0
- cognite/neat/_data_model/exporters/_base.py +24 -0
- cognite/neat/_data_model/exporters/_table_exporter/exporter.py +128 -0
- cognite/neat/_data_model/exporters/_table_exporter/workbook.py +409 -0
- cognite/neat/_data_model/exporters/_table_exporter/writer.py +480 -0
- cognite/neat/_data_model/importers/__init__.py +5 -0
- cognite/neat/_data_model/importers/_api_importer.py +166 -0
- cognite/neat/_data_model/importers/_base.py +16 -0
- cognite/neat/_data_model/importers/_table_importer/data_classes.py +344 -0
- cognite/neat/_data_model/importers/_table_importer/importer.py +192 -0
- cognite/neat/_data_model/importers/_table_importer/reader.py +1102 -0
- cognite/neat/_data_model/importers/_table_importer/source.py +94 -0
- cognite/neat/_data_model/models/conceptual/_base.py +18 -0
- cognite/neat/_data_model/models/conceptual/_concept.py +67 -0
- cognite/neat/_data_model/models/conceptual/_data_model.py +51 -0
- cognite/neat/_data_model/models/conceptual/_properties.py +104 -0
- cognite/neat/_data_model/models/conceptual/_property.py +105 -0
- cognite/neat/_data_model/models/dms/__init__.py +206 -0
- cognite/neat/_data_model/models/dms/_base.py +31 -0
- cognite/neat/_data_model/models/dms/_constants.py +48 -0
- cognite/neat/_data_model/models/dms/_constraints.py +42 -0
- cognite/neat/_data_model/models/dms/_container.py +159 -0
- cognite/neat/_data_model/models/dms/_data_model.py +95 -0
- cognite/neat/_data_model/models/dms/_data_types.py +195 -0
- cognite/neat/_data_model/models/dms/_http.py +28 -0
- cognite/neat/_data_model/models/dms/_indexes.py +30 -0
- cognite/neat/_data_model/models/dms/_limits.py +96 -0
- cognite/neat/_data_model/models/dms/_references.py +141 -0
- cognite/neat/_data_model/models/dms/_schema.py +18 -0
- cognite/neat/_data_model/models/dms/_space.py +48 -0
- cognite/neat/_data_model/models/dms/_types.py +17 -0
- cognite/neat/_data_model/models/dms/_view_filter.py +310 -0
- cognite/neat/_data_model/models/dms/_view_property.py +235 -0
- cognite/neat/_data_model/models/dms/_views.py +216 -0
- cognite/neat/_data_model/models/entities/__init__.py +50 -0
- cognite/neat/_data_model/models/entities/_base.py +101 -0
- cognite/neat/_data_model/models/entities/_constants.py +22 -0
- cognite/neat/_data_model/models/entities/_data_types.py +144 -0
- cognite/neat/_data_model/models/entities/_identifiers.py +61 -0
- cognite/neat/_data_model/models/entities/_parser.py +226 -0
- cognite/neat/_data_model/validation/dms/__init__.py +75 -0
- cognite/neat/_data_model/validation/dms/_ai_readiness.py +381 -0
- cognite/neat/_data_model/validation/dms/_base.py +25 -0
- cognite/neat/_data_model/validation/dms/_connections.py +681 -0
- cognite/neat/_data_model/validation/dms/_consistency.py +58 -0
- cognite/neat/_data_model/validation/dms/_containers.py +199 -0
- cognite/neat/_data_model/validation/dms/_limits.py +368 -0
- cognite/neat/_data_model/validation/dms/_orchestrator.py +70 -0
- cognite/neat/_data_model/validation/dms/_views.py +164 -0
- cognite/neat/_exceptions.py +68 -0
- cognite/neat/_issues.py +68 -0
- cognite/neat/_session/__init__.py +3 -0
- cognite/neat/_session/_html/_render.py +30 -0
- cognite/neat/_session/_html/static/__init__.py +8 -0
- cognite/neat/_session/_html/static/deployment.css +476 -0
- cognite/neat/_session/_html/static/deployment.js +181 -0
- cognite/neat/_session/_html/static/issues.css +211 -0
- cognite/neat/_session/_html/static/issues.js +168 -0
- cognite/neat/_session/_html/static/shared.css +186 -0
- cognite/neat/_session/_html/templates/__init__.py +4 -0
- cognite/neat/_session/_html/templates/deployment.html +80 -0
- cognite/neat/_session/_html/templates/issues.html +45 -0
- cognite/neat/_session/_issues.py +81 -0
- cognite/neat/_session/_physical.py +294 -0
- cognite/neat/_session/_result/__init__.py +3 -0
- cognite/neat/_session/_result/_deployment/__init__.py +0 -0
- cognite/neat/_session/_result/_deployment/_physical/__init__.py +0 -0
- cognite/neat/_session/_result/_deployment/_physical/_changes.py +196 -0
- cognite/neat/_session/_result/_deployment/_physical/_statistics.py +180 -0
- cognite/neat/_session/_result/_deployment/_physical/serializer.py +35 -0
- cognite/neat/_session/_result/_result.py +31 -0
- cognite/neat/_session/_session.py +81 -0
- cognite/neat/_session/_usage_analytics/__init__.py +0 -0
- cognite/neat/_session/_usage_analytics/_collector.py +131 -0
- cognite/neat/_session/_usage_analytics/_constants.py +23 -0
- cognite/neat/_session/_usage_analytics/_storage.py +240 -0
- cognite/neat/_session/_wrappers.py +101 -0
- cognite/neat/_state_machine/__init__.py +10 -0
- cognite/neat/_state_machine/_base.py +37 -0
- cognite/neat/_state_machine/_states.py +52 -0
- cognite/neat/_store/__init__.py +3 -0
- cognite/neat/_store/_provenance.py +88 -0
- cognite/neat/_store/_store.py +220 -0
- cognite/neat/_utils/__init__.py +0 -0
- cognite/neat/_utils/_reader.py +194 -0
- cognite/neat/_utils/auxiliary.py +49 -0
- cognite/neat/_utils/collection.py +11 -0
- cognite/neat/_utils/http_client/__init__.py +39 -0
- cognite/neat/_utils/http_client/_client.py +245 -0
- cognite/neat/_utils/http_client/_config.py +19 -0
- cognite/neat/_utils/http_client/_data_classes.py +294 -0
- cognite/neat/_utils/http_client/_tracker.py +31 -0
- cognite/neat/_utils/repo.py +19 -0
- cognite/neat/_utils/text.py +71 -0
- cognite/neat/_utils/useful_types.py +37 -0
- cognite/neat/_utils/validation.py +154 -0
- cognite/neat/_v0/__init__.py +0 -0
- cognite/neat/_v0/core/__init__.py +0 -0
- cognite/neat/_v0/core/_client/_api/__init__.py +0 -0
- cognite/neat/{core → _v0/core}/_client/_api/data_modeling_loaders.py +8 -7
- cognite/neat/{core → _v0/core}/_client/_api/neat_instances.py +5 -5
- cognite/neat/{core → _v0/core}/_client/_api/schema.py +5 -5
- cognite/neat/{core → _v0/core}/_client/_api/statistics.py +3 -3
- cognite/neat/{core → _v0/core}/_client/_api_client.py +1 -1
- cognite/neat/_v0/core/_client/data_classes/__init__.py +0 -0
- cognite/neat/{core → _v0/core}/_client/data_classes/schema.py +4 -4
- cognite/neat/{core → _v0/core}/_client/testing.py +1 -1
- cognite/neat/{core → _v0/core}/_constants.py +5 -3
- cognite/neat/_v0/core/_data_model/__init__.py +0 -0
- cognite/neat/{core → _v0/core}/_data_model/_constants.py +7 -0
- cognite/neat/{core → _v0/core}/_data_model/_shared.py +4 -4
- cognite/neat/{core → _v0/core}/_data_model/analysis/_base.py +8 -8
- cognite/neat/{core → _v0/core}/_data_model/exporters/__init__.py +1 -2
- cognite/neat/{core → _v0/core}/_data_model/exporters/_base.py +7 -7
- cognite/neat/{core → _v0/core}/_data_model/exporters/_data_model2dms.py +9 -9
- cognite/neat/{core → _v0/core}/_data_model/exporters/_data_model2excel.py +12 -12
- cognite/neat/{core → _v0/core}/_data_model/exporters/_data_model2instance_template.py +4 -4
- cognite/neat/{core/_data_model/exporters/_data_model2ontology.py → _v0/core/_data_model/exporters/_data_model2semantic_model.py} +126 -116
- cognite/neat/{core → _v0/core}/_data_model/exporters/_data_model2yaml.py +1 -1
- cognite/neat/{core → _v0/core}/_data_model/importers/_base.py +5 -5
- cognite/neat/{core → _v0/core}/_data_model/importers/_base_file_reader.py +2 -2
- cognite/neat/{core → _v0/core}/_data_model/importers/_dict2data_model.py +5 -5
- cognite/neat/{core → _v0/core}/_data_model/importers/_dms2data_model.py +18 -15
- cognite/neat/{core → _v0/core}/_data_model/importers/_graph2data_model.py +12 -12
- cognite/neat/{core → _v0/core}/_data_model/importers/_rdf/_base.py +12 -12
- cognite/neat/{core → _v0/core}/_data_model/importers/_rdf/_inference2rdata_model.py +14 -14
- cognite/neat/{core → _v0/core}/_data_model/importers/_rdf/_owl2data_model.py +41 -21
- cognite/neat/{core → _v0/core}/_data_model/importers/_rdf/_shared.py +9 -9
- cognite/neat/{core → _v0/core}/_data_model/importers/_spreadsheet2data_model.py +92 -12
- cognite/neat/{core → _v0/core}/_data_model/models/__init__.py +3 -3
- cognite/neat/{core → _v0/core}/_data_model/models/_base_verified.py +5 -5
- cognite/neat/{core → _v0/core}/_data_model/models/_import_contexts.py +1 -1
- cognite/neat/{core → _v0/core}/_data_model/models/_types.py +5 -5
- cognite/neat/{core → _v0/core}/_data_model/models/conceptual/_unverified.py +16 -10
- cognite/neat/{core → _v0/core}/_data_model/models/conceptual/_validation.py +12 -12
- cognite/neat/{core → _v0/core}/_data_model/models/conceptual/_verified.py +9 -9
- cognite/neat/{core → _v0/core}/_data_model/models/data_types.py +14 -4
- cognite/neat/{core → _v0/core}/_data_model/models/entities/__init__.py +6 -0
- cognite/neat/_v0/core/_data_model/models/entities/_loaders.py +155 -0
- cognite/neat/{core → _v0/core}/_data_model/models/entities/_multi_value.py +2 -2
- cognite/neat/_v0/core/_data_model/models/entities/_restrictions.py +230 -0
- cognite/neat/{core → _v0/core}/_data_model/models/entities/_single_value.py +121 -16
- cognite/neat/{core → _v0/core}/_data_model/models/entities/_types.py +10 -0
- cognite/neat/{core → _v0/core}/_data_model/models/mapping/_classic2core.py +5 -5
- cognite/neat/{core → _v0/core}/_data_model/models/physical/__init__.py +1 -1
- cognite/neat/{core → _v0/core}/_data_model/models/physical/_exporter.py +26 -19
- cognite/neat/{core → _v0/core}/_data_model/models/physical/_unverified.py +133 -37
- cognite/neat/{core → _v0/core}/_data_model/models/physical/_validation.py +24 -20
- cognite/neat/{core → _v0/core}/_data_model/models/physical/_verified.py +95 -24
- cognite/neat/{core → _v0/core}/_data_model/transformers/_base.py +4 -4
- cognite/neat/{core → _v0/core}/_data_model/transformers/_converters.py +35 -28
- cognite/neat/{core → _v0/core}/_data_model/transformers/_mapping.py +7 -7
- cognite/neat/{core → _v0/core}/_data_model/transformers/_union_conceptual.py +5 -5
- cognite/neat/{core → _v0/core}/_data_model/transformers/_verification.py +7 -7
- cognite/neat/_v0/core/_instances/__init__.py +0 -0
- cognite/neat/{core → _v0/core}/_instances/_tracking/base.py +1 -1
- cognite/neat/{core → _v0/core}/_instances/_tracking/log.py +1 -1
- cognite/neat/{core → _v0/core}/_instances/extractors/__init__.py +3 -2
- cognite/neat/{core → _v0/core}/_instances/extractors/_base.py +6 -6
- cognite/neat/_v0/core/_instances/extractors/_classic_cdf/__init__.py +0 -0
- cognite/neat/{core → _v0/core}/_instances/extractors/_classic_cdf/_base.py +7 -7
- cognite/neat/{core → _v0/core}/_instances/extractors/_classic_cdf/_classic.py +12 -12
- cognite/neat/{core → _v0/core}/_instances/extractors/_classic_cdf/_relationships.py +3 -3
- cognite/neat/{core → _v0/core}/_instances/extractors/_classic_cdf/_sequences.py +2 -2
- cognite/neat/{core → _v0/core}/_instances/extractors/_dict.py +6 -3
- cognite/neat/{core → _v0/core}/_instances/extractors/_dms.py +6 -6
- cognite/neat/{core → _v0/core}/_instances/extractors/_dms_graph.py +11 -11
- cognite/neat/{core → _v0/core}/_instances/extractors/_mock_graph_generator.py +10 -10
- cognite/neat/{core → _v0/core}/_instances/extractors/_raw.py +3 -3
- cognite/neat/{core → _v0/core}/_instances/extractors/_rdf_file.py +7 -7
- cognite/neat/{core → _v0/core}/_instances/loaders/_base.py +5 -5
- cognite/neat/{core → _v0/core}/_instances/loaders/_rdf2dms.py +17 -17
- cognite/neat/{core → _v0/core}/_instances/loaders/_rdf_to_instance_space.py +11 -11
- cognite/neat/{core → _v0/core}/_instances/queries/_select.py +29 -3
- cognite/neat/{core → _v0/core}/_instances/queries/_update.py +1 -1
- cognite/neat/{core → _v0/core}/_instances/transformers/_base.py +4 -4
- cognite/neat/{core → _v0/core}/_instances/transformers/_classic_cdf.py +6 -6
- cognite/neat/{core → _v0/core}/_instances/transformers/_prune_graph.py +4 -4
- cognite/neat/{core → _v0/core}/_instances/transformers/_rdfpath.py +1 -1
- cognite/neat/{core → _v0/core}/_instances/transformers/_value_type.py +4 -4
- cognite/neat/{core → _v0/core}/_issues/_base.py +5 -5
- cognite/neat/{core → _v0/core}/_issues/_contextmanagers.py +1 -1
- cognite/neat/{core → _v0/core}/_issues/_factory.py +3 -3
- cognite/neat/{core → _v0/core}/_issues/errors/__init__.py +1 -1
- cognite/neat/{core → _v0/core}/_issues/errors/_external.py +1 -1
- cognite/neat/{core → _v0/core}/_issues/errors/_general.py +1 -1
- cognite/neat/{core → _v0/core}/_issues/errors/_properties.py +1 -1
- cognite/neat/{core → _v0/core}/_issues/errors/_resources.py +2 -2
- cognite/neat/{core → _v0/core}/_issues/errors/_wrapper.py +7 -3
- cognite/neat/{core → _v0/core}/_issues/warnings/__init__.py +1 -1
- cognite/neat/{core → _v0/core}/_issues/warnings/_external.py +1 -1
- cognite/neat/{core → _v0/core}/_issues/warnings/_general.py +1 -1
- cognite/neat/{core → _v0/core}/_issues/warnings/_models.py +2 -2
- cognite/neat/{core → _v0/core}/_issues/warnings/_properties.py +2 -2
- cognite/neat/{core → _v0/core}/_issues/warnings/_resources.py +1 -1
- cognite/neat/{core → _v0/core}/_issues/warnings/user_modeling.py +1 -1
- cognite/neat/{core → _v0/core}/_store/_data_model.py +12 -12
- cognite/neat/{core → _v0/core}/_store/_instance.py +43 -10
- cognite/neat/{core → _v0/core}/_store/_provenance.py +3 -3
- cognite/neat/{core → _v0/core}/_store/exceptions.py +4 -4
- cognite/neat/_v0/core/_utils/__init__.py +0 -0
- cognite/neat/{core → _v0/core}/_utils/auth.py +22 -12
- cognite/neat/{core → _v0/core}/_utils/auxiliary.py +1 -1
- cognite/neat/{core → _v0/core}/_utils/collection_.py +2 -2
- cognite/neat/{core → _v0/core}/_utils/graph_transformations_report.py +1 -1
- cognite/neat/{core → _v0/core}/_utils/rdf_.py +1 -1
- cognite/neat/{core → _v0/core}/_utils/reader/_base.py +1 -1
- cognite/neat/{core → _v0/core}/_utils/spreadsheet.py +18 -4
- cognite/neat/{core → _v0/core}/_utils/text.py +1 -1
- cognite/neat/{core → _v0/core}/_utils/upload.py +3 -3
- cognite/neat/{session → _v0}/engine/_load.py +1 -1
- cognite/neat/_v0/plugins/__init__.py +4 -0
- cognite/neat/_v0/plugins/_base.py +9 -0
- cognite/neat/_v0/plugins/_data_model.py +48 -0
- cognite/neat/{plugins → _v0/plugins}/_issues.py +1 -1
- cognite/neat/{plugins → _v0/plugins}/_manager.py +7 -16
- cognite/neat/{session → _v0/session}/_base.py +13 -15
- cognite/neat/{session → _v0/session}/_collector.py +1 -1
- cognite/neat/_v0/session/_diff.py +51 -0
- cognite/neat/{session → _v0/session}/_drop.py +3 -3
- cognite/neat/{session → _v0/session}/_explore.py +2 -2
- cognite/neat/{session → _v0/session}/_fix.py +2 -2
- cognite/neat/{session → _v0/session}/_inspect.py +3 -3
- cognite/neat/{session → _v0/session}/_mapping.py +3 -3
- cognite/neat/{session → _v0/session}/_plugin.py +4 -5
- cognite/neat/{session → _v0/session}/_prepare.py +8 -8
- cognite/neat/{session → _v0/session}/_read.py +34 -21
- cognite/neat/{session → _v0/session}/_set.py +8 -8
- cognite/neat/{session → _v0/session}/_show.py +5 -5
- cognite/neat/{session → _v0/session}/_state.py +10 -10
- cognite/neat/{session → _v0/session}/_subset.py +4 -4
- cognite/neat/{session → _v0/session}/_template.py +11 -11
- cognite/neat/{session → _v0/session}/_to.py +12 -12
- cognite/neat/{session → _v0/session}/_wizard.py +1 -1
- cognite/neat/{session → _v0/session}/exceptions.py +5 -5
- cognite/neat/_version.py +1 -1
- cognite/neat/legacy.py +6 -0
- cognite_neat-1.0.22.dist-info/METADATA +123 -0
- cognite_neat-1.0.22.dist-info/RECORD +329 -0
- cognite_neat-1.0.22.dist-info/WHEEL +4 -0
- cognite/neat/core/_data_model/models/entities/_loaders.py +0 -75
- cognite/neat/plugins/__init__.py +0 -3
- cognite/neat/plugins/data_model/importers/__init__.py +0 -5
- cognite/neat/plugins/data_model/importers/_base.py +0 -28
- cognite/neat/session/_session/_data_model/__init__.py +0 -3
- cognite/neat/session/_session/_data_model/_read.py +0 -193
- cognite/neat/session/_session/_data_model/_routes.py +0 -45
- cognite/neat/session/_session/_data_model/_show.py +0 -147
- cognite/neat/session/_session/_data_model/_write.py +0 -335
- cognite_neat-0.123.26.dist-info/METADATA +0 -144
- cognite_neat-0.123.26.dist-info/RECORD +0 -201
- cognite_neat-0.123.26.dist-info/WHEEL +0 -4
- cognite_neat-0.123.26.dist-info/licenses/LICENSE +0 -201
- /cognite/neat/{core → _client/init}/__init__.py +0 -0
- /cognite/neat/{core/_client/_api → _data_model}/__init__.py +0 -0
- /cognite/neat/{core/_client/data_classes → _data_model/deployer}/__init__.py +0 -0
- /cognite/neat/{core/_data_model → _data_model/exporters/_table_exporter}/__init__.py +0 -0
- /cognite/neat/{core/_instances → _data_model/importers/_table_importer}/__init__.py +0 -0
- /cognite/neat/{core/_instances/extractors/_classic_cdf → _data_model/models}/__init__.py +0 -0
- /cognite/neat/{core/_utils → _data_model/models/conceptual}/__init__.py +0 -0
- /cognite/neat/{plugins/data_model → _data_model/validation}/__init__.py +0 -0
- /cognite/neat/{session/_session → _session/_html}/__init__.py +0 -0
- /cognite/neat/{core → _v0/core}/_client/__init__.py +0 -0
- /cognite/neat/{core → _v0/core}/_client/data_classes/data_modeling.py +0 -0
- /cognite/neat/{core → _v0/core}/_client/data_classes/neat_sequence.py +0 -0
- /cognite/neat/{core → _v0/core}/_client/data_classes/statistics.py +0 -0
- /cognite/neat/{core → _v0/core}/_config.py +0 -0
- /cognite/neat/{core → _v0/core}/_data_model/analysis/__init__.py +0 -0
- /cognite/neat/{core → _v0/core}/_data_model/catalog/__init__.py +0 -0
- /cognite/neat/{core → _v0/core}/_data_model/catalog/classic_model.xlsx +0 -0
- /cognite/neat/{core → _v0/core}/_data_model/catalog/conceptual-imf-data-model.xlsx +0 -0
- /cognite/neat/{core → _v0/core}/_data_model/catalog/hello_world_pump.xlsx +0 -0
- /cognite/neat/{core → _v0/core}/_data_model/importers/__init__.py +0 -0
- /cognite/neat/{core → _v0/core}/_data_model/importers/_rdf/__init__.py +0 -0
- /cognite/neat/{core → _v0/core}/_data_model/models/_base_unverified.py +0 -0
- /cognite/neat/{core → _v0/core}/_data_model/models/conceptual/__init__.py +0 -0
- /cognite/neat/{core → _v0/core}/_data_model/models/entities/_constants.py +0 -0
- /cognite/neat/{core → _v0/core}/_data_model/models/entities/_wrapped.py +0 -0
- /cognite/neat/{core → _v0/core}/_data_model/models/mapping/__init__.py +0 -0
- /cognite/neat/{core → _v0/core}/_data_model/models/mapping/_classic2core.yaml +0 -0
- /cognite/neat/{core → _v0/core}/_data_model/transformers/__init__.py +0 -0
- /cognite/neat/{core → _v0/core}/_instances/_shared.py +0 -0
- /cognite/neat/{core → _v0/core}/_instances/_tracking/__init__.py +0 -0
- /cognite/neat/{core → _v0/core}/_instances/examples/Knowledge-Graph-Nordic44-dirty.xml +0 -0
- /cognite/neat/{core → _v0/core}/_instances/examples/Knowledge-Graph-Nordic44.xml +0 -0
- /cognite/neat/{core → _v0/core}/_instances/examples/__init__.py +0 -0
- /cognite/neat/{core → _v0/core}/_instances/examples/skos-capturing-sheet-wind-topics.xlsx +0 -0
- /cognite/neat/{core → _v0/core}/_instances/extractors/_classic_cdf/_assets.py +0 -0
- /cognite/neat/{core → _v0/core}/_instances/extractors/_classic_cdf/_data_sets.py +0 -0
- /cognite/neat/{core → _v0/core}/_instances/extractors/_classic_cdf/_events.py +0 -0
- /cognite/neat/{core → _v0/core}/_instances/extractors/_classic_cdf/_files.py +0 -0
- /cognite/neat/{core → _v0/core}/_instances/extractors/_classic_cdf/_labels.py +0 -0
- /cognite/neat/{core → _v0/core}/_instances/extractors/_classic_cdf/_timeseries.py +0 -0
- /cognite/neat/{core → _v0/core}/_instances/loaders/__init__.py +0 -0
- /cognite/neat/{core → _v0/core}/_instances/queries/__init__.py +0 -0
- /cognite/neat/{core → _v0/core}/_instances/queries/_base.py +0 -0
- /cognite/neat/{core → _v0/core}/_instances/queries/_queries.py +0 -0
- /cognite/neat/{core → _v0/core}/_instances/transformers/__init__.py +0 -0
- /cognite/neat/{core → _v0/core}/_issues/__init__.py +0 -0
- /cognite/neat/{core → _v0/core}/_issues/formatters.py +0 -0
- /cognite/neat/{core → _v0/core}/_shared.py +0 -0
- /cognite/neat/{core → _v0/core}/_store/__init__.py +0 -0
- /cognite/neat/{core → _v0/core}/_utils/io_.py +0 -0
- /cognite/neat/{core → _v0/core}/_utils/reader/__init__.py +0 -0
- /cognite/neat/{core → _v0/core}/_utils/tarjan.py +0 -0
- /cognite/neat/{core → _v0/core}/_utils/time_.py +0 -0
- /cognite/neat/{core → _v0/core}/_utils/xml_.py +0 -0
- /cognite/neat/{session → _v0}/engine/__init__.py +0 -0
- /cognite/neat/{session → _v0}/engine/_import.py +0 -0
- /cognite/neat/{session → _v0}/engine/_interface.py +0 -0
- /cognite/neat/{session → _v0/session}/__init__.py +0 -0
- /cognite/neat/{session → _v0/session}/_experimental.py +0 -0
- /cognite/neat/{session → _v0/session}/_state/README.md +0 -0
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
from collections.abc import Hashable
|
|
2
|
+
from datetime import date, datetime, time, timedelta
|
|
3
|
+
from typing import Literal, TypeAlias, TypeVar
|
|
4
|
+
|
|
5
|
+
from pydantic import BaseModel
|
|
6
|
+
from pydantic.alias_generators import to_camel
|
|
7
|
+
|
|
8
|
+
JsonVal: TypeAlias = None | str | int | float | bool | dict[str, "JsonVal"] | list["JsonVal"]
|
|
9
|
+
PrimaryTypes: TypeAlias = str | int | float | bool
|
|
10
|
+
|
|
11
|
+
T_ID = TypeVar("T_ID", bound=Hashable)
|
|
12
|
+
# These are the types that openpyxl supports in cells
|
|
13
|
+
CellValueType: TypeAlias = str | int | float | bool | datetime | date | time | timedelta | None
|
|
14
|
+
|
|
15
|
+
# The format expected for excel sheets representing a data model
|
|
16
|
+
DataModelTableType: TypeAlias = dict[str, list[dict[str, CellValueType]]]
|
|
17
|
+
PrimitiveType: TypeAlias = str | int | float | bool
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
class BaseModelObject(BaseModel, alias_generator=to_camel, extra="ignore"):
|
|
21
|
+
"""Base class for all object. This includes resources and nested objects."""
|
|
22
|
+
|
|
23
|
+
...
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
T_Item = TypeVar("T_Item", bound=BaseModelObject)
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
class ReferenceObject(BaseModelObject, frozen=True, populate_by_name=True):
|
|
30
|
+
"""Base class for all reference objects - these are identifiers."""
|
|
31
|
+
|
|
32
|
+
...
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
T_Reference = TypeVar("T_Reference", bound=ReferenceObject, covariant=True)
|
|
36
|
+
|
|
37
|
+
ModusOperandi: TypeAlias = Literal["rebuild", "additive"]
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
from collections.abc import Callable, Mapping
|
|
2
|
+
from dataclasses import dataclass, field
|
|
3
|
+
from typing import Literal
|
|
4
|
+
|
|
5
|
+
from pydantic_core import ErrorDetails
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
def as_json_path(loc: tuple[str | int, ...]) -> str:
|
|
9
|
+
"""Converts a location tuple to a JSON path.
|
|
10
|
+
|
|
11
|
+
Args:
|
|
12
|
+
loc: The location tuple to convert.
|
|
13
|
+
|
|
14
|
+
Returns:
|
|
15
|
+
A JSON path string.
|
|
16
|
+
"""
|
|
17
|
+
if not loc:
|
|
18
|
+
return ""
|
|
19
|
+
# +1 to convert from 0-based to 1-based indexing
|
|
20
|
+
prefix = ""
|
|
21
|
+
if isinstance(loc[0], int):
|
|
22
|
+
prefix = "item"
|
|
23
|
+
|
|
24
|
+
suffix = ".".join([str(x) if isinstance(x, str) else f"[{x + 1}]" for x in loc]).replace(".[", "[")
|
|
25
|
+
return f"{prefix}{suffix}"
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
@dataclass
|
|
29
|
+
class ValidationContext:
|
|
30
|
+
"""
|
|
31
|
+
Context for validation errors providing configuration for error message formatting.
|
|
32
|
+
|
|
33
|
+
This class configures how validation errors are reported, including location formatting,
|
|
34
|
+
field naming conventions, and how to present missing required fields.
|
|
35
|
+
|
|
36
|
+
Attributes:
|
|
37
|
+
parent_loc: Optional location tuple to prepend to each error location.
|
|
38
|
+
This is useful when the error is for a nested model and you want to include the location
|
|
39
|
+
of the parent model.
|
|
40
|
+
humanize_location: A function that converts a location tuple to a human-readable string.
|
|
41
|
+
The default is `as_json_path`, which converts the location to a JSON path.
|
|
42
|
+
This can for example be replaced when the location comes from an Excel table.
|
|
43
|
+
field_name: The name use for "field" in error messages. Default is "field". This can be changed to
|
|
44
|
+
"column" or "value" to better fit the context.
|
|
45
|
+
field_renaming: Optional mapping of field names to source names.
|
|
46
|
+
This is useful when the field names in the model are different from the names in the source.
|
|
47
|
+
For example, if the model field is "asset_id" but the source column is "Asset ID",
|
|
48
|
+
you can provide a mapping {"asset_id": "Asset ID"} to have the error messages use the source names.
|
|
49
|
+
missing_required_descriptor: How to describe missing required fields. Default is "missing".
|
|
50
|
+
Other option is "empty" which can be more suitable for table data.
|
|
51
|
+
"""
|
|
52
|
+
|
|
53
|
+
parent_loc: tuple[int | str, ...] = field(default_factory=tuple)
|
|
54
|
+
humanize_location: Callable[[tuple[int | str, ...]], str] = as_json_path
|
|
55
|
+
field_name: Literal["field", "column", "value"] = "field"
|
|
56
|
+
field_renaming: Mapping[str, str] = field(default_factory=dict)
|
|
57
|
+
missing_required_descriptor: Literal["empty", "missing"] = "missing"
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
def humanize_validation_error(
|
|
61
|
+
error: ErrorDetails,
|
|
62
|
+
context: ValidationContext | None = None,
|
|
63
|
+
) -> str:
|
|
64
|
+
"""Converts a pydantic ErrorDetails object to a human-readable format.
|
|
65
|
+
This overwrites the default error messages from Pydantic to be better suited for NEAT users.
|
|
66
|
+
Args:
|
|
67
|
+
error: The ErrorDetails object to convert.
|
|
68
|
+
context: The context for humanizing the error.
|
|
69
|
+
Returns:
|
|
70
|
+
A human-readable error message.
|
|
71
|
+
"""
|
|
72
|
+
|
|
73
|
+
context = context or ValidationContext()
|
|
74
|
+
|
|
75
|
+
loc = (*context.parent_loc, *error["loc"])
|
|
76
|
+
type_ = error["type"]
|
|
77
|
+
|
|
78
|
+
if type_ == "missing":
|
|
79
|
+
msg = f"Missing required {context.field_name}: {loc[-1]!r}"
|
|
80
|
+
elif type_ == "extra_forbidden":
|
|
81
|
+
msg = f"Unused {context.field_name}: {loc[-1]!r}"
|
|
82
|
+
elif type_ == "value_error":
|
|
83
|
+
msg = str(error["ctx"]["error"])
|
|
84
|
+
elif type_ == "literal_error":
|
|
85
|
+
msg = f"{error['msg']}. Got {error['input']!r}."
|
|
86
|
+
elif type_ == "string_type":
|
|
87
|
+
msg = f"{error['msg']}. Got {error['input']!r} of type {type(error['input']).__name__}. "
|
|
88
|
+
elif type_ == "model_type":
|
|
89
|
+
model_name = error["ctx"].get("class_name", "unknown")
|
|
90
|
+
msg = (
|
|
91
|
+
f"Input must be an object of type {model_name}. Got {error['input']!r} of "
|
|
92
|
+
f"type {type(error['input']).__name__}."
|
|
93
|
+
)
|
|
94
|
+
elif type_ == "union_tag_invalid":
|
|
95
|
+
msg = error["msg"].replace(", 'direct'", "").replace("found using 'type' ", "").replace("tag", "value")
|
|
96
|
+
elif type_ == "string_pattern_mismatch":
|
|
97
|
+
msg = f"string '{error['input']}' does not match the required pattern: '{error['ctx']['pattern']}'."
|
|
98
|
+
|
|
99
|
+
elif type_.endswith("_type"):
|
|
100
|
+
msg = f"{error['msg']}. Got {error['input']!r} of type {type(error['input']).__name__}."
|
|
101
|
+
else:
|
|
102
|
+
# Default to the Pydantic error message
|
|
103
|
+
msg = error["msg"]
|
|
104
|
+
|
|
105
|
+
if type_.endswith("dict_type") and len(loc) > 1:
|
|
106
|
+
# If this is a dict_type error for a JSON field, the location will be:
|
|
107
|
+
# dict[str,json-or-python[json=any,python=tagged-union[list[...],dict[str,...],str,bool,int,float,none]]]
|
|
108
|
+
# This is hard to read, so we simplify it to just the field name.
|
|
109
|
+
loc = tuple(["dict" if isinstance(x, str) and "json-or-python" in x else x for x in loc])
|
|
110
|
+
|
|
111
|
+
error_suffix = f"{msg[:1].casefold()}{msg[1:]}"
|
|
112
|
+
|
|
113
|
+
if len(loc) >= 3 and context.field_name == "column" and loc[-3:] == ("type", "enum", "values"):
|
|
114
|
+
# Special handling for enum errors in table columns
|
|
115
|
+
msg = _enum_message(type_, loc, context)
|
|
116
|
+
elif len(loc) > 1 and type_ in {"extra_forbidden", "missing"}:
|
|
117
|
+
if context.missing_required_descriptor == "empty" and type_ == "missing":
|
|
118
|
+
# This is a table so we modify the error message.
|
|
119
|
+
msg = (
|
|
120
|
+
f"In {context.humanize_location(loc[:-1])} the {context.field_name}"
|
|
121
|
+
f" {context.field_renaming.get(str(loc[-1]), loc[-1])!r} "
|
|
122
|
+
"cannot be empty."
|
|
123
|
+
)
|
|
124
|
+
else:
|
|
125
|
+
# We skip the last element as this is in the message already
|
|
126
|
+
msg = f"In {context.humanize_location(loc[:-1])} {error_suffix.replace('field', context.field_name)}"
|
|
127
|
+
elif len(loc) > 1:
|
|
128
|
+
if context.parent_loc == ("Metadata",) and len(loc) == 2:
|
|
129
|
+
msg = f"In table '{loc[0]}' '{loc[1]}' {error_suffix}"
|
|
130
|
+
else:
|
|
131
|
+
msg = f"In {context.humanize_location(loc)} {error_suffix}"
|
|
132
|
+
elif len(loc) == 1 and isinstance(loc[0], str) and type_ not in {"extra_forbidden", "missing"}:
|
|
133
|
+
msg = f"In {context.field_name} {loc[0]!r}, {error_suffix}"
|
|
134
|
+
|
|
135
|
+
msg = msg.strip()
|
|
136
|
+
if not msg.endswith("."):
|
|
137
|
+
msg += "."
|
|
138
|
+
return msg
|
|
139
|
+
|
|
140
|
+
|
|
141
|
+
def _enum_message(type_: str, loc: tuple[int | str, ...], context: ValidationContext) -> str:
|
|
142
|
+
"""Special handling of enum errors in table columns."""
|
|
143
|
+
|
|
144
|
+
if loc[-1] != "values":
|
|
145
|
+
raise RuntimeError("This is a neat bug, report to the team.")
|
|
146
|
+
if type_ == "missing":
|
|
147
|
+
return (
|
|
148
|
+
f"In {context.humanize_location(loc[:-1])} definition should include "
|
|
149
|
+
"a reference to a collection in the 'Enum' sheet (e.g., collection='MyEnumCollection')."
|
|
150
|
+
)
|
|
151
|
+
elif type_ == "too_short":
|
|
152
|
+
return f"In {context.humanize_location(loc[:-1])} collection is not defined in the 'Enum' sheet"
|
|
153
|
+
else:
|
|
154
|
+
raise RuntimeError("This is a neat bug, report to the team.")
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import itertools
|
|
1
2
|
import re
|
|
2
3
|
import warnings
|
|
3
4
|
from abc import ABC, abstractmethod
|
|
@@ -54,14 +55,14 @@ from cognite.client.data_classes.data_modeling.views import (
|
|
|
54
55
|
from cognite.client.exceptions import CogniteAPIError
|
|
55
56
|
from cognite.client.utils.useful_types import SequenceNotStr
|
|
56
57
|
|
|
57
|
-
from cognite.neat.core._client.data_classes.data_modeling import Component
|
|
58
|
-
from cognite.neat.core._client.data_classes.schema import DMSSchema
|
|
59
|
-
from cognite.neat.core._issues.warnings import CDFMaxIterationsWarning
|
|
60
|
-
from cognite.neat.core._shared import T_ID
|
|
61
|
-
from cognite.neat.core._utils.tarjan import tarjan
|
|
58
|
+
from cognite.neat._v0.core._client.data_classes.data_modeling import Component
|
|
59
|
+
from cognite.neat._v0.core._client.data_classes.schema import DMSSchema
|
|
60
|
+
from cognite.neat._v0.core._issues.warnings import CDFMaxIterationsWarning
|
|
61
|
+
from cognite.neat._v0.core._shared import T_ID
|
|
62
|
+
from cognite.neat._v0.core._utils.tarjan import tarjan
|
|
62
63
|
|
|
63
64
|
if TYPE_CHECKING:
|
|
64
|
-
from cognite.neat.core._client._api_client import NeatClient
|
|
65
|
+
from cognite.neat._v0.core._client._api_client import NeatClient
|
|
65
66
|
|
|
66
67
|
T_WritableCogniteResourceList = TypeVar("T_WritableCogniteResourceList", bound=WriteableCogniteResourceList)
|
|
67
68
|
|
|
@@ -238,7 +239,7 @@ class ResourceLoader(
|
|
|
238
239
|
try:
|
|
239
240
|
return self._update(items)
|
|
240
241
|
except CogniteAPIError as e:
|
|
241
|
-
failed_ids = {self.get_id(failed) for failed in e.failed
|
|
242
|
+
failed_ids = {self.get_id(failed) for failed in itertools.chain(e.failed, e.unknown)}
|
|
242
243
|
success_ids = [self.get_id(success) for success in e.successful]
|
|
243
244
|
success_ = self.retrieve(success_ids)
|
|
244
245
|
if success is None:
|
|
@@ -7,13 +7,13 @@ from cognite.client.data_classes.filters import Filter
|
|
|
7
7
|
from cognite.client.exceptions import CogniteAPIError
|
|
8
8
|
from cognite.client.utils.useful_types import SequenceNotStr
|
|
9
9
|
|
|
10
|
-
from cognite.neat.core._constants import DMS_INSTANCE_LIMIT_MARGIN
|
|
11
|
-
from cognite.neat.core._issues import NeatIssue
|
|
12
|
-
from cognite.neat.core._issues.errors import WillExceedLimitError
|
|
13
|
-
from cognite.neat.core._issues.warnings import NeatValueWarning
|
|
10
|
+
from cognite.neat._v0.core._constants import DMS_INSTANCE_LIMIT_MARGIN
|
|
11
|
+
from cognite.neat._v0.core._issues import NeatIssue
|
|
12
|
+
from cognite.neat._v0.core._issues.errors import WillExceedLimitError
|
|
13
|
+
from cognite.neat._v0.core._issues.warnings import NeatValueWarning
|
|
14
14
|
|
|
15
15
|
if TYPE_CHECKING:
|
|
16
|
-
from cognite.neat.core._client._api_client import NeatClient
|
|
16
|
+
from cognite.neat._v0.core._client._api_client import NeatClient
|
|
17
17
|
|
|
18
18
|
|
|
19
19
|
class NeatInstancesAPI:
|
|
@@ -5,17 +5,17 @@ from typing import TYPE_CHECKING
|
|
|
5
5
|
|
|
6
6
|
from cognite.client import data_modeling as dm
|
|
7
7
|
|
|
8
|
-
from cognite.neat.core._client.data_classes.data_modeling import (
|
|
8
|
+
from cognite.neat._v0.core._client.data_classes.data_modeling import (
|
|
9
9
|
ContainerApplyDict,
|
|
10
10
|
SpaceApplyDict,
|
|
11
11
|
ViewApplyDict,
|
|
12
12
|
)
|
|
13
|
-
from cognite.neat.core._client.data_classes.schema import DMSSchema
|
|
14
|
-
from cognite.neat.core._constants import is_hierarchy_property
|
|
15
|
-
from cognite.neat.core._issues.errors import NeatValueError
|
|
13
|
+
from cognite.neat._v0.core._client.data_classes.schema import DMSSchema
|
|
14
|
+
from cognite.neat._v0.core._constants import is_hierarchy_property
|
|
15
|
+
from cognite.neat._v0.core._issues.errors import NeatValueError
|
|
16
16
|
|
|
17
17
|
if TYPE_CHECKING:
|
|
18
|
-
from cognite.neat.core._client._api_client import NeatClient
|
|
18
|
+
from cognite.neat._v0.core._client._api_client import NeatClient
|
|
19
19
|
|
|
20
20
|
|
|
21
21
|
class SchemaAPI:
|
|
@@ -7,7 +7,7 @@ from cognite.client.config import ClientConfig
|
|
|
7
7
|
from cognite.client.data_classes.data_modeling.ids import _load_space_identifier
|
|
8
8
|
from cognite.client.utils.useful_types import SequenceNotStr
|
|
9
9
|
|
|
10
|
-
from cognite.neat.core._client.data_classes.statistics import (
|
|
10
|
+
from cognite.neat._v0.core._client.data_classes.statistics import (
|
|
11
11
|
ProjectStatsAndLimits,
|
|
12
12
|
SpaceInstanceCounts,
|
|
13
13
|
SpaceInstanceCountsList,
|
|
@@ -34,7 +34,7 @@ class StatisticsAPI(APIClient):
|
|
|
34
34
|
Examples:
|
|
35
35
|
Fetch project statistics (and limits) and check the current number of data models vs.
|
|
36
36
|
and how many more can be created:
|
|
37
|
-
>>> from cognite.neat.core._client import NeatClient
|
|
37
|
+
>>> from cognite.neat._v0.core._client import NeatClient
|
|
38
38
|
>>> client = NeatClient()
|
|
39
39
|
>>> stats = client.instance_statistics.project()
|
|
40
40
|
>>> num_dm = stats.data_models.current
|
|
@@ -64,7 +64,7 @@ class StatisticsAPI(APIClient):
|
|
|
64
64
|
|
|
65
65
|
Examples:
|
|
66
66
|
Fetch statistics for a single space:
|
|
67
|
-
>>> from cognite.neat.core._client import NeatClient
|
|
67
|
+
>>> from cognite.neat._v0.core._client import NeatClient
|
|
68
68
|
>>> client = NeatClient()
|
|
69
69
|
>>> res = client.instance_statistics.list("my-space")
|
|
70
70
|
Fetch statistics for multiple spaces:
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
from cognite.client import ClientConfig, CogniteClient
|
|
2
2
|
|
|
3
|
-
from cognite.neat.core._utils.auth import _CLIENT_NAME
|
|
3
|
+
from cognite.neat._v0.core._utils.auth import _CLIENT_NAME
|
|
4
4
|
|
|
5
5
|
from ._api.data_modeling_loaders import DataModelLoaderAPI
|
|
6
6
|
from ._api.neat_instances import NeatInstancesAPI
|
|
File without changes
|
|
@@ -20,21 +20,21 @@ from cognite.client.data_classes.data_modeling.views import (
|
|
|
20
20
|
ViewPropertyApply,
|
|
21
21
|
)
|
|
22
22
|
|
|
23
|
-
from cognite.neat.core._client.data_classes.data_modeling import (
|
|
23
|
+
from cognite.neat._v0.core._client.data_classes.data_modeling import (
|
|
24
24
|
CogniteResourceDict,
|
|
25
25
|
ContainerApplyDict,
|
|
26
26
|
NodeApplyDict,
|
|
27
27
|
SpaceApplyDict,
|
|
28
28
|
ViewApplyDict,
|
|
29
29
|
)
|
|
30
|
-
from cognite.neat.core._issues.errors import (
|
|
30
|
+
from cognite.neat._v0.core._issues.errors import (
|
|
31
31
|
NeatYamlError,
|
|
32
32
|
)
|
|
33
|
-
from cognite.neat.core._issues.warnings import (
|
|
33
|
+
from cognite.neat._v0.core._issues.warnings import (
|
|
34
34
|
FileTypeUnexpectedWarning,
|
|
35
35
|
ResourcesDuplicatedWarning,
|
|
36
36
|
)
|
|
37
|
-
from cognite.neat.core._utils.text import to_camel_case
|
|
37
|
+
from cognite.neat._v0.core._utils.text import to_camel_case
|
|
38
38
|
|
|
39
39
|
if sys.version_info >= (3, 11):
|
|
40
40
|
from typing import Self
|
|
@@ -5,7 +5,7 @@ from unittest.mock import MagicMock
|
|
|
5
5
|
|
|
6
6
|
from cognite.client.testing import CogniteClientMock
|
|
7
7
|
|
|
8
|
-
from cognite.neat.core._client._api_client import NeatClient
|
|
8
|
+
from cognite.neat._v0.core._client._api_client import NeatClient
|
|
9
9
|
|
|
10
10
|
from ._api.data_modeling_loaders import DataModelLoaderAPI
|
|
11
11
|
from ._api.neat_instances import NeatInstancesAPI
|
|
@@ -11,7 +11,7 @@ from rdflib.namespace import DefinedNamespace
|
|
|
11
11
|
from cognite import neat
|
|
12
12
|
|
|
13
13
|
if TYPE_CHECKING:
|
|
14
|
-
from cognite.neat.core._data_model.models.physical import PhysicalProperty
|
|
14
|
+
from cognite.neat._v0.core._data_model.models.physical import PhysicalProperty
|
|
15
15
|
|
|
16
16
|
|
|
17
17
|
def _is_in_notebook() -> bool:
|
|
@@ -204,7 +204,7 @@ BASE_MODEL = Literal["CogniteCore"]
|
|
|
204
204
|
|
|
205
205
|
def get_asset_read_only_properties_with_connection() -> "list[PhysicalProperty]":
|
|
206
206
|
"""Gets the asset read-only properties with connection, i.e. Root and Path."""
|
|
207
|
-
from cognite.neat.core._data_model.models.physical import PhysicalProperty
|
|
207
|
+
from cognite.neat._v0.core._data_model.models.physical import PhysicalProperty
|
|
208
208
|
|
|
209
209
|
return [PhysicalProperty.model_validate(item) for item in (_ASSET_ROOT_PROPERTY, _ASSET_PATH_PROPERTY)]
|
|
210
210
|
|
|
@@ -219,7 +219,7 @@ def get_base_concepts(
|
|
|
219
219
|
total_concepts: The number of concepts to get. If None, all concepts are returned.
|
|
220
220
|
"""
|
|
221
221
|
# Local import to avoid circular dependency issues
|
|
222
|
-
from cognite.neat.core._issues.errors._general import NeatValueError
|
|
222
|
+
from cognite.neat._v0.core._issues.errors._general import NeatValueError
|
|
223
223
|
|
|
224
224
|
if base_model == "CogniteCore":
|
|
225
225
|
return [f"cdf_cdm:{concept}(version=v1)" for concept in COGNITE_CONCEPTS][:total_concepts]
|
|
@@ -274,3 +274,5 @@ DMS_RESERVED_PROPERTIES = frozenset(
|
|
|
274
274
|
"endNode",
|
|
275
275
|
}
|
|
276
276
|
)
|
|
277
|
+
|
|
278
|
+
NAMED_GRAPH_NAMESPACE = Namespace("http://thisisneat.io/namedgraph/")
|
|
File without changes
|
|
@@ -43,6 +43,11 @@ class EntityTypes(StrEnum):
|
|
|
43
43
|
prefix = "prefix"
|
|
44
44
|
space = "space"
|
|
45
45
|
container_index = "container_index"
|
|
46
|
+
container_constraint = "container_constraint"
|
|
47
|
+
concept_restriction = "conceptRestriction"
|
|
48
|
+
value_constraint = "valueConstraint"
|
|
49
|
+
cardinality_constraint = "cardinalityConstraint"
|
|
50
|
+
named_individual = "named_individual"
|
|
46
51
|
|
|
47
52
|
|
|
48
53
|
def get_reserved_words(
|
|
@@ -124,6 +129,8 @@ SPLIT_ON_EQUAL_PATTERN = re.compile(r"=(?![^(]*\))")
|
|
|
124
129
|
# Very special Edge Entity parsing
|
|
125
130
|
SPLIT_ON_EDGE_ENTITY_ARGS_PATTERN = re.compile(r"(\btype\b|\bproperties\b|\bdirection\b)\s*=\s*([^,]+)")
|
|
126
131
|
|
|
132
|
+
CONSTRAINT_ID_MAX_LENGTH = 43
|
|
133
|
+
|
|
127
134
|
|
|
128
135
|
class _Patterns:
|
|
129
136
|
@cached_property
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
from dataclasses import dataclass
|
|
2
2
|
from typing import Generic, TypeAlias, TypeVar
|
|
3
3
|
|
|
4
|
-
from cognite.neat.core._data_model.models import (
|
|
4
|
+
from cognite.neat._v0.core._data_model.models import (
|
|
5
5
|
ConceptualDataModel,
|
|
6
6
|
PhysicalDataModel,
|
|
7
7
|
)
|
|
8
|
-
from cognite.neat.core._data_model.models._import_contexts import ImportContext
|
|
9
|
-
from cognite.neat.core._data_model.models.conceptual._unverified import (
|
|
8
|
+
from cognite.neat._v0.core._data_model.models._import_contexts import ImportContext
|
|
9
|
+
from cognite.neat._v0.core._data_model.models.conceptual._unverified import (
|
|
10
10
|
UnverifiedConceptualDataModel,
|
|
11
11
|
)
|
|
12
|
-
from cognite.neat.core._data_model.models.physical._unverified import (
|
|
12
|
+
from cognite.neat._v0.core._data_model.models.physical._unverified import (
|
|
13
13
|
UnverifiedPhysicalDataModel,
|
|
14
14
|
)
|
|
15
15
|
|
|
@@ -11,23 +11,23 @@ import pandas as pd
|
|
|
11
11
|
from cognite.client import data_modeling as dm
|
|
12
12
|
from rdflib import URIRef
|
|
13
13
|
|
|
14
|
-
from cognite.neat.core._data_model.models import ConceptualDataModel, PhysicalDataModel
|
|
15
|
-
from cognite.neat.core._data_model.models.conceptual import (
|
|
14
|
+
from cognite.neat._v0.core._data_model.models import ConceptualDataModel, PhysicalDataModel
|
|
15
|
+
from cognite.neat._v0.core._data_model.models.conceptual import (
|
|
16
16
|
Concept,
|
|
17
17
|
ConceptualProperty,
|
|
18
18
|
)
|
|
19
|
-
from cognite.neat.core._data_model.models.entities import (
|
|
19
|
+
from cognite.neat._v0.core._data_model.models.entities import (
|
|
20
20
|
ConceptEntity,
|
|
21
21
|
MultiValueTypeInfo,
|
|
22
22
|
ViewEntity,
|
|
23
23
|
)
|
|
24
|
-
from cognite.neat.core._data_model.models.entities._single_value import (
|
|
24
|
+
from cognite.neat._v0.core._data_model.models.entities._single_value import (
|
|
25
25
|
UnknownEntity,
|
|
26
26
|
)
|
|
27
|
-
from cognite.neat.core._data_model.models.physical import PhysicalProperty
|
|
28
|
-
from cognite.neat.core._data_model.models.physical._verified import PhysicalView
|
|
29
|
-
from cognite.neat.core._issues.errors import NeatValueError
|
|
30
|
-
from cognite.neat.core._issues.warnings import NeatValueWarning
|
|
27
|
+
from cognite.neat._v0.core._data_model.models.physical import PhysicalProperty
|
|
28
|
+
from cognite.neat._v0.core._data_model.models.physical._verified import PhysicalView
|
|
29
|
+
from cognite.neat._v0.core._issues.errors import NeatValueError
|
|
30
|
+
from cognite.neat._v0.core._issues.warnings import NeatValueWarning
|
|
31
31
|
|
|
32
32
|
T_Hashable = TypeVar("T_Hashable", bound=Hashable)
|
|
33
33
|
|
|
@@ -2,7 +2,7 @@ from ._base import BaseExporter, CDFExporter
|
|
|
2
2
|
from ._data_model2dms import DMSExporter
|
|
3
3
|
from ._data_model2excel import ExcelExporter
|
|
4
4
|
from ._data_model2instance_template import InstanceTemplateExporter
|
|
5
|
-
from .
|
|
5
|
+
from ._data_model2semantic_model import GraphExporter, OWLExporter, SHACLExporter
|
|
6
6
|
from ._data_model2yaml import YAMLExporter
|
|
7
7
|
|
|
8
8
|
__all__ = [
|
|
@@ -14,7 +14,6 @@ __all__ = [
|
|
|
14
14
|
"InstanceTemplateExporter",
|
|
15
15
|
"OWLExporter",
|
|
16
16
|
"SHACLExporter",
|
|
17
|
-
"SemanticDataModelExporter",
|
|
18
17
|
"YAMLExporter",
|
|
19
18
|
]
|
|
20
19
|
|
|
@@ -5,14 +5,14 @@ from pathlib import Path
|
|
|
5
5
|
from types import UnionType
|
|
6
6
|
from typing import TYPE_CHECKING, Generic, TypeVar, Union, get_args, get_origin
|
|
7
7
|
|
|
8
|
-
from cognite.neat.core._client import NeatClient
|
|
9
|
-
from cognite.neat.core._constants import DEFAULT_NAMESPACE
|
|
10
|
-
from cognite.neat.core._data_model._shared import T_VerifiedDataModel
|
|
11
|
-
from cognite.neat.core._utils.auxiliary import class_html_doc
|
|
12
|
-
from cognite.neat.core._utils.upload import UploadResult, UploadResultList
|
|
8
|
+
from cognite.neat._v0.core._client import NeatClient
|
|
9
|
+
from cognite.neat._v0.core._constants import DEFAULT_NAMESPACE
|
|
10
|
+
from cognite.neat._v0.core._data_model._shared import T_VerifiedDataModel
|
|
11
|
+
from cognite.neat._v0.core._utils.auxiliary import class_html_doc
|
|
12
|
+
from cognite.neat._v0.core._utils.upload import UploadResult, UploadResultList
|
|
13
13
|
|
|
14
14
|
if TYPE_CHECKING:
|
|
15
|
-
from cognite.neat.core._store._provenance import Agent as ProvenanceAgent
|
|
15
|
+
from cognite.neat._v0.core._store._provenance import Agent as ProvenanceAgent
|
|
16
16
|
|
|
17
17
|
T_Export = TypeVar("T_Export")
|
|
18
18
|
|
|
@@ -36,7 +36,7 @@ class BaseExporter(ABC, Generic[T_VerifiedDataModel, T_Export]):
|
|
|
36
36
|
@property
|
|
37
37
|
def agent(self) -> "ProvenanceAgent":
|
|
38
38
|
"""Provenance agent for the importer."""
|
|
39
|
-
from cognite.neat.core._store._provenance import Agent as ProvenanceAgent
|
|
39
|
+
from cognite.neat._v0.core._store._provenance import Agent as ProvenanceAgent
|
|
40
40
|
|
|
41
41
|
return ProvenanceAgent(id_=DEFAULT_NAMESPACE[f"agent/{type(self).__name__}"])
|
|
42
42
|
|
|
@@ -18,24 +18,24 @@ from cognite.client.data_classes.data_modeling import (
|
|
|
18
18
|
)
|
|
19
19
|
from cognite.client.exceptions import CogniteAPIError
|
|
20
20
|
|
|
21
|
-
from cognite.neat.core._client import DataModelingLoader, NeatClient
|
|
22
|
-
from cognite.neat.core._client._api.data_modeling_loaders import (
|
|
21
|
+
from cognite.neat._v0.core._client import DataModelingLoader, NeatClient
|
|
22
|
+
from cognite.neat._v0.core._client._api.data_modeling_loaders import (
|
|
23
23
|
MultiCogniteAPIError,
|
|
24
24
|
T_WritableCogniteResourceList,
|
|
25
25
|
)
|
|
26
|
-
from cognite.neat.core._client.data_classes.data_modeling import (
|
|
26
|
+
from cognite.neat._v0.core._client.data_classes.data_modeling import (
|
|
27
27
|
Component,
|
|
28
28
|
ViewApplyDict,
|
|
29
29
|
)
|
|
30
|
-
from cognite.neat.core._client.data_classes.schema import DMSSchema
|
|
31
|
-
from cognite.neat.core._data_model.models.physical import PhysicalDataModel
|
|
32
|
-
from cognite.neat.core._issues import IssueList
|
|
33
|
-
from cognite.neat.core._issues.warnings import (
|
|
30
|
+
from cognite.neat._v0.core._client.data_classes.schema import DMSSchema
|
|
31
|
+
from cognite.neat._v0.core._data_model.models.physical import PhysicalDataModel
|
|
32
|
+
from cognite.neat._v0.core._issues import IssueList
|
|
33
|
+
from cognite.neat._v0.core._issues.warnings import (
|
|
34
34
|
PrincipleOneModelOneSpaceWarning,
|
|
35
35
|
ResourceRetrievalWarning,
|
|
36
36
|
)
|
|
37
|
-
from cognite.neat.core._shared import T_ID
|
|
38
|
-
from cognite.neat.core._utils.upload import UploadResult
|
|
37
|
+
from cognite.neat._v0.core._shared import T_ID
|
|
38
|
+
from cognite.neat._v0.core._utils.upload import UploadResult
|
|
39
39
|
|
|
40
40
|
from ._base import CDFExporter
|
|
41
41
|
|
|
@@ -14,25 +14,25 @@ from openpyxl.worksheet.datavalidation import DataValidation
|
|
|
14
14
|
from openpyxl.worksheet.worksheet import Worksheet
|
|
15
15
|
from rdflib import Namespace
|
|
16
16
|
|
|
17
|
-
from cognite.neat.core._constants import BASE_MODEL, get_base_concepts
|
|
18
|
-
from cognite.neat.core._data_model._constants import get_internal_properties
|
|
19
|
-
from cognite.neat.core._data_model._shared import VerifiedDataModel
|
|
20
|
-
from cognite.neat.core._data_model.models import (
|
|
17
|
+
from cognite.neat._v0.core._constants import BASE_MODEL, get_base_concepts
|
|
18
|
+
from cognite.neat._v0.core._data_model._constants import get_internal_properties
|
|
19
|
+
from cognite.neat._v0.core._data_model._shared import VerifiedDataModel
|
|
20
|
+
from cognite.neat._v0.core._data_model.models import (
|
|
21
21
|
SheetRow,
|
|
22
22
|
)
|
|
23
|
-
from cognite.neat.core._data_model.models._base_verified import (
|
|
23
|
+
from cognite.neat._v0.core._data_model.models._base_verified import (
|
|
24
24
|
BaseVerifiedMetadata,
|
|
25
25
|
RoleTypes,
|
|
26
26
|
)
|
|
27
|
-
from cognite.neat.core._data_model.models.conceptual._verified import (
|
|
27
|
+
from cognite.neat._v0.core._data_model.models.conceptual._verified import (
|
|
28
28
|
ConceptualDataModel,
|
|
29
29
|
)
|
|
30
|
-
from cognite.neat.core._data_model.models.data_types import (
|
|
30
|
+
from cognite.neat._v0.core._data_model.models.data_types import (
|
|
31
31
|
_DATA_TYPE_BY_DMS_TYPE,
|
|
32
32
|
)
|
|
33
|
-
from cognite.neat.core._data_model.models.physical._verified import PhysicalDataModel
|
|
34
|
-
from cognite.neat.core._utils.spreadsheet import (
|
|
35
|
-
|
|
33
|
+
from cognite.neat._v0.core._data_model.models.physical._verified import PhysicalDataModel
|
|
34
|
+
from cognite.neat._v0.core._utils.spreadsheet import (
|
|
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(
|
|
@@ -8,12 +8,12 @@ from openpyxl.styles import Alignment, Border, Font, NamedStyle, PatternFill, Si
|
|
|
8
8
|
from openpyxl.utils import get_column_letter
|
|
9
9
|
from openpyxl.worksheet.datavalidation import DataValidation
|
|
10
10
|
|
|
11
|
-
from cognite.neat.core._data_model._constants import EntityTypes
|
|
12
|
-
from cognite.neat.core._data_model.analysis import DataModelAnalysis
|
|
13
|
-
from cognite.neat.core._data_model.models.conceptual._verified import (
|
|
11
|
+
from cognite.neat._v0.core._data_model._constants import EntityTypes
|
|
12
|
+
from cognite.neat._v0.core._data_model.analysis import DataModelAnalysis
|
|
13
|
+
from cognite.neat._v0.core._data_model.models.conceptual._verified import (
|
|
14
14
|
ConceptualDataModel,
|
|
15
15
|
)
|
|
16
|
-
from cognite.neat.core._data_model.models.entities._single_value import ConceptEntity
|
|
16
|
+
from cognite.neat._v0.core._data_model.models.entities._single_value import ConceptEntity
|
|
17
17
|
|
|
18
18
|
from ._base import BaseExporter
|
|
19
19
|
|