cognite-neat 0.123.13__tar.gz → 0.123.15__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of cognite-neat might be problematic. Click here for more details.

Files changed (645) hide show
  1. cognite_neat-0.123.15/.gemini/styleguide.md +177 -0
  2. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/PKG-INFO +1 -1
  3. cognite_neat-0.123.15/cognite/neat/_version.py +2 -0
  4. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/cognite/neat/core/_data_model/importers/_rdf/_owl2data_model.py +20 -16
  5. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/cognite/neat/core/_data_model/importers/_rdf/_shared.py +23 -15
  6. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/cognite/neat/core/_data_model/models/conceptual/_validation.py +82 -97
  7. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/cognite/neat/core/_data_model/transformers/__init__.py +2 -0
  8. cognite_neat-0.123.15/cognite/neat/core/_data_model/transformers/_union_conceptual.py +208 -0
  9. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/cognite/neat/core/_issues/_base.py +5 -0
  10. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/cognite/neat/core/_issues/warnings/_models.py +2 -2
  11. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/cognite/neat/core/_utils/spreadsheet.py +4 -0
  12. cognite_neat-0.123.15/last_changelog_entry.md +4 -0
  13. cognite_neat-0.123.15/last_git_message.txt +32 -0
  14. cognite_neat-0.123.15/last_version.txt +1 -0
  15. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/pyproject.toml +1 -1
  16. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/data/__init__.py +1 -0
  17. cognite_neat-0.123.15/tests/data/_schema/conceptual/dangling-properties.xlsx +0 -0
  18. cognite_neat-0.123.15/tests/data/_schema/conceptual/ontology.ttl +89 -0
  19. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/tests_unit/test_rules/test_importers/test_excel_importer.py +14 -0
  20. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/tests_unit/test_rules/test_importers/test_owl_importer.py +28 -13
  21. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/tests_unit/test_rules/test_models/test_conceptual_model.py +2 -2
  22. cognite_neat-0.123.15/tests/tests_unit/test_rules/test_transformers/test_union_conceptual.py +261 -0
  23. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/uv.lock +2 -2
  24. cognite_neat-0.123.13/cognite/neat/_version.py +0 -2
  25. cognite_neat-0.123.13/last_changelog_entry.md +0 -4
  26. cognite_neat-0.123.13/last_git_message.txt +0 -35
  27. cognite_neat-0.123.13/last_version.txt +0 -1
  28. cognite_neat-0.123.13/tests/data/_schema/conceptual/ontology.ttl +0 -42
  29. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/.coveragerc +0 -0
  30. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/.github/CODEOWNERS +0 -0
  31. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/.github/ISSUE_TEMPLATE/bug-report.md +0 -0
  32. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/.github/ISSUE_TEMPLATE/feature-request.md +0 -0
  33. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/.github/pull_request_template.md +0 -0
  34. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/.github/renovate.json +0 -0
  35. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/.github/workflows/code-quality.yaml +0 -0
  36. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/.github/workflows/release.yaml +0 -0
  37. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/.gitignore +0 -0
  38. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/.pre-commit-config.yaml +0 -0
  39. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/.readthedocs.yaml +0 -0
  40. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/CODE_OF_CONDUCT.md +0 -0
  41. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/CONTRIBUTING.md +0 -0
  42. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/LICENSE +0 -0
  43. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/README.md +0 -0
  44. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/cdf.toml +0 -0
  45. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/codecov.yml +0 -0
  46. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/cognite/neat/__init__.py +0 -0
  47. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/cognite/neat/core/__init__.py +0 -0
  48. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/cognite/neat/core/_client/__init__.py +0 -0
  49. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/cognite/neat/core/_client/_api/__init__.py +0 -0
  50. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/cognite/neat/core/_client/_api/data_modeling_loaders.py +0 -0
  51. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/cognite/neat/core/_client/_api/neat_instances.py +0 -0
  52. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/cognite/neat/core/_client/_api/schema.py +0 -0
  53. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/cognite/neat/core/_client/_api/statistics.py +0 -0
  54. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/cognite/neat/core/_client/_api_client.py +0 -0
  55. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/cognite/neat/core/_client/data_classes/__init__.py +0 -0
  56. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/cognite/neat/core/_client/data_classes/data_modeling.py +0 -0
  57. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/cognite/neat/core/_client/data_classes/neat_sequence.py +0 -0
  58. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/cognite/neat/core/_client/data_classes/schema.py +0 -0
  59. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/cognite/neat/core/_client/data_classes/statistics.py +0 -0
  60. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/cognite/neat/core/_client/testing.py +0 -0
  61. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/cognite/neat/core/_config.py +0 -0
  62. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/cognite/neat/core/_constants.py +0 -0
  63. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/cognite/neat/core/_data_model/__init__.py +0 -0
  64. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/cognite/neat/core/_data_model/_constants.py +0 -0
  65. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/cognite/neat/core/_data_model/_shared.py +0 -0
  66. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/cognite/neat/core/_data_model/analysis/__init__.py +0 -0
  67. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/cognite/neat/core/_data_model/analysis/_base.py +0 -0
  68. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/cognite/neat/core/_data_model/catalog/__init__.py +0 -0
  69. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/cognite/neat/core/_data_model/catalog/classic_model.xlsx +0 -0
  70. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/cognite/neat/core/_data_model/catalog/conceptual-imf-data-model.xlsx +0 -0
  71. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/cognite/neat/core/_data_model/catalog/hello_world_pump.xlsx +0 -0
  72. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/cognite/neat/core/_data_model/exporters/__init__.py +0 -0
  73. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/cognite/neat/core/_data_model/exporters/_base.py +0 -0
  74. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/cognite/neat/core/_data_model/exporters/_data_model2dms.py +0 -0
  75. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/cognite/neat/core/_data_model/exporters/_data_model2excel.py +0 -0
  76. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/cognite/neat/core/_data_model/exporters/_data_model2instance_template.py +0 -0
  77. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/cognite/neat/core/_data_model/exporters/_data_model2ontology.py +0 -0
  78. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/cognite/neat/core/_data_model/exporters/_data_model2yaml.py +0 -0
  79. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/cognite/neat/core/_data_model/importers/__init__.py +0 -0
  80. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/cognite/neat/core/_data_model/importers/_base.py +0 -0
  81. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/cognite/neat/core/_data_model/importers/_base_file_reader.py +0 -0
  82. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/cognite/neat/core/_data_model/importers/_dict2data_model.py +0 -0
  83. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/cognite/neat/core/_data_model/importers/_dms2data_model.py +0 -0
  84. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/cognite/neat/core/_data_model/importers/_rdf/__init__.py +0 -0
  85. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/cognite/neat/core/_data_model/importers/_rdf/_base.py +0 -0
  86. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/cognite/neat/core/_data_model/importers/_rdf/_inference2rdata_model.py +0 -0
  87. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/cognite/neat/core/_data_model/importers/_spreadsheet2data_model.py +0 -0
  88. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/cognite/neat/core/_data_model/models/__init__.py +0 -0
  89. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/cognite/neat/core/_data_model/models/_base_unverified.py +0 -0
  90. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/cognite/neat/core/_data_model/models/_base_verified.py +0 -0
  91. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/cognite/neat/core/_data_model/models/_types.py +0 -0
  92. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/cognite/neat/core/_data_model/models/conceptual/__init__.py +0 -0
  93. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/cognite/neat/core/_data_model/models/conceptual/_unverified.py +0 -0
  94. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/cognite/neat/core/_data_model/models/conceptual/_verified.py +0 -0
  95. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/cognite/neat/core/_data_model/models/data_types.py +0 -0
  96. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/cognite/neat/core/_data_model/models/entities/__init__.py +0 -0
  97. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/cognite/neat/core/_data_model/models/entities/_constants.py +0 -0
  98. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/cognite/neat/core/_data_model/models/entities/_loaders.py +0 -0
  99. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/cognite/neat/core/_data_model/models/entities/_multi_value.py +0 -0
  100. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/cognite/neat/core/_data_model/models/entities/_single_value.py +0 -0
  101. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/cognite/neat/core/_data_model/models/entities/_types.py +0 -0
  102. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/cognite/neat/core/_data_model/models/entities/_wrapped.py +0 -0
  103. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/cognite/neat/core/_data_model/models/mapping/__init__.py +0 -0
  104. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/cognite/neat/core/_data_model/models/mapping/_classic2core.py +0 -0
  105. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/cognite/neat/core/_data_model/models/mapping/_classic2core.yaml +0 -0
  106. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/cognite/neat/core/_data_model/models/physical/__init__.py +0 -0
  107. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/cognite/neat/core/_data_model/models/physical/_exporter.py +0 -0
  108. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/cognite/neat/core/_data_model/models/physical/_unverified.py +0 -0
  109. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/cognite/neat/core/_data_model/models/physical/_validation.py +0 -0
  110. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/cognite/neat/core/_data_model/models/physical/_verified.py +0 -0
  111. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/cognite/neat/core/_data_model/transformers/_base.py +0 -0
  112. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/cognite/neat/core/_data_model/transformers/_converters.py +0 -0
  113. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/cognite/neat/core/_data_model/transformers/_mapping.py +0 -0
  114. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/cognite/neat/core/_data_model/transformers/_verification.py +0 -0
  115. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/cognite/neat/core/_instances/__init__.py +0 -0
  116. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/cognite/neat/core/_instances/_shared.py +0 -0
  117. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/cognite/neat/core/_instances/_tracking/__init__.py +0 -0
  118. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/cognite/neat/core/_instances/_tracking/base.py +0 -0
  119. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/cognite/neat/core/_instances/_tracking/log.py +0 -0
  120. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/cognite/neat/core/_instances/examples/Knowledge-Graph-Nordic44-dirty.xml +0 -0
  121. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/cognite/neat/core/_instances/examples/Knowledge-Graph-Nordic44.xml +0 -0
  122. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/cognite/neat/core/_instances/examples/__init__.py +0 -0
  123. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/cognite/neat/core/_instances/examples/skos-capturing-sheet-wind-topics.xlsx +0 -0
  124. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/cognite/neat/core/_instances/extractors/__init__.py +0 -0
  125. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/cognite/neat/core/_instances/extractors/_base.py +0 -0
  126. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/cognite/neat/core/_instances/extractors/_classic_cdf/__init__.py +0 -0
  127. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/cognite/neat/core/_instances/extractors/_classic_cdf/_assets.py +0 -0
  128. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/cognite/neat/core/_instances/extractors/_classic_cdf/_base.py +0 -0
  129. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/cognite/neat/core/_instances/extractors/_classic_cdf/_classic.py +0 -0
  130. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/cognite/neat/core/_instances/extractors/_classic_cdf/_data_sets.py +0 -0
  131. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/cognite/neat/core/_instances/extractors/_classic_cdf/_events.py +0 -0
  132. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/cognite/neat/core/_instances/extractors/_classic_cdf/_files.py +0 -0
  133. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/cognite/neat/core/_instances/extractors/_classic_cdf/_labels.py +0 -0
  134. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/cognite/neat/core/_instances/extractors/_classic_cdf/_relationships.py +0 -0
  135. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/cognite/neat/core/_instances/extractors/_classic_cdf/_sequences.py +0 -0
  136. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/cognite/neat/core/_instances/extractors/_classic_cdf/_timeseries.py +0 -0
  137. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/cognite/neat/core/_instances/extractors/_dict.py +0 -0
  138. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/cognite/neat/core/_instances/extractors/_dms.py +0 -0
  139. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/cognite/neat/core/_instances/extractors/_dms_graph.py +0 -0
  140. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/cognite/neat/core/_instances/extractors/_mock_graph_generator.py +0 -0
  141. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/cognite/neat/core/_instances/extractors/_raw.py +0 -0
  142. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/cognite/neat/core/_instances/extractors/_rdf_file.py +0 -0
  143. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/cognite/neat/core/_instances/loaders/__init__.py +0 -0
  144. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/cognite/neat/core/_instances/loaders/_base.py +0 -0
  145. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/cognite/neat/core/_instances/loaders/_rdf2dms.py +0 -0
  146. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/cognite/neat/core/_instances/loaders/_rdf_to_instance_space.py +0 -0
  147. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/cognite/neat/core/_instances/queries/__init__.py +0 -0
  148. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/cognite/neat/core/_instances/queries/_base.py +0 -0
  149. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/cognite/neat/core/_instances/queries/_queries.py +0 -0
  150. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/cognite/neat/core/_instances/queries/_select.py +0 -0
  151. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/cognite/neat/core/_instances/queries/_update.py +0 -0
  152. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/cognite/neat/core/_instances/transformers/__init__.py +0 -0
  153. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/cognite/neat/core/_instances/transformers/_base.py +0 -0
  154. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/cognite/neat/core/_instances/transformers/_classic_cdf.py +0 -0
  155. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/cognite/neat/core/_instances/transformers/_prune_graph.py +0 -0
  156. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/cognite/neat/core/_instances/transformers/_rdfpath.py +0 -0
  157. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/cognite/neat/core/_instances/transformers/_value_type.py +0 -0
  158. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/cognite/neat/core/_issues/__init__.py +0 -0
  159. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/cognite/neat/core/_issues/_contextmanagers.py +0 -0
  160. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/cognite/neat/core/_issues/_factory.py +0 -0
  161. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/cognite/neat/core/_issues/errors/__init__.py +0 -0
  162. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/cognite/neat/core/_issues/errors/_external.py +0 -0
  163. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/cognite/neat/core/_issues/errors/_general.py +0 -0
  164. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/cognite/neat/core/_issues/errors/_properties.py +0 -0
  165. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/cognite/neat/core/_issues/errors/_resources.py +0 -0
  166. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/cognite/neat/core/_issues/errors/_wrapper.py +0 -0
  167. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/cognite/neat/core/_issues/formatters.py +0 -0
  168. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/cognite/neat/core/_issues/warnings/__init__.py +0 -0
  169. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/cognite/neat/core/_issues/warnings/_external.py +0 -0
  170. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/cognite/neat/core/_issues/warnings/_general.py +0 -0
  171. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/cognite/neat/core/_issues/warnings/_properties.py +0 -0
  172. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/cognite/neat/core/_issues/warnings/_resources.py +0 -0
  173. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/cognite/neat/core/_issues/warnings/user_modeling.py +0 -0
  174. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/cognite/neat/core/_shared.py +0 -0
  175. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/cognite/neat/core/_store/__init__.py +0 -0
  176. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/cognite/neat/core/_store/_data_model.py +0 -0
  177. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/cognite/neat/core/_store/_instance.py +0 -0
  178. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/cognite/neat/core/_store/_provenance.py +0 -0
  179. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/cognite/neat/core/_store/exceptions.py +0 -0
  180. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/cognite/neat/core/_utils/__init__.py +0 -0
  181. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/cognite/neat/core/_utils/auth.py +0 -0
  182. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/cognite/neat/core/_utils/auxiliary.py +0 -0
  183. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/cognite/neat/core/_utils/collection_.py +0 -0
  184. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/cognite/neat/core/_utils/graph_transformations_report.py +0 -0
  185. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/cognite/neat/core/_utils/io_.py +0 -0
  186. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/cognite/neat/core/_utils/rdf_.py +0 -0
  187. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/cognite/neat/core/_utils/reader/__init__.py +0 -0
  188. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/cognite/neat/core/_utils/reader/_base.py +0 -0
  189. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/cognite/neat/core/_utils/tarjan.py +0 -0
  190. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/cognite/neat/core/_utils/text.py +0 -0
  191. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/cognite/neat/core/_utils/time_.py +0 -0
  192. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/cognite/neat/core/_utils/upload.py +0 -0
  193. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/cognite/neat/core/_utils/xml_.py +0 -0
  194. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/cognite/neat/plugins/__init__.py +0 -0
  195. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/cognite/neat/plugins/_issues.py +0 -0
  196. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/cognite/neat/plugins/_manager.py +0 -0
  197. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/cognite/neat/plugins/data_model/__init__.py +0 -0
  198. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/cognite/neat/plugins/data_model/importers/__init__.py +0 -0
  199. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/cognite/neat/plugins/data_model/importers/_base.py +0 -0
  200. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/cognite/neat/py.typed +0 -0
  201. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/cognite/neat/session/__init__.py +0 -0
  202. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/cognite/neat/session/_base.py +0 -0
  203. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/cognite/neat/session/_collector.py +0 -0
  204. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/cognite/neat/session/_drop.py +0 -0
  205. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/cognite/neat/session/_experimental.py +0 -0
  206. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/cognite/neat/session/_explore.py +0 -0
  207. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/cognite/neat/session/_fix.py +0 -0
  208. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/cognite/neat/session/_inspect.py +0 -0
  209. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/cognite/neat/session/_mapping.py +0 -0
  210. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/cognite/neat/session/_plugin.py +0 -0
  211. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/cognite/neat/session/_prepare.py +0 -0
  212. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/cognite/neat/session/_read.py +0 -0
  213. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/cognite/neat/session/_set.py +0 -0
  214. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/cognite/neat/session/_show.py +0 -0
  215. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/cognite/neat/session/_state/README.md +0 -0
  216. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/cognite/neat/session/_state.py +0 -0
  217. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/cognite/neat/session/_subset.py +0 -0
  218. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/cognite/neat/session/_template.py +0 -0
  219. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/cognite/neat/session/_to.py +0 -0
  220. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/cognite/neat/session/_wizard.py +0 -0
  221. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/cognite/neat/session/engine/__init__.py +0 -0
  222. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/cognite/neat/session/engine/_import.py +0 -0
  223. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/cognite/neat/session/engine/_interface.py +0 -0
  224. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/cognite/neat/session/engine/_load.py +0 -0
  225. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/cognite/neat/session/exceptions.py +0 -0
  226. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/dev.py +0 -0
  227. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/docs/artifacts/figs/DataModelCDF.PNG +0 -0
  228. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/docs/artifacts/figs/DataModelInstancesCDF.PNG +0 -0
  229. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/docs/artifacts/figs/DataModelInstancesVizCDF.PNG +0 -0
  230. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/docs/artifacts/figs/aml-dm-cdf.png +0 -0
  231. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/docs/artifacts/figs/aml-dm.png +0 -0
  232. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/docs/artifacts/figs/aml-instances-cdf.png +0 -0
  233. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/docs/artifacts/figs/aml-instances-full.png +0 -0
  234. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/docs/artifacts/figs/asset_hierarchy_lift_pump_stations.png +0 -0
  235. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/docs/artifacts/figs/asset_hierarchy_lift_pump_stations_dms.png +0 -0
  236. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/docs/artifacts/figs/asset_hierarchy_lift_pump_stations_dms_typed.png +0 -0
  237. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/docs/artifacts/figs/asset_hierarchy_lift_pump_stations_populated.png +0 -0
  238. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/docs/artifacts/figs/asset_hierarchy_lift_pump_stations_populated_with_typed.png +0 -0
  239. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/docs/artifacts/figs/authorship.png +0 -0
  240. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/docs/artifacts/figs/base-components.png +0 -0
  241. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/docs/artifacts/figs/bid_capacity_data_model.png +0 -0
  242. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/docs/artifacts/figs/change_validate_step.png +0 -0
  243. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/docs/artifacts/figs/connecting_metadata_dm.png +0 -0
  244. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/docs/artifacts/figs/connecting_metadata_populated.png +0 -0
  245. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/docs/artifacts/figs/connecting_metadata_published_dm.png +0 -0
  246. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/docs/artifacts/figs/container_spec.png +0 -0
  247. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/docs/artifacts/figs/core_extension.png +0 -0
  248. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/docs/artifacts/figs/core_extension_excel.png +0 -0
  249. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/docs/artifacts/figs/core_extension_no_connection.png +0 -0
  250. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/docs/artifacts/figs/core_extension_with_properties.png +0 -0
  251. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/docs/artifacts/figs/data-exploration.gif +0 -0
  252. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/docs/artifacts/figs/data-model-nordic44.png +0 -0
  253. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/docs/artifacts/figs/data-modeling-flow.png +0 -0
  254. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/docs/artifacts/figs/dexpi-dm-cdf.png +0 -0
  255. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/docs/artifacts/figs/dexpi-dm-viz.png +0 -0
  256. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/docs/artifacts/figs/dexpi-graph-viz.png +0 -0
  257. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/docs/artifacts/figs/dexpi-instance-cdf.png +0 -0
  258. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/docs/artifacts/figs/dexpi-transformed-graph-viz.png +0 -0
  259. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/docs/artifacts/figs/dm-classes.png +0 -0
  260. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/docs/artifacts/figs/dm-object-shapes.png +0 -0
  261. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/docs/artifacts/figs/dm-prefixes.png +0 -0
  262. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/docs/artifacts/figs/dm-source-to-solution-mapping.png +0 -0
  263. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/docs/artifacts/figs/dm2cdf-asset.png +0 -0
  264. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/docs/artifacts/figs/dm2cdf-mapping.png +0 -0
  265. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/docs/artifacts/figs/execution-history.gif +0 -0
  266. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/docs/artifacts/figs/export_dms_config.png +0 -0
  267. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/docs/artifacts/figs/export_dms_executed.png +0 -0
  268. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/docs/artifacts/figs/export_dms_workflow.png +0 -0
  269. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/docs/artifacts/figs/features.png +0 -0
  270. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/docs/artifacts/figs/graph-etl-flow.png +0 -0
  271. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/docs/artifacts/figs/high-level-io.png +0 -0
  272. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/docs/artifacts/figs/instances-nordic44.png +0 -0
  273. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/docs/artifacts/figs/instances-sheet.png +0 -0
  274. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/docs/artifacts/figs/key-aspects-of-neat.png +0 -0
  275. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/docs/artifacts/figs/knowledge-graph-viz-filtering.gif +0 -0
  276. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/docs/artifacts/figs/knowledge-graph-viz.gif +0 -0
  277. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/docs/artifacts/figs/life_cycle_analitic_solution_export_dms.png +0 -0
  278. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/docs/artifacts/figs/life_cycle_converter_model_analytic_solution_model.png +0 -0
  279. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/docs/artifacts/figs/life_cycle_download_reference_model_analytic_soluteion_model.png +0 -0
  280. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/docs/artifacts/figs/life_cycle_download_reference_model_analytic_solution_model_export.png +0 -0
  281. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/docs/artifacts/figs/logo.png +0 -0
  282. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/docs/artifacts/figs/metadata-sheet.png +0 -0
  283. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/docs/artifacts/figs/multi-hop.png +0 -0
  284. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/docs/artifacts/figs/neat-high-level.png +0 -0
  285. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/docs/artifacts/figs/neat-two_flows.png +0 -0
  286. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/docs/artifacts/figs/neat_shift_tab.png +0 -0
  287. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/docs/artifacts/figs/neat_tab.png +0 -0
  288. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/docs/artifacts/figs/prefixes-sheet.png +0 -0
  289. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/docs/artifacts/figs/pump_hello_world_published.png +0 -0
  290. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/docs/artifacts/figs/rdf-in-nutshell.png +0 -0
  291. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/docs/artifacts/figs/rdf2cdf-graph-change.jpg +0 -0
  292. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/docs/artifacts/figs/rdf2cdf-graph-resurrect.jpg +0 -0
  293. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/docs/artifacts/figs/rdf2cdf-graph.jpg +0 -0
  294. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/docs/artifacts/figs/rdf2cdf-init-run-step1.jpg +0 -0
  295. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/docs/artifacts/figs/rdf2cdf-init-run-step2.png +0 -0
  296. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/docs/artifacts/figs/rdf2cdf-init-run.jpg +0 -0
  297. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/docs/artifacts/figs/rdf2cdf-post-init.jpg +0 -0
  298. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/docs/artifacts/figs/run_workflow.png +0 -0
  299. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/docs/artifacts/figs/sheet2cdf-asset-hierarchy.png +0 -0
  300. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/docs/artifacts/figs/sheet2cdf-running-workflow.gif +0 -0
  301. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/docs/artifacts/figs/sheet2cdf-transformation-rules-ui.png +0 -0
  302. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/docs/artifacts/figs/sheet2cdf-upload-rules.gif +0 -0
  303. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/docs/artifacts/figs/sheet2cdf-workflow-steps.png +0 -0
  304. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/docs/artifacts/figs/sheet2cdf-workflow.gif +0 -0
  305. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/docs/artifacts/figs/sheet2cdf-workflow.png +0 -0
  306. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/docs/artifacts/figs/step-configurables.png +0 -0
  307. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/docs/artifacts/figs/step-metrics.png +0 -0
  308. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/docs/artifacts/figs/tutorial-notebooks-part-2_graph-capturing-sheet.gif +0 -0
  309. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/docs/artifacts/figs/validate_workflow.png +0 -0
  310. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/docs/artifacts/figs/wf-ephemeral-mode.png +0 -0
  311. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/docs/artifacts/figs/wf-overview.gif +0 -0
  312. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/docs/artifacts/figs/wf-persistent-blocking-mode.png +0 -0
  313. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/docs/artifacts/figs/wf-persistent-non-blocking.png +0 -0
  314. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/docs/artifacts/figs/wf-start-mode-ui.png +0 -0
  315. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/docs/artifacts/figs/wind_farm_classic_knowledge_graph.png +0 -0
  316. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/docs/artifacts/figs/wind_farm_data_product_instances.png +0 -0
  317. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/docs/artifacts/figs/work-in-progress.png +0 -0
  318. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/docs/artifacts/figs/workflow-context.jpg +0 -0
  319. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/docs/artifacts/figs/working_with_metadata_provenance.png +0 -0
  320. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/docs/artifacts/figs/working_with_metadata_published_dm.png +0 -0
  321. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/docs/artifacts/rules/cdf-dms-architect-alice.xlsx +0 -0
  322. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/docs/artifacts/rules/dms-addition-svein-harald.xlsx +0 -0
  323. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/docs/artifacts/rules/dms-analytics-olav.xlsx +0 -0
  324. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/docs/artifacts/rules/dms-architect-rules-raw-filter-example.xlsx +0 -0
  325. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/docs/artifacts/rules/dms-architect-rules-template.xlsx +0 -0
  326. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/docs/artifacts/rules/dms-rebuild-olav.xlsx +0 -0
  327. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/docs/artifacts/rules/domain-expert-rules-template.xlsx +0 -0
  328. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/docs/artifacts/rules/expert-grid-emma.xlsx +0 -0
  329. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/docs/artifacts/rules/expert-wind-energy-jon.xlsx +0 -0
  330. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/docs/artifacts/rules/information-addition-svein-harald.xlsx +0 -0
  331. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/docs/artifacts/rules/information-analytics-olav-ref.xlsx +0 -0
  332. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/docs/artifacts/rules/information-analytics-olav.xlsx +0 -0
  333. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/docs/artifacts/rules/information-architect-david.xlsx +0 -0
  334. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/docs/artifacts/rules/information-architect-rules-template.xlsx +0 -0
  335. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/docs/artifacts/videos/tutorial-1-defining-data-model.mp4 +0 -0
  336. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/docs/artifacts/videos/tutorial-1-download-rules-template.mp4 +0 -0
  337. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/docs/artifacts/videos/tutorial-1-upload-gql-schema-to-cdf.mp4 +0 -0
  338. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/docs/artifacts/videos/tutorial-2-graph-capturing-sheet.mp4 +0 -0
  339. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/docs/artifacts/videos/tutorial-3-asset-hierarchy.mp4 +0 -0
  340. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/docs/artifacts/videos/tutorial-3-decommissioning.mp4 +0 -0
  341. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/docs/artifacts/videos/tutorial-3-relationships.mp4 +0 -0
  342. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/docs/artifacts/videos/tutorial-3-resurrection.mp4 +0 -0
  343. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/docs/artifacts/videos/tutorial-4-asset-hierarchy.mp4 +0 -0
  344. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/docs/data-modeling-principles.md +0 -0
  345. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/docs/excel_data_modeling/conceptual/overview.md +0 -0
  346. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/docs/excel_data_modeling/conceptual/reference.md +0 -0
  347. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/docs/excel_data_modeling/data_model.md +0 -0
  348. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/docs/excel_data_modeling/physical/enum.md +0 -0
  349. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/docs/excel_data_modeling/physical/overview.md +0 -0
  350. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/docs/excel_data_modeling/physical/properties.md +0 -0
  351. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/docs/excel_data_modeling/physical/reference.md +0 -0
  352. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/docs/excel_data_modeling/physical/views.md +0 -0
  353. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/docs/excel_data_modeling/units.md +0 -0
  354. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/docs/gettingstarted/installation.md +0 -0
  355. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/docs/gettingstarted/why-neat.md +0 -0
  356. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/docs/index.md +0 -0
  357. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/docs/reference/NeatSession/base.md +0 -0
  358. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/docs/reference/NeatSession/drop.md +0 -0
  359. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/docs/reference/NeatSession/fix.md +0 -0
  360. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/docs/reference/NeatSession/inspect.md +0 -0
  361. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/docs/reference/NeatSession/mapping.md +0 -0
  362. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/docs/reference/NeatSession/prepare.md +0 -0
  363. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/docs/reference/NeatSession/read.md +0 -0
  364. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/docs/reference/NeatSession/set.md +0 -0
  365. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/docs/reference/NeatSession/show.md +0 -0
  366. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/docs/reference/NeatSession/subset.md +0 -0
  367. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/docs/reference/NeatSession/template.md +0 -0
  368. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/docs/reference/NeatSession/to.md +0 -0
  369. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/docs/reference/issues/base.md +0 -0
  370. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/docs/reference/issues/errors.md +0 -0
  371. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/docs/reference/issues/user_model_warnings.md +0 -0
  372. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/docs/reference/issues/warnings.md +0 -0
  373. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/docs/reference/overview.md +0 -0
  374. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/docs/tutorials/data-modeling/cold_start.ipynb +0 -0
  375. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/docs/tutorials/data-modeling/figs/data-modeling-flow.png +0 -0
  376. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/docs/tutorials/data-modeling/files/wind_farm_prospecting_conceptual_data_model.xlsx +0 -0
  377. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/docs/tutorials/data-modeling/files/wind_farm_prospecting_conceptual_data_model_expanded.xlsx +0 -0
  378. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/docs/tutorials/data-modeling/files/wind_farm_prospecting_physical_data_model.xlsx +0 -0
  379. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/docs/tutorials/data-modeling/from-conceptual-to-physical-via-CDM.ipynb +0 -0
  380. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/docs/tutorials/data-modeling/http_purl.org_cognite_neat_data-model_verified_conceptual_wind_energy_WindFarmProspecting_v1.html +0 -0
  381. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/docs/tutorials/data-modeling/http_purl.org_cognite_neat_data-model_verified_conceptual_wind_energy_WindFarmProspecting_v1_implements.html +0 -0
  382. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/docs/tutorials/data-modeling/http_purl.org_cognite_neat_data-model_verified_physical_neat_playground_NeatHelloWorld_v1.html +0 -0
  383. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/docs/tutorials/data-modeling/my_first_model.xlsx +0 -0
  384. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/docs/tutorials/data-modeling/physical-data-model.xlsx +0 -0
  385. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/docs/tutorials/introduction/introduction.ipynb +0 -0
  386. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/mkdocs.yml +0 -0
  387. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/scripts/clean_space.py +0 -0
  388. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/scripts/core_classic_mapping.xlsx +0 -0
  389. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/scripts/create_classic_core_mapping_yaml.py +0 -0
  390. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/scripts/dependency_profiler.py +0 -0
  391. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/scripts/docs_generate_reference.py +0 -0
  392. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/scripts/docs_generate_unit.py +0 -0
  393. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/scripts/generate_steps_md.py +0 -0
  394. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/scripts/integration_runner/.gitignore +0 -0
  395. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/scripts/integration_runner/README.md +0 -0
  396. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/scripts/integration_runner/config.dev.yaml +0 -0
  397. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/scripts/integration_runner/modules/neat_integration_runner/README.md +0 -0
  398. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/scripts/integration_runner/modules/neat_integration_runner/auth/neat_cicd_testing.group.yaml +0 -0
  399. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/scripts/integration_runner/modules/test_data/lift_pumps/classic/lift_pump_stations_root.Asset.csv +0 -0
  400. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/scripts/integration_runner/modules/test_data/lift_pumps/data_sets/hierarchies.DataSet.yaml +0 -0
  401. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/scripts/integration_runner/modules/test_data/lift_pumps/raw/collections_pump.Table.csv +0 -0
  402. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/scripts/integration_runner/modules/test_data/lift_pumps/raw/collections_pump.Table.yaml +0 -0
  403. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/scripts/integration_runner/modules/test_data/windfarm/classic/Measurement.Asset.yaml +0 -0
  404. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/scripts/integration_runner/modules/test_data/windfarm/classic/Measurement.Label.yaml +0 -0
  405. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/scripts/integration_runner/modules/test_data/windfarm/classic/MetMast.Asset.yaml +0 -0
  406. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/scripts/integration_runner/modules/test_data/windfarm/classic/PowerGeneratingUnit.Label.yaml +0 -0
  407. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/scripts/integration_runner/modules/test_data/windfarm/classic/Utsira.Asset.yaml +0 -0
  408. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/scripts/integration_runner/modules/test_data/windfarm/classic/WT-01.Asset.yaml +0 -0
  409. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/scripts/integration_runner/modules/test_data/windfarm/classic/WT-01_to_MetMast.Relationship.yaml +0 -0
  410. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/scripts/integration_runner/modules/test_data/windfarm/classic/WT-02.Asset.yaml +0 -0
  411. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/scripts/integration_runner/modules/test_data/windfarm/classic/WT-02_to_MetMast.Relationship.yaml +0 -0
  412. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/scripts/integration_runner/modules/test_data/windfarm/classic/WindTurbine.Label.yaml +0 -0
  413. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/scripts/integration_runner/modules/test_data/windfarm/classic/metMast.Label.yaml +0 -0
  414. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/scripts/integration_runner/modules/test_data/windfarm/classic/planned_WT-01_2022-01-01.Event.yaml +0 -0
  415. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/scripts/integration_runner/modules/test_data/windfarm/classic/power_curve_manufacturer1.Sequence.yaml +0 -0
  416. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/scripts/integration_runner/modules/test_data/windfarm/data_sets/maintenance.DataSet.yaml +0 -0
  417. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/scripts/integration_runner/modules/test_data/windfarm/data_sets/source_ds.DataSet.yaml +0 -0
  418. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/scripts/integration_runner/modules/test_data/windfarm/data_sets/usecase_01.DataSet.yaml +0 -0
  419. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/scripts/integration_runner/modules/test_data/windfarm/files/WT-01_datasheet.FileMetadata.yaml +0 -0
  420. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/scripts/integration_runner/modules/test_data/windfarm/files/WT-01_datasheet.txt +0 -0
  421. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/scripts/integration_runner/modules/test_data/windfarm/timeseries/WT-01_forecast.TimeSeries.yaml +0 -0
  422. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/scripts/integration_runner/modules/test_data/windfarm/timeseries/WT-01_production.TimeSeries.yaml +0 -0
  423. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/scripts/integration_runner/modules/test_data/windfarm/timeseries/WT-02_forecast.TimeSeries.yaml +0 -0
  424. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/scripts/integration_runner/modules/test_data/windfarm/timeseries/WT-02_production.TimeSeries.yaml +0 -0
  425. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/scripts/manual_test_dms_importer.py +0 -0
  426. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/scripts/migration.py +0 -0
  427. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/scripts/oxi_remote/README.md +0 -0
  428. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/scripts/oxi_remote/docker-compose.yaml +0 -0
  429. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/scripts/test_lookup_table.csv +0 -0
  430. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/scripts/windfarm_to_toolkit.py +0 -0
  431. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/__init__.py +0 -0
  432. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/config.py +0 -0
  433. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/conftest.py +0 -0
  434. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/data/_graph/aml-raw-graph.ttl +0 -0
  435. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/data/_graph/aml_example.aml +0 -0
  436. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/data/_graph/car.py +0 -0
  437. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/data/_graph/dexpi-raw-graph.ttl +0 -0
  438. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/data/_graph/dexpi_example.xml +0 -0
  439. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/data/_graph/iodd_Piab-piCOMPACT10X-20230509-IODD1.1.xml +0 -0
  440. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/data/_graph/low-quality-graph.ttl +0 -0
  441. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/data/_instances/asset_centric_cdf/assets.yaml +0 -0
  442. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/data/_instances/asset_centric_cdf/events.yaml +0 -0
  443. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/data/_instances/asset_centric_cdf/files.yaml +0 -0
  444. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/data/_instances/asset_centric_cdf/labels.yaml +0 -0
  445. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/data/_instances/asset_centric_cdf/relationships.yaml +0 -0
  446. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/data/_instances/asset_centric_cdf/sequence_rows.yaml +0 -0
  447. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/data/_instances/asset_centric_cdf/sequences.yaml +0 -0
  448. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/data/_instances/asset_centric_cdf/timeseries.yaml +0 -0
  449. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/data/_instances/classic_windfarm.py +0 -0
  450. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/data/_schema/conceptual/broken_concepts.xlsx +0 -0
  451. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/data/_schema/conceptual/info-arch-car-rules.xlsx +0 -0
  452. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/data/_schema/conceptual/info_with_cdm_ref.xlsx +0 -0
  453. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/data/_schema/conceptual/information-unknown-value-type.xlsx +0 -0
  454. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/data/_schema/conceptual/only_concepts.xlsx +0 -0
  455. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/data/_schema/conversion/single_concept.conceptual.yaml +0 -0
  456. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/data/_schema/conversion/single_concept.physical.yaml +0 -0
  457. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/data/_schema/non_neat/cognite_core_v1.zip +0 -0
  458. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/data/_schema/non_neat/referencing_core/MyDescribable.container.yaml +0 -0
  459. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/data/_schema/non_neat/referencing_core/MyDescribable.view.yaml +0 -0
  460. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/data/_schema/non_neat/referencing_core/enterprise.datamodel.yaml +0 -0
  461. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/data/_schema/non_neat/windturbine.py +0 -0
  462. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/data/_schema/partial-model/complete.xlsx +0 -0
  463. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/data/_schema/partial-model/part1.xlsx +0 -0
  464. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/data/_schema/partial-model/part2.ttl +0 -0
  465. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/data/_schema/partial-model/part3.yaml +0 -0
  466. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/data/_schema/physical/car_dms_rules.xlsx +0 -0
  467. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/data/_schema/physical/car_dms_rules_deprecated.xlsx +0 -0
  468. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/data/_schema/physical/dm_raw_filter.xlsx +0 -0
  469. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/data/_schema/physical/dm_view_space_different.xlsx +0 -0
  470. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/data/_schema/physical/dms-unknown-value-type.xlsx +0 -0
  471. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/data/_schema/physical/isa_plus_cdm.xlsx +0 -0
  472. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/data/_schema/physical/missing-in-model-value.xlsx +0 -0
  473. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/data/_schema/physical/mixed-up-version.xlsx +0 -0
  474. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/data/_schema/physical/physical_singleton_issue.xlsx +0 -0
  475. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/data/_schema/physical/pump_example_duplicated_resources.xlsx +0 -0
  476. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/data/_schema/physical/pump_example_with_missing_cells.xlsx +0 -0
  477. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/data/_schema/physical/pump_example_with_missing_cells_raise_issues.xlsx +0 -0
  478. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/data/_schema/physical/strongly_connected_model/data_models/1.Production.container.yaml +0 -0
  479. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/data/_schema/physical/strongly_connected_model/data_models/10.SimNode.container.yaml +0 -0
  480. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/data/_schema/physical/strongly_connected_model/data_models/12.SimSubNode.container.yaml +0 -0
  481. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/data/_schema/physical/strongly_connected_model/data_models/13.SimEdge.container.yaml +0 -0
  482. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/data/_schema/physical/strongly_connected_model/data_models/14.Property.container.yaml +0 -0
  483. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/data/_schema/physical/strongly_connected_model/data_models/15.Coordinate.container.yaml +0 -0
  484. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/data/_schema/physical/strongly_connected_model/data_models/16.Coordinates.container.yaml +0 -0
  485. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/data/_schema/physical/strongly_connected_model/data_models/17.ModelExecutionEnvironment.view.yaml +0 -0
  486. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/data/_schema/physical/strongly_connected_model/data_models/18.Coordinate.view.yaml +0 -0
  487. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/data/_schema/physical/strongly_connected_model/data_models/19.Coordinates.view.yaml +0 -0
  488. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/data/_schema/physical/strongly_connected_model/data_models/2.SimulationModel.container.yaml +0 -0
  489. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/data/_schema/physical/strongly_connected_model/data_models/20.SimEdge.view.yaml +0 -0
  490. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/data/_schema/physical/strongly_connected_model/data_models/21.ProductionTimeseries.view.yaml +0 -0
  491. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/data/_schema/physical/strongly_connected_model/data_models/22.SimNode.view.yaml +0 -0
  492. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/data/_schema/physical/strongly_connected_model/data_models/23.Production.view.yaml +0 -0
  493. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/data/_schema/physical/strongly_connected_model/data_models/24.SimSubNode.view.yaml +0 -0
  494. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/data/_schema/physical/strongly_connected_model/data_models/25.SimulationResultFile.view.yaml +0 -0
  495. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/data/_schema/physical/strongly_connected_model/data_models/26.InputProperty.view.yaml +0 -0
  496. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/data/_schema/physical/strongly_connected_model/data_models/28.OutputProperty.view.yaml +0 -0
  497. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/data/_schema/physical/strongly_connected_model/data_models/29.Property.view.yaml +0 -0
  498. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/data/_schema/physical/strongly_connected_model/data_models/3.strongly-coupled-model.datamodel.yaml +0 -0
  499. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/data/_schema/physical/strongly_connected_model/data_models/30.SimulationModel.view.yaml +0 -0
  500. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/data/_schema/physical/strongly_connected_model/data_models/31.SimNodeAndEdge.view.yaml +0 -0
  501. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/data/_schema/physical/strongly_connected_model/data_models/5.my.space.yaml +0 -0
  502. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/data/_schema/physical/strongly_connected_model/data_models/6.ModelExecutionEnvironment.container.yaml +0 -0
  503. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/data/_schema/physical/strongly_connected_model/data_models/7.ProductionTimeseries.container.yaml +0 -0
  504. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/data/_schema/physical/strongly_connected_model/data_models/8.SimNodeAndEdge.container.yaml +0 -0
  505. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/data/_schema/physical/strongly_connected_model/data_models/9.SimulationResultFile.container.yaml +0 -0
  506. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/data/_schema/physical_invalid/inconsistent_container_dms_rules.xlsx +0 -0
  507. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/data/_schema/physical_invalid/invalid_metadata.xlsx +0 -0
  508. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/data/_schema/physical_invalid/invalid_property_dms_rules.xlsx +0 -0
  509. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/data/_schema/physical_invalid/missing_view_container_dms_rules.xlsx +0 -0
  510. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/data/_schema/physical_invalid/too_many_containers_per_view.xlsx +0 -0
  511. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/data/_schema/physical_yamls/invalid_indices.expected_issues.yaml +0 -0
  512. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/data/_schema/physical_yamls/invalid_indices.yaml +0 -0
  513. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/data/_schema/physical_yamls/invalid_yaml.expected_issues.yaml +0 -0
  514. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/data/_schema/physical_yamls/invalid_yaml.yaml +0 -0
  515. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/data/_schema/physical_yamls/multiple_indices_on_property.yaml +0 -0
  516. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/data/_schema/physical_yamls/reverse_direct_relation_missing_target.expected_issues.yaml +0 -0
  517. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/data/_schema/physical_yamls/reverse_direct_relation_missing_target.yaml +0 -0
  518. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/tests_end_to_end/__init__.py +0 -0
  519. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/tests_end_to_end/test_rules_flow/test_cdm_extension_verification.yaml +0 -0
  520. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/tests_end_to_end/test_rules_flow/test_excel_importer_to_yaml.yml +0 -0
  521. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/tests_end_to_end/test_rules_flow/test_ontology_importer_to_yaml.yml +0 -0
  522. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/tests_end_to_end/test_rules_flow/test_to_extension_transformer.yml +0 -0
  523. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/tests_end_to_end/test_rules_flow.py +0 -0
  524. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/tests_integration/__init__.py +0 -0
  525. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/tests_integration/conftest.py +0 -0
  526. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/tests_integration/test_api/__init__.py +0 -0
  527. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/tests_integration/test_api/test_conversion.py +0 -0
  528. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/tests_integration/test_api/test_validate_rules.py +0 -0
  529. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/tests_integration/test_client_available.py +0 -0
  530. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/tests_integration/test_graph/__init__.py +0 -0
  531. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/tests_integration/test_graph/test_loaders/__init__.py +0 -0
  532. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/tests_integration/test_graph/test_loaders/test_dms_loader.py +0 -0
  533. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/tests_integration/test_neat_client/__init__.py +0 -0
  534. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/tests_integration/test_neat_client/test_cdf_loaders.py +0 -0
  535. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/tests_integration/test_neat_client/test_statistics.py +0 -0
  536. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/tests_integration/test_rules/__init__.py +0 -0
  537. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/tests_integration/test_rules/test_exporters/__init__.py +0 -0
  538. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/tests_integration/test_rules/test_exporters/test_dms_exporters.py +0 -0
  539. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/tests_integration/test_rules/test_importers/__init__.py +0 -0
  540. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/tests_integration/test_session/__init__.py +0 -0
  541. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/tests_integration/test_session/test_create_enterprise.py +0 -0
  542. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/tests_integration/test_session/test_data_model_prepare_fix/test_prefix_dms_rules_entities.yml +0 -0
  543. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/tests_integration/test_session/test_data_model_prepare_fix/test_prefix_info_rules_entities.yml +0 -0
  544. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/tests_integration/test_session/test_data_model_prepare_fix/test_standardize_space_and_version.yml +0 -0
  545. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/tests_integration/test_session/test_data_model_prepare_fix.py +0 -0
  546. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/tests_integration/test_session/test_data_model_to/test_raw_filter.yml +0 -0
  547. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/tests_integration/test_session/test_data_model_to.py +0 -0
  548. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/tests_integration/test_session/test_graph_flow/test_aml_to_dms.yml +0 -0
  549. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/tests_integration/test_session/test_graph_flow/test_create_extension_template.yml +0 -0
  550. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/tests_integration/test_session/test_graph_flow/test_dexpi_to_dms.yml +0 -0
  551. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/tests_integration/test_session/test_graph_flow/test_snapshot_workflow_ids_to_python.yml +0 -0
  552. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/tests_integration/test_session/test_graph_flow/test_snapshot_workflow_to_python.yml +0 -0
  553. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/tests_integration/test_session/test_graph_flow/test_uplift_workflow_to_python.yml +0 -0
  554. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/tests_integration/test_session/test_graph_flow.py +0 -0
  555. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/tests_integration/test_session/test_read/test_read_model_referencing_core.yml +0 -0
  556. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/tests_integration/test_session/test_read.py +0 -0
  557. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/tests_integration/test_utils/__init__.py +0 -0
  558. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/tests_integration/test_utils/test_reader.py +0 -0
  559. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/tests_unit/__init__.py +0 -0
  560. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/tests_unit/test_graph/__init__.py +0 -0
  561. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/tests_unit/test_graph/test_extractors/__init__.py +0 -0
  562. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/tests_unit/test_graph/test_extractors/test_asset_extractor.py +0 -0
  563. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/tests_unit/test_graph/test_extractors/test_dms_extractor.py +0 -0
  564. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/tests_unit/test_graph/test_extractors/test_dms_graph_extractor.py +0 -0
  565. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/tests_unit/test_graph/test_extractors/test_events_extractor.py +0 -0
  566. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/tests_unit/test_graph/test_extractors/test_files_extractor.py +0 -0
  567. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/tests_unit/test_graph/test_extractors/test_labels_extractor.py +0 -0
  568. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/tests_unit/test_graph/test_extractors/test_raw_extractor.py +0 -0
  569. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/tests_unit/test_graph/test_extractors/test_relationship_extractor.py +0 -0
  570. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/tests_unit/test_graph/test_extractors/test_sequences_extractor.py +0 -0
  571. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/tests_unit/test_graph/test_extractors/test_timeseries_extractor.py +0 -0
  572. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/tests_unit/test_graph/test_graph_read.py +0 -0
  573. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/tests_unit/test_graph/test_loaders/__init__.py +0 -0
  574. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/tests_unit/test_graph/test_loaders/test_dms_loader.py +0 -0
  575. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/tests_unit/test_graph/test_loaders/test_rdf2dms.py +0 -0
  576. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/tests_unit/test_graph/test_loaders/test_rdf_to_instance_space.py +0 -0
  577. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/tests_unit/test_graph/test_provenance.py +0 -0
  578. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/tests_unit/test_graph/test_transformers/__init__.py +0 -0
  579. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/tests_unit/test_graph/test_transformers/test_asset_depth_transformer.py +0 -0
  580. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/tests_unit/test_graph/test_transformers/test_asset_event_connector_transformer.py +0 -0
  581. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/tests_unit/test_graph/test_transformers/test_asset_file_connector_transformer.py +0 -0
  582. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/tests_unit/test_graph/test_transformers/test_asset_relationship_connector_transformer.py +0 -0
  583. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/tests_unit/test_graph/test_transformers/test_asset_sequence_connector_transformer.py +0 -0
  584. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/tests_unit/test_graph/test_transformers/test_asset_ts_connector_transformer.py +0 -0
  585. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/tests_unit/test_graph/test_transformers/test_attach_property_from_target2source.py +0 -0
  586. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/tests_unit/test_graph/test_transformers/test_connection_to_literal.py +0 -0
  587. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/tests_unit/test_graph/test_transformers/test_make_connection_on_exact_match.py +0 -0
  588. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/tests_unit/test_graph/test_transformers/test_prune_graph.py +0 -0
  589. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/tests_unit/test_graph/test_transformers/test_split_multi_value_property_transformer.py +0 -0
  590. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/tests_unit/test_issues/__init__.py +0 -0
  591. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/tests_unit/test_issues/test_formatters.py +0 -0
  592. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/tests_unit/test_issues/test_issue_behavior.py +0 -0
  593. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/tests_unit/test_issues/test_issues_metatests.py +0 -0
  594. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/tests_unit/test_neat_client/__init__.py +0 -0
  595. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/tests_unit/test_neat_client/test_instances.py +0 -0
  596. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/tests_unit/test_neat_client/test_loaders.py +0 -0
  597. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/tests_unit/test_neat_client/test_schema.py +0 -0
  598. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/tests_unit/test_neat_package_metadata.py +0 -0
  599. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/tests_unit/test_plugins.py +0 -0
  600. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/tests_unit/test_rules/__init__.py +0 -0
  601. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/tests_unit/test_rules/test_analysis.py +0 -0
  602. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/tests_unit/test_rules/test_exporters/__init__.py +0 -0
  603. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/tests_unit/test_rules/test_exporters/test_exporters_meta.py +0 -0
  604. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/tests_unit/test_rules/test_exporters/test_rules2dms.py +0 -0
  605. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/tests_unit/test_rules/test_exporters/test_rules2excel.py +0 -0
  606. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/tests_unit/test_rules/test_exporters/test_rules2ontology.py +0 -0
  607. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/tests_unit/test_rules/test_exporters/test_rules2yaml.py +0 -0
  608. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/tests_unit/test_rules/test_importers/__init__.py +0 -0
  609. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/tests_unit/test_rules/test_importers/constants.py +0 -0
  610. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/tests_unit/test_rules/test_importers/test_dms_importer.py +0 -0
  611. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/tests_unit/test_rules/test_importers/test_inference_importer.py +0 -0
  612. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/tests_unit/test_rules/test_importers/test_subinference_importer.py +0 -0
  613. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/tests_unit/test_rules/test_models/__init__.py +0 -0
  614. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/tests_unit/test_rules/test_models/test_asset_rules.py +0 -0
  615. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/tests_unit/test_rules/test_models/test_base_rules.py +0 -0
  616. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/tests_unit/test_rules/test_models/test_data_types.py +0 -0
  617. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/tests_unit/test_rules/test_models/test_dms_schema.py +0 -0
  618. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/tests_unit/test_rules/test_models/test_entities.py +0 -0
  619. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/tests_unit/test_rules/test_models/test_input_rules.py +0 -0
  620. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/tests_unit/test_rules/test_models/test_physical_data_model.py +0 -0
  621. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/tests_unit/test_rules/test_models/test_wrapped_entities.py +0 -0
  622. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/tests_unit/test_rules/test_models/utils.py +0 -0
  623. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/tests_unit/test_rules/test_transformers/__init__.py +0 -0
  624. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/tests_unit/test_rules/test_transformers/test_converters.py +0 -0
  625. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/tests_unit/test_rules/test_transformers/test_mapping.py +0 -0
  626. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/tests_unit/test_rules/test_transformers/test_transformer_meta.py +0 -0
  627. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/tests_unit/test_session/__init__.py +0 -0
  628. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/tests_unit/test_session/test_flows.py +0 -0
  629. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/tests_unit/test_session/test_meta.py +0 -0
  630. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/tests_unit/test_session/test_plugin.py +0 -0
  631. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/tests_unit/test_session/test_read.py +0 -0
  632. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/tests_unit/test_session/test_to_yaml.py +0 -0
  633. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/tests_unit/test_store/__init__.py +0 -0
  634. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/tests_unit/test_store/test_select_queries.py +0 -0
  635. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/tests_unit/test_store/tests_rules_store/test_import_export.yml +0 -0
  636. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/tests_unit/test_store/tests_rules_store.py +0 -0
  637. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/tests_unit/test_utils/__init__.py +0 -0
  638. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/tests_unit/test_utils/test_auxiliary.py +0 -0
  639. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/tests_unit/test_utils/test_cdf_classes.py +0 -0
  640. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/tests_unit/test_utils/test_rdf.py +0 -0
  641. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/tests_unit/test_utils/test_reader.py +0 -0
  642. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/tests_unit/test_utils/test_tarjan.py +0 -0
  643. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/tests_unit/test_utils/test_text.py +0 -0
  644. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/tests_unit/test_utils/test_utils.py +0 -0
  645. {cognite_neat-0.123.13 → cognite_neat-0.123.15}/tests/utils.py +0 -0
@@ -0,0 +1,177 @@
1
+ # Cognite Python Style Guide
2
+
3
+ ## Key Principles
4
+
5
+ - **Strong Typing**: Use type hints extensively with pyright. Avoid `Any` when possible
6
+ - **Type Safety**: Use dataclasses and Pydantic models for complex data
7
+ structures instead of untyped dictionaries
8
+ - **IO Safety**: Always use typed data structures for file operations and data parsing
9
+ - **Readability**: Code should be immediately understandable
10
+ - **Maintainability**: Write code that is easy to modify and extend
11
+ - **Consistency**: Follow established patterns across the codebase
12
+
13
+ ## Principles on doing pull request reviews
14
+
15
+ - **Main point first.** Start with the key feedback or required action.
16
+ - **Be concise.** Use short, direct comments. Avoid unnecessary explanations.
17
+ - **Actionable suggestions.** If something needs fixing, state exactly what and how.
18
+ - **One issue per comment.** Separate unrelated feedback for clarity.
19
+ - **Code, not prose.** Prefer code snippets or examples over long text.
20
+ - **Background only if needed.** Add context only if the main point isn't obvious.
21
+
22
+ ## How to do pull request summaries
23
+
24
+ - **Short recap.** Summarize the main point of the PR in one or two sentences.
25
+ - **Don't repeat the PR description.** Only add new or clarifying information.
26
+ - **Be brief unless needed.** Only write a longer summary if the PR description
27
+ is missing crucial details.
28
+ - **Extend, don't duplicate.** If more detail is needed, clearly state what is
29
+ missing from the PR description and add only the necessary context.
30
+
31
+ ## Line Length and Formatting
32
+
33
+ - **Maximum line length**: 120 characters (configured in ruff)
34
+ - **Target Python version**: 3.10+
35
+ - **Indentation**: 4 spaces per level
36
+
37
+ ## Type Hints
38
+
39
+ - **Required**: All functions, methods, and class attributes must have type hints
40
+ - **Avoid `Any`**: Use specific types whenever possible
41
+ - **Complex data**: Use dataclasses or Pydantic models instead of `dict[str, Any]`
42
+ - **File operations**: Always parse file content into typed structures
43
+
44
+ ```python
45
+ # Good - typed data structure
46
+ @dataclass
47
+ class Config:
48
+ model_name: str
49
+ temperature: float
50
+ max_tokens: int
51
+
52
+ def load_config(path: Path) -> Config:
53
+ data = json.loads(path.read_text())
54
+ return Config(**data)
55
+
56
+ # Bad - untyped dictionary
57
+ def load_config(path: Path) -> dict[str, Any]:
58
+ return json.loads(path.read_text())
59
+ ```
60
+
61
+ ## Imports
62
+
63
+ - **Group imports**: Standard library, third-party, local application
64
+ - **Absolute imports**: Always use absolute imports for clarity
65
+ - **Sort alphabetically** within groups
66
+ - **Type checking imports**: Use `TYPE_CHECKING` for type-only imports
67
+
68
+ ```python
69
+ import json
70
+ import logging
71
+ from pathlib import Path
72
+ from typing import TYPE_CHECKING
73
+
74
+ from cognite.client import CogniteClient
75
+ from pydantic import BaseModel
76
+
77
+ from cog_ai.common.types import ModelConfig
78
+
79
+ if TYPE_CHECKING:
80
+ from cog_ai.tools.query.types import QueryCompletion
81
+ ```
82
+
83
+ ## Naming Conventions
84
+
85
+ - **Variables/functions**: `snake_case`
86
+ - **Constants**: `UPPER_SNAKE_CASE`
87
+ - **Classes**: `PascalCase`
88
+ - **Modules**: `snake_case`
89
+ - **Private members**: Single leading underscore `_private`
90
+
91
+ ## Docstrings
92
+
93
+ Use concise docstrings with Args/Returns format. Based on repository patterns:
94
+
95
+ ```python
96
+ def render_header(header: str) -> str:
97
+ """
98
+ Renders a (markdown) heading.
99
+
100
+ Args:
101
+ header (str): header
102
+
103
+ Returns:
104
+ str: The rendered header
105
+ """
106
+ return f"{header}\n{'=' * len(header)}\n"
107
+
108
+ def walk_sdk_documentation(content: Tag, parser: Parser[T]) -> Iterable[T]:
109
+ """Parse the content of a file and yields documents. The parser controls how
110
+ the sections are transformed into documents."""
111
+ # Implementation here
112
+ ```
113
+
114
+ **Docstring patterns**:
115
+
116
+ - Start with a concise description
117
+ - Use `Args:` and `Returns:` for complex functions
118
+ - Omit obvious parameter descriptions
119
+ - Keep descriptions brief and factual
120
+ - Ok for `__init__` methods to omit docstring
121
+
122
+ ## Error Handling
123
+
124
+ - **Specific exceptions**: Avoid broad `Exception` catches
125
+ - **Graceful handling**: Provide meaningful error messages
126
+ - **Type safety**: Return `None` or use Union types for fallible operations
127
+
128
+ ```python
129
+ def load_llm_response(response: str) -> dict[str, Any] | None:
130
+ try:
131
+ return json.loads(response)
132
+ except (TypeError, json.JSONDecodeError) as e:
133
+ log.warning(f"Failed json load response from LLM: {e}")
134
+ return None
135
+ ```
136
+
137
+ ## Tooling
138
+
139
+ - **Formatter**: `uv run ruff format --force-exclude --quiet`
140
+ - **Linter**: `uv run ruff check --force-exclude --fix --exit-non-zero-on-fix`
141
+ - **Type checker**: `dmypy run -- cognite_toolkit/ --config-file pyproject.toml` (uses mypy)
142
+ - **Pre-commit**: `pre-commit run --all-files` for comprehensive checks
143
+
144
+ ## Ruff Configuration Deviations
145
+
146
+ Current project configuration deviates from PEP 8:
147
+
148
+ - **Line length**: 120 characters (vs PEP 8's 79)
149
+ - **Ignored rules**: E501 (line too long), UP017 (datetime.timezone.utc)
150
+ - **Selected rules**: Includes bugbear (B0), pyupgrade (UP), and isort (I)
151
+
152
+ ## Data Structures
153
+
154
+ **Prefer typed structures**:
155
+
156
+ ```python
157
+ # Good
158
+ @dataclass
159
+ class FunctionError:
160
+ function_name: str
161
+ message: str
162
+
163
+ # Good
164
+ class QueryCompletion(BaseModel):
165
+ query: str
166
+ variables: dict[str, Any]
167
+
168
+ # Avoid
169
+ error_data = {"function_name": "foo", "message": "bar"}
170
+ ```
171
+
172
+ ## Logging
173
+
174
+ - Use the `logging` module with appropriate levels
175
+ - Include contextual information for debugging
176
+ - Format: `log.warning(f"Description: {variable}")`
177
+
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: cognite-neat
3
- Version: 0.123.13
3
+ Version: 0.123.15
4
4
  Summary: Knowledge graph transformation
5
5
  Project-URL: Documentation, https://cognite-neat.readthedocs-hosted.com/
6
6
  Project-URL: Homepage, https://cognite-neat.readthedocs-hosted.com/
@@ -0,0 +1,2 @@
1
+ __version__ = "0.123.15"
2
+ __engine__ = "^2.0.4"
@@ -25,6 +25,8 @@ CLASSES_QUERY = """SELECT ?concept ?name ?description ?implements
25
25
  }}
26
26
  """
27
27
 
28
+ CLASSES_QUERY_PARAMETERS = {"concept", "name", "description", "implements"}
29
+
28
30
  PROPERTIES_QUERY = """
29
31
 
30
32
  SELECT ?concept ?property_ ?name ?description ?value_type ?minCount ?maxCount ?default
@@ -44,34 +46,36 @@ PROPERTIES_QUERY = """
44
46
  FILTER (!bound(?description) || LANG(?description) = "" || LANGMATCHES(LANG(?description), "{language}"))
45
47
  }}
46
48
  """
49
+ PROPERTIES_QUERY_PARAMETERS = {
50
+ "concept",
51
+ "property_",
52
+ "name",
53
+ "description",
54
+ "value_type",
55
+ "minCount",
56
+ "maxCount",
57
+ "default",
58
+ }
47
59
 
48
60
 
49
61
  class OWLImporter(BaseRDFImporter):
50
62
  """Convert OWL ontology to unverified data model.
51
63
 
52
- Args:
53
- filepath: Path to OWL ontology
54
-
55
- !!! Note
56
- OWL Ontologies are information models which completeness varies. As such, constructing functional
57
- data model directly will often be impossible, therefore the produced data model object will be ill formed.
58
- To avoid this, neat will automatically attempt to make the imported data model compliant by adding default
59
- values for missing information, attaching dangling properties to default containers based on the
60
- property type, etc.
61
-
62
- One has to be aware that NEAT will be opinionated about how to make the ontology
63
- compliant, and that the resulting data model may not be what you expect.
64
-
64
+ Args:
65
+ filepath: Path to OWL ontology
65
66
  """
66
67
 
67
68
  def _to_data_model_components(
68
69
  self,
69
70
  ) -> dict:
70
- concepts, issue_list = parse_concepts(self.graph, CLASSES_QUERY, self.language, self.issue_list)
71
+ concepts, issue_list = parse_concepts(
72
+ self.graph, CLASSES_QUERY, CLASSES_QUERY_PARAMETERS, self.language, self.issue_list
73
+ )
71
74
  self.issue_list = issue_list
72
75
 
73
- # NeatError
74
- properties, issue_list = parse_properties(self.graph, PROPERTIES_QUERY, self.language, self.issue_list)
76
+ properties, issue_list = parse_properties(
77
+ self.graph, PROPERTIES_QUERY, PROPERTIES_QUERY_PARAMETERS, self.language, self.issue_list
78
+ )
75
79
  self.issue_list = issue_list
76
80
 
77
81
  components = {
@@ -14,12 +14,17 @@ from cognite.neat.core._issues.warnings._resources import (
14
14
  from cognite.neat.core._utils.rdf_ import convert_rdflib_content
15
15
 
16
16
 
17
- def parse_concepts(graph: Graph, query: str, language: str, issue_list: IssueList) -> tuple[dict, IssueList]:
17
+ def parse_concepts(
18
+ graph: Graph, query: str, parameters: set, language: str, issue_list: IssueList
19
+ ) -> tuple[dict, IssueList]:
18
20
  """Parse concepts from graph
19
21
 
20
22
  Args:
21
23
  graph: Graph containing concept definitions
24
+ query: SPARQL query to use for parsing concepts
25
+ parameters: Set of parameters to extract from the query results
22
26
  language: Language to use for parsing, by default "en"
27
+ issue_list: List to collect issues during parsing
23
28
 
24
29
  Returns:
25
30
  Dataframe containing owl classes
@@ -28,11 +33,10 @@ def parse_concepts(graph: Graph, query: str, language: str, issue_list: IssueLis
28
33
  concepts: dict[str, dict] = {}
29
34
 
30
35
  query = prepareQuery(query.format(language=language), initNs={k: v for k, v in graph.namespaces()})
31
- expected_keys = [str(v) for v in query.algebra._vars]
32
36
 
33
37
  for raw in graph.query(query):
34
38
  res: dict = convert_rdflib_content(cast(ResultRow, raw).asdict(), True)
35
- res = {key: res.get(key, None) for key in expected_keys}
39
+ res = {key: res.get(key, None) for key in parameters}
36
40
 
37
41
  # Quote the concept id to ensure it is web-safe
38
42
  res["concept"] = quote(res["concept"], safe="")
@@ -75,12 +79,17 @@ def parse_concepts(graph: Graph, query: str, language: str, issue_list: IssueLis
75
79
  return concepts, issue_list
76
80
 
77
81
 
78
- def parse_properties(graph: Graph, query: str, language: str, issue_list: IssueList) -> tuple[dict, IssueList]:
82
+ def parse_properties(
83
+ graph: Graph, query: str, parameters: set, language: str, issue_list: IssueList
84
+ ) -> tuple[dict, IssueList]:
79
85
  """Parse properties from graph
80
86
 
81
87
  Args:
82
- graph: Graph containing owl classes
88
+ graph: Graph containing property definitions
89
+ query: SPARQL query to use for parsing properties
90
+ parameters: Set of parameters to extract from the query results
83
91
  language: Language to use for parsing, by default "en"
92
+ issue_list: List to collect issues during parsing
84
93
 
85
94
  Returns:
86
95
  Dataframe containing owl classes
@@ -89,41 +98,40 @@ def parse_properties(graph: Graph, query: str, language: str, issue_list: IssueL
89
98
  properties: dict[str, dict] = {}
90
99
 
91
100
  query = prepareQuery(query.format(language=language), initNs={k: v for k, v in graph.namespaces()})
92
- expected_keys = [str(v) for v in query.algebra._vars]
93
101
 
94
102
  for raw in graph.query(query):
95
103
  res: dict = convert_rdflib_content(cast(ResultRow, raw).asdict(), True)
96
- res = {key: res.get(key, None) for key in expected_keys}
104
+ res = {key: res.get(key, None) for key in parameters}
97
105
 
98
106
  # Quote the concept id to ensure it is web-safe
99
107
  res["property_"] = quote(res["property_"], safe="")
100
108
  property_id = res["property_"]
101
109
 
102
- # Safeguarding against incomplete semantic definitions
103
- if not res["concept"] or isinstance(res["concept"], BNode):
110
+ # Skip Bnode
111
+ if isinstance(res["concept"], BNode):
104
112
  issue_list.append(
105
113
  ResourceRetrievalWarning(
106
114
  property_id,
107
115
  "property",
108
- error=("Unable to determine to what concept property is being defined"),
116
+ error="Cannot determine concept of property as it is a blank node",
109
117
  )
110
118
  )
111
119
  continue
112
120
 
113
- # Safeguarding against incomplete semantic definitions
114
- if not res["value_type"] or isinstance(res["value_type"], BNode):
121
+ # Skip Bnode
122
+ if isinstance(res["value_type"], BNode):
115
123
  issue_list.append(
116
124
  ResourceRetrievalWarning(
117
125
  property_id,
118
126
  "property",
119
- error=("Unable to determine value type of property"),
127
+ error="Unable to determine value type of property as it is a blank node",
120
128
  )
121
129
  )
122
130
  continue
123
131
 
124
132
  # Quote the concept and value_type to ensure they are web-safe
125
- res["concept"] = quote(res["concept"], safe="")
126
- res["value_type"] = quote(res["value_type"], safe="")
133
+ res["concept"] = quote(res["concept"], safe="") if res["concept"] else "#N/A"
134
+ res["value_type"] = quote(res["value_type"], safe="") if res["value_type"] else "#N/A"
127
135
 
128
136
  id_ = f"{res['concept']}.{res['property_']}"
129
137
 
@@ -2,6 +2,7 @@ import itertools
2
2
  from collections import Counter, defaultdict
3
3
  from collections.abc import Iterable
4
4
 
5
+ from cognite.neat.core._constants import get_base_concepts
5
6
  from cognite.neat.core._data_model._constants import PATTERNS, EntityTypes
6
7
  from cognite.neat.core._data_model.models.entities import ConceptEntity, UnknownEntity
7
8
  from cognite.neat.core._data_model.models.entities._multi_value import MultiValueTypeInfo
@@ -35,23 +36,31 @@ class ConceptualValidation:
35
36
  data_model: ConceptualDataModel,
36
37
  read_info_by_spreadsheet: dict[str, SpreadsheetRead] | None = None,
37
38
  ):
39
+ # import here to avoid circular import issues
40
+ from cognite.neat.core._data_model.analysis._base import DataModelAnalysis
41
+
38
42
  self.data_model = data_model
43
+ self.analysis = DataModelAnalysis(self.data_model)
39
44
  self._read_info_by_spreadsheet = read_info_by_spreadsheet or {}
40
45
  self._metadata = data_model.metadata
41
46
  self._properties = data_model.properties
42
47
  self._concepts = data_model.concepts
48
+ self._cdf_concepts = {
49
+ ConceptEntity.load(concept_as_string) for concept_as_string in get_base_concepts(base_model="CogniteCore")
50
+ }
43
51
  self.issue_list = IssueList()
44
52
 
45
53
  def validate(self) -> IssueList:
46
54
  self._duplicated_resources()
47
55
  self._namespaces_reassigned()
48
- self._classes_without_properties()
49
- self._undefined_classes()
50
- self._parent_concept_defined()
51
- self._referenced_classes_exist()
52
- self._referenced_value_types_exist()
53
- self._concept_only_data_model()
56
+ self._concepts_without_properties_exist()
57
+ self._concepts_with_properties_defined()
58
+ self._ancestors_defined()
59
+
60
+ self._object_properties_use_defined_concepts()
54
61
  self._dangling_properties()
62
+
63
+ self._concept_only_data_model()
55
64
  self._regex_compliance_with_physical_data_model()
56
65
 
57
66
  return self.issue_list
@@ -59,23 +68,23 @@ class ConceptualValidation:
59
68
  def _concept_only_data_model(self) -> None:
60
69
  """Check if the data model only consists of concepts without any properties."""
61
70
  if not self._properties:
62
- self.issue_list.append(ConceptOnlyDataModelWarning())
71
+ self.issue_list.append_if_not_exist(ConceptOnlyDataModelWarning())
63
72
 
64
73
  def _dangling_properties(self) -> None:
65
74
  """Check if there are properties that do not reference any concept."""
66
75
  dangling_properties = [prop for prop in self._properties if prop.concept == UnknownEntity()]
67
76
  if dangling_properties:
68
77
  for prop in dangling_properties:
69
- self.issue_list.append(DanglingPropertyWarning(property_id=prop.property_))
78
+ self.issue_list.append_if_not_exist(DanglingPropertyWarning(property_id=prop.property_))
70
79
 
71
80
  def _duplicated_resources(self) -> None:
72
- properties_sheet = self._read_info_by_spreadsheet.get("Properties")
73
- concepts_sheet = self._read_info_by_spreadsheet.get("Concepts")
81
+ properties_sheet_info = self._read_info_by_spreadsheet.get("Properties")
82
+ concepts_sheet_info = self._read_info_by_spreadsheet.get("Concepts")
74
83
 
75
84
  visited = defaultdict(list)
76
85
  for row_no, property_ in enumerate(self._properties):
77
86
  visited[property_._identifier()].append(
78
- properties_sheet.adjusted_row_number(row_no) if properties_sheet else row_no + 1
87
+ properties_sheet_info.adjusted_row_number(row_no) if properties_sheet_info else row_no + 1
79
88
  )
80
89
 
81
90
  for identifier, rows in visited.items():
@@ -96,46 +105,47 @@ class ConceptualValidation:
96
105
  visited = defaultdict(list)
97
106
  for row_no, concept in enumerate(self._concepts):
98
107
  visited[concept._identifier()].append(
99
- concepts_sheet.adjusted_row_number(row_no) if concepts_sheet else row_no + 1
108
+ concepts_sheet_info.adjusted_row_number(row_no) if concepts_sheet_info else row_no + 1
100
109
  )
101
110
 
102
111
  for identifier, rows in visited.items():
103
112
  if len(rows) == 1:
104
113
  continue
105
- self.issue_list.append(
114
+ self.issue_list.append_if_not_exist(
106
115
  ResourceDuplicatedError(
107
116
  identifier[0],
108
117
  "concept",
109
- (f"the Classes sheet at row {humanize_collection(rows)} if data model is read from a spreadsheet."),
118
+ (
119
+ f"the Concepts sheet at row {humanize_collection(rows)}"
120
+ " if data model is read from a spreadsheet."
121
+ ),
110
122
  )
111
123
  )
112
124
 
113
- def _classes_without_properties(self) -> None:
114
- defined_concepts = {concept.concept for concept in self._concepts}
115
- referred_classes = {property_.concept for property_ in self._properties}
116
- concept_parent_pairs = self._concept_parent_pairs()
117
-
118
- if concepts_without_properties := defined_concepts.difference(referred_classes):
119
- for concept in concepts_without_properties:
120
- # USE CASE: class has no direct properties and no parents with properties
121
- # and it is a class in the prefix of data model, as long as it is in the
122
- # same prefix, meaning same space
123
- if not concept_parent_pairs[concept] and concept.prefix == self._metadata.prefix:
124
- self.issue_list.append(
125
- ResourceNotDefinedWarning(
126
- resource_type="concept",
127
- identifier=concept,
128
- location="Properties sheet",
129
- )
130
- )
131
-
132
- def _undefined_classes(self) -> None:
133
- defined_concept = {concept.concept for concept in self._concepts}
134
- referred_concepts = {property_.concept for property_ in self._properties} - {UnknownEntity()}
135
-
136
- if undefined_concepts := referred_concepts.difference(defined_concept):
137
- for concept in undefined_concepts:
138
- self.issue_list.append(
125
+ def _concepts_without_properties_exist(self) -> None:
126
+ """This validation checks if concepts have properties defined or inherit properties from other concepts."""
127
+ concepts = {concept.concept for concept in self._concepts}
128
+ ancestors_by_concept = self.analysis.parents_by_concept(include_ancestors=True, include_different_space=True)
129
+ concepts_with_properties = self.analysis.defined_concepts().union(self._cdf_concepts)
130
+
131
+ if candidate_concepts := concepts.difference(concepts_with_properties):
132
+ for concept in candidate_concepts:
133
+ # Here we check if at least one of the ancestors of the concept has properties
134
+ if (ancestors := ancestors_by_concept.get(concept)) and ancestors.intersection(
135
+ concepts_with_properties
136
+ ):
137
+ continue
138
+
139
+ self.issue_list.append_if_not_exist(UndefinedConceptWarning(concept_id=str(concept)))
140
+
141
+ def _concepts_with_properties_defined(self) -> None:
142
+ """This validation checks if concepts to which properties are attached are defined."""
143
+ concepts = {concept.concept for concept in self._concepts}
144
+ concepts_with_properties = {property_.concept for property_ in self._properties} - {UnknownEntity()}
145
+
146
+ if undefined_concepts_with_properties := concepts_with_properties.difference(concepts):
147
+ for concept in undefined_concepts_with_properties:
148
+ self.issue_list.append_if_not_exist(
139
149
  ResourceNotDefinedError(
140
150
  identifier=concept,
141
151
  resource_type="concept",
@@ -143,57 +153,44 @@ class ConceptualValidation:
143
153
  )
144
154
  )
145
155
 
146
- def _parent_concept_defined(self) -> None:
147
- """This is a validation to check if the parent concept is defined."""
148
- concept_parent_pairs = self._concept_parent_pairs()
149
- concepts = set(concept_parent_pairs.keys())
150
- parents = set(itertools.chain.from_iterable(concept_parent_pairs.values()))
151
-
152
- if undefined_parents := parents.difference(concepts):
153
- for parent in undefined_parents:
154
- if parent.prefix != self._metadata.prefix:
155
- self.issue_list.append(UndefinedConceptWarning(concept_id=str(parent)))
156
- else:
157
- self.issue_list.append(
158
- ResourceNotDefinedWarning(
159
- resource_type="concept",
160
- identifier=parent,
161
- location="Concepts sheet",
162
- )
163
- )
164
-
165
- def _referenced_classes_exist(self) -> None:
166
- # needs to be complete for this validation to pass
167
- defined_concept = {concept.concept for concept in self._concepts}
168
- classes_with_explicit_properties = {property_.concept for property_ in self._properties}
156
+ def _ancestors_defined(self) -> None:
157
+ """This is a validation to check if the ancestor concepts (e.g. parents) are defined."""
158
+ concepts = {concept.concept for concept in self._concepts}.union(self._cdf_concepts)
159
+ ancestors = set(
160
+ itertools.chain.from_iterable(
161
+ self.analysis.parents_by_concept(include_ancestors=True, include_different_space=True).values()
162
+ )
163
+ ).difference(self._cdf_concepts)
169
164
 
170
- # USE CASE: models are complete
171
- if missing_classes := classes_with_explicit_properties.difference(defined_concept):
172
- for concept in missing_classes:
173
- self.issue_list.append(
165
+ if undefined_ancestor := ancestors.difference(concepts):
166
+ for ancestor in undefined_ancestor:
167
+ self.issue_list.append_if_not_exist(
174
168
  ResourceNotDefinedWarning(
175
169
  resource_type="concept",
176
- identifier=concept,
170
+ identifier=ancestor,
177
171
  location="Concepts sheet",
178
172
  )
179
173
  )
180
174
 
181
- def _referenced_value_types_exist(self) -> None:
182
- # adding UnknownEntity to the set of defined classes to handle the case where a property references an unknown
183
- defined_classes = {concept.concept for concept in self._concepts} | {UnknownEntity()}
184
- referred_object_types = {
175
+ def _object_properties_use_defined_concepts(self) -> None:
176
+ """Check if the value types of object properties are defined as concepts."""
177
+
178
+ concepts = {concept.concept for concept in self._concepts}
179
+
180
+ # We remove UnknownEntity from the concepts to avoid false positives
181
+ # as `UnknownEntity` is used as a placeholder when the value type is not defined.
182
+ value_types = {
185
183
  property_.value_type
186
184
  for property_ in self.data_model.properties
187
185
  if property_.type_ == EntityTypes.object_property
188
- }
186
+ }.difference({UnknownEntity()})
189
187
 
190
- if missing_value_types := referred_object_types.difference(defined_classes):
191
- # Todo: include row and column number
192
- for missing in missing_value_types:
193
- self.issue_list.append(
188
+ if undefined_value_types := value_types.difference(concepts):
189
+ for value_type in undefined_value_types:
190
+ self.issue_list.append_if_not_exist(
194
191
  ResourceNotDefinedWarning(
195
192
  resource_type="concept",
196
- identifier=missing,
193
+ identifier=value_type,
197
194
  location="Concepts sheet",
198
195
  )
199
196
  )
@@ -203,7 +200,7 @@ class ConceptualValidation:
203
200
 
204
201
  for prop_ in self._properties:
205
202
  if not PATTERNS.physical_property_id_compliance.match(prop_.property_):
206
- self.issue_list.append(
203
+ self.issue_list.append_if_not_exist(
207
204
  ResourceRegexViolationWarning(
208
205
  prop_.property_,
209
206
  "Property",
@@ -212,7 +209,7 @@ class ConceptualValidation:
212
209
  )
213
210
  )
214
211
  if prop_.concept != UnknownEntity() and not PATTERNS.view_id_compliance.match(prop_.concept.suffix):
215
- self.issue_list.append(
212
+ self.issue_list.append_if_not_exist(
216
213
  ResourceRegexViolationWarning(
217
214
  prop_.concept,
218
215
  "Concept",
@@ -227,7 +224,7 @@ class ConceptualValidation:
227
224
  and prop_.value_type != UnknownEntity()
228
225
  and not PATTERNS.view_id_compliance.match(prop_.value_type.suffix)
229
226
  ):
230
- self.issue_list.append(
227
+ self.issue_list.append_if_not_exist(
231
228
  ResourceRegexViolationWarning(
232
229
  prop_.value_type,
233
230
  "Value Type",
@@ -242,7 +239,7 @@ class ConceptualValidation:
242
239
  and prop_.value_type != UnknownEntity()
243
240
  and not PATTERNS.view_id_compliance.match(value_type.suffix)
244
241
  ):
245
- self.issue_list.append(
242
+ self.issue_list.append_if_not_exist(
246
243
  ResourceRegexViolationWarning(
247
244
  value_type,
248
245
  "Value Type",
@@ -253,7 +250,7 @@ class ConceptualValidation:
253
250
 
254
251
  for concepts in self._concepts:
255
252
  if not PATTERNS.view_id_compliance.match(concepts.concept.suffix):
256
- self.issue_list.append(
253
+ self.issue_list.append_if_not_exist(
257
254
  ResourceRegexViolationWarning(
258
255
  concepts.concept,
259
256
  "Concept",
@@ -265,7 +262,7 @@ class ConceptualValidation:
265
262
  if concepts.implements:
266
263
  for parent in concepts.implements:
267
264
  if not PATTERNS.view_id_compliance.match(parent.suffix):
268
- self.issue_list.append(
265
+ self.issue_list.append_if_not_exist(
269
266
  ResourceRegexViolationWarning(
270
267
  parent,
271
268
  "Concept",
@@ -274,18 +271,6 @@ class ConceptualValidation:
274
271
  )
275
272
  )
276
273
 
277
- def _concept_parent_pairs(self) -> dict[ConceptEntity, list[ConceptEntity]]:
278
- concept_parent_pairs: dict[ConceptEntity, list[ConceptEntity]] = {}
279
- concepts = self.data_model.model_copy(deep=True).concepts
280
-
281
- for concept in concepts:
282
- concept_parent_pairs[concept.concept] = []
283
- if concept.implements is None:
284
- continue
285
- concept_parent_pairs[concept.concept].extend(concept.implements)
286
-
287
- return concept_parent_pairs
288
-
289
274
  def _namespaces_reassigned(self) -> None:
290
275
  prefixes = self.data_model.prefixes.copy()
291
276
  prefixes[self.data_model.metadata.namespace.prefix] = self.data_model.metadata.namespace
@@ -293,7 +278,7 @@ class ConceptualValidation:
293
278
  if len(set(prefixes.values())) != len(prefixes):
294
279
  reused_namespaces = [value for value, count in Counter(prefixes.values()).items() if count > 1]
295
280
  impacted_prefixes = [key for key, value in prefixes.items() if value in reused_namespaces]
296
- self.issue_list.append(
281
+ self.issue_list.append_if_not_exist(
297
282
  NeatValueError(
298
283
  "Namespace collision detected. The following prefixes "
299
284
  f"are assigned to the same namespace: {impacted_prefixes}"