cognite-neat 0.123.24__py3-none-any.whl → 1.0.22__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (342) hide show
  1. cognite/neat/__init__.py +4 -3
  2. cognite/neat/_client/__init__.py +5 -0
  3. cognite/neat/_client/api.py +8 -0
  4. cognite/neat/_client/client.py +21 -0
  5. cognite/neat/_client/config.py +40 -0
  6. cognite/neat/_client/containers_api.py +138 -0
  7. cognite/neat/_client/data_classes.py +44 -0
  8. cognite/neat/_client/data_model_api.py +115 -0
  9. cognite/neat/_client/init/credentials.py +70 -0
  10. cognite/neat/_client/init/env_vars.py +131 -0
  11. cognite/neat/_client/init/main.py +51 -0
  12. cognite/neat/_client/spaces_api.py +115 -0
  13. cognite/neat/_client/statistics_api.py +24 -0
  14. cognite/neat/_client/views_api.py +144 -0
  15. cognite/neat/_config.py +266 -0
  16. cognite/neat/_data_model/_analysis.py +571 -0
  17. cognite/neat/_data_model/_constants.py +74 -0
  18. cognite/neat/_data_model/_identifiers.py +61 -0
  19. cognite/neat/_data_model/_shared.py +41 -0
  20. cognite/neat/_data_model/_snapshot.py +134 -0
  21. cognite/neat/_data_model/deployer/_differ.py +140 -0
  22. cognite/neat/_data_model/deployer/_differ_container.py +360 -0
  23. cognite/neat/_data_model/deployer/_differ_data_model.py +54 -0
  24. cognite/neat/_data_model/deployer/_differ_space.py +9 -0
  25. cognite/neat/_data_model/deployer/_differ_view.py +299 -0
  26. cognite/neat/_data_model/deployer/data_classes.py +644 -0
  27. cognite/neat/_data_model/deployer/deployer.py +431 -0
  28. cognite/neat/_data_model/exporters/__init__.py +15 -0
  29. cognite/neat/_data_model/exporters/_api_exporter.py +37 -0
  30. cognite/neat/_data_model/exporters/_base.py +24 -0
  31. cognite/neat/_data_model/exporters/_table_exporter/exporter.py +128 -0
  32. cognite/neat/_data_model/exporters/_table_exporter/workbook.py +409 -0
  33. cognite/neat/_data_model/exporters/_table_exporter/writer.py +480 -0
  34. cognite/neat/_data_model/importers/__init__.py +5 -0
  35. cognite/neat/_data_model/importers/_api_importer.py +166 -0
  36. cognite/neat/_data_model/importers/_base.py +16 -0
  37. cognite/neat/_data_model/importers/_table_importer/data_classes.py +344 -0
  38. cognite/neat/_data_model/importers/_table_importer/importer.py +192 -0
  39. cognite/neat/_data_model/importers/_table_importer/reader.py +1102 -0
  40. cognite/neat/_data_model/importers/_table_importer/source.py +94 -0
  41. cognite/neat/_data_model/models/conceptual/_base.py +18 -0
  42. cognite/neat/_data_model/models/conceptual/_concept.py +67 -0
  43. cognite/neat/_data_model/models/conceptual/_data_model.py +51 -0
  44. cognite/neat/_data_model/models/conceptual/_properties.py +104 -0
  45. cognite/neat/_data_model/models/conceptual/_property.py +105 -0
  46. cognite/neat/_data_model/models/dms/__init__.py +206 -0
  47. cognite/neat/_data_model/models/dms/_base.py +31 -0
  48. cognite/neat/_data_model/models/dms/_constants.py +48 -0
  49. cognite/neat/_data_model/models/dms/_constraints.py +42 -0
  50. cognite/neat/_data_model/models/dms/_container.py +159 -0
  51. cognite/neat/_data_model/models/dms/_data_model.py +95 -0
  52. cognite/neat/_data_model/models/dms/_data_types.py +195 -0
  53. cognite/neat/_data_model/models/dms/_http.py +28 -0
  54. cognite/neat/_data_model/models/dms/_indexes.py +30 -0
  55. cognite/neat/_data_model/models/dms/_limits.py +96 -0
  56. cognite/neat/_data_model/models/dms/_references.py +141 -0
  57. cognite/neat/_data_model/models/dms/_schema.py +18 -0
  58. cognite/neat/_data_model/models/dms/_space.py +48 -0
  59. cognite/neat/_data_model/models/dms/_types.py +17 -0
  60. cognite/neat/_data_model/models/dms/_view_filter.py +310 -0
  61. cognite/neat/_data_model/models/dms/_view_property.py +235 -0
  62. cognite/neat/_data_model/models/dms/_views.py +216 -0
  63. cognite/neat/_data_model/models/entities/__init__.py +50 -0
  64. cognite/neat/_data_model/models/entities/_base.py +101 -0
  65. cognite/neat/_data_model/models/entities/_constants.py +22 -0
  66. cognite/neat/_data_model/models/entities/_data_types.py +144 -0
  67. cognite/neat/_data_model/models/entities/_identifiers.py +61 -0
  68. cognite/neat/_data_model/models/entities/_parser.py +226 -0
  69. cognite/neat/_data_model/validation/dms/__init__.py +75 -0
  70. cognite/neat/_data_model/validation/dms/_ai_readiness.py +381 -0
  71. cognite/neat/_data_model/validation/dms/_base.py +25 -0
  72. cognite/neat/_data_model/validation/dms/_connections.py +681 -0
  73. cognite/neat/_data_model/validation/dms/_consistency.py +58 -0
  74. cognite/neat/_data_model/validation/dms/_containers.py +199 -0
  75. cognite/neat/_data_model/validation/dms/_limits.py +368 -0
  76. cognite/neat/_data_model/validation/dms/_orchestrator.py +70 -0
  77. cognite/neat/_data_model/validation/dms/_views.py +164 -0
  78. cognite/neat/_exceptions.py +68 -0
  79. cognite/neat/_issues.py +68 -0
  80. cognite/neat/_session/__init__.py +3 -0
  81. cognite/neat/_session/_html/_render.py +30 -0
  82. cognite/neat/_session/_html/static/__init__.py +8 -0
  83. cognite/neat/_session/_html/static/deployment.css +476 -0
  84. cognite/neat/_session/_html/static/deployment.js +181 -0
  85. cognite/neat/_session/_html/static/issues.css +211 -0
  86. cognite/neat/_session/_html/static/issues.js +168 -0
  87. cognite/neat/_session/_html/static/shared.css +186 -0
  88. cognite/neat/_session/_html/templates/__init__.py +4 -0
  89. cognite/neat/_session/_html/templates/deployment.html +80 -0
  90. cognite/neat/_session/_html/templates/issues.html +45 -0
  91. cognite/neat/_session/_issues.py +81 -0
  92. cognite/neat/_session/_physical.py +294 -0
  93. cognite/neat/_session/_result/__init__.py +3 -0
  94. cognite/neat/_session/_result/_deployment/__init__.py +0 -0
  95. cognite/neat/_session/_result/_deployment/_physical/__init__.py +0 -0
  96. cognite/neat/_session/_result/_deployment/_physical/_changes.py +196 -0
  97. cognite/neat/_session/_result/_deployment/_physical/_statistics.py +180 -0
  98. cognite/neat/_session/_result/_deployment/_physical/serializer.py +35 -0
  99. cognite/neat/_session/_result/_result.py +31 -0
  100. cognite/neat/_session/_session.py +81 -0
  101. cognite/neat/_session/_usage_analytics/__init__.py +0 -0
  102. cognite/neat/_session/_usage_analytics/_collector.py +131 -0
  103. cognite/neat/_session/_usage_analytics/_constants.py +23 -0
  104. cognite/neat/_session/_usage_analytics/_storage.py +240 -0
  105. cognite/neat/_session/_wrappers.py +101 -0
  106. cognite/neat/_state_machine/__init__.py +10 -0
  107. cognite/neat/_state_machine/_base.py +37 -0
  108. cognite/neat/_state_machine/_states.py +52 -0
  109. cognite/neat/_store/__init__.py +3 -0
  110. cognite/neat/_store/_provenance.py +88 -0
  111. cognite/neat/_store/_store.py +220 -0
  112. cognite/neat/_utils/__init__.py +0 -0
  113. cognite/neat/_utils/_reader.py +194 -0
  114. cognite/neat/_utils/auxiliary.py +49 -0
  115. cognite/neat/_utils/collection.py +11 -0
  116. cognite/neat/_utils/http_client/__init__.py +39 -0
  117. cognite/neat/_utils/http_client/_client.py +245 -0
  118. cognite/neat/_utils/http_client/_config.py +19 -0
  119. cognite/neat/_utils/http_client/_data_classes.py +294 -0
  120. cognite/neat/_utils/http_client/_tracker.py +31 -0
  121. cognite/neat/_utils/repo.py +19 -0
  122. cognite/neat/_utils/text.py +71 -0
  123. cognite/neat/_utils/useful_types.py +37 -0
  124. cognite/neat/_utils/validation.py +154 -0
  125. cognite/neat/_v0/__init__.py +0 -0
  126. cognite/neat/_v0/core/__init__.py +0 -0
  127. cognite/neat/_v0/core/_client/_api/__init__.py +0 -0
  128. cognite/neat/{core → _v0/core}/_client/_api/data_modeling_loaders.py +8 -7
  129. cognite/neat/{core → _v0/core}/_client/_api/neat_instances.py +5 -5
  130. cognite/neat/{core → _v0/core}/_client/_api/schema.py +5 -5
  131. cognite/neat/{core → _v0/core}/_client/_api/statistics.py +3 -3
  132. cognite/neat/{core → _v0/core}/_client/_api_client.py +1 -1
  133. cognite/neat/_v0/core/_client/data_classes/__init__.py +0 -0
  134. cognite/neat/{core → _v0/core}/_client/data_classes/schema.py +4 -4
  135. cognite/neat/{core → _v0/core}/_client/testing.py +1 -1
  136. cognite/neat/{core → _v0/core}/_constants.py +5 -3
  137. cognite/neat/_v0/core/_data_model/__init__.py +0 -0
  138. cognite/neat/{core → _v0/core}/_data_model/_constants.py +7 -0
  139. cognite/neat/{core → _v0/core}/_data_model/_shared.py +4 -4
  140. cognite/neat/{core → _v0/core}/_data_model/analysis/_base.py +8 -8
  141. cognite/neat/{core → _v0/core}/_data_model/exporters/__init__.py +1 -2
  142. cognite/neat/{core → _v0/core}/_data_model/exporters/_base.py +7 -7
  143. cognite/neat/{core → _v0/core}/_data_model/exporters/_data_model2dms.py +9 -9
  144. cognite/neat/{core → _v0/core}/_data_model/exporters/_data_model2excel.py +12 -12
  145. cognite/neat/{core → _v0/core}/_data_model/exporters/_data_model2instance_template.py +4 -4
  146. cognite/neat/{core/_data_model/exporters/_data_model2ontology.py → _v0/core/_data_model/exporters/_data_model2semantic_model.py} +126 -116
  147. cognite/neat/{core → _v0/core}/_data_model/exporters/_data_model2yaml.py +1 -1
  148. cognite/neat/{core → _v0/core}/_data_model/importers/_base.py +5 -5
  149. cognite/neat/{core → _v0/core}/_data_model/importers/_base_file_reader.py +2 -2
  150. cognite/neat/{core → _v0/core}/_data_model/importers/_dict2data_model.py +5 -5
  151. cognite/neat/{core → _v0/core}/_data_model/importers/_dms2data_model.py +18 -15
  152. cognite/neat/{core → _v0/core}/_data_model/importers/_graph2data_model.py +12 -12
  153. cognite/neat/{core → _v0/core}/_data_model/importers/_rdf/_base.py +12 -12
  154. cognite/neat/{core → _v0/core}/_data_model/importers/_rdf/_inference2rdata_model.py +14 -14
  155. cognite/neat/_v0/core/_data_model/importers/_rdf/_owl2data_model.py +144 -0
  156. cognite/neat/{core → _v0/core}/_data_model/importers/_rdf/_shared.py +17 -13
  157. cognite/neat/{core → _v0/core}/_data_model/importers/_spreadsheet2data_model.py +92 -12
  158. cognite/neat/{core → _v0/core}/_data_model/models/__init__.py +3 -3
  159. cognite/neat/{core → _v0/core}/_data_model/models/_base_verified.py +5 -5
  160. cognite/neat/{core → _v0/core}/_data_model/models/_import_contexts.py +1 -1
  161. cognite/neat/{core → _v0/core}/_data_model/models/_types.py +5 -5
  162. cognite/neat/{core → _v0/core}/_data_model/models/conceptual/_unverified.py +16 -10
  163. cognite/neat/{core → _v0/core}/_data_model/models/conceptual/_validation.py +12 -12
  164. cognite/neat/{core → _v0/core}/_data_model/models/conceptual/_verified.py +9 -9
  165. cognite/neat/{core → _v0/core}/_data_model/models/data_types.py +14 -4
  166. cognite/neat/{core → _v0/core}/_data_model/models/entities/__init__.py +6 -0
  167. cognite/neat/_v0/core/_data_model/models/entities/_loaders.py +155 -0
  168. cognite/neat/{core → _v0/core}/_data_model/models/entities/_multi_value.py +2 -2
  169. cognite/neat/_v0/core/_data_model/models/entities/_restrictions.py +230 -0
  170. cognite/neat/{core → _v0/core}/_data_model/models/entities/_single_value.py +121 -16
  171. cognite/neat/{core → _v0/core}/_data_model/models/entities/_types.py +10 -0
  172. cognite/neat/{core → _v0/core}/_data_model/models/mapping/_classic2core.py +5 -5
  173. cognite/neat/{core → _v0/core}/_data_model/models/physical/__init__.py +1 -1
  174. cognite/neat/{core → _v0/core}/_data_model/models/physical/_exporter.py +26 -19
  175. cognite/neat/{core → _v0/core}/_data_model/models/physical/_unverified.py +133 -37
  176. cognite/neat/{core → _v0/core}/_data_model/models/physical/_validation.py +24 -20
  177. cognite/neat/{core → _v0/core}/_data_model/models/physical/_verified.py +95 -24
  178. cognite/neat/{core → _v0/core}/_data_model/transformers/_base.py +4 -4
  179. cognite/neat/{core → _v0/core}/_data_model/transformers/_converters.py +35 -28
  180. cognite/neat/{core → _v0/core}/_data_model/transformers/_mapping.py +7 -7
  181. cognite/neat/{core → _v0/core}/_data_model/transformers/_union_conceptual.py +5 -5
  182. cognite/neat/{core → _v0/core}/_data_model/transformers/_verification.py +7 -7
  183. cognite/neat/_v0/core/_instances/__init__.py +0 -0
  184. cognite/neat/{core → _v0/core}/_instances/_tracking/base.py +1 -1
  185. cognite/neat/{core → _v0/core}/_instances/_tracking/log.py +1 -1
  186. cognite/neat/{core → _v0/core}/_instances/extractors/__init__.py +3 -2
  187. cognite/neat/{core → _v0/core}/_instances/extractors/_base.py +6 -6
  188. cognite/neat/_v0/core/_instances/extractors/_classic_cdf/__init__.py +0 -0
  189. cognite/neat/{core → _v0/core}/_instances/extractors/_classic_cdf/_base.py +7 -7
  190. cognite/neat/{core → _v0/core}/_instances/extractors/_classic_cdf/_classic.py +12 -12
  191. cognite/neat/{core → _v0/core}/_instances/extractors/_classic_cdf/_relationships.py +3 -3
  192. cognite/neat/{core → _v0/core}/_instances/extractors/_classic_cdf/_sequences.py +2 -2
  193. cognite/neat/{core → _v0/core}/_instances/extractors/_dict.py +6 -3
  194. cognite/neat/{core → _v0/core}/_instances/extractors/_dms.py +6 -6
  195. cognite/neat/{core → _v0/core}/_instances/extractors/_dms_graph.py +11 -11
  196. cognite/neat/{core → _v0/core}/_instances/extractors/_mock_graph_generator.py +10 -10
  197. cognite/neat/{core → _v0/core}/_instances/extractors/_raw.py +3 -3
  198. cognite/neat/{core → _v0/core}/_instances/extractors/_rdf_file.py +7 -7
  199. cognite/neat/{core → _v0/core}/_instances/loaders/_base.py +5 -5
  200. cognite/neat/{core → _v0/core}/_instances/loaders/_rdf2dms.py +17 -17
  201. cognite/neat/{core → _v0/core}/_instances/loaders/_rdf_to_instance_space.py +11 -11
  202. cognite/neat/{core → _v0/core}/_instances/queries/_select.py +29 -3
  203. cognite/neat/{core → _v0/core}/_instances/queries/_update.py +1 -1
  204. cognite/neat/{core → _v0/core}/_instances/transformers/_base.py +4 -4
  205. cognite/neat/{core → _v0/core}/_instances/transformers/_classic_cdf.py +6 -6
  206. cognite/neat/{core → _v0/core}/_instances/transformers/_prune_graph.py +4 -4
  207. cognite/neat/{core → _v0/core}/_instances/transformers/_rdfpath.py +1 -1
  208. cognite/neat/{core → _v0/core}/_instances/transformers/_value_type.py +4 -4
  209. cognite/neat/{core → _v0/core}/_issues/_base.py +5 -5
  210. cognite/neat/{core → _v0/core}/_issues/_contextmanagers.py +1 -1
  211. cognite/neat/{core → _v0/core}/_issues/_factory.py +3 -3
  212. cognite/neat/{core → _v0/core}/_issues/errors/__init__.py +1 -1
  213. cognite/neat/{core → _v0/core}/_issues/errors/_external.py +1 -1
  214. cognite/neat/{core → _v0/core}/_issues/errors/_general.py +1 -1
  215. cognite/neat/{core → _v0/core}/_issues/errors/_properties.py +1 -1
  216. cognite/neat/{core → _v0/core}/_issues/errors/_resources.py +2 -2
  217. cognite/neat/{core → _v0/core}/_issues/errors/_wrapper.py +7 -3
  218. cognite/neat/{core → _v0/core}/_issues/warnings/__init__.py +1 -1
  219. cognite/neat/{core → _v0/core}/_issues/warnings/_external.py +1 -1
  220. cognite/neat/{core → _v0/core}/_issues/warnings/_general.py +1 -1
  221. cognite/neat/{core → _v0/core}/_issues/warnings/_models.py +2 -2
  222. cognite/neat/{core → _v0/core}/_issues/warnings/_properties.py +2 -2
  223. cognite/neat/{core → _v0/core}/_issues/warnings/_resources.py +1 -1
  224. cognite/neat/{core → _v0/core}/_issues/warnings/user_modeling.py +1 -1
  225. cognite/neat/{core → _v0/core}/_store/_data_model.py +12 -12
  226. cognite/neat/{core → _v0/core}/_store/_instance.py +43 -10
  227. cognite/neat/{core → _v0/core}/_store/_provenance.py +3 -3
  228. cognite/neat/{core → _v0/core}/_store/exceptions.py +4 -4
  229. cognite/neat/_v0/core/_utils/__init__.py +0 -0
  230. cognite/neat/{core → _v0/core}/_utils/auth.py +22 -12
  231. cognite/neat/{core → _v0/core}/_utils/auxiliary.py +1 -1
  232. cognite/neat/{core → _v0/core}/_utils/collection_.py +2 -2
  233. cognite/neat/{core → _v0/core}/_utils/graph_transformations_report.py +1 -1
  234. cognite/neat/{core → _v0/core}/_utils/rdf_.py +1 -1
  235. cognite/neat/{core → _v0/core}/_utils/reader/_base.py +1 -1
  236. cognite/neat/{core → _v0/core}/_utils/spreadsheet.py +18 -4
  237. cognite/neat/{core → _v0/core}/_utils/text.py +1 -1
  238. cognite/neat/{core → _v0/core}/_utils/upload.py +3 -3
  239. cognite/neat/{session → _v0}/engine/_load.py +1 -1
  240. cognite/neat/_v0/plugins/__init__.py +4 -0
  241. cognite/neat/_v0/plugins/_base.py +9 -0
  242. cognite/neat/_v0/plugins/_data_model.py +48 -0
  243. cognite/neat/{plugins → _v0/plugins}/_issues.py +1 -1
  244. cognite/neat/{plugins → _v0/plugins}/_manager.py +7 -16
  245. cognite/neat/{session → _v0/session}/_base.py +13 -15
  246. cognite/neat/{session → _v0/session}/_collector.py +1 -1
  247. cognite/neat/_v0/session/_diff.py +51 -0
  248. cognite/neat/{session → _v0/session}/_drop.py +3 -3
  249. cognite/neat/{session → _v0/session}/_explore.py +2 -2
  250. cognite/neat/{session → _v0/session}/_fix.py +2 -2
  251. cognite/neat/{session → _v0/session}/_inspect.py +3 -3
  252. cognite/neat/{session → _v0/session}/_mapping.py +3 -3
  253. cognite/neat/{session → _v0/session}/_plugin.py +4 -5
  254. cognite/neat/{session → _v0/session}/_prepare.py +8 -8
  255. cognite/neat/{session → _v0/session}/_read.py +34 -21
  256. cognite/neat/{session → _v0/session}/_set.py +8 -8
  257. cognite/neat/{session → _v0/session}/_show.py +5 -5
  258. cognite/neat/{session → _v0/session}/_state.py +10 -10
  259. cognite/neat/{session → _v0/session}/_subset.py +4 -4
  260. cognite/neat/{session → _v0/session}/_template.py +11 -11
  261. cognite/neat/{session → _v0/session}/_to.py +12 -12
  262. cognite/neat/{session → _v0/session}/_wizard.py +1 -1
  263. cognite/neat/{session → _v0/session}/exceptions.py +5 -5
  264. cognite/neat/_version.py +1 -1
  265. cognite/neat/legacy.py +6 -0
  266. cognite_neat-1.0.22.dist-info/METADATA +123 -0
  267. cognite_neat-1.0.22.dist-info/RECORD +329 -0
  268. cognite_neat-1.0.22.dist-info/WHEEL +4 -0
  269. cognite/neat/core/_data_model/importers/_rdf/_owl2data_model.py +0 -91
  270. cognite/neat/core/_data_model/models/entities/_loaders.py +0 -75
  271. cognite/neat/plugins/__init__.py +0 -3
  272. cognite/neat/plugins/data_model/importers/__init__.py +0 -5
  273. cognite/neat/plugins/data_model/importers/_base.py +0 -28
  274. cognite/neat/session/_session/_data_model/__init__.py +0 -3
  275. cognite/neat/session/_session/_data_model/_read.py +0 -193
  276. cognite/neat/session/_session/_data_model/_routes.py +0 -45
  277. cognite/neat/session/_session/_data_model/_show.py +0 -147
  278. cognite/neat/session/_session/_data_model/_write.py +0 -335
  279. cognite_neat-0.123.24.dist-info/METADATA +0 -144
  280. cognite_neat-0.123.24.dist-info/RECORD +0 -201
  281. cognite_neat-0.123.24.dist-info/WHEEL +0 -4
  282. cognite_neat-0.123.24.dist-info/licenses/LICENSE +0 -201
  283. /cognite/neat/{core → _client/init}/__init__.py +0 -0
  284. /cognite/neat/{core/_client/_api → _data_model}/__init__.py +0 -0
  285. /cognite/neat/{core/_client/data_classes → _data_model/deployer}/__init__.py +0 -0
  286. /cognite/neat/{core/_data_model → _data_model/exporters/_table_exporter}/__init__.py +0 -0
  287. /cognite/neat/{core/_instances → _data_model/importers/_table_importer}/__init__.py +0 -0
  288. /cognite/neat/{core/_instances/extractors/_classic_cdf → _data_model/models}/__init__.py +0 -0
  289. /cognite/neat/{core/_utils → _data_model/models/conceptual}/__init__.py +0 -0
  290. /cognite/neat/{plugins/data_model → _data_model/validation}/__init__.py +0 -0
  291. /cognite/neat/{session/_session → _session/_html}/__init__.py +0 -0
  292. /cognite/neat/{core → _v0/core}/_client/__init__.py +0 -0
  293. /cognite/neat/{core → _v0/core}/_client/data_classes/data_modeling.py +0 -0
  294. /cognite/neat/{core → _v0/core}/_client/data_classes/neat_sequence.py +0 -0
  295. /cognite/neat/{core → _v0/core}/_client/data_classes/statistics.py +0 -0
  296. /cognite/neat/{core → _v0/core}/_config.py +0 -0
  297. /cognite/neat/{core → _v0/core}/_data_model/analysis/__init__.py +0 -0
  298. /cognite/neat/{core → _v0/core}/_data_model/catalog/__init__.py +0 -0
  299. /cognite/neat/{core → _v0/core}/_data_model/catalog/classic_model.xlsx +0 -0
  300. /cognite/neat/{core → _v0/core}/_data_model/catalog/conceptual-imf-data-model.xlsx +0 -0
  301. /cognite/neat/{core → _v0/core}/_data_model/catalog/hello_world_pump.xlsx +0 -0
  302. /cognite/neat/{core → _v0/core}/_data_model/importers/__init__.py +0 -0
  303. /cognite/neat/{core → _v0/core}/_data_model/importers/_rdf/__init__.py +0 -0
  304. /cognite/neat/{core → _v0/core}/_data_model/models/_base_unverified.py +0 -0
  305. /cognite/neat/{core → _v0/core}/_data_model/models/conceptual/__init__.py +0 -0
  306. /cognite/neat/{core → _v0/core}/_data_model/models/entities/_constants.py +0 -0
  307. /cognite/neat/{core → _v0/core}/_data_model/models/entities/_wrapped.py +0 -0
  308. /cognite/neat/{core → _v0/core}/_data_model/models/mapping/__init__.py +0 -0
  309. /cognite/neat/{core → _v0/core}/_data_model/models/mapping/_classic2core.yaml +0 -0
  310. /cognite/neat/{core → _v0/core}/_data_model/transformers/__init__.py +0 -0
  311. /cognite/neat/{core → _v0/core}/_instances/_shared.py +0 -0
  312. /cognite/neat/{core → _v0/core}/_instances/_tracking/__init__.py +0 -0
  313. /cognite/neat/{core → _v0/core}/_instances/examples/Knowledge-Graph-Nordic44-dirty.xml +0 -0
  314. /cognite/neat/{core → _v0/core}/_instances/examples/Knowledge-Graph-Nordic44.xml +0 -0
  315. /cognite/neat/{core → _v0/core}/_instances/examples/__init__.py +0 -0
  316. /cognite/neat/{core → _v0/core}/_instances/examples/skos-capturing-sheet-wind-topics.xlsx +0 -0
  317. /cognite/neat/{core → _v0/core}/_instances/extractors/_classic_cdf/_assets.py +0 -0
  318. /cognite/neat/{core → _v0/core}/_instances/extractors/_classic_cdf/_data_sets.py +0 -0
  319. /cognite/neat/{core → _v0/core}/_instances/extractors/_classic_cdf/_events.py +0 -0
  320. /cognite/neat/{core → _v0/core}/_instances/extractors/_classic_cdf/_files.py +0 -0
  321. /cognite/neat/{core → _v0/core}/_instances/extractors/_classic_cdf/_labels.py +0 -0
  322. /cognite/neat/{core → _v0/core}/_instances/extractors/_classic_cdf/_timeseries.py +0 -0
  323. /cognite/neat/{core → _v0/core}/_instances/loaders/__init__.py +0 -0
  324. /cognite/neat/{core → _v0/core}/_instances/queries/__init__.py +0 -0
  325. /cognite/neat/{core → _v0/core}/_instances/queries/_base.py +0 -0
  326. /cognite/neat/{core → _v0/core}/_instances/queries/_queries.py +0 -0
  327. /cognite/neat/{core → _v0/core}/_instances/transformers/__init__.py +0 -0
  328. /cognite/neat/{core → _v0/core}/_issues/__init__.py +0 -0
  329. /cognite/neat/{core → _v0/core}/_issues/formatters.py +0 -0
  330. /cognite/neat/{core → _v0/core}/_shared.py +0 -0
  331. /cognite/neat/{core → _v0/core}/_store/__init__.py +0 -0
  332. /cognite/neat/{core → _v0/core}/_utils/io_.py +0 -0
  333. /cognite/neat/{core → _v0/core}/_utils/reader/__init__.py +0 -0
  334. /cognite/neat/{core → _v0/core}/_utils/tarjan.py +0 -0
  335. /cognite/neat/{core → _v0/core}/_utils/time_.py +0 -0
  336. /cognite/neat/{core → _v0/core}/_utils/xml_.py +0 -0
  337. /cognite/neat/{session → _v0}/engine/__init__.py +0 -0
  338. /cognite/neat/{session → _v0}/engine/_import.py +0 -0
  339. /cognite/neat/{session → _v0}/engine/_interface.py +0 -0
  340. /cognite/neat/{session → _v0/session}/__init__.py +0 -0
  341. /cognite/neat/{session → _v0/session}/_experimental.py +0 -0
  342. /cognite/neat/{session → _v0/session}/_state/README.md +0 -0
@@ -0,0 +1,360 @@
1
+ from cognite.neat._data_model.models.dms import (
2
+ BtreeIndex,
3
+ ConstraintDefinition,
4
+ ContainerPropertyDefinition,
5
+ ContainerRequest,
6
+ EnumProperty,
7
+ EnumValue,
8
+ FloatProperty,
9
+ IndexDefinition,
10
+ ListablePropertyTypeDefinition,
11
+ PropertyTypeDefinition,
12
+ RequiresConstraintDefinition,
13
+ TextProperty,
14
+ UniquenessConstraintDefinition,
15
+ )
16
+ from cognite.neat._data_model.models.dms._data_types import Unit
17
+
18
+ from ._differ import ItemDiffer, ObjectDiffer, field_differences
19
+ from .data_classes import (
20
+ AddedField,
21
+ ChangedField,
22
+ FieldChange,
23
+ FieldChanges,
24
+ RemovedField,
25
+ SeverityType,
26
+ )
27
+
28
+
29
+ class ContainerDiffer(ItemDiffer[ContainerRequest]):
30
+ def diff(self, current: ContainerRequest, new: ContainerRequest) -> list[FieldChange]:
31
+ changes = self._diff_name_description(current, new)
32
+
33
+ if current.used_for != new.used_for:
34
+ changes.append(
35
+ ChangedField(
36
+ item_severity=SeverityType.BREAKING,
37
+ field_path=self._get_path("usedFor"),
38
+ current_value=current.used_for,
39
+ new_value=new.used_for,
40
+ )
41
+ )
42
+ changes.extend(
43
+ field_differences(
44
+ "properties",
45
+ current.properties,
46
+ new.properties,
47
+ add_severity=SeverityType.SAFE,
48
+ remove_severity=SeverityType.BREAKING,
49
+ differ=ContainerPropertyDiffer("properties"),
50
+ )
51
+ )
52
+ changes.extend(
53
+ # MyPy fails to understand that ConstraintDefinition and Constraint are compatible here
54
+ field_differences( # type: ignore[misc]
55
+ "constraints",
56
+ current.constraints,
57
+ new.constraints,
58
+ add_severity=SeverityType.SAFE,
59
+ remove_severity=SeverityType.WARNING,
60
+ differ=ConstraintDiffer("constraints"),
61
+ )
62
+ )
63
+ changes.extend(
64
+ # MyPy fails to understand that IndexDefinition and Index are compatible here
65
+ field_differences( # type: ignore[misc]
66
+ "indexes",
67
+ current.indexes,
68
+ new.indexes,
69
+ add_severity=SeverityType.SAFE,
70
+ remove_severity=SeverityType.WARNING,
71
+ differ=IndexDiffer("indexes"),
72
+ )
73
+ )
74
+
75
+ return changes
76
+
77
+
78
+ class ContainerPropertyDiffer(ObjectDiffer[ContainerPropertyDefinition]):
79
+ def diff(
80
+ self, current: ContainerPropertyDefinition, new: ContainerPropertyDefinition, identifier: str
81
+ ) -> list[FieldChange]:
82
+ changes = self._diff_name_description(current, new, identifier=identifier)
83
+ diffs = DataTypeDiffer(self._get_path(f"{identifier}.type")).diff(current.type, new.type)
84
+ if diffs:
85
+ changes.append(FieldChanges(field_path=self._get_path(f"{identifier}.type"), changes=diffs))
86
+
87
+ if current.immutable != new.immutable:
88
+ changes.append(
89
+ ChangedField(
90
+ item_severity=SeverityType.WARNING,
91
+ field_path=self._get_path(f"{identifier}.immutable"),
92
+ current_value=current.immutable,
93
+ new_value=new.immutable,
94
+ )
95
+ )
96
+
97
+ if current.nullable != new.nullable:
98
+ changes.append(
99
+ ChangedField(
100
+ item_severity=SeverityType.BREAKING,
101
+ field_path=self._get_path(f"{identifier}.nullable"),
102
+ current_value=current.nullable,
103
+ new_value=new.nullable,
104
+ )
105
+ )
106
+ if current.auto_increment != new.auto_increment:
107
+ changes.append(
108
+ ChangedField(
109
+ item_severity=SeverityType.WARNING,
110
+ field_path=self._get_path(f"{identifier}.autoIncrement"),
111
+ current_value=current.auto_increment,
112
+ new_value=new.auto_increment,
113
+ )
114
+ )
115
+
116
+ if current.default_value != new.default_value:
117
+ changes.append(
118
+ ChangedField(
119
+ item_severity=SeverityType.WARNING,
120
+ field_path=self._get_path(f"{identifier}.defaultValue"),
121
+ current_value=str(current.default_value),
122
+ new_value=str(new.default_value),
123
+ )
124
+ )
125
+ return changes
126
+
127
+
128
+ class ConstraintDiffer(ObjectDiffer[ConstraintDefinition]):
129
+ def diff(self, current: ConstraintDefinition, new: ConstraintDefinition, identifier: str) -> list[FieldChange]:
130
+ changes: list[FieldChange] = []
131
+ if current.constraint_type != new.constraint_type:
132
+ changes.append(
133
+ ChangedField(
134
+ item_severity=SeverityType.BREAKING,
135
+ field_path=self._get_path(f"{identifier}.constraintType"),
136
+ current_value=current.constraint_type,
137
+ new_value=new.constraint_type,
138
+ )
139
+ )
140
+ if (
141
+ isinstance(current, RequiresConstraintDefinition)
142
+ and isinstance(new, RequiresConstraintDefinition)
143
+ and current.require != new.require
144
+ ):
145
+ changes.append(
146
+ ChangedField(
147
+ item_severity=SeverityType.BREAKING,
148
+ field_path=self._get_path(f"{identifier}.require"),
149
+ current_value=str(current.require),
150
+ new_value=str(new.require),
151
+ )
152
+ )
153
+ elif isinstance(current, UniquenessConstraintDefinition) and isinstance(new, UniquenessConstraintDefinition):
154
+ # The order of the properties matter.
155
+ if current.properties != new.properties:
156
+ changes.append(
157
+ ChangedField(
158
+ item_severity=SeverityType.BREAKING,
159
+ field_path=self._get_path(f"{identifier}.properties"),
160
+ current_value=str(current.properties),
161
+ new_value=str(new.properties),
162
+ )
163
+ )
164
+ if current.by_space != new.by_space:
165
+ changes.append(
166
+ ChangedField(
167
+ item_severity=SeverityType.BREAKING,
168
+ field_path=self._get_path(f"{identifier}.bySpace"),
169
+ current_value=current.by_space,
170
+ new_value=new.by_space,
171
+ )
172
+ )
173
+ return changes
174
+ return changes
175
+
176
+
177
+ class IndexDiffer(ObjectDiffer[IndexDefinition]):
178
+ def diff(self, current: IndexDefinition, new: IndexDefinition, identifier: str) -> list[FieldChange]:
179
+ changes: list[FieldChange] = []
180
+ if current.index_type != new.index_type:
181
+ changes.append(
182
+ ChangedField(
183
+ item_severity=SeverityType.BREAKING,
184
+ field_path=self._get_path(f"{identifier}.indexType"),
185
+ current_value=current.index_type,
186
+ new_value=new.index_type,
187
+ )
188
+ )
189
+ else:
190
+ if current.properties != new.properties:
191
+ changes.append(
192
+ ChangedField(
193
+ item_severity=SeverityType.BREAKING,
194
+ field_path=self._get_path(f"{identifier}.properties"),
195
+ current_value=str(current.properties),
196
+ new_value=str(new.properties),
197
+ )
198
+ )
199
+ if isinstance(current, BtreeIndex) and isinstance(new, BtreeIndex):
200
+ if current.cursorable != new.cursorable:
201
+ changes.append(
202
+ ChangedField(
203
+ item_severity=SeverityType.BREAKING,
204
+ field_path=self._get_path(f"{identifier}.cursorable"),
205
+ current_value=current.cursorable,
206
+ new_value=new.cursorable,
207
+ )
208
+ )
209
+ if current.by_space != new.by_space:
210
+ changes.append(
211
+ ChangedField(
212
+ item_severity=SeverityType.BREAKING,
213
+ field_path=self._get_path(f"{identifier}.bySpace"),
214
+ current_value=current.by_space,
215
+ new_value=new.by_space,
216
+ )
217
+ )
218
+ return changes
219
+
220
+
221
+ class DataTypeDiffer(ItemDiffer[PropertyTypeDefinition]):
222
+ def diff(self, current: PropertyTypeDefinition, new: PropertyTypeDefinition) -> list[FieldChange]:
223
+ changes: list[FieldChange] = []
224
+ if current.type != new.type:
225
+ changes.append(
226
+ ChangedField(
227
+ item_severity=SeverityType.BREAKING,
228
+ field_path=self._get_path("type"),
229
+ current_value=current.type,
230
+ new_value=new.type,
231
+ )
232
+ )
233
+ if isinstance(current, ListablePropertyTypeDefinition) and isinstance(new, ListablePropertyTypeDefinition):
234
+ changes.extend(self._diff_listable_property(current, new))
235
+
236
+ if isinstance(current, TextProperty) and isinstance(new, TextProperty):
237
+ changes.extend(self._diff_text_property(current, new))
238
+
239
+ if isinstance(current, FloatProperty) and isinstance(new, FloatProperty):
240
+ changes.extend(self._diff_float_unit(current.unit, new.unit))
241
+
242
+ if isinstance(current, EnumProperty) and isinstance(new, EnumProperty):
243
+ changes.extend(self._diff_enum_property(current, new))
244
+
245
+ return changes
246
+
247
+ def _diff_listable_property(
248
+ self, current: ListablePropertyTypeDefinition, new: ListablePropertyTypeDefinition
249
+ ) -> list[FieldChange]:
250
+ changes: list[FieldChange] = []
251
+ if current.list != new.list:
252
+ changes.append(
253
+ ChangedField(
254
+ item_severity=SeverityType.BREAKING,
255
+ field_path=self._get_path("list"),
256
+ current_value=current.list,
257
+ new_value=new.list,
258
+ )
259
+ )
260
+ if current.max_list_size != new.max_list_size:
261
+ changes.append(
262
+ ChangedField(
263
+ item_severity=SeverityType.BREAKING
264
+ if new.max_list_size is not None
265
+ and current.max_list_size is not None
266
+ and new.max_list_size < current.max_list_size
267
+ else SeverityType.WARNING,
268
+ field_path=self._get_path("maxListSize"),
269
+ current_value=current.max_list_size,
270
+ new_value=new.max_list_size,
271
+ )
272
+ )
273
+ return changes
274
+
275
+ def _diff_float_unit(self, current: Unit | None, new: Unit | None) -> list[FieldChange]:
276
+ if current is not None and new is None:
277
+ return [
278
+ RemovedField(
279
+ field_path=self._get_path("unit"), item_severity=SeverityType.WARNING, current_value=current
280
+ )
281
+ ]
282
+ elif current is None and new is not None:
283
+ return [AddedField(field_path=self._get_path("unit"), item_severity=SeverityType.WARNING, new_value=new)]
284
+ elif current is not None and new is not None:
285
+ changes: list[FieldChange] = []
286
+ if current.external_id != new.external_id:
287
+ changes.append(
288
+ ChangedField(
289
+ item_severity=SeverityType.WARNING,
290
+ field_path=self._get_path("unit.externalId"),
291
+ current_value=current.external_id,
292
+ new_value=new.external_id,
293
+ )
294
+ )
295
+ if current.source_unit != new.source_unit:
296
+ changes.append(
297
+ ChangedField(
298
+ item_severity=SeverityType.WARNING,
299
+ field_path=self._get_path("unit.sourceUnit"),
300
+ current_value=current.source_unit,
301
+ new_value=new.source_unit,
302
+ )
303
+ )
304
+ if changes:
305
+ return [FieldChanges(field_path=self._get_path("unit"), changes=changes)]
306
+ return [] # No changes
307
+
308
+ def _diff_text_property(self, current: TextProperty, new: TextProperty) -> list[FieldChange]:
309
+ changes: list[FieldChange] = []
310
+ if current.max_text_size != new.max_text_size:
311
+ changes.append(
312
+ ChangedField(
313
+ item_severity=SeverityType.BREAKING
314
+ if new.max_text_size is not None
315
+ and current.max_text_size is not None
316
+ and new.max_text_size < current.max_text_size
317
+ else SeverityType.WARNING,
318
+ field_path=self._get_path("maxTextSize"),
319
+ current_value=current.max_text_size,
320
+ new_value=new.max_text_size,
321
+ )
322
+ )
323
+ if current.collation != new.collation:
324
+ changes.append(
325
+ ChangedField(
326
+ item_severity=SeverityType.BREAKING,
327
+ field_path=self._get_path("collation"),
328
+ current_value=current.collation,
329
+ new_value=new.collation,
330
+ )
331
+ )
332
+ return changes
333
+
334
+ def _diff_enum_property(self, current: EnumProperty, new: EnumProperty) -> list[FieldChange]:
335
+ changes: list[FieldChange] = []
336
+ if current.unknown_value != new.unknown_value:
337
+ changes.append(
338
+ ChangedField(
339
+ item_severity=SeverityType.WARNING,
340
+ field_path=self._get_path("unknownValue"),
341
+ current_value=current.unknown_value,
342
+ new_value=new.unknown_value,
343
+ )
344
+ )
345
+ changes.extend(
346
+ field_differences(
347
+ self._get_path("values"),
348
+ current.values,
349
+ new.values,
350
+ add_severity=SeverityType.SAFE,
351
+ remove_severity=SeverityType.BREAKING,
352
+ differ=EnumValueDiffer(self._get_path("values")),
353
+ )
354
+ )
355
+ return changes
356
+
357
+
358
+ class EnumValueDiffer(ObjectDiffer[EnumValue]):
359
+ def diff(self, current: EnumValue, new: EnumValue, identifier: str) -> list[FieldChange]:
360
+ return self._diff_name_description(current, new, identifier=identifier)
@@ -0,0 +1,54 @@
1
+ from cognite.neat._data_model.models.dms import (
2
+ DataModelRequest,
3
+ )
4
+
5
+ from ._differ import ItemDiffer
6
+ from .data_classes import (
7
+ AddedField,
8
+ ChangedField,
9
+ FieldChange,
10
+ RemovedField,
11
+ SeverityType,
12
+ )
13
+
14
+
15
+ class DataModelDiffer(ItemDiffer[DataModelRequest]):
16
+ def diff(self, current: DataModelRequest, new: DataModelRequest) -> list[FieldChange]:
17
+ changes: list[FieldChange] = self._diff_name_description(current, new)
18
+ if current.views != new.views:
19
+ # Added views
20
+ current_views = set(current.views or [])
21
+ for new_view in new.views or []:
22
+ if new_view not in current_views:
23
+ changes.append(
24
+ AddedField(
25
+ item_severity=SeverityType.SAFE,
26
+ field_path="views",
27
+ new_value=new_view,
28
+ )
29
+ )
30
+
31
+ # Removed views
32
+ new_views = set(new.views or [])
33
+ for current_view in current.views or []:
34
+ if current_view not in new_views:
35
+ changes.append(
36
+ RemovedField(
37
+ item_severity=SeverityType.BREAKING,
38
+ field_path="views",
39
+ current_value=current_view,
40
+ )
41
+ )
42
+
43
+ if not changes:
44
+ # If there are no added or removed views, it means the order has changed
45
+ changes.append(
46
+ ChangedField(
47
+ item_severity=SeverityType.SAFE,
48
+ field_path="views",
49
+ current_value=str(current.views),
50
+ new_value=str(new.views),
51
+ )
52
+ )
53
+
54
+ return changes
@@ -0,0 +1,9 @@
1
+ from cognite.neat._data_model.models.dms import SpaceRequest
2
+
3
+ from ._differ import ItemDiffer
4
+ from .data_classes import FieldChange
5
+
6
+
7
+ class SpaceDiffer(ItemDiffer[SpaceRequest]):
8
+ def diff(self, cdf_space: SpaceRequest, desired_space: SpaceRequest) -> list[FieldChange]:
9
+ return self._diff_name_description(cdf_space, desired_space)