cognite-neat 1.0.17__tar.gz → 1.0.19__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.
Files changed (325) hide show
  1. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/PKG-INFO +13 -1
  2. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_config.py +4 -0
  3. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_data_model/_analysis.py +159 -1
  4. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_data_model/_constants.py +8 -1
  5. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_data_model/_snapshot.py +1 -0
  6. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_data_model/deployer/deployer.py +21 -7
  7. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_data_model/models/dms/_view_filter.py +25 -3
  8. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_data_model/validation/dms/_base.py +1 -0
  9. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_data_model/validation/dms/_orchestrator.py +4 -0
  10. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_session/_physical.py +8 -4
  11. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_session/_result/_deployment/_physical/_changes.py +1 -0
  12. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_store/_store.py +16 -4
  13. cognite_neat-1.0.19/cognite/neat/_version.py +2 -0
  14. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/pyproject.toml +31 -3
  15. cognite_neat-1.0.17/cognite/neat/_version.py +0 -2
  16. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/README.md +0 -0
  17. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/__init__.py +0 -0
  18. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_client/__init__.py +0 -0
  19. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_client/api.py +0 -0
  20. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_client/client.py +0 -0
  21. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_client/config.py +0 -0
  22. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_client/containers_api.py +0 -0
  23. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_client/data_classes.py +0 -0
  24. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_client/data_model_api.py +0 -0
  25. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_client/spaces_api.py +0 -0
  26. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_client/statistics_api.py +0 -0
  27. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_client/views_api.py +0 -0
  28. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_data_model/__init__.py +0 -0
  29. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_data_model/_identifiers.py +0 -0
  30. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_data_model/_shared.py +0 -0
  31. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_data_model/deployer/__init__.py +0 -0
  32. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_data_model/deployer/_differ.py +0 -0
  33. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_data_model/deployer/_differ_container.py +0 -0
  34. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_data_model/deployer/_differ_data_model.py +0 -0
  35. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_data_model/deployer/_differ_space.py +0 -0
  36. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_data_model/deployer/_differ_view.py +0 -0
  37. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_data_model/deployer/data_classes.py +0 -0
  38. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_data_model/exporters/__init__.py +0 -0
  39. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_data_model/exporters/_api_exporter.py +0 -0
  40. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_data_model/exporters/_base.py +0 -0
  41. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_data_model/exporters/_table_exporter/__init__.py +0 -0
  42. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_data_model/exporters/_table_exporter/exporter.py +0 -0
  43. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_data_model/exporters/_table_exporter/workbook.py +0 -0
  44. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_data_model/exporters/_table_exporter/writer.py +0 -0
  45. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_data_model/importers/__init__.py +0 -0
  46. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_data_model/importers/_api_importer.py +0 -0
  47. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_data_model/importers/_base.py +0 -0
  48. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_data_model/importers/_table_importer/__init__.py +0 -0
  49. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_data_model/importers/_table_importer/data_classes.py +0 -0
  50. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_data_model/importers/_table_importer/importer.py +0 -0
  51. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_data_model/importers/_table_importer/reader.py +0 -0
  52. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_data_model/importers/_table_importer/source.py +0 -0
  53. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_data_model/models/__init__.py +0 -0
  54. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_data_model/models/conceptual/__init__.py +0 -0
  55. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_data_model/models/conceptual/_base.py +0 -0
  56. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_data_model/models/conceptual/_concept.py +0 -0
  57. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_data_model/models/conceptual/_data_model.py +0 -0
  58. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_data_model/models/conceptual/_properties.py +0 -0
  59. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_data_model/models/conceptual/_property.py +0 -0
  60. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_data_model/models/dms/__init__.py +0 -0
  61. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_data_model/models/dms/_base.py +0 -0
  62. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_data_model/models/dms/_constants.py +0 -0
  63. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_data_model/models/dms/_constraints.py +0 -0
  64. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_data_model/models/dms/_container.py +0 -0
  65. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_data_model/models/dms/_data_model.py +0 -0
  66. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_data_model/models/dms/_data_types.py +0 -0
  67. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_data_model/models/dms/_http.py +0 -0
  68. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_data_model/models/dms/_indexes.py +0 -0
  69. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_data_model/models/dms/_limits.py +0 -0
  70. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_data_model/models/dms/_references.py +0 -0
  71. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_data_model/models/dms/_schema.py +0 -0
  72. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_data_model/models/dms/_space.py +0 -0
  73. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_data_model/models/dms/_types.py +0 -0
  74. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_data_model/models/dms/_view_property.py +0 -0
  75. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_data_model/models/dms/_views.py +0 -0
  76. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_data_model/models/entities/__init__.py +0 -0
  77. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_data_model/models/entities/_base.py +0 -0
  78. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_data_model/models/entities/_constants.py +0 -0
  79. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_data_model/models/entities/_data_types.py +0 -0
  80. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_data_model/models/entities/_identifiers.py +0 -0
  81. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_data_model/models/entities/_parser.py +0 -0
  82. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_data_model/validation/__init__.py +0 -0
  83. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_data_model/validation/dms/__init__.py +0 -0
  84. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_data_model/validation/dms/_ai_readiness.py +0 -0
  85. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_data_model/validation/dms/_connections.py +0 -0
  86. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_data_model/validation/dms/_consistency.py +0 -0
  87. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_data_model/validation/dms/_containers.py +0 -0
  88. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_data_model/validation/dms/_limits.py +0 -0
  89. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_data_model/validation/dms/_views.py +0 -0
  90. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_exceptions.py +0 -0
  91. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_issues.py +0 -0
  92. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_session/__init__.py +0 -0
  93. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_session/_html/__init__.py +0 -0
  94. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_session/_html/_render.py +0 -0
  95. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_session/_html/static/__init__.py +0 -0
  96. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_session/_html/static/deployment.css +0 -0
  97. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_session/_html/static/deployment.js +0 -0
  98. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_session/_html/static/issues.css +0 -0
  99. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_session/_html/static/issues.js +0 -0
  100. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_session/_html/static/shared.css +0 -0
  101. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_session/_html/templates/__init__.py +0 -0
  102. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_session/_html/templates/deployment.html +0 -0
  103. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_session/_html/templates/issues.html +0 -0
  104. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_session/_issues.py +0 -0
  105. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_session/_result/__init__.py +0 -0
  106. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_session/_result/_deployment/__init__.py +0 -0
  107. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_session/_result/_deployment/_physical/__init__.py +0 -0
  108. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_session/_result/_deployment/_physical/_statistics.py +0 -0
  109. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_session/_result/_deployment/_physical/serializer.py +0 -0
  110. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_session/_result/_result.py +0 -0
  111. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_session/_session.py +0 -0
  112. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_session/_usage_analytics/__init__.py +0 -0
  113. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_session/_usage_analytics/_collector.py +0 -0
  114. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_session/_usage_analytics/_constants.py +0 -0
  115. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_session/_usage_analytics/_storage.py +0 -0
  116. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_session/_wrappers.py +0 -0
  117. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_state_machine/__init__.py +0 -0
  118. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_state_machine/_base.py +0 -0
  119. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_state_machine/_states.py +0 -0
  120. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_store/__init__.py +0 -0
  121. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_store/_provenance.py +0 -0
  122. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_utils/__init__.py +0 -0
  123. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_utils/_reader.py +0 -0
  124. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_utils/auxiliary.py +0 -0
  125. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_utils/collection.py +0 -0
  126. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_utils/http_client/__init__.py +0 -0
  127. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_utils/http_client/_client.py +0 -0
  128. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_utils/http_client/_config.py +0 -0
  129. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_utils/http_client/_data_classes.py +0 -0
  130. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_utils/http_client/_tracker.py +0 -0
  131. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_utils/text.py +0 -0
  132. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_utils/useful_types.py +0 -0
  133. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_utils/validation.py +0 -0
  134. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_v0/__init__.py +0 -0
  135. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_v0/core/__init__.py +0 -0
  136. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_v0/core/_client/__init__.py +0 -0
  137. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_v0/core/_client/_api/__init__.py +0 -0
  138. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_v0/core/_client/_api/data_modeling_loaders.py +0 -0
  139. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_v0/core/_client/_api/neat_instances.py +0 -0
  140. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_v0/core/_client/_api/schema.py +0 -0
  141. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_v0/core/_client/_api/statistics.py +0 -0
  142. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_v0/core/_client/_api_client.py +0 -0
  143. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_v0/core/_client/data_classes/__init__.py +0 -0
  144. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_v0/core/_client/data_classes/data_modeling.py +0 -0
  145. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_v0/core/_client/data_classes/neat_sequence.py +0 -0
  146. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_v0/core/_client/data_classes/schema.py +0 -0
  147. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_v0/core/_client/data_classes/statistics.py +0 -0
  148. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_v0/core/_client/testing.py +0 -0
  149. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_v0/core/_config.py +0 -0
  150. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_v0/core/_constants.py +0 -0
  151. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_v0/core/_data_model/__init__.py +0 -0
  152. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_v0/core/_data_model/_constants.py +0 -0
  153. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_v0/core/_data_model/_shared.py +0 -0
  154. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_v0/core/_data_model/analysis/__init__.py +0 -0
  155. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_v0/core/_data_model/analysis/_base.py +0 -0
  156. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_v0/core/_data_model/catalog/__init__.py +0 -0
  157. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_v0/core/_data_model/catalog/classic_model.xlsx +0 -0
  158. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_v0/core/_data_model/catalog/conceptual-imf-data-model.xlsx +0 -0
  159. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_v0/core/_data_model/catalog/hello_world_pump.xlsx +0 -0
  160. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_v0/core/_data_model/exporters/__init__.py +0 -0
  161. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_v0/core/_data_model/exporters/_base.py +0 -0
  162. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_v0/core/_data_model/exporters/_data_model2dms.py +0 -0
  163. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_v0/core/_data_model/exporters/_data_model2excel.py +0 -0
  164. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_v0/core/_data_model/exporters/_data_model2instance_template.py +0 -0
  165. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_v0/core/_data_model/exporters/_data_model2semantic_model.py +0 -0
  166. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_v0/core/_data_model/exporters/_data_model2yaml.py +0 -0
  167. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_v0/core/_data_model/importers/__init__.py +0 -0
  168. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_v0/core/_data_model/importers/_base.py +0 -0
  169. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_v0/core/_data_model/importers/_base_file_reader.py +0 -0
  170. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_v0/core/_data_model/importers/_dict2data_model.py +0 -0
  171. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_v0/core/_data_model/importers/_dms2data_model.py +0 -0
  172. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_v0/core/_data_model/importers/_graph2data_model.py +0 -0
  173. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_v0/core/_data_model/importers/_rdf/__init__.py +0 -0
  174. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_v0/core/_data_model/importers/_rdf/_base.py +0 -0
  175. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_v0/core/_data_model/importers/_rdf/_inference2rdata_model.py +0 -0
  176. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_v0/core/_data_model/importers/_rdf/_owl2data_model.py +0 -0
  177. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_v0/core/_data_model/importers/_rdf/_shared.py +0 -0
  178. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_v0/core/_data_model/importers/_spreadsheet2data_model.py +0 -0
  179. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_v0/core/_data_model/models/__init__.py +0 -0
  180. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_v0/core/_data_model/models/_base_unverified.py +0 -0
  181. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_v0/core/_data_model/models/_base_verified.py +0 -0
  182. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_v0/core/_data_model/models/_import_contexts.py +0 -0
  183. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_v0/core/_data_model/models/_types.py +0 -0
  184. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_v0/core/_data_model/models/conceptual/__init__.py +0 -0
  185. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_v0/core/_data_model/models/conceptual/_unverified.py +0 -0
  186. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_v0/core/_data_model/models/conceptual/_validation.py +0 -0
  187. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_v0/core/_data_model/models/conceptual/_verified.py +0 -0
  188. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_v0/core/_data_model/models/data_types.py +0 -0
  189. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_v0/core/_data_model/models/entities/__init__.py +0 -0
  190. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_v0/core/_data_model/models/entities/_constants.py +0 -0
  191. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_v0/core/_data_model/models/entities/_loaders.py +0 -0
  192. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_v0/core/_data_model/models/entities/_multi_value.py +0 -0
  193. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_v0/core/_data_model/models/entities/_restrictions.py +0 -0
  194. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_v0/core/_data_model/models/entities/_single_value.py +0 -0
  195. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_v0/core/_data_model/models/entities/_types.py +0 -0
  196. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_v0/core/_data_model/models/entities/_wrapped.py +0 -0
  197. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_v0/core/_data_model/models/mapping/__init__.py +0 -0
  198. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_v0/core/_data_model/models/mapping/_classic2core.py +0 -0
  199. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_v0/core/_data_model/models/mapping/_classic2core.yaml +0 -0
  200. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_v0/core/_data_model/models/physical/__init__.py +0 -0
  201. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_v0/core/_data_model/models/physical/_exporter.py +0 -0
  202. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_v0/core/_data_model/models/physical/_unverified.py +0 -0
  203. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_v0/core/_data_model/models/physical/_validation.py +0 -0
  204. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_v0/core/_data_model/models/physical/_verified.py +0 -0
  205. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_v0/core/_data_model/transformers/__init__.py +0 -0
  206. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_v0/core/_data_model/transformers/_base.py +0 -0
  207. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_v0/core/_data_model/transformers/_converters.py +0 -0
  208. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_v0/core/_data_model/transformers/_mapping.py +0 -0
  209. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_v0/core/_data_model/transformers/_union_conceptual.py +0 -0
  210. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_v0/core/_data_model/transformers/_verification.py +0 -0
  211. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_v0/core/_instances/__init__.py +0 -0
  212. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_v0/core/_instances/_shared.py +0 -0
  213. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_v0/core/_instances/_tracking/__init__.py +0 -0
  214. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_v0/core/_instances/_tracking/base.py +0 -0
  215. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_v0/core/_instances/_tracking/log.py +0 -0
  216. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_v0/core/_instances/examples/Knowledge-Graph-Nordic44-dirty.xml +0 -0
  217. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_v0/core/_instances/examples/Knowledge-Graph-Nordic44.xml +0 -0
  218. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_v0/core/_instances/examples/__init__.py +0 -0
  219. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_v0/core/_instances/examples/skos-capturing-sheet-wind-topics.xlsx +0 -0
  220. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_v0/core/_instances/extractors/__init__.py +0 -0
  221. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_v0/core/_instances/extractors/_base.py +0 -0
  222. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_v0/core/_instances/extractors/_classic_cdf/__init__.py +0 -0
  223. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_v0/core/_instances/extractors/_classic_cdf/_assets.py +0 -0
  224. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_v0/core/_instances/extractors/_classic_cdf/_base.py +0 -0
  225. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_v0/core/_instances/extractors/_classic_cdf/_classic.py +0 -0
  226. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_v0/core/_instances/extractors/_classic_cdf/_data_sets.py +0 -0
  227. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_v0/core/_instances/extractors/_classic_cdf/_events.py +0 -0
  228. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_v0/core/_instances/extractors/_classic_cdf/_files.py +0 -0
  229. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_v0/core/_instances/extractors/_classic_cdf/_labels.py +0 -0
  230. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_v0/core/_instances/extractors/_classic_cdf/_relationships.py +0 -0
  231. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_v0/core/_instances/extractors/_classic_cdf/_sequences.py +0 -0
  232. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_v0/core/_instances/extractors/_classic_cdf/_timeseries.py +0 -0
  233. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_v0/core/_instances/extractors/_dict.py +0 -0
  234. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_v0/core/_instances/extractors/_dms.py +0 -0
  235. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_v0/core/_instances/extractors/_dms_graph.py +0 -0
  236. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_v0/core/_instances/extractors/_mock_graph_generator.py +0 -0
  237. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_v0/core/_instances/extractors/_raw.py +0 -0
  238. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_v0/core/_instances/extractors/_rdf_file.py +0 -0
  239. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_v0/core/_instances/loaders/__init__.py +0 -0
  240. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_v0/core/_instances/loaders/_base.py +0 -0
  241. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_v0/core/_instances/loaders/_rdf2dms.py +0 -0
  242. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_v0/core/_instances/loaders/_rdf_to_instance_space.py +0 -0
  243. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_v0/core/_instances/queries/__init__.py +0 -0
  244. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_v0/core/_instances/queries/_base.py +0 -0
  245. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_v0/core/_instances/queries/_queries.py +0 -0
  246. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_v0/core/_instances/queries/_select.py +0 -0
  247. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_v0/core/_instances/queries/_update.py +0 -0
  248. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_v0/core/_instances/transformers/__init__.py +0 -0
  249. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_v0/core/_instances/transformers/_base.py +0 -0
  250. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_v0/core/_instances/transformers/_classic_cdf.py +0 -0
  251. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_v0/core/_instances/transformers/_prune_graph.py +0 -0
  252. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_v0/core/_instances/transformers/_rdfpath.py +0 -0
  253. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_v0/core/_instances/transformers/_value_type.py +0 -0
  254. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_v0/core/_issues/__init__.py +0 -0
  255. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_v0/core/_issues/_base.py +0 -0
  256. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_v0/core/_issues/_contextmanagers.py +0 -0
  257. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_v0/core/_issues/_factory.py +0 -0
  258. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_v0/core/_issues/errors/__init__.py +0 -0
  259. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_v0/core/_issues/errors/_external.py +0 -0
  260. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_v0/core/_issues/errors/_general.py +0 -0
  261. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_v0/core/_issues/errors/_properties.py +0 -0
  262. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_v0/core/_issues/errors/_resources.py +0 -0
  263. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_v0/core/_issues/errors/_wrapper.py +0 -0
  264. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_v0/core/_issues/formatters.py +0 -0
  265. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_v0/core/_issues/warnings/__init__.py +0 -0
  266. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_v0/core/_issues/warnings/_external.py +0 -0
  267. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_v0/core/_issues/warnings/_general.py +0 -0
  268. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_v0/core/_issues/warnings/_models.py +0 -0
  269. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_v0/core/_issues/warnings/_properties.py +0 -0
  270. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_v0/core/_issues/warnings/_resources.py +0 -0
  271. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_v0/core/_issues/warnings/user_modeling.py +0 -0
  272. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_v0/core/_shared.py +0 -0
  273. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_v0/core/_store/__init__.py +0 -0
  274. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_v0/core/_store/_data_model.py +0 -0
  275. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_v0/core/_store/_instance.py +0 -0
  276. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_v0/core/_store/_provenance.py +0 -0
  277. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_v0/core/_store/exceptions.py +0 -0
  278. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_v0/core/_utils/__init__.py +0 -0
  279. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_v0/core/_utils/auth.py +0 -0
  280. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_v0/core/_utils/auxiliary.py +0 -0
  281. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_v0/core/_utils/collection_.py +0 -0
  282. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_v0/core/_utils/graph_transformations_report.py +0 -0
  283. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_v0/core/_utils/io_.py +0 -0
  284. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_v0/core/_utils/rdf_.py +0 -0
  285. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_v0/core/_utils/reader/__init__.py +0 -0
  286. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_v0/core/_utils/reader/_base.py +0 -0
  287. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_v0/core/_utils/spreadsheet.py +0 -0
  288. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_v0/core/_utils/tarjan.py +0 -0
  289. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_v0/core/_utils/text.py +0 -0
  290. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_v0/core/_utils/time_.py +0 -0
  291. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_v0/core/_utils/upload.py +0 -0
  292. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_v0/core/_utils/xml_.py +0 -0
  293. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_v0/engine/__init__.py +0 -0
  294. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_v0/engine/_import.py +0 -0
  295. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_v0/engine/_interface.py +0 -0
  296. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_v0/engine/_load.py +0 -0
  297. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_v0/plugins/__init__.py +0 -0
  298. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_v0/plugins/_base.py +0 -0
  299. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_v0/plugins/_data_model.py +0 -0
  300. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_v0/plugins/_issues.py +0 -0
  301. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_v0/plugins/_manager.py +0 -0
  302. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_v0/session/__init__.py +0 -0
  303. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_v0/session/_base.py +0 -0
  304. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_v0/session/_collector.py +0 -0
  305. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_v0/session/_diff.py +0 -0
  306. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_v0/session/_drop.py +0 -0
  307. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_v0/session/_experimental.py +0 -0
  308. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_v0/session/_explore.py +0 -0
  309. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_v0/session/_fix.py +0 -0
  310. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_v0/session/_inspect.py +0 -0
  311. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_v0/session/_mapping.py +0 -0
  312. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_v0/session/_plugin.py +0 -0
  313. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_v0/session/_prepare.py +0 -0
  314. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_v0/session/_read.py +0 -0
  315. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_v0/session/_set.py +0 -0
  316. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_v0/session/_show.py +0 -0
  317. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_v0/session/_state/README.md +0 -0
  318. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_v0/session/_state.py +0 -0
  319. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_v0/session/_subset.py +0 -0
  320. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_v0/session/_template.py +0 -0
  321. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_v0/session/_to.py +0 -0
  322. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_v0/session/_wizard.py +0 -0
  323. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/_v0/session/exceptions.py +0 -0
  324. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/legacy.py +0 -0
  325. {cognite_neat-1.0.17 → cognite_neat-1.0.19}/cognite/neat/py.typed +0 -0
@@ -1,10 +1,22 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: cognite-neat
3
- Version: 1.0.17
3
+ Version: 1.0.19
4
4
  Summary: Knowledge graph transformation
5
5
  Author: Nikola Vasiljevic, Anders Albert
6
6
  Author-email: Nikola Vasiljevic <nikola.vasiljevic@cognite.com>, Anders Albert <anders.albert@cognite.com>
7
7
  License-Expression: Apache-2.0
8
+ Classifier: Development Status :: 5 - Production/Stable
9
+ Classifier: Intended Audience :: Developers
10
+ Classifier: Intended Audience :: Information Technology
11
+ Classifier: Intended Audience :: Customer Service
12
+ Classifier: Topic :: Database
13
+ Classifier: License :: OSI Approved :: Apache Software License
14
+ Classifier: Programming Language :: Python :: 3
15
+ Classifier: Programming Language :: Python :: 3.10
16
+ Classifier: Programming Language :: Python :: 3.11
17
+ Classifier: Programming Language :: Python :: 3.12
18
+ Classifier: Programming Language :: Python :: 3.13
19
+ Classifier: Operating System :: OS Independent
8
20
  Requires-Dist: pandas>=1.5.3,<3.0.0
9
21
  Requires-Dist: cognite-sdk>=7.83.0,<8.0.0
10
22
  Requires-Dist: rdflib>=7.0.0,<8.0.0
@@ -101,6 +101,10 @@ class AlphaFlagConfig(ConfigModel):
101
101
  default=False,
102
102
  description="If enabled, Neat will attempt to automatically fix certain validation issues in the data model.",
103
103
  )
104
+ enable_experimental_validators: bool = Field(
105
+ default=False,
106
+ description="If enabled, Neat will run experimental validators that are still in alpha stage.",
107
+ )
104
108
 
105
109
  def __setattr__(self, key: str, value: Any) -> None:
106
110
  """Set attribute value or raise AttributeError."""
@@ -1,9 +1,12 @@
1
+ from collections import defaultdict
1
2
  from itertools import chain
2
- from typing import Literal, TypeAlias
3
+ from typing import Literal, TypeAlias, TypeVar
3
4
 
5
+ import networkx as nx
4
6
  from pyparsing import cached_property
5
7
 
6
8
  from cognite.neat._data_model._snapshot import SchemaSnapshot
9
+ from cognite.neat._data_model.models.dms._constraints import RequiresConstraintDefinition
7
10
  from cognite.neat._data_model.models.dms._container import ContainerRequest
8
11
  from cognite.neat._data_model.models.dms._data_types import DirectNodeRelation
9
12
  from cognite.neat._data_model.models.dms._limits import SchemaLimits
@@ -26,6 +29,7 @@ from cognite.neat._utils.useful_types import ModusOperandi
26
29
  ViewsByReference: TypeAlias = dict[ViewReference, ViewRequest]
27
30
  ContainersByReference: TypeAlias = dict[ContainerReference, ContainerRequest]
28
31
  AncestorsByReference: TypeAlias = dict[ViewReference, set[ViewReference]]
32
+
29
33
  ReverseToDirectMapping: TypeAlias = dict[
30
34
  tuple[ViewReference, str], tuple[ViewReference, ContainerDirectReference | ViewDirectReference]
31
35
  ]
@@ -34,6 +38,8 @@ ConnectionEndNodeTypes: TypeAlias = dict[tuple[ViewReference, str], ViewReferenc
34
38
 
35
39
  ResourceSource = Literal["auto", "merged", "cdf", "both"]
36
40
 
41
+ _NodeT = TypeVar("_NodeT", ContainerReference, ViewReference)
42
+
37
43
 
38
44
  class ValidationResources:
39
45
  def __init__(
@@ -378,3 +384,155 @@ class ValidationResources:
378
384
  connection_end_node_types[(view_ref, prop_ref)] = property_.source
379
385
 
380
386
  return connection_end_node_types
387
+
388
+ @cached_property
389
+ def views_by_container(self) -> dict[ContainerReference, set[ViewReference]]:
390
+ """Get a mapping from containers to the views that use them.
391
+
392
+ Includes views from both the merged schema and all CDF views to capture
393
+ container-view relationships across the entire CDF environment.
394
+ Uses expanded views to include inherited properties.
395
+ """
396
+
397
+ # Include all unique views from merged and CDF
398
+ views_by_container: dict[ContainerReference, set[ViewReference]] = defaultdict(set)
399
+
400
+ # Include all unique views from merged and CDF
401
+ all_view_refs = set(self.merged.views.keys()) | set(self.cdf.views.keys())
402
+
403
+ for view_ref in all_view_refs:
404
+ # Use expanded view to include inherited properties
405
+ view = self.expand_view_properties(view_ref)
406
+ if not view:
407
+ continue
408
+
409
+ for container in view.used_containers:
410
+ views_by_container[container].add(view_ref)
411
+
412
+ return dict(views_by_container)
413
+
414
+ @cached_property
415
+ def containers_by_view(self) -> dict[ViewReference, set[ContainerReference]]:
416
+ """Get a mapping from views to the containers they use.
417
+
418
+ Includes views from both the merged schema and all CDF views.
419
+ Uses expanded views to include inherited properties.
420
+ """
421
+ containers_by_view: dict[ViewReference, set[ContainerReference]] = {}
422
+
423
+ # Include all unique views from merged and CDF
424
+ all_view_refs = set(self.merged.views.keys()) | set(self.cdf.views.keys())
425
+
426
+ for view_ref in all_view_refs:
427
+ # Use expanded view to include inherited properties
428
+ view = self.expand_view_properties(view_ref)
429
+ if view is not None:
430
+ containers_by_view[view_ref] = view.used_containers
431
+
432
+ return containers_by_view
433
+
434
+ def find_views_mapping_to_containers(self, containers: list[ContainerReference]) -> set[ViewReference]:
435
+ """Find views that map to all specified containers.
436
+
437
+ That is, the intersection of views that use each of the specified containers.
438
+
439
+ Args:
440
+ containers: List of containers to check
441
+
442
+ Returns:
443
+ Set of views that contain all the specified containers
444
+
445
+ Example:
446
+ Given views V1, V2, V3 and containers C1, C2:
447
+ - V1 uses containers {C1, C2}
448
+ - V2 uses containers {C1}
449
+ - V3 uses containers {C2}
450
+
451
+ find_views_mapping_to_containers([C1, C2]) returns {V1}
452
+ find_views_mapping_to_containers([C1]) returns {V1, V2}
453
+ find_views_mapping_to_containers([C2]) returns {V1, V3}
454
+ """
455
+ if not containers:
456
+ return set()
457
+
458
+ view_sets = [self.views_by_container.get(c, set()) for c in containers]
459
+ return set.intersection(*view_sets)
460
+
461
+ # =========================================================================
462
+ # Methods used for requires constraint validation
463
+ # =========================================================================
464
+
465
+ @cached_property
466
+ def requires_constraint_graph(self) -> nx.DiGraph:
467
+ """Build a directed graph of container requires constraints.
468
+
469
+ Nodes are ContainerReferences, edges represent requires constraints.
470
+ An edge A → B means container A requires container B.
471
+
472
+ Includes containers from both merged schema and CDF
473
+ """
474
+ graph: nx.DiGraph = nx.DiGraph()
475
+
476
+ for container_ref in self.cdf.containers:
477
+ graph.add_node(container_ref)
478
+ for container_ref in self.merged.containers:
479
+ graph.add_node(container_ref)
480
+
481
+ # Add edges for requires constraints from all known containers
482
+ for container_ref in graph.nodes():
483
+ container = self.select_container(container_ref)
484
+ if not container or not container.constraints:
485
+ continue
486
+ for constraint in container.constraints.values():
487
+ if not isinstance(constraint, RequiresConstraintDefinition):
488
+ continue
489
+ graph.add_edge(container_ref, constraint.require)
490
+
491
+ return graph
492
+
493
+ @staticmethod
494
+ def forms_directed_path(nodes: set[_NodeT], graph: nx.DiGraph) -> bool:
495
+ """Check if nodes form an uninterrupted directed path in the graph.
496
+
497
+ Returns True if there exists a node that can reach all other nodes via
498
+ directed edges in the graph.
499
+
500
+ Args:
501
+ nodes: Set of nodes to check
502
+ graph: Directed graph containing the nodes
503
+
504
+ Returns:
505
+ True if nodes form a directed path (one node reaches all others)
506
+
507
+ Example:
508
+ Given nodes N1, N2, N3 with edges:
509
+ - N1 -> N2
510
+ - N2 -> N3
511
+
512
+ forms_directed_path({N1, N2, N3}) returns True (N1 reaches all others)
513
+ forms_directed_path({N2, N3}) returns True (N2 reaches N3)
514
+ forms_directed_path({N1, N3}) returns False (N1 can't reach N3 without N2)
515
+ """
516
+ if len(nodes) <= 1:
517
+ return True
518
+
519
+ for candidate in nodes:
520
+ others = nodes - {candidate}
521
+ if others.issubset(nx.descendants(graph, candidate)):
522
+ return True
523
+
524
+ return False
525
+
526
+ @cached_property
527
+ def requires_constraint_cycles(self) -> list[set[ContainerReference]]:
528
+ """Find all cycles in the requires constraint graph using Tarjan's algorithm.
529
+
530
+ Uses strongly connected components (SCC) to identify cycles efficiently.
531
+ An SCC with more than one node indicates a cycle.
532
+
533
+ Returns:
534
+ List of sets, where each set contains the containers involved in a cycle.
535
+ """
536
+ sccs = nx.strongly_connected_components(self.requires_constraint_graph)
537
+ # Only SCCs with more than one node represent cycles
538
+ return [scc for scc in sccs if len(scc) > 1]
@@ -59,7 +59,14 @@ COGNITE_CONCEPTS: tuple[str, ...] = (
59
59
  *COGNITE_CONCEPTS_3D,
60
60
  )
61
61
 
62
- COGNITE_SPACES = (CDF_CDM_SPACE,)
62
+ COGNITE_SPACES = (
63
+ CDF_CDM_SPACE,
64
+ "cdf_360_image_schema",
65
+ "cdf_3d_schema",
66
+ "cdf_apm",
67
+ "cdf_apps_shared",
68
+ "cdf_cdm_3d",
69
+ )
63
70
 
64
71
  # Defaults from https://docs.cognite.com/cdf/dm/dm_reference/dm_limits_and_restrictions#list-size-limits
65
72
 
@@ -76,6 +76,7 @@ class SchemaSnapshot(BaseModel, extra="ignore"):
76
76
  for container_ref, container in merged.containers.items():
77
77
  if cdf_container := cdf.containers.get(container_ref):
78
78
  container.properties = {**cdf_container.properties, **container.properties}
79
+ container.constraints = {**(cdf_container.constraints or {}), **(container.constraints or {})} or None
79
80
 
80
81
  return merged
81
82
 
@@ -4,16 +4,15 @@ from functools import partial
4
4
  from typing import cast
5
5
 
6
6
  from cognite.neat._client import NeatClient
7
+ from cognite.neat._data_model._constants import COGNITE_SPACES
7
8
  from cognite.neat._data_model._shared import OnSuccessResultProducer
8
9
  from cognite.neat._data_model._snapshot import SchemaSnapshot
9
10
  from cognite.neat._data_model.models.dms import (
10
- ContainerReference,
11
11
  ContainerRequest,
12
12
  DataModelBody,
13
13
  RequestSchema,
14
14
  T_DataModelResource,
15
15
  T_ResourceId,
16
- ViewReference,
17
16
  )
18
17
  from cognite.neat._utils.collection import chunker_sequence
19
18
  from cognite.neat._utils.http_client import (
@@ -130,7 +129,13 @@ class SchemaDeployer(OnSuccessResultProducer):
130
129
  def create_deployment_plan(self, snapshot: SchemaSnapshot, data_model: RequestSchema) -> ResourceDeploymentPlanList:
131
130
  return ResourceDeploymentPlanList(
132
131
  [
133
- self._create_resource_plan(snapshot.spaces, data_model.spaces, "spaces", SpaceDiffer()),
132
+ self._create_resource_plan(
133
+ snapshot.spaces,
134
+ data_model.spaces,
135
+ "spaces",
136
+ SpaceDiffer(),
137
+ skip_criteria=partial(self._skip_resource, model_space=data_model.data_model.space),
138
+ ),
134
139
  self._create_resource_plan(
135
140
  snapshot.containers,
136
141
  data_model.containers,
@@ -150,7 +155,11 @@ class SchemaDeployer(OnSuccessResultProducer):
150
155
  skip_criteria=partial(self._skip_resource, model_space=data_model.data_model.space),
151
156
  ),
152
157
  self._create_resource_plan(
153
- snapshot.data_model, [data_model.data_model], "datamodels", DataModelDiffer()
158
+ snapshot.data_model,
159
+ [data_model.data_model],
160
+ "datamodels",
161
+ DataModelDiffer(),
162
+ skip_criteria=partial(self._skip_resource, model_space=data_model.data_model.space),
154
163
  ),
155
164
  ]
156
165
  )
@@ -234,7 +243,7 @@ class SchemaDeployer(OnSuccessResultProducer):
234
243
  return modified_diffs
235
244
 
236
245
  @classmethod
237
- def _skip_resource(cls, resource_id: ContainerReference | ViewReference, model_space: str) -> str | None:
246
+ def _skip_resource(cls, resource_id: T_ResourceId, model_space: str) -> str | None:
238
247
  """Checks if a resource should be skipped based on its space.
239
248
 
240
249
  Args:
@@ -244,8 +253,13 @@ class SchemaDeployer(OnSuccessResultProducer):
244
253
  Returns:
245
254
  A reason for skipping if the resource space does not match the model space, otherwise None.
246
255
  """
247
- if resource_id.space != model_space:
248
- return f"Skipping resource in space '{resource_id.space}' not matching data model space '{model_space}'."
256
+ if resource_id.space in COGNITE_SPACES:
257
+ return f"Skipping resource as it is in the reserved Cognite space '{resource_id.space}'."
258
+ elif resource_id.space != model_space:
259
+ return (
260
+ f"Skipping resource as it is in the space '{resource_id.space}'"
261
+ f" not matching data model space '{model_space}'."
262
+ )
249
263
  return None
250
264
 
251
265
  def should_proceed_to_deploy(self, plan: Sequence[ResourceDeploymentPlan]) -> bool:
@@ -203,7 +203,10 @@ FilterTypes: TypeAlias = Literal[
203
203
  "not",
204
204
  ]
205
205
 
206
+ LegacyFilterTypes: TypeAlias = Literal["invalid"]
207
+
206
208
  AVAILABLE_FILTERS: frozenset[str] = frozenset(get_args(FilterTypes))
209
+ LEGACY_FILTERS: frozenset[str] = frozenset(get_args(LegacyFilterTypes))
207
210
 
208
211
 
209
212
  def _move_filter_key(value: Any) -> Any:
@@ -246,13 +249,13 @@ def _move_filter_key(value: Any) -> Any:
246
249
  }
247
250
  }
248
251
  """
252
+ # legacy filter which we want to ignore
253
+ if _is_legacy_filter(value):
254
+ return None
249
255
  if not isinstance(value, dict):
250
256
  return value
251
257
  if len(value) != 1:
252
258
  raise ValueError("Filter data must have exactly one key.")
253
- # legacy filter which we want to ignore
254
- if "invalid" in value:
255
- return None
256
259
  if "filterType" in value:
257
260
  # Already in the correct format
258
261
  return value
@@ -283,6 +286,25 @@ def _move_filter_key(value: Any) -> Any:
283
286
  return value
284
287
 
285
288
 
289
+ def _is_legacy_filter(filter_obj: Any) -> bool:
290
+ """Check if filter is a legacy filter no longer supported by DMS API"""
291
+
292
+ def traverse(obj: Any) -> bool:
293
+ if isinstance(obj, dict):
294
+ for key, value in obj.items():
295
+ if key in LEGACY_FILTERS:
296
+ return True
297
+ if traverse(value):
298
+ return True
299
+ elif isinstance(obj, list):
300
+ for item in obj:
301
+ if traverse(item):
302
+ return True
303
+ return False
304
+
305
+ return traverse(filter_obj)
306
+
307
+
286
308
  Filter = Annotated[dict[FilterTypes, FilterData] | None, BeforeValidator(_move_filter_key)]
287
309
 
288
310
  FilterAdapter: TypeAdapter[Filter] = TypeAdapter(Filter)
@@ -10,6 +10,7 @@ class DataModelValidator(ABC):
10
10
 
11
11
  code: ClassVar[str]
12
12
  issue_type: ClassVar[type[ConsistencyError] | type[Recommendation]]
13
+ alpha: ClassVar[bool] = False
13
14
 
14
15
  def __init__(
15
16
  self,
@@ -21,6 +21,7 @@ class DmsDataModelValidation(OnSuccessIssuesChecker):
21
21
  limits: SchemaLimits,
22
22
  modus_operandi: ModusOperandi = "additive",
23
23
  can_run_validator: Callable[[str, type], bool] | None = None,
24
+ enable_alpha_validators: bool = False,
24
25
  ) -> None:
25
26
  super().__init__()
26
27
  self._cdf_snapshot = cdf_snapshot
@@ -28,6 +29,7 @@ class DmsDataModelValidation(OnSuccessIssuesChecker):
28
29
  self._modus_operandi = modus_operandi
29
30
  self._can_run_validator = can_run_validator or (lambda code, issue_type: True) # type: ignore
30
31
  self._has_run = False
32
+ self._enable_alpha_validators = enable_alpha_validators
31
33
 
32
34
  def run(self, request_schema: RequestSchema) -> None:
33
35
  """Run quality assessment on the DMS data model."""
@@ -41,6 +43,8 @@ class DmsDataModelValidation(OnSuccessIssuesChecker):
41
43
 
42
44
  # Run validators
43
45
  for validator in validators:
46
+ if validator.alpha and not self._enable_alpha_validators:
47
+ continue
44
48
  if self._can_run_validator(validator.code, validator.issue_type):
45
49
  self._issues.extend(validator.run())
46
50
 
@@ -106,8 +106,9 @@ class ReadPhysicalDataModel:
106
106
  on_success = DmsDataModelValidation(
107
107
  modus_operandi=self._config.modeling.mode,
108
108
  cdf_snapshot=self._store.cdf_snapshot,
109
- limits=self._store.limits,
109
+ limits=self._store.cdf_limits,
110
110
  can_run_validator=self._config.validation.can_run_validator,
111
+ enable_alpha_validators=self._config.alpha.enable_experimental_validators,
111
112
  )
112
113
  return self._store.read_physical(reader, on_success)
113
114
 
@@ -134,8 +135,9 @@ class ReadPhysicalDataModel:
134
135
  on_success = DmsDataModelValidation(
135
136
  modus_operandi=self._config.modeling.mode,
136
137
  cdf_snapshot=self._store.cdf_snapshot,
137
- limits=self._store.limits,
138
+ limits=self._store.cdf_limits,
138
139
  can_run_validator=self._config.validation.can_run_validator,
140
+ enable_alpha_validators=self._config.alpha.enable_experimental_validators,
139
141
  )
140
142
  return self._store.read_physical(reader, on_success)
141
143
 
@@ -153,8 +155,9 @@ class ReadPhysicalDataModel:
153
155
  on_success = DmsDataModelValidation(
154
156
  modus_operandi=self._config.modeling.mode,
155
157
  cdf_snapshot=self._store.cdf_snapshot,
156
- limits=self._store.limits,
158
+ limits=self._store.cdf_limits,
157
159
  can_run_validator=self._config.validation.can_run_validator,
160
+ enable_alpha_validators=self._config.alpha.enable_experimental_validators,
158
161
  )
159
162
 
160
163
  return self._store.read_physical(reader, on_success)
@@ -175,8 +178,9 @@ class ReadPhysicalDataModel:
175
178
  on_success = DmsDataModelValidation(
176
179
  modus_operandi=self._config.modeling.mode,
177
180
  cdf_snapshot=self._store.cdf_snapshot,
178
- limits=self._store.limits,
181
+ limits=self._store.cdf_limits,
179
182
  can_run_validator=self._config.validation.can_run_validator,
183
+ enable_alpha_validators=self._config.alpha.enable_experimental_validators,
180
184
  )
181
185
 
182
186
  return self._store.read_physical(reader, on_success)
@@ -101,6 +101,7 @@ class SerializedResourceChange(BaseModel):
101
101
  severity=resource.severity.name,
102
102
  resource_id=str(resource.resource_id),
103
103
  changes=changes,
104
+ message=resource.message,
104
105
  )
105
106
 
106
107
  @classmethod
@@ -34,9 +34,21 @@ class NeatStore:
34
34
  self._client = client
35
35
  self._config = config
36
36
 
37
- # Caching CDF Schema limits and snapshot
38
- self.limits = SchemaLimits.from_api_response(self._client.statistics.project())
39
- self.cdf_snapshot = SchemaSnapshot.fetch_entire_cdf(self._client)
37
+ # Placeholder for CDF schema and limit snapshot
38
+ self._cdf_snapshot: SchemaSnapshot | None = None
39
+ self._cdf_limits: SchemaLimits | None = None
40
+
41
+ @property
42
+ def cdf_limits(self) -> SchemaLimits:
43
+ if not self._cdf_limits:
44
+ self._cdf_limits = SchemaLimits.from_api_response(self._client.statistics.project())
45
+ return self._cdf_limits
46
+
47
+ @property
48
+ def cdf_snapshot(self) -> SchemaSnapshot:
49
+ if not self._cdf_snapshot:
50
+ self._cdf_snapshot = SchemaSnapshot.fetch_entire_cdf(self._client)
51
+ return self._cdf_snapshot
40
52
 
41
53
  def read_physical(self, reader: DMSImporter, on_success: OnSuccess | None = None) -> None:
42
54
  """Read object from the store"""
@@ -81,7 +93,7 @@ class NeatStore:
81
93
  and not on_success.options.dry_run
82
94
  ):
83
95
  # Update CDF snapshot after successful deployment
84
- self.cdf_snapshot = SchemaSnapshot.fetch_entire_cdf(self._client)
96
+ self._cdf_snapshot = SchemaSnapshot.fetch_entire_cdf(self._client)
85
97
 
86
98
  def _gather_data_model(self, writer: DMSExporter) -> PhysicalDataModel:
87
99
  """Gather the current physical data model from the store
@@ -0,0 +1,2 @@
1
+ __version__ = "1.0.19"
2
+ __engine__ = "^2.0.4"
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "cognite-neat"
3
- version = "1.0.17"
3
+ version = "1.0.19"
4
4
  readme = "README.md"
5
5
  description = "Knowledge graph transformation"
6
6
  authors = [
@@ -9,6 +9,20 @@ authors = [
9
9
  ]
10
10
  license = "Apache-2.0"
11
11
  requires-python = ">=3.10"
12
+ classifiers = [
13
+ "Development Status :: 5 - Production/Stable",
14
+ "Intended Audience :: Developers",
15
+ "Intended Audience :: Information Technology",
16
+ "Intended Audience :: Customer Service",
17
+ "Topic :: Database",
18
+ "License :: OSI Approved :: Apache Software License",
19
+ "Programming Language :: Python :: 3",
20
+ "Programming Language :: Python :: 3.10",
21
+ "Programming Language :: Python :: 3.11",
22
+ "Programming Language :: Python :: 3.12",
23
+ "Programming Language :: Python :: 3.13",
24
+ "Operating System :: OS Independent",
25
+ ]
12
26
  dependencies = [
13
27
  "pandas>=1.5.3, <3.0.0",
14
28
  "cognite-sdk>=7.83.0, <8.0.0",
@@ -123,8 +137,8 @@ target-version = "py310"
123
137
  exclude = ["scripts"]
124
138
  fix = true
125
139
 
126
- [tool.coverage.report]
127
- show_missing = true
140
+ [tool.coverage.run]
141
+ source = ["cognite.neat"]
128
142
  omit = [
129
143
  # This contains the legacy code. We want to exclude it from coverage reports
130
144
  # such that we can increase the coverage threshold for the new code.
@@ -134,6 +148,20 @@ omit = [
134
148
  "cognite/neat/_session/_usage_analytics/*",
135
149
  ]
136
150
 
151
+ [tool.coverage.report]
152
+ show_missing = true
153
+ exclude_lines = [
154
+ "pragma: no cover",
155
+ "def __repr__",
156
+ "raise AssertionError",
157
+ "raise NotImplementedError",
158
+ "raise RuntimeError",
159
+ "if __name__ == .__main__.:",
160
+ "if TYPE_CHECKING:",
161
+ "@abstractmethod",
162
+ "from typing_extensions import Self",
163
+ ]
164
+
137
165
  [tool.mypy]
138
166
  pretty = true
139
167
  check_untyped_defs = true
@@ -1,2 +0,0 @@
1
- __version__ = "1.0.17"
2
- __engine__ = "^2.0.4"
File without changes