cognite-neat 1.0.30__tar.gz → 1.0.32__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/PKG-INFO +1 -1
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_client/data_classes.py +32 -0
- cognite_neat-1.0.32/cognite/neat/_client/statistics_api.py +56 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_data_model/_analysis.py +8 -3
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_data_model/_constants.py +4 -0
- {cognite_neat-1.0.30/cognite/neat/_data_model/validation/dms → cognite_neat-1.0.32/cognite/neat/_data_model/rules}/_base.py +11 -5
- cognite_neat-1.0.32/cognite/neat/_data_model/rules/cdf/__init__.py +3 -0
- cognite_neat-1.0.32/cognite/neat/_data_model/rules/cdf/_base.py +5 -0
- cognite_neat-1.0.32/cognite/neat/_data_model/rules/cdf/_orchestrator.py +56 -0
- cognite_neat-1.0.32/cognite/neat/_data_model/rules/cdf/_spaces.py +47 -0
- {cognite_neat-1.0.30/cognite/neat/_data_model/validation → cognite_neat-1.0.32/cognite/neat/_data_model/rules}/dms/__init__.py +2 -2
- {cognite_neat-1.0.30/cognite/neat/_data_model/validation → cognite_neat-1.0.32/cognite/neat/_data_model/rules}/dms/_ai_readiness.py +17 -17
- cognite_neat-1.0.32/cognite/neat/_data_model/rules/dms/_base.py +5 -0
- {cognite_neat-1.0.30/cognite/neat/_data_model/validation → cognite_neat-1.0.32/cognite/neat/_data_model/rules}/dms/_connections.py +23 -23
- {cognite_neat-1.0.30/cognite/neat/_data_model/validation → cognite_neat-1.0.32/cognite/neat/_data_model/rules}/dms/_consistency.py +3 -3
- {cognite_neat-1.0.30/cognite/neat/_data_model/validation → cognite_neat-1.0.32/cognite/neat/_data_model/rules}/dms/_containers.py +9 -9
- {cognite_neat-1.0.30/cognite/neat/_data_model/validation → cognite_neat-1.0.32/cognite/neat/_data_model/rules}/dms/_limits.py +14 -14
- {cognite_neat-1.0.30/cognite/neat/_data_model/validation → cognite_neat-1.0.32/cognite/neat/_data_model/rules}/dms/_orchestrator.py +7 -7
- {cognite_neat-1.0.30/cognite/neat/_data_model/validation → cognite_neat-1.0.32/cognite/neat/_data_model/rules}/dms/_performance.py +14 -13
- {cognite_neat-1.0.30/cognite/neat/_data_model/validation → cognite_neat-1.0.32/cognite/neat/_data_model/rules}/dms/_views.py +7 -7
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_session/_cdf.py +15 -1
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_session/_physical.py +6 -6
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_session/_wrappers.py +1 -1
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_state_machine/_states.py +1 -1
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_store/_store.py +19 -1
- cognite_neat-1.0.32/cognite/neat/_version.py +2 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/pyproject.toml +1 -1
- cognite_neat-1.0.30/cognite/neat/_client/statistics_api.py +0 -29
- cognite_neat-1.0.30/cognite/neat/_version.py +0 -2
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/README.md +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/__init__.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_client/__init__.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_client/api.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_client/client.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_client/config.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_client/containers_api.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_client/data_model_api.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_client/filters.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_client/init/__init__.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_client/init/credentials.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_client/init/env_vars.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_client/init/interactive.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_client/init/main.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_client/spaces_api.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_client/views_api.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_config.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_data_model/__init__.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_data_model/_identifiers.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_data_model/_shared.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_data_model/_snapshot.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_data_model/deployer/__init__.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_data_model/deployer/_differ.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_data_model/deployer/_differ_container.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_data_model/deployer/_differ_data_model.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_data_model/deployer/_differ_space.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_data_model/deployer/_differ_view.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_data_model/deployer/data_classes.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_data_model/deployer/deployer.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_data_model/exporters/__init__.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_data_model/exporters/_api_exporter.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_data_model/exporters/_base.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_data_model/exporters/_table_exporter/__init__.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_data_model/exporters/_table_exporter/exporter.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_data_model/exporters/_table_exporter/workbook.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_data_model/exporters/_table_exporter/writer.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_data_model/importers/__init__.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_data_model/importers/_api_importer.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_data_model/importers/_base.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_data_model/importers/_table_importer/__init__.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_data_model/importers/_table_importer/data_classes.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_data_model/importers/_table_importer/importer.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_data_model/importers/_table_importer/reader.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_data_model/importers/_table_importer/source.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_data_model/models/__init__.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_data_model/models/conceptual/__init__.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_data_model/models/conceptual/_base.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_data_model/models/conceptual/_concept.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_data_model/models/conceptual/_data_model.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_data_model/models/conceptual/_properties.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_data_model/models/conceptual/_property.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_data_model/models/dms/__init__.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_data_model/models/dms/_base.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_data_model/models/dms/_constants.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_data_model/models/dms/_constraints.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_data_model/models/dms/_container.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_data_model/models/dms/_data_model.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_data_model/models/dms/_data_types.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_data_model/models/dms/_http.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_data_model/models/dms/_indexes.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_data_model/models/dms/_limits.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_data_model/models/dms/_references.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_data_model/models/dms/_schema.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_data_model/models/dms/_space.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_data_model/models/dms/_types.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_data_model/models/dms/_view_filter.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_data_model/models/dms/_view_property.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_data_model/models/dms/_views.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_data_model/models/entities/__init__.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_data_model/models/entities/_base.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_data_model/models/entities/_constants.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_data_model/models/entities/_data_types.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_data_model/models/entities/_identifiers.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_data_model/models/entities/_parser.py +0 -0
- {cognite_neat-1.0.30/cognite/neat/_data_model/validation → cognite_neat-1.0.32/cognite/neat/_data_model/rules}/__init__.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_exceptions.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_issues.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_session/__init__.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_session/_html/__init__.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_session/_html/_render.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_session/_html/static/__init__.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_session/_html/static/deployment.css +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_session/_html/static/deployment.js +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_session/_html/static/issues.css +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_session/_html/static/issues.js +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_session/_html/static/shared.css +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_session/_html/static/statistics.css +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_session/_html/static/statistics.js +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_session/_html/templates/__init__.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_session/_html/templates/deployment.html +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_session/_html/templates/issues.html +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_session/_html/templates/statistics.html +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_session/_issues.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_session/_result/__init__.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_session/_result/_deployment/__init__.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_session/_result/_deployment/_physical/__init__.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_session/_result/_deployment/_physical/_changes.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_session/_result/_deployment/_physical/_statistics.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_session/_result/_deployment/_physical/serializer.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_session/_result/_result.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_session/_session.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_session/_usage_analytics/__init__.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_session/_usage_analytics/_collector.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_session/_usage_analytics/_constants.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_session/_usage_analytics/_storage.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_state_machine/__init__.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_state_machine/_base.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_store/__init__.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_store/_provenance.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_utils/__init__.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_utils/_reader.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_utils/auxiliary.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_utils/collection.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_utils/http_client/__init__.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_utils/http_client/_client.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_utils/http_client/_config.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_utils/http_client/_data_classes.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_utils/http_client/_tracker.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_utils/repo.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_utils/text.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_utils/useful_types.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_utils/validation.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_v0/__init__.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_v0/core/__init__.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_v0/core/_client/__init__.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_v0/core/_client/_api/__init__.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_v0/core/_client/_api/data_modeling_loaders.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_v0/core/_client/_api/neat_instances.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_v0/core/_client/_api/schema.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_v0/core/_client/_api/statistics.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_v0/core/_client/_api_client.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_v0/core/_client/data_classes/__init__.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_v0/core/_client/data_classes/data_modeling.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_v0/core/_client/data_classes/neat_sequence.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_v0/core/_client/data_classes/schema.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_v0/core/_client/data_classes/statistics.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_v0/core/_client/testing.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_v0/core/_config.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_v0/core/_constants.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_v0/core/_data_model/__init__.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_v0/core/_data_model/_constants.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_v0/core/_data_model/_shared.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_v0/core/_data_model/analysis/__init__.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_v0/core/_data_model/analysis/_base.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_v0/core/_data_model/catalog/__init__.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_v0/core/_data_model/catalog/classic_model.xlsx +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_v0/core/_data_model/catalog/conceptual-imf-data-model.xlsx +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_v0/core/_data_model/catalog/hello_world_pump.xlsx +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_v0/core/_data_model/exporters/__init__.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_v0/core/_data_model/exporters/_base.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_v0/core/_data_model/exporters/_data_model2dms.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_v0/core/_data_model/exporters/_data_model2excel.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_v0/core/_data_model/exporters/_data_model2instance_template.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_v0/core/_data_model/exporters/_data_model2semantic_model.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_v0/core/_data_model/exporters/_data_model2yaml.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_v0/core/_data_model/importers/__init__.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_v0/core/_data_model/importers/_base.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_v0/core/_data_model/importers/_base_file_reader.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_v0/core/_data_model/importers/_dict2data_model.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_v0/core/_data_model/importers/_dms2data_model.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_v0/core/_data_model/importers/_graph2data_model.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_v0/core/_data_model/importers/_rdf/__init__.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_v0/core/_data_model/importers/_rdf/_base.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_v0/core/_data_model/importers/_rdf/_inference2rdata_model.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_v0/core/_data_model/importers/_rdf/_owl2data_model.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_v0/core/_data_model/importers/_rdf/_shared.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_v0/core/_data_model/importers/_spreadsheet2data_model.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_v0/core/_data_model/models/__init__.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_v0/core/_data_model/models/_base_unverified.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_v0/core/_data_model/models/_base_verified.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_v0/core/_data_model/models/_import_contexts.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_v0/core/_data_model/models/_types.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_v0/core/_data_model/models/conceptual/__init__.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_v0/core/_data_model/models/conceptual/_unverified.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_v0/core/_data_model/models/conceptual/_validation.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_v0/core/_data_model/models/conceptual/_verified.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_v0/core/_data_model/models/data_types.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_v0/core/_data_model/models/entities/__init__.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_v0/core/_data_model/models/entities/_constants.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_v0/core/_data_model/models/entities/_loaders.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_v0/core/_data_model/models/entities/_multi_value.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_v0/core/_data_model/models/entities/_restrictions.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_v0/core/_data_model/models/entities/_single_value.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_v0/core/_data_model/models/entities/_types.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_v0/core/_data_model/models/entities/_wrapped.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_v0/core/_data_model/models/mapping/__init__.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_v0/core/_data_model/models/mapping/_classic2core.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_v0/core/_data_model/models/mapping/_classic2core.yaml +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_v0/core/_data_model/models/physical/__init__.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_v0/core/_data_model/models/physical/_exporter.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_v0/core/_data_model/models/physical/_unverified.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_v0/core/_data_model/models/physical/_validation.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_v0/core/_data_model/models/physical/_verified.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_v0/core/_data_model/transformers/__init__.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_v0/core/_data_model/transformers/_base.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_v0/core/_data_model/transformers/_converters.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_v0/core/_data_model/transformers/_mapping.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_v0/core/_data_model/transformers/_union_conceptual.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_v0/core/_data_model/transformers/_verification.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_v0/core/_instances/__init__.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_v0/core/_instances/_shared.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_v0/core/_instances/_tracking/__init__.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_v0/core/_instances/_tracking/base.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_v0/core/_instances/_tracking/log.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_v0/core/_instances/examples/Knowledge-Graph-Nordic44-dirty.xml +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_v0/core/_instances/examples/Knowledge-Graph-Nordic44.xml +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_v0/core/_instances/examples/__init__.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_v0/core/_instances/examples/skos-capturing-sheet-wind-topics.xlsx +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_v0/core/_instances/extractors/__init__.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_v0/core/_instances/extractors/_base.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_v0/core/_instances/extractors/_classic_cdf/__init__.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_v0/core/_instances/extractors/_classic_cdf/_assets.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_v0/core/_instances/extractors/_classic_cdf/_base.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_v0/core/_instances/extractors/_classic_cdf/_classic.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_v0/core/_instances/extractors/_classic_cdf/_data_sets.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_v0/core/_instances/extractors/_classic_cdf/_events.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_v0/core/_instances/extractors/_classic_cdf/_files.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_v0/core/_instances/extractors/_classic_cdf/_labels.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_v0/core/_instances/extractors/_classic_cdf/_relationships.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_v0/core/_instances/extractors/_classic_cdf/_sequences.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_v0/core/_instances/extractors/_classic_cdf/_timeseries.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_v0/core/_instances/extractors/_dict.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_v0/core/_instances/extractors/_dms.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_v0/core/_instances/extractors/_dms_graph.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_v0/core/_instances/extractors/_mock_graph_generator.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_v0/core/_instances/extractors/_raw.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_v0/core/_instances/extractors/_rdf_file.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_v0/core/_instances/loaders/__init__.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_v0/core/_instances/loaders/_base.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_v0/core/_instances/loaders/_rdf2dms.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_v0/core/_instances/loaders/_rdf_to_instance_space.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_v0/core/_instances/queries/__init__.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_v0/core/_instances/queries/_base.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_v0/core/_instances/queries/_queries.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_v0/core/_instances/queries/_select.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_v0/core/_instances/queries/_update.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_v0/core/_instances/transformers/__init__.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_v0/core/_instances/transformers/_base.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_v0/core/_instances/transformers/_classic_cdf.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_v0/core/_instances/transformers/_prune_graph.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_v0/core/_instances/transformers/_rdfpath.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_v0/core/_instances/transformers/_value_type.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_v0/core/_issues/__init__.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_v0/core/_issues/_base.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_v0/core/_issues/_contextmanagers.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_v0/core/_issues/_factory.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_v0/core/_issues/errors/__init__.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_v0/core/_issues/errors/_external.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_v0/core/_issues/errors/_general.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_v0/core/_issues/errors/_properties.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_v0/core/_issues/errors/_resources.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_v0/core/_issues/errors/_wrapper.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_v0/core/_issues/formatters.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_v0/core/_issues/warnings/__init__.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_v0/core/_issues/warnings/_external.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_v0/core/_issues/warnings/_general.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_v0/core/_issues/warnings/_models.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_v0/core/_issues/warnings/_properties.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_v0/core/_issues/warnings/_resources.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_v0/core/_issues/warnings/user_modeling.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_v0/core/_shared.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_v0/core/_store/__init__.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_v0/core/_store/_data_model.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_v0/core/_store/_instance.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_v0/core/_store/_provenance.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_v0/core/_store/exceptions.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_v0/core/_utils/__init__.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_v0/core/_utils/auth.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_v0/core/_utils/auxiliary.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_v0/core/_utils/collection_.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_v0/core/_utils/graph_transformations_report.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_v0/core/_utils/io_.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_v0/core/_utils/rdf_.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_v0/core/_utils/reader/__init__.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_v0/core/_utils/reader/_base.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_v0/core/_utils/spreadsheet.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_v0/core/_utils/tarjan.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_v0/core/_utils/text.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_v0/core/_utils/time_.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_v0/core/_utils/upload.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_v0/core/_utils/xml_.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_v0/engine/__init__.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_v0/engine/_import.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_v0/engine/_interface.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_v0/engine/_load.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_v0/plugins/__init__.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_v0/plugins/_base.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_v0/plugins/_data_model.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_v0/plugins/_issues.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_v0/plugins/_manager.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_v0/session/__init__.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_v0/session/_base.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_v0/session/_collector.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_v0/session/_diff.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_v0/session/_drop.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_v0/session/_experimental.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_v0/session/_explore.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_v0/session/_fix.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_v0/session/_inspect.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_v0/session/_mapping.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_v0/session/_plugin.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_v0/session/_prepare.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_v0/session/_read.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_v0/session/_set.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_v0/session/_show.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_v0/session/_state/README.md +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_v0/session/_state.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_v0/session/_subset.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_v0/session/_template.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_v0/session/_to.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_v0/session/_wizard.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/_v0/session/exceptions.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/legacy.py +0 -0
- {cognite_neat-1.0.30 → cognite_neat-1.0.32}/cognite/neat/py.typed +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: cognite-neat
|
|
3
|
-
Version: 1.0.
|
|
3
|
+
Version: 1.0.32
|
|
4
4
|
Summary: Knowledge graph transformation
|
|
5
5
|
Author: Nikola Vasiljevic, Anders Albert
|
|
6
6
|
Author-email: Nikola Vasiljevic <nikola.vasiljevic@cognite.com>, Anders Albert <anders.albert@cognite.com>
|
|
@@ -2,6 +2,8 @@ from typing import Generic, TypeVar
|
|
|
2
2
|
|
|
3
3
|
from pydantic import BaseModel, Field
|
|
4
4
|
|
|
5
|
+
from cognite.neat._utils.useful_types import BaseModelObject
|
|
6
|
+
|
|
5
7
|
T = TypeVar("T", bound=BaseModel)
|
|
6
8
|
|
|
7
9
|
|
|
@@ -42,3 +44,33 @@ class StatisticsResponse(BaseModel, populate_by_name=True):
|
|
|
42
44
|
concurrent_read_limit: int = Field(alias="concurrentReadLimit")
|
|
43
45
|
concurrent_write_limit: int = Field(alias="concurrentWriteLimit")
|
|
44
46
|
concurrent_delete_limit: int = Field(alias="concurrentDeleteLimit")
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
class SpaceStatisticsItem(BaseModelObject, populate_by_name=True):
|
|
50
|
+
"""Individual space statistics item."""
|
|
51
|
+
|
|
52
|
+
space: str
|
|
53
|
+
containers: int
|
|
54
|
+
views: int
|
|
55
|
+
data_models: int
|
|
56
|
+
edges: int
|
|
57
|
+
soft_deleted_edges: int
|
|
58
|
+
nodes: int
|
|
59
|
+
soft_deleted_nodes: int
|
|
60
|
+
|
|
61
|
+
@property
|
|
62
|
+
def is_empty(self) -> bool:
|
|
63
|
+
"""Check if the space has zero usage."""
|
|
64
|
+
return (
|
|
65
|
+
self.containers == 0 and self.views == 0 and self.data_models == 0 and self.edges == 0 and self.nodes == 0
|
|
66
|
+
)
|
|
67
|
+
|
|
68
|
+
|
|
69
|
+
class SpaceStatisticsResponse(BaseModelObject, populate_by_name=True):
|
|
70
|
+
"""Response model for space statistics endpoint."""
|
|
71
|
+
|
|
72
|
+
items: list[SpaceStatisticsItem]
|
|
73
|
+
|
|
74
|
+
def empty_spaces(self) -> list[str]:
|
|
75
|
+
"""Get a list of space identifiers that have zero usage."""
|
|
76
|
+
return [item.space for item in self.items if item.is_empty]
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import json
|
|
2
|
+
|
|
3
|
+
from cognite.neat._utils.http_client import HTTPClient, ParametersRequest
|
|
4
|
+
from cognite.neat._utils.http_client._data_classes import SimpleBodyRequest
|
|
5
|
+
|
|
6
|
+
from .config import NeatClientConfig
|
|
7
|
+
from .data_classes import SpaceStatisticsResponse, StatisticsResponse
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
class StatisticsAPI:
|
|
11
|
+
def __init__(self, neat_config: NeatClientConfig, http_client: HTTPClient) -> None:
|
|
12
|
+
self._config = neat_config
|
|
13
|
+
self._http_client = http_client
|
|
14
|
+
|
|
15
|
+
def project(self) -> StatisticsResponse:
|
|
16
|
+
"""Retrieve project-wide usage data and limits.
|
|
17
|
+
|
|
18
|
+
Returns:
|
|
19
|
+
StatisticsResponse object.
|
|
20
|
+
"""
|
|
21
|
+
|
|
22
|
+
result = self._http_client.request_with_retries(
|
|
23
|
+
ParametersRequest(
|
|
24
|
+
endpoint_url=self._config.create_api_url("/models/statistics"),
|
|
25
|
+
method="GET",
|
|
26
|
+
parameters=None,
|
|
27
|
+
)
|
|
28
|
+
)
|
|
29
|
+
|
|
30
|
+
result.raise_for_status()
|
|
31
|
+
result = StatisticsResponse.model_validate_json(result.success_response.body)
|
|
32
|
+
return result
|
|
33
|
+
|
|
34
|
+
def space_statistics(self, spaces: list[str]) -> SpaceStatisticsResponse:
|
|
35
|
+
"""Retrieve space-wise usage data and limits.
|
|
36
|
+
|
|
37
|
+
Args:
|
|
38
|
+
spaces: List of space identifiers to retrieve statistics for.
|
|
39
|
+
|
|
40
|
+
Returns:
|
|
41
|
+
SpaceStatisticsResponse object.
|
|
42
|
+
"""
|
|
43
|
+
|
|
44
|
+
body = {"items": [{"space": space} for space in spaces]}
|
|
45
|
+
|
|
46
|
+
result = self._http_client.request_with_retries(
|
|
47
|
+
SimpleBodyRequest(
|
|
48
|
+
endpoint_url=self._config.create_api_url("/models/statistics/spaces/byids"),
|
|
49
|
+
method="POST",
|
|
50
|
+
body=json.dumps(body),
|
|
51
|
+
)
|
|
52
|
+
)
|
|
53
|
+
|
|
54
|
+
result.raise_for_status()
|
|
55
|
+
result = SpaceStatisticsResponse.model_validate_json(result.success_response.body)
|
|
56
|
+
return result
|
|
@@ -8,6 +8,7 @@ from typing import Literal, TypeAlias, TypeVar
|
|
|
8
8
|
import networkx as nx
|
|
9
9
|
from pyparsing import cached_property
|
|
10
10
|
|
|
11
|
+
from cognite.neat._client.data_classes import SpaceStatisticsResponse
|
|
11
12
|
from cognite.neat._data_model._constants import COGNITE_SPACES
|
|
12
13
|
from cognite.neat._data_model._snapshot import SchemaSnapshot
|
|
13
14
|
from cognite.neat._data_model.models.dms._constraints import RequiresConstraintDefinition
|
|
@@ -70,9 +71,11 @@ class ValidationResources:
|
|
|
70
71
|
local: SchemaSnapshot,
|
|
71
72
|
cdf: SchemaSnapshot,
|
|
72
73
|
limits: SchemaLimits | None = None,
|
|
74
|
+
space_statistics: SpaceStatisticsResponse | None = None,
|
|
73
75
|
) -> None:
|
|
74
76
|
self._modus_operandi = modus_operandi
|
|
75
77
|
self.limits = limits or SchemaLimits()
|
|
78
|
+
self.space_statistics = space_statistics
|
|
76
79
|
|
|
77
80
|
self.local = local
|
|
78
81
|
self.cdf = cdf
|
|
@@ -890,10 +893,12 @@ class ValidationResources:
|
|
|
890
893
|
- to_remove: Existing constraints that are redundant or wrongly oriented
|
|
891
894
|
- status: The optimization status for this view
|
|
892
895
|
"""
|
|
893
|
-
|
|
894
|
-
|
|
895
|
-
)
|
|
896
|
+
containers_in_view = self.containers_by_view.get(view, set())
|
|
897
|
+
modifiable_containers_in_view = containers_in_view.intersection(self.modifiable_containers)
|
|
896
898
|
if not modifiable_containers_in_view:
|
|
899
|
+
# No modifiable containers - check if view is already optimized via existing constraints
|
|
900
|
+
if self.forms_directed_path(containers_in_view, self.requires_constraint_graph):
|
|
901
|
+
return RequiresChangesForView(set(), set(), RequiresChangeStatus.OPTIMAL)
|
|
897
902
|
return RequiresChangesForView(set(), set(), RequiresChangeStatus.NO_MODIFIABLE_CONTAINERS)
|
|
898
903
|
|
|
899
904
|
# Early exit for inherently unsolvable views (no CDM anchor + all modifiables are roots)
|
|
@@ -67,8 +67,12 @@ COGNITE_SPACES = (
|
|
|
67
67
|
"cdf_apm",
|
|
68
68
|
"cdf_apps_shared",
|
|
69
69
|
"cdf_cdm_3d",
|
|
70
|
+
"cdf_time_series_data",
|
|
71
|
+
"cdf_cdm_units",
|
|
70
72
|
)
|
|
71
73
|
|
|
74
|
+
COGNITE_APP_SPACES = ("CommentInstanceSpace", "IndustrialCanvasInstanceSpace", "SolutionTagsInstanceSpace", "scene")
|
|
75
|
+
|
|
72
76
|
# Defaults from https://docs.cognite.com/cdf/dm/dm_reference/dm_limits_and_restrictions#list-size-limits
|
|
73
77
|
|
|
74
78
|
DEFAULT_MAX_LIST_SIZE = 1000
|
|
@@ -2,15 +2,17 @@ from abc import ABC, abstractmethod
|
|
|
2
2
|
from typing import ClassVar
|
|
3
3
|
|
|
4
4
|
from cognite.neat._data_model._analysis import ValidationResources
|
|
5
|
+
from cognite.neat._data_model.models.dms._schema import RequestSchema
|
|
5
6
|
from cognite.neat._issues import ConsistencyError, Recommendation
|
|
6
7
|
|
|
7
8
|
|
|
8
|
-
class
|
|
9
|
-
"""
|
|
9
|
+
class NeatRule(ABC):
|
|
10
|
+
"""Rules for data model principles."""
|
|
10
11
|
|
|
11
12
|
code: ClassVar[str]
|
|
12
13
|
issue_type: ClassVar[type[ConsistencyError] | type[Recommendation]]
|
|
13
14
|
alpha: ClassVar[bool] = False
|
|
15
|
+
fixable: ClassVar[bool] = False
|
|
14
16
|
|
|
15
17
|
def __init__(
|
|
16
18
|
self,
|
|
@@ -19,7 +21,11 @@ class DataModelValidator(ABC):
|
|
|
19
21
|
self.validation_resources = validation_resources
|
|
20
22
|
|
|
21
23
|
@abstractmethod
|
|
22
|
-
def
|
|
23
|
-
"""Execute
|
|
24
|
-
# do something with data model
|
|
24
|
+
def validate(self) -> list[ConsistencyError] | list[Recommendation] | list[ConsistencyError | Recommendation]:
|
|
25
|
+
"""Execute rule validation."""
|
|
25
26
|
...
|
|
27
|
+
|
|
28
|
+
def fix(self) -> RequestSchema:
|
|
29
|
+
"""Fix the issues found by the validator producing a fixed object."""
|
|
30
|
+
|
|
31
|
+
raise NotImplementedError("This rule does not implement fix()")
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
from collections.abc import Callable
|
|
2
|
+
|
|
3
|
+
from cognite.neat._client.data_classes import SpaceStatisticsResponse
|
|
4
|
+
from cognite.neat._data_model._analysis import ValidationResources
|
|
5
|
+
from cognite.neat._data_model._shared import OnSuccessIssuesChecker
|
|
6
|
+
from cognite.neat._data_model._snapshot import SchemaSnapshot
|
|
7
|
+
from cognite.neat._data_model.models.dms._limits import SchemaLimits
|
|
8
|
+
from cognite.neat._utils.auxiliary import get_concrete_subclasses
|
|
9
|
+
|
|
10
|
+
from ._base import CDFRule
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
class CDFRulesOrchestrator(OnSuccessIssuesChecker):
|
|
14
|
+
"""CDF rules orchestrator, used to execute CDF rules on an entire CDF snapshot."""
|
|
15
|
+
|
|
16
|
+
def __init__(
|
|
17
|
+
self,
|
|
18
|
+
limits: SchemaLimits,
|
|
19
|
+
space_statistics: SpaceStatisticsResponse,
|
|
20
|
+
can_run_validator: Callable[[str, type], bool] | None = None,
|
|
21
|
+
enable_alpha_validators: bool = False,
|
|
22
|
+
) -> None:
|
|
23
|
+
super().__init__()
|
|
24
|
+
self._limits = limits
|
|
25
|
+
self._can_run_validator = can_run_validator or (lambda code, issue_type: True) # type: ignore
|
|
26
|
+
self._has_run = False
|
|
27
|
+
self._enable_alpha_validators = enable_alpha_validators
|
|
28
|
+
self._space_statistics = space_statistics
|
|
29
|
+
|
|
30
|
+
def run(self, cdf_snapshot: SchemaSnapshot) -> None:
|
|
31
|
+
"""Run quality assessment on the DMS data model."""
|
|
32
|
+
|
|
33
|
+
validation_resources = self._gather_validation_resources(cdf_snapshot)
|
|
34
|
+
|
|
35
|
+
# Initialize all validators
|
|
36
|
+
validators: list[CDFRule] = [validator(validation_resources) for validator in get_concrete_subclasses(CDFRule)]
|
|
37
|
+
|
|
38
|
+
# Run validators
|
|
39
|
+
for validator in validators:
|
|
40
|
+
if validator.alpha and not self._enable_alpha_validators:
|
|
41
|
+
continue
|
|
42
|
+
if self._can_run_validator(validator.code, validator.issue_type):
|
|
43
|
+
self._issues.extend(validator.validate())
|
|
44
|
+
|
|
45
|
+
self._has_run = True
|
|
46
|
+
|
|
47
|
+
def _gather_validation_resources(self, cdf_snapshot: SchemaSnapshot) -> ValidationResources:
|
|
48
|
+
# we do not want to modify the original request schema during validation
|
|
49
|
+
|
|
50
|
+
return ValidationResources(
|
|
51
|
+
cdf=cdf_snapshot,
|
|
52
|
+
local=cdf_snapshot,
|
|
53
|
+
limits=self._limits,
|
|
54
|
+
space_statistics=self._space_statistics,
|
|
55
|
+
modus_operandi="rebuild",
|
|
56
|
+
)
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
from cognite.neat._data_model._constants import COGNITE_APP_SPACES, COGNITE_SPACES
|
|
2
|
+
from cognite.neat._data_model.rules.cdf._base import CDFRule
|
|
3
|
+
from cognite.neat._issues import Recommendation
|
|
4
|
+
|
|
5
|
+
BASE_CODE = "NEAT-CDF-SPACES"
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
class EmptySpaces(CDFRule):
|
|
9
|
+
"""Rule that checks for empty spaces in CDF.
|
|
10
|
+
|
|
11
|
+
## What it does
|
|
12
|
+
This rule checks if there are any empty spaces in CDF.
|
|
13
|
+
|
|
14
|
+
## Why is this bad?
|
|
15
|
+
CDF projects typically have limits of 100 spaces, and having empty spaces can waste these valuable resources.
|
|
16
|
+
Also, empty spaces can lead to confusion and mismanagement of resources within the CDF environment.
|
|
17
|
+
They may indicate incomplete configurations or unused resources that could be cleaned up.
|
|
18
|
+
|
|
19
|
+
## Example
|
|
20
|
+
A space `iamempty` with no associated resources such as Views, Containers or Data Models.
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
"""
|
|
24
|
+
|
|
25
|
+
code = f"{BASE_CODE}-001"
|
|
26
|
+
issue_type = Recommendation
|
|
27
|
+
|
|
28
|
+
def validate(self) -> list[Recommendation]:
|
|
29
|
+
issues: list[Recommendation] = []
|
|
30
|
+
|
|
31
|
+
if not self.validation_resources.space_statistics:
|
|
32
|
+
return issues
|
|
33
|
+
|
|
34
|
+
empty_spaces = set(self.validation_resources.space_statistics.empty_spaces()) - set(
|
|
35
|
+
COGNITE_APP_SPACES + COGNITE_SPACES
|
|
36
|
+
)
|
|
37
|
+
|
|
38
|
+
for space in empty_spaces:
|
|
39
|
+
issues.append(
|
|
40
|
+
Recommendation(
|
|
41
|
+
message=f"Space '{space}' is empty and has no associated resources.",
|
|
42
|
+
code=self.code,
|
|
43
|
+
fix="Consider removing the empty space to maintain a clean CDF environment.",
|
|
44
|
+
)
|
|
45
|
+
)
|
|
46
|
+
|
|
47
|
+
return issues
|
|
@@ -36,7 +36,7 @@ from ._limits import (
|
|
|
36
36
|
ViewImplementsCountIsOutOfLimits,
|
|
37
37
|
ViewPropertyCountIsOutOfLimits,
|
|
38
38
|
)
|
|
39
|
-
from ._orchestrator import
|
|
39
|
+
from ._orchestrator import DmsDataModelRulesOrchestrator
|
|
40
40
|
from ._performance import (
|
|
41
41
|
MissingRequiresConstraint,
|
|
42
42
|
SuboptimalRequiresConstraint,
|
|
@@ -53,7 +53,7 @@ __all__ = [
|
|
|
53
53
|
"DataModelMissingDescription",
|
|
54
54
|
"DataModelMissingName",
|
|
55
55
|
"DataModelViewCountIsOutOfLimits",
|
|
56
|
-
"
|
|
56
|
+
"DmsDataModelRulesOrchestrator",
|
|
57
57
|
"EnumerationMissingDescription",
|
|
58
58
|
"EnumerationMissingName",
|
|
59
59
|
"ExternalContainerDoesNotExist",
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
"""Validators for checking if data model is AI-ready."""
|
|
2
2
|
|
|
3
3
|
from cognite.neat._data_model.models.dms._data_types import EnumProperty
|
|
4
|
-
from cognite.neat._data_model.
|
|
4
|
+
from cognite.neat._data_model.rules.dms._base import DataModelRule
|
|
5
5
|
from cognite.neat._issues import Recommendation
|
|
6
6
|
|
|
7
7
|
BASE_CODE = "NEAT-DMS-AI-READINESS"
|
|
8
8
|
|
|
9
9
|
|
|
10
|
-
class DataModelMissingName(
|
|
10
|
+
class DataModelMissingName(DataModelRule):
|
|
11
11
|
"""Validates that data model has a human-readable name.
|
|
12
12
|
|
|
13
13
|
## What it does
|
|
@@ -26,7 +26,7 @@ class DataModelMissingName(DataModelValidator):
|
|
|
26
26
|
code = f"{BASE_CODE}-001"
|
|
27
27
|
issue_type = Recommendation
|
|
28
28
|
|
|
29
|
-
def
|
|
29
|
+
def validate(self) -> list[Recommendation]:
|
|
30
30
|
recommendations: list[Recommendation] = []
|
|
31
31
|
|
|
32
32
|
if not self.validation_resources.merged_data_model.name:
|
|
@@ -41,7 +41,7 @@ class DataModelMissingName(DataModelValidator):
|
|
|
41
41
|
return recommendations
|
|
42
42
|
|
|
43
43
|
|
|
44
|
-
class DataModelMissingDescription(
|
|
44
|
+
class DataModelMissingDescription(DataModelRule):
|
|
45
45
|
"""Validates that data model has a human-readable description.
|
|
46
46
|
|
|
47
47
|
## What it does
|
|
@@ -65,7 +65,7 @@ class DataModelMissingDescription(DataModelValidator):
|
|
|
65
65
|
code = f"{BASE_CODE}-002"
|
|
66
66
|
issue_type = Recommendation
|
|
67
67
|
|
|
68
|
-
def
|
|
68
|
+
def validate(self) -> list[Recommendation]:
|
|
69
69
|
recommendations: list[Recommendation] = []
|
|
70
70
|
|
|
71
71
|
if not self.validation_resources.merged_data_model.description:
|
|
@@ -80,7 +80,7 @@ class DataModelMissingDescription(DataModelValidator):
|
|
|
80
80
|
return recommendations
|
|
81
81
|
|
|
82
82
|
|
|
83
|
-
class ViewMissingName(
|
|
83
|
+
class ViewMissingName(DataModelRule):
|
|
84
84
|
"""Validates that a View has a human-readable name.
|
|
85
85
|
|
|
86
86
|
## What it does
|
|
@@ -100,7 +100,7 @@ class ViewMissingName(DataModelValidator):
|
|
|
100
100
|
code = f"{BASE_CODE}-003"
|
|
101
101
|
issue_type = Recommendation
|
|
102
102
|
|
|
103
|
-
def
|
|
103
|
+
def validate(self) -> list[Recommendation]:
|
|
104
104
|
recommendations: list[Recommendation] = []
|
|
105
105
|
|
|
106
106
|
for view_ref in self.validation_resources.merged_data_model.views or []:
|
|
@@ -121,7 +121,7 @@ class ViewMissingName(DataModelValidator):
|
|
|
121
121
|
return recommendations
|
|
122
122
|
|
|
123
123
|
|
|
124
|
-
class ViewMissingDescription(
|
|
124
|
+
class ViewMissingDescription(DataModelRule):
|
|
125
125
|
"""Validates that a View has a human-readable description.
|
|
126
126
|
|
|
127
127
|
## What it does
|
|
@@ -151,7 +151,7 @@ class ViewMissingDescription(DataModelValidator):
|
|
|
151
151
|
code = f"{BASE_CODE}-004"
|
|
152
152
|
issue_type = Recommendation
|
|
153
153
|
|
|
154
|
-
def
|
|
154
|
+
def validate(self) -> list[Recommendation]:
|
|
155
155
|
recommendations: list[Recommendation] = []
|
|
156
156
|
|
|
157
157
|
for view_ref in self.validation_resources.merged_data_model.views or []:
|
|
@@ -172,7 +172,7 @@ class ViewMissingDescription(DataModelValidator):
|
|
|
172
172
|
return recommendations
|
|
173
173
|
|
|
174
174
|
|
|
175
|
-
class ViewPropertyMissingName(
|
|
175
|
+
class ViewPropertyMissingName(DataModelRule):
|
|
176
176
|
"""Validates that a view property has a human-readable name.
|
|
177
177
|
|
|
178
178
|
## What it does
|
|
@@ -192,7 +192,7 @@ class ViewPropertyMissingName(DataModelValidator):
|
|
|
192
192
|
code = f"{BASE_CODE}-005"
|
|
193
193
|
issue_type = Recommendation
|
|
194
194
|
|
|
195
|
-
def
|
|
195
|
+
def validate(self) -> list[Recommendation]:
|
|
196
196
|
recommendations: list[Recommendation] = []
|
|
197
197
|
|
|
198
198
|
for view_ref in self.validation_resources.merged_data_model.views or []:
|
|
@@ -217,7 +217,7 @@ class ViewPropertyMissingName(DataModelValidator):
|
|
|
217
217
|
return recommendations
|
|
218
218
|
|
|
219
219
|
|
|
220
|
-
class ViewPropertyMissingDescription(
|
|
220
|
+
class ViewPropertyMissingDescription(DataModelRule):
|
|
221
221
|
"""Validates that a View property has a human-readable description.
|
|
222
222
|
|
|
223
223
|
## What it does
|
|
@@ -248,7 +248,7 @@ class ViewPropertyMissingDescription(DataModelValidator):
|
|
|
248
248
|
code = f"{BASE_CODE}-006"
|
|
249
249
|
issue_type = Recommendation
|
|
250
250
|
|
|
251
|
-
def
|
|
251
|
+
def validate(self) -> list[Recommendation]:
|
|
252
252
|
recommendations: list[Recommendation] = []
|
|
253
253
|
|
|
254
254
|
for view_ref in self.validation_resources.merged_data_model.views or []:
|
|
@@ -273,7 +273,7 @@ class ViewPropertyMissingDescription(DataModelValidator):
|
|
|
273
273
|
return recommendations
|
|
274
274
|
|
|
275
275
|
|
|
276
|
-
class EnumerationMissingName(
|
|
276
|
+
class EnumerationMissingName(DataModelRule):
|
|
277
277
|
"""Validates that an enumeration has a human-readable name.
|
|
278
278
|
|
|
279
279
|
## What it does
|
|
@@ -293,7 +293,7 @@ class EnumerationMissingName(DataModelValidator):
|
|
|
293
293
|
code = f"{BASE_CODE}-007"
|
|
294
294
|
issue_type = Recommendation
|
|
295
295
|
|
|
296
|
-
def
|
|
296
|
+
def validate(self) -> list[Recommendation]:
|
|
297
297
|
recommendations: list[Recommendation] = []
|
|
298
298
|
|
|
299
299
|
for container_ref in self.validation_resources.merged.containers:
|
|
@@ -322,7 +322,7 @@ class EnumerationMissingName(DataModelValidator):
|
|
|
322
322
|
return recommendations
|
|
323
323
|
|
|
324
324
|
|
|
325
|
-
class EnumerationMissingDescription(
|
|
325
|
+
class EnumerationMissingDescription(DataModelRule):
|
|
326
326
|
"""Validates that an enumeration value has a human-readable description.
|
|
327
327
|
|
|
328
328
|
## What it does
|
|
@@ -353,7 +353,7 @@ class EnumerationMissingDescription(DataModelValidator):
|
|
|
353
353
|
code = f"{BASE_CODE}-008"
|
|
354
354
|
issue_type = Recommendation
|
|
355
355
|
|
|
356
|
-
def
|
|
356
|
+
def validate(self) -> list[Recommendation]:
|
|
357
357
|
recommendations: list[Recommendation] = []
|
|
358
358
|
|
|
359
359
|
for container_ref in self.validation_resources.merged.containers:
|