cognite-neat 0.96.3__tar.gz → 0.96.5__tar.gz

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

Potentially problematic release.


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

Files changed (278) hide show
  1. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/PKG-INFO +1 -1
  2. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_issues/_base.py +5 -1
  3. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_rules/exporters/_base.py +5 -3
  4. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_rules/exporters/_rules2dms.py +61 -9
  5. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_rules/models/dms/_rules.py +3 -1
  6. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_rules/models/entities/_single_value.py +3 -3
  7. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_session/_to.py +10 -2
  8. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_utils/cdf/loaders/_base.py +1 -1
  9. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_utils/cdf/loaders/_data_modeling.py +24 -8
  10. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_utils/cdf/loaders/_ingestion.py +26 -10
  11. cognite_neat-0.96.5/cognite/neat/_version.py +1 -0
  12. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/pyproject.toml +1 -1
  13. cognite_neat-0.96.3/cognite/neat/_version.py +0 -1
  14. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/LICENSE +0 -0
  15. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/README.md +0 -0
  16. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/__init__.py +0 -0
  17. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_app/api/__init__.py +0 -0
  18. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_app/api/asgi/metrics.py +0 -0
  19. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_app/api/configuration.py +0 -0
  20. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_app/api/context_manager/__init__.py +0 -0
  21. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_app/api/context_manager/manager.py +0 -0
  22. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_app/api/data_classes/__init__.py +0 -0
  23. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_app/api/data_classes/rest.py +0 -0
  24. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_app/api/explorer.py +0 -0
  25. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_app/api/routers/configuration.py +0 -0
  26. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_app/api/routers/crud.py +0 -0
  27. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_app/api/routers/metrics.py +0 -0
  28. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_app/api/routers/workflows.py +0 -0
  29. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_app/api/utils/__init__.py +0 -0
  30. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_app/api/utils/data_mapping.py +0 -0
  31. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_app/api/utils/logging.py +0 -0
  32. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_app/api/utils/query_templates.py +0 -0
  33. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_app/main.py +0 -0
  34. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_app/monitoring/__init__.py +0 -0
  35. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_app/monitoring/metrics.py +0 -0
  36. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_app/ui/index.html +0 -0
  37. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_app/ui/neat-app/.gitignore +0 -0
  38. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_app/ui/neat-app/README.md +0 -0
  39. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_app/ui/neat-app/build/asset-manifest.json +0 -0
  40. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_app/ui/neat-app/build/favicon.ico +0 -0
  41. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_app/ui/neat-app/build/img/architect-icon.svg +0 -0
  42. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_app/ui/neat-app/build/img/developer-icon.svg +0 -0
  43. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_app/ui/neat-app/build/img/sme-icon.svg +0 -0
  44. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_app/ui/neat-app/build/index.html +0 -0
  45. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_app/ui/neat-app/build/logo192.png +0 -0
  46. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_app/ui/neat-app/build/manifest.json +0 -0
  47. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_app/ui/neat-app/build/robots.txt +0 -0
  48. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_app/ui/neat-app/build/static/css/main.72e3d92e.css +0 -0
  49. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_app/ui/neat-app/build/static/css/main.72e3d92e.css.map +0 -0
  50. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_app/ui/neat-app/build/static/js/main.5a52cf09.js +0 -0
  51. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_app/ui/neat-app/build/static/js/main.5a52cf09.js.LICENSE.txt +0 -0
  52. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_app/ui/neat-app/build/static/js/main.5a52cf09.js.map +0 -0
  53. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_app/ui/neat-app/build/static/media/logo.8093b84df9ed36a174c629d6fe0b730d.svg +0 -0
  54. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_app/ui/neat-app/package-lock.json +0 -0
  55. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_app/ui/neat-app/package.json +0 -0
  56. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_app/ui/neat-app/public/favicon.ico +0 -0
  57. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_app/ui/neat-app/public/img/architect-icon.svg +0 -0
  58. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_app/ui/neat-app/public/img/developer-icon.svg +0 -0
  59. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_app/ui/neat-app/public/img/sme-icon.svg +0 -0
  60. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_app/ui/neat-app/public/index.html +0 -0
  61. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_app/ui/neat-app/public/logo192.png +0 -0
  62. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_app/ui/neat-app/public/manifest.json +0 -0
  63. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_app/ui/neat-app/public/robots.txt +0 -0
  64. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_app/ui/neat-app/src/App.css +0 -0
  65. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_app/ui/neat-app/src/App.js +0 -0
  66. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_app/ui/neat-app/src/App.test.js +0 -0
  67. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_app/ui/neat-app/src/MainContainer.tsx +0 -0
  68. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_app/ui/neat-app/src/components/JsonViewer.tsx +0 -0
  69. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_app/ui/neat-app/src/components/LocalUploader.tsx +0 -0
  70. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_app/ui/neat-app/src/components/OverviewComponentEditorDialog.tsx +0 -0
  71. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_app/ui/neat-app/src/components/StepEditorDialog.tsx +0 -0
  72. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_app/ui/neat-app/src/components/TabPanel.tsx +0 -0
  73. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_app/ui/neat-app/src/components/Utils.tsx +0 -0
  74. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_app/ui/neat-app/src/components/WorkflowDeleteDialog.tsx +0 -0
  75. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_app/ui/neat-app/src/components/WorkflowExecutionReport.tsx +0 -0
  76. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_app/ui/neat-app/src/components/WorkflowImportExportDialog.tsx +0 -0
  77. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_app/ui/neat-app/src/components/WorkflowMetadataDialog.tsx +0 -0
  78. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_app/ui/neat-app/src/index.css +0 -0
  79. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_app/ui/neat-app/src/index.js +0 -0
  80. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_app/ui/neat-app/src/logo.svg +0 -0
  81. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_app/ui/neat-app/src/reportWebVitals.js +0 -0
  82. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_app/ui/neat-app/src/setupTests.js +0 -0
  83. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_app/ui/neat-app/src/types/WorkflowTypes.ts +0 -0
  84. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_app/ui/neat-app/src/views/AboutView.tsx +0 -0
  85. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_app/ui/neat-app/src/views/ConfigView.tsx +0 -0
  86. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_app/ui/neat-app/src/views/GlobalConfigView.tsx +0 -0
  87. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_app/ui/neat-app/src/views/WorkflowView.tsx +0 -0
  88. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_app/ui/neat-app/tsconfig.json +0 -0
  89. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_config.py +0 -0
  90. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_constants.py +0 -0
  91. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_graph/__init__.py +0 -0
  92. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_graph/_shared.py +0 -0
  93. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_graph/_tracking/__init__.py +0 -0
  94. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_graph/_tracking/base.py +0 -0
  95. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_graph/_tracking/log.py +0 -0
  96. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_graph/examples/Knowledge-Graph-Nordic44-dirty.xml +0 -0
  97. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_graph/examples/Knowledge-Graph-Nordic44.xml +0 -0
  98. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_graph/examples/__init__.py +0 -0
  99. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_graph/examples/skos-capturing-sheet-wind-topics.xlsx +0 -0
  100. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_graph/extractors/__init__.py +0 -0
  101. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_graph/extractors/_base.py +0 -0
  102. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_graph/extractors/_classic_cdf/__init__.py +0 -0
  103. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_graph/extractors/_classic_cdf/_assets.py +0 -0
  104. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_graph/extractors/_classic_cdf/_base.py +0 -0
  105. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_graph/extractors/_classic_cdf/_classic.py +0 -0
  106. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_graph/extractors/_classic_cdf/_data_sets.py +0 -0
  107. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_graph/extractors/_classic_cdf/_events.py +0 -0
  108. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_graph/extractors/_classic_cdf/_files.py +0 -0
  109. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_graph/extractors/_classic_cdf/_labels.py +0 -0
  110. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_graph/extractors/_classic_cdf/_relationships.py +0 -0
  111. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_graph/extractors/_classic_cdf/_sequences.py +0 -0
  112. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_graph/extractors/_classic_cdf/_timeseries.py +0 -0
  113. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_graph/extractors/_dexpi.py +0 -0
  114. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_graph/extractors/_dms.py +0 -0
  115. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_graph/extractors/_iodd.py +0 -0
  116. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_graph/extractors/_mock_graph_generator.py +0 -0
  117. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_graph/extractors/_rdf_file.py +0 -0
  118. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_graph/loaders/__init__.py +0 -0
  119. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_graph/loaders/_base.py +0 -0
  120. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_graph/loaders/_rdf2asset.py +0 -0
  121. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_graph/loaders/_rdf2dms.py +0 -0
  122. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_graph/models.py +0 -0
  123. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_graph/queries/__init__.py +0 -0
  124. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_graph/queries/_base.py +0 -0
  125. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_graph/queries/_construct.py +0 -0
  126. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_graph/queries/_shared.py +0 -0
  127. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_graph/transformers/__init__.py +0 -0
  128. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_graph/transformers/_base.py +0 -0
  129. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_graph/transformers/_classic_cdf.py +0 -0
  130. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_graph/transformers/_iodd.py +0 -0
  131. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_graph/transformers/_prune_graph.py +0 -0
  132. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_graph/transformers/_rdfpath.py +0 -0
  133. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_graph/transformers/_value_type.py +0 -0
  134. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_issues/__init__.py +0 -0
  135. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_issues/errors/__init__.py +0 -0
  136. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_issues/errors/_external.py +0 -0
  137. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_issues/errors/_general.py +0 -0
  138. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_issues/errors/_properties.py +0 -0
  139. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_issues/errors/_resources.py +0 -0
  140. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_issues/errors/_workflow.py +0 -0
  141. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_issues/formatters.py +0 -0
  142. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_issues/warnings/__init__.py +0 -0
  143. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_issues/warnings/_external.py +0 -0
  144. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_issues/warnings/_general.py +0 -0
  145. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_issues/warnings/_models.py +0 -0
  146. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_issues/warnings/_properties.py +0 -0
  147. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_issues/warnings/_resources.py +0 -0
  148. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_issues/warnings/user_modeling.py +0 -0
  149. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_rules/__init__.py +0 -0
  150. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_rules/_constants.py +0 -0
  151. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_rules/_shared.py +0 -0
  152. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_rules/analysis/__init__.py +0 -0
  153. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_rules/analysis/_asset.py +0 -0
  154. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_rules/analysis/_base.py +0 -0
  155. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_rules/analysis/_dms.py +0 -0
  156. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_rules/analysis/_information.py +0 -0
  157. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_rules/catalog/__init__.py +0 -0
  158. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_rules/catalog/info-rules-imf.xlsx +0 -0
  159. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_rules/exporters/__init__.py +0 -0
  160. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_rules/exporters/_rules2excel.py +0 -0
  161. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_rules/exporters/_rules2instance_template.py +0 -0
  162. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_rules/exporters/_rules2ontology.py +0 -0
  163. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_rules/exporters/_rules2yaml.py +0 -0
  164. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_rules/exporters/_validation.py +0 -0
  165. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_rules/importers/__init__.py +0 -0
  166. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_rules/importers/_base.py +0 -0
  167. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_rules/importers/_dms2rules.py +0 -0
  168. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_rules/importers/_dtdl2rules/__init__.py +0 -0
  169. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_rules/importers/_dtdl2rules/_unit_lookup.py +0 -0
  170. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_rules/importers/_dtdl2rules/dtdl_converter.py +0 -0
  171. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_rules/importers/_dtdl2rules/dtdl_importer.py +0 -0
  172. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_rules/importers/_dtdl2rules/spec.py +0 -0
  173. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_rules/importers/_rdf/__init__.py +0 -0
  174. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_rules/importers/_rdf/_base.py +0 -0
  175. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_rules/importers/_rdf/_imf2rules/__init__.py +0 -0
  176. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_rules/importers/_rdf/_imf2rules/_imf2classes.py +0 -0
  177. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_rules/importers/_rdf/_imf2rules/_imf2metadata.py +0 -0
  178. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_rules/importers/_rdf/_imf2rules/_imf2properties.py +0 -0
  179. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_rules/importers/_rdf/_imf2rules/_imf2rules.py +0 -0
  180. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_rules/importers/_rdf/_inference2rules.py +0 -0
  181. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_rules/importers/_rdf/_owl2rules/__init__.py +0 -0
  182. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_rules/importers/_rdf/_owl2rules/_owl2classes.py +0 -0
  183. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_rules/importers/_rdf/_owl2rules/_owl2metadata.py +0 -0
  184. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_rules/importers/_rdf/_owl2rules/_owl2properties.py +0 -0
  185. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_rules/importers/_rdf/_owl2rules/_owl2rules.py +0 -0
  186. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_rules/importers/_rdf/_shared.py +0 -0
  187. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_rules/importers/_spreadsheet2rules.py +0 -0
  188. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_rules/importers/_yaml2rules.py +0 -0
  189. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_rules/models/__init__.py +0 -0
  190. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_rules/models/_base_input.py +0 -0
  191. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_rules/models/_base_rules.py +0 -0
  192. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_rules/models/_rdfpath.py +0 -0
  193. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_rules/models/_types.py +0 -0
  194. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_rules/models/asset/__init__.py +0 -0
  195. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_rules/models/asset/_rules.py +0 -0
  196. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_rules/models/asset/_rules_input.py +0 -0
  197. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_rules/models/asset/_validation.py +0 -0
  198. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_rules/models/data_types.py +0 -0
  199. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_rules/models/dms/__init__.py +0 -0
  200. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_rules/models/dms/_exporter.py +0 -0
  201. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_rules/models/dms/_rules_input.py +0 -0
  202. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_rules/models/dms/_schema.py +0 -0
  203. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_rules/models/dms/_validation.py +0 -0
  204. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_rules/models/domain.py +0 -0
  205. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_rules/models/entities/__init__.py +0 -0
  206. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_rules/models/entities/_constants.py +0 -0
  207. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_rules/models/entities/_loaders.py +0 -0
  208. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_rules/models/entities/_multi_value.py +0 -0
  209. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_rules/models/entities/_types.py +0 -0
  210. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_rules/models/entities/_wrapped.py +0 -0
  211. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_rules/models/information/__init__.py +0 -0
  212. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_rules/models/information/_rules.py +0 -0
  213. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_rules/models/information/_rules_input.py +0 -0
  214. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_rules/models/information/_validation.py +0 -0
  215. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_rules/models/mapping/__init__.py +0 -0
  216. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_rules/models/mapping/_base.py +0 -0
  217. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_rules/models/mapping/_classic2core.py +0 -0
  218. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_rules/transformers/__init__.py +0 -0
  219. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_rules/transformers/_base.py +0 -0
  220. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_rules/transformers/_converters.py +0 -0
  221. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_rules/transformers/_mapping.py +0 -0
  222. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_rules/transformers/_pipelines.py +0 -0
  223. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_rules/transformers/_verification.py +0 -0
  224. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_session/__init__.py +0 -0
  225. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_session/_base.py +0 -0
  226. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_session/_inspect.py +0 -0
  227. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_session/_prepare.py +0 -0
  228. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_session/_read.py +0 -0
  229. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_session/_set.py +0 -0
  230. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_session/_show.py +0 -0
  231. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_session/_state.py +0 -0
  232. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_session/_wizard.py +0 -0
  233. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_session/exceptions.py +0 -0
  234. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_shared.py +0 -0
  235. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_store/__init__.py +0 -0
  236. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_store/_base.py +0 -0
  237. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_store/_provenance.py +0 -0
  238. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_utils/__init__.py +0 -0
  239. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_utils/auth.py +0 -0
  240. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_utils/auxiliary.py +0 -0
  241. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_utils/cdf/__init__.py +0 -0
  242. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_utils/cdf/data_classes.py +0 -0
  243. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_utils/cdf/loaders/__init__.py +0 -0
  244. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_utils/collection_.py +0 -0
  245. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_utils/rdf_.py +0 -0
  246. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_utils/spreadsheet.py +0 -0
  247. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_utils/text.py +0 -0
  248. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_utils/time_.py +0 -0
  249. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_utils/upload.py +0 -0
  250. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_utils/xml_.py +0 -0
  251. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_workflows/__init__.py +0 -0
  252. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_workflows/base.py +0 -0
  253. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_workflows/cdf_store.py +0 -0
  254. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_workflows/examples/Export_DMS/workflow.yaml +0 -0
  255. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_workflows/examples/Export_Semantic_Data_Model/workflow.yaml +0 -0
  256. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_workflows/examples/Import_DMS/workflow.yaml +0 -0
  257. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_workflows/examples/Validate_Rules/workflow.yaml +0 -0
  258. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_workflows/examples/Validate_Solution_Model/workflow.yaml +0 -0
  259. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_workflows/manager.py +0 -0
  260. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_workflows/model.py +0 -0
  261. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_workflows/steps/__init__.py +0 -0
  262. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_workflows/steps/data_contracts.py +0 -0
  263. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_workflows/steps/lib/__init__.py +0 -0
  264. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_workflows/steps/lib/current/__init__.py +0 -0
  265. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_workflows/steps/lib/current/graph_extractor.py +0 -0
  266. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_workflows/steps/lib/current/graph_loader.py +0 -0
  267. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_workflows/steps/lib/current/graph_store.py +0 -0
  268. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_workflows/steps/lib/current/rules_exporter.py +0 -0
  269. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_workflows/steps/lib/current/rules_importer.py +0 -0
  270. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_workflows/steps/lib/current/rules_validator.py +0 -0
  271. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_workflows/steps/lib/io/__init__.py +0 -0
  272. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_workflows/steps/lib/io/io_steps.py +0 -0
  273. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_workflows/steps/step_model.py +0 -0
  274. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_workflows/steps_registry.py +0 -0
  275. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_workflows/tasks.py +0 -0
  276. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_workflows/triggers.py +0 -0
  277. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/_workflows/utils.py +0 -0
  278. {cognite_neat-0.96.3 → cognite_neat-0.96.5}/cognite/neat/py.typed +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: cognite-neat
3
- Version: 0.96.3
3
+ Version: 0.96.5
4
4
  Summary: Knowledge graph transformation
5
5
  Home-page: https://cognite-neat.readthedocs-hosted.com/
6
6
  License: Apache-2.0
@@ -109,7 +109,11 @@ class NeatIssue:
109
109
  def dump(self) -> dict[str, Any]:
110
110
  """Return a dictionary representation of the issue."""
111
111
  variables = vars(self)
112
- output = {to_camel(key): self._dump_value(value) for key, value in variables.items() if value is not None}
112
+ output = {
113
+ to_camel(key): self._dump_value(value)
114
+ for key, value in variables.items()
115
+ if not (value is None or key.startswith("_"))
116
+ }
113
117
  output["NeatIssue"] = type(self).__name__
114
118
  return output
115
119
 
@@ -32,9 +32,11 @@ class BaseExporter(ABC, Generic[T_VerifiedRules, T_Export]):
32
32
  class CDFExporter(BaseExporter[T_VerifiedRules, T_Export]):
33
33
  @abstractmethod
34
34
  def export_to_cdf_iterable(
35
- self, rules: T_VerifiedRules, client: CogniteClient, dry_run: bool = False
35
+ self, rules: T_VerifiedRules, client: CogniteClient, dry_run: bool = False, fallback_one_by_one: bool = False
36
36
  ) -> Iterable[UploadResult]:
37
37
  raise NotImplementedError
38
38
 
39
- def export_to_cdf(self, rules: T_VerifiedRules, client: CogniteClient, dry_run: bool = False) -> UploadResultList:
40
- return UploadResultList(self.export_to_cdf_iterable(rules, client, dry_run))
39
+ def export_to_cdf(
40
+ self, rules: T_VerifiedRules, client: CogniteClient, dry_run: bool = False, fallback_one_by_one: bool = False
41
+ ) -> UploadResultList:
42
+ return UploadResultList(self.export_to_cdf_iterable(rules, client, dry_run, fallback_one_by_one))
@@ -118,12 +118,16 @@ class DMSExporter(CDFExporter[DMSRules, DMSSchema]):
118
118
  def export(self, rules: DMSRules) -> DMSSchema:
119
119
  return rules.as_schema(include_pipeline=self.export_pipeline, instance_space=self.instance_space)
120
120
 
121
- def delete_from_cdf(self, rules: DMSRules, client: CogniteClient, dry_run: bool = False) -> Iterable[UploadResult]:
121
+ def delete_from_cdf(
122
+ self, rules: DMSRules, client: CogniteClient, dry_run: bool = False, skip_space: bool = False
123
+ ) -> Iterable[UploadResult]:
122
124
  to_export = self._prepare_exporters(rules, client)
123
125
 
124
126
  # we need to reverse order in which we are picking up the items to delete
125
127
  # as they are sorted in the order of creation and we need to delete them in reverse order
126
128
  for items, loader in reversed(to_export):
129
+ if skip_space and isinstance(loader, SpaceLoader):
130
+ continue
127
131
  item_ids = loader.get_ids(items)
128
132
  existing_items = loader.retrieve(item_ids)
129
133
  existing_ids = loader.get_ids(existing_items)
@@ -162,10 +166,15 @@ class DMSExporter(CDFExporter[DMSRules, DMSSchema]):
162
166
  )
163
167
 
164
168
  def export_to_cdf_iterable(
165
- self, rules: DMSRules, client: CogniteClient, dry_run: bool = False
169
+ self, rules: DMSRules, client: CogniteClient, dry_run: bool = False, fallback_one_by_one: bool = False
166
170
  ) -> Iterable[UploadResult]:
167
171
  to_export = self._prepare_exporters(rules, client)
168
172
 
173
+ result_by_name = {}
174
+ if self.existing_handling == "force":
175
+ for delete_result in self.delete_from_cdf(rules, client, dry_run, skip_space=True):
176
+ result_by_name[delete_result.name] = delete_result
177
+
169
178
  redeploy_data_model = False
170
179
  for items, loader in to_export:
171
180
  # The conversion from DMS to GraphQL does not seem to be triggered even if the views
@@ -183,8 +192,10 @@ class DMSExporter(CDFExporter[DMSRules, DMSSchema]):
183
192
  created: set[Hashable] = set()
184
193
  skipped: set[Hashable] = set()
185
194
  changed: set[Hashable] = set()
195
+ deleted: set[Hashable] = set()
186
196
  failed_created: set[Hashable] = set()
187
197
  failed_changed: set[Hashable] = set()
198
+ failed_deleted: set[Hashable] = set()
188
199
  error_messages: list[str] = []
189
200
  if dry_run:
190
201
  if self.existing_handling in ["update", "force"]:
@@ -200,7 +211,20 @@ class DMSExporter(CDFExporter[DMSRules, DMSSchema]):
200
211
  try:
201
212
  loader.delete(to_delete)
202
213
  except CogniteAPIError as e:
203
- error_messages.append(f"Failed delete: {e.message}")
214
+ if fallback_one_by_one:
215
+ for item in to_delete:
216
+ try:
217
+ loader.delete([item])
218
+ except CogniteAPIError as item_e:
219
+ failed_deleted.add(loader.get_id(item))
220
+ error_messages.append(f"Failed delete: {item_e!s}")
221
+ else:
222
+ deleted.add(loader.get_id(item))
223
+ else:
224
+ error_messages.append(f"Failed delete: {e!s}")
225
+ failed_deleted.update(loader.get_id(item) for item in e.failed + e.unknown)
226
+ else:
227
+ deleted.update(loader.get_id(item) for item in to_delete)
204
228
 
205
229
  if isinstance(loader, DataModelingLoader):
206
230
  to_create = loader.sort_by_dependencies(to_create)
@@ -208,9 +232,19 @@ class DMSExporter(CDFExporter[DMSRules, DMSSchema]):
208
232
  try:
209
233
  loader.create(to_create)
210
234
  except CogniteAPIError as e:
211
- failed_created.update(loader.get_id(item) for item in e.failed + e.unknown)
212
- created.update(loader.get_id(item) for item in e.successful)
213
- error_messages.append(e.message)
235
+ if fallback_one_by_one:
236
+ for item in to_create:
237
+ try:
238
+ loader.create([item])
239
+ except CogniteAPIError as item_e:
240
+ failed_created.add(loader.get_id(item))
241
+ error_messages.append(f"Failed create: {item_e!s}")
242
+ else:
243
+ created.add(loader.get_id(item))
244
+ else:
245
+ failed_created.update(loader.get_id(item) for item in e.failed + e.unknown)
246
+ created.update(loader.get_id(item) for item in e.successful)
247
+ error_messages.append(f"Failed create: {e!s}")
214
248
  else:
215
249
  created.update(loader.get_id(item) for item in to_create)
216
250
 
@@ -218,9 +252,19 @@ class DMSExporter(CDFExporter[DMSRules, DMSSchema]):
218
252
  try:
219
253
  loader.update(to_update)
220
254
  except CogniteAPIError as e:
221
- failed_changed.update(loader.get_id(item) for item in e.failed + e.unknown)
222
- changed.update(loader.get_id(item) for item in e.successful)
223
- error_messages.append(e.message)
255
+ if fallback_one_by_one:
256
+ for item in to_update:
257
+ try:
258
+ loader.update([item])
259
+ except CogniteAPIError as e_item:
260
+ failed_changed.add(loader.get_id(item))
261
+ error_messages.append(f"Failed update: {e_item!s}")
262
+ else:
263
+ changed.add(loader.get_id(item))
264
+ else:
265
+ failed_changed.update(loader.get_id(item) for item in e.failed + e.unknown)
266
+ changed.update(loader.get_id(item) for item in e.successful)
267
+ error_messages.append(f"Failed update: {e!s}")
224
268
  else:
225
269
  changed.update(loader.get_id(item) for item in to_update)
226
270
  elif self.existing_handling == "skip":
@@ -228,14 +272,22 @@ class DMSExporter(CDFExporter[DMSRules, DMSSchema]):
228
272
  elif self.existing_handling == "fail":
229
273
  failed_changed.update(loader.get_id(item) for item in to_update)
230
274
 
275
+ if loader.resource_name in result_by_name:
276
+ delete_result = result_by_name[loader.resource_name]
277
+ deleted.update(delete_result.deleted)
278
+ failed_deleted.update(delete_result.failed_deleted)
279
+ error_messages.extend(delete_result.error_messages)
280
+
231
281
  yield UploadResult(
232
282
  name=loader.resource_name,
233
283
  created=created,
234
284
  changed=changed,
285
+ deleted=deleted,
235
286
  unchanged={loader.get_id(item) for item in unchanged},
236
287
  skipped=skipped,
237
288
  failed_created=failed_created,
238
289
  failed_changed=failed_changed,
290
+ failed_deleted=failed_deleted,
239
291
  error_messages=error_messages,
240
292
  issues=issue_list,
241
293
  )
@@ -231,7 +231,9 @@ class DMSProperty(SheetRow):
231
231
  @field_serializer("connection", when_used="unless-none")
232
232
  def remove_defaults(self, value: Any, info: SerializationInfo) -> str:
233
233
  if isinstance(value, Entity) and (metadata := _metadata(info.context)):
234
- default_type = f"{metadata.space}{self.view.external_id}.{self.view_property}"
234
+ default_type = f"{self.view.external_id}.{self.view_property}"
235
+ if isinstance(value, EdgeEntity) and value.edge_type and value.edge_type.space != metadata.space:
236
+ default_type = f"{metadata.space}{default_type}"
235
237
  return value.dump(space=metadata.space, version=metadata.version, type=default_type)
236
238
  return str(value)
237
239
 
@@ -187,10 +187,10 @@ class Entity(BaseModel, extra="ignore"):
187
187
  }
188
188
  if isinstance(defaults, dict):
189
189
  for key, value in defaults.items():
190
- if key in model_dump and value == defaults.get(key):
190
+ if key in model_dump and model_dump[key] == value:
191
191
  del model_dump[key]
192
-
193
- args = ",".join(f"{k}={v}" for k, v in model_dump.items())
192
+ # Sorting to ensure deterministic order
193
+ args = ",".join(f"{k}={v}" for k, v in sorted(model_dump.items(), key=lambda x: x[0]))
194
194
  if self.prefix == Undefined or (isinstance(defaults, dict) and self.prefix == defaults.get("prefix")):
195
195
  base_id = str(self.suffix)
196
196
  else:
@@ -63,12 +63,18 @@ class CDFToAPI:
63
63
 
64
64
  return loader.load_into_cdf(self._client)
65
65
 
66
- def data_model(self, existing_handling: Literal["fail", "skip", "update", "force"] = "skip", dry_run: bool = False):
66
+ def data_model(
67
+ self,
68
+ existing_handling: Literal["fail", "skip", "update", "force"] = "skip",
69
+ dry_run: bool = False,
70
+ fallback_one_by_one: bool = False,
71
+ ):
67
72
  """Export the verified DMS data model to CDF.
68
73
 
69
74
  Args:
70
75
  existing_handling: How to handle if component of data model exists. Defaults to "skip".
71
76
  dry_run: If True, no changes will be made to CDF. Defaults to False.
77
+ fallback_one_by_one: If True, will fall back to one-by-one upload if batch upload fails. Defaults to False.
72
78
 
73
79
  ... note::
74
80
 
@@ -88,7 +94,9 @@ class CDFToAPI:
88
94
 
89
95
  conversion_issues = IssueList(action="to.cdf.data_model")
90
96
  with catch_warnings(conversion_issues):
91
- result = exporter.export_to_cdf(self._state.last_verified_dms_rules, self._client, dry_run)
97
+ result = exporter.export_to_cdf(
98
+ self._state.last_verified_dms_rules, self._client, dry_run, fallback_one_by_one
99
+ )
92
100
  result.insert(0, UploadResultCore(name="schema", issues=conversion_issues))
93
101
  self._state.outcome.append(result)
94
102
  print("You can inspect the details with the .inspect.outcome(...) method.")
@@ -27,7 +27,7 @@ class ResourceLoader(
27
27
 
28
28
  @classmethod
29
29
  @abstractmethod
30
- def get_id(cls, item: T_WriteClass | T_WritableCogniteResource) -> T_ID:
30
+ def get_id(cls, item: T_WriteClass | T_WritableCogniteResource | dict | T_ID) -> T_ID:
31
31
  raise NotImplementedError
32
32
 
33
33
  @classmethod
@@ -80,8 +80,12 @@ class SpaceLoader(DataModelingLoader[str, SpaceApply, Space, SpaceApplyList, Spa
80
80
  resource_name = "spaces"
81
81
 
82
82
  @classmethod
83
- def get_id(cls, item: Space | SpaceApply) -> str:
84
- return item.space
83
+ def get_id(cls, item: Space | SpaceApply | str | dict) -> str:
84
+ if isinstance(item, Space | SpaceApply):
85
+ return item.space
86
+ if isinstance(item, dict):
87
+ return item["space"]
88
+ return item
85
89
 
86
90
  def create(self, items: Sequence[SpaceApply]) -> SpaceList:
87
91
  return self.client.data_modeling.spaces.apply(items)
@@ -149,8 +153,12 @@ class ViewLoader(DataModelingLoader[ViewId, ViewApply, View, ViewApplyList, View
149
153
  self._tried_force_deploy: set[ViewId] = set()
150
154
 
151
155
  @classmethod
152
- def get_id(cls, item: View | ViewApply) -> ViewId:
153
- return item.as_id()
156
+ def get_id(cls, item: View | ViewApply | ViewId | dict) -> ViewId:
157
+ if isinstance(item, View | ViewApply):
158
+ return item.as_id()
159
+ if isinstance(item, dict):
160
+ return ViewId.load(item)
161
+ return item
154
162
 
155
163
  def create(self, items: Sequence[ViewApply]) -> ViewList:
156
164
  if self.existing_handling == "force":
@@ -247,8 +255,12 @@ class ContainerLoader(DataModelingLoader[ContainerId, ContainerApply, Container,
247
255
  self._tried_force_deploy: set[ContainerId] = set()
248
256
 
249
257
  @classmethod
250
- def get_id(cls, item: Container | ContainerApply) -> ContainerId:
251
- return item.as_id()
258
+ def get_id(cls, item: Container | ContainerApply | ContainerId | dict) -> ContainerId:
259
+ if isinstance(item, Container | ContainerApply):
260
+ return item.as_id()
261
+ if isinstance(item, dict):
262
+ return ContainerId.load(item)
263
+ return item
252
264
 
253
265
  def sort_by_dependencies(self, items: Sequence[ContainerApply]) -> list[ContainerApply]:
254
266
  container_by_id = {container.as_id(): container for container in items}
@@ -292,8 +304,12 @@ class DataModelLoader(DataModelingLoader[DataModelId, DataModelApply, DataModel,
292
304
  resource_name = "data_models"
293
305
 
294
306
  @classmethod
295
- def get_id(cls, item: DataModel | DataModelApply) -> DataModelId:
296
- return item.as_id()
307
+ def get_id(cls, item: DataModel | DataModelApply | DataModelId | dict) -> DataModelId:
308
+ if isinstance(item, DataModel | DataModelApply):
309
+ return item.as_id()
310
+ if isinstance(item, dict):
311
+ return DataModelId.load(item)
312
+ return item
297
313
 
298
314
  def create(self, items: Sequence[DataModelApply]) -> DataModelList:
299
315
  return self.client.data_modeling.data_models.apply(items)
@@ -26,10 +26,16 @@ class TransformationLoader(
26
26
  resource_name = "transformations"
27
27
 
28
28
  @classmethod
29
- def get_id(cls, item: Transformation | TransformationWrite) -> str:
30
- if item.external_id is None:
31
- raise ValueError(f"Transformation {item} does not have an external_id")
32
- return item.external_id
29
+ def get_id(cls, item: Transformation | TransformationWrite | str | dict) -> str:
30
+ if isinstance(item, Transformation | TransformationWrite):
31
+ if item.external_id is None:
32
+ raise ValueError(f"Transformation {item} does not have an external_id")
33
+ return item.external_id
34
+ if isinstance(item, dict):
35
+ if item.get("externalId") is None:
36
+ raise ValueError(f"Transformation {item} does not have an external_id")
37
+ return item["externalId"]
38
+ return item
33
39
 
34
40
  def create(self, items: Sequence[TransformationWrite]) -> TransformationList:
35
41
  return self.client.transformations.create(items)
@@ -50,10 +56,16 @@ class RawDatabaseLoader(ResourceLoader[str, DatabaseWrite, Database, DatabaseWri
50
56
  resource_name = "databases"
51
57
 
52
58
  @classmethod
53
- def get_id(cls, item: Database | DatabaseWrite) -> str:
54
- if item.name is None:
55
- raise ValueError(f"Database {item} does not have a name")
56
- return item.name
59
+ def get_id(cls, item: Database | DatabaseWrite | str | dict) -> str:
60
+ if isinstance(item, Database | DatabaseWrite):
61
+ if item.name is None:
62
+ raise ValueError(f"Database {item} does not have a name")
63
+ return item.name
64
+ if isinstance(item, dict):
65
+ if item.get("name") is None:
66
+ raise ValueError(f"Database {item} does not have a name")
67
+ return item["name"]
68
+ return item
57
69
 
58
70
  def create(self, items: Sequence[DatabaseWrite]) -> DatabaseList:
59
71
  return self.client.raw.databases.create([item.name for item in items if item.name is not None])
@@ -78,8 +90,12 @@ class RawTableLoader(ResourceLoader[RawTableID, RawTableWrite, RawTable, RawTabl
78
90
  resource_name = "tables"
79
91
 
80
92
  @classmethod
81
- def get_id(cls, item: RawTable | RawTableWrite) -> RawTableID:
82
- return item.as_id()
93
+ def get_id(cls, item: RawTable | RawTableWrite | RawTableID | dict) -> RawTableID:
94
+ if isinstance(item, RawTable | RawTableWrite):
95
+ return item.as_id()
96
+ if isinstance(item, dict):
97
+ return RawTableID(database=item["database"], table=item["name"])
98
+ return item
83
99
 
84
100
  @overload
85
101
  def _groupby_database(self, items: Sequence[RawTableWrite]) -> Iterable[tuple[str, Iterable[RawTableWrite]]]: ...
@@ -0,0 +1 @@
1
+ __version__ = "0.96.5"
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "cognite-neat"
3
- version = "0.96.3"
3
+ version = "0.96.5"
4
4
  readme = "README.md"
5
5
  description = "Knowledge graph transformation"
6
6
  authors = [
@@ -1 +0,0 @@
1
- __version__ = "0.96.3"
File without changes
File without changes