cognite-neat 0.117.0__tar.gz → 0.117.2__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 (187) hide show
  1. {cognite_neat-0.117.0 → cognite_neat-0.117.2}/PKG-INFO +1 -1
  2. cognite_neat-0.117.2/cognite/neat/_client/_api/neat_instances.py +71 -0
  3. {cognite_neat-0.117.0 → cognite_neat-0.117.2}/cognite/neat/_client/_api_client.py +2 -0
  4. {cognite_neat-0.117.0 → cognite_neat-0.117.2}/cognite/neat/_client/testing.py +2 -0
  5. {cognite_neat-0.117.0 → cognite_neat-0.117.2}/cognite/neat/_graph/extractors/_dms.py +53 -32
  6. cognite_neat-0.117.2/cognite/neat/_rules/catalog/hello_world_pump.xlsx +0 -0
  7. cognite_neat-0.117.2/cognite/neat/_version.py +2 -0
  8. {cognite_neat-0.117.0 → cognite_neat-0.117.2}/pyproject.toml +1 -1
  9. cognite_neat-0.117.0/cognite/neat/_rules/catalog/hello_world_pump.xlsx +0 -0
  10. cognite_neat-0.117.0/cognite/neat/_version.py +0 -2
  11. {cognite_neat-0.117.0 → cognite_neat-0.117.2}/LICENSE +0 -0
  12. {cognite_neat-0.117.0 → cognite_neat-0.117.2}/README.md +0 -0
  13. {cognite_neat-0.117.0 → cognite_neat-0.117.2}/cognite/neat/__init__.py +0 -0
  14. {cognite_neat-0.117.0 → cognite_neat-0.117.2}/cognite/neat/_alpha.py +0 -0
  15. {cognite_neat-0.117.0 → cognite_neat-0.117.2}/cognite/neat/_client/__init__.py +0 -0
  16. {cognite_neat-0.117.0 → cognite_neat-0.117.2}/cognite/neat/_client/_api/__init__.py +0 -0
  17. {cognite_neat-0.117.0 → cognite_neat-0.117.2}/cognite/neat/_client/_api/data_modeling_loaders.py +0 -0
  18. {cognite_neat-0.117.0 → cognite_neat-0.117.2}/cognite/neat/_client/_api/schema.py +0 -0
  19. {cognite_neat-0.117.0 → cognite_neat-0.117.2}/cognite/neat/_client/data_classes/__init__.py +0 -0
  20. {cognite_neat-0.117.0 → cognite_neat-0.117.2}/cognite/neat/_client/data_classes/data_modeling.py +0 -0
  21. {cognite_neat-0.117.0 → cognite_neat-0.117.2}/cognite/neat/_client/data_classes/neat_sequence.py +0 -0
  22. {cognite_neat-0.117.0 → cognite_neat-0.117.2}/cognite/neat/_client/data_classes/schema.py +0 -0
  23. {cognite_neat-0.117.0 → cognite_neat-0.117.2}/cognite/neat/_config.py +0 -0
  24. {cognite_neat-0.117.0 → cognite_neat-0.117.2}/cognite/neat/_constants.py +0 -0
  25. {cognite_neat-0.117.0 → cognite_neat-0.117.2}/cognite/neat/_graph/__init__.py +0 -0
  26. {cognite_neat-0.117.0 → cognite_neat-0.117.2}/cognite/neat/_graph/_shared.py +0 -0
  27. {cognite_neat-0.117.0 → cognite_neat-0.117.2}/cognite/neat/_graph/_tracking/__init__.py +0 -0
  28. {cognite_neat-0.117.0 → cognite_neat-0.117.2}/cognite/neat/_graph/_tracking/base.py +0 -0
  29. {cognite_neat-0.117.0 → cognite_neat-0.117.2}/cognite/neat/_graph/_tracking/log.py +0 -0
  30. {cognite_neat-0.117.0 → cognite_neat-0.117.2}/cognite/neat/_graph/examples/Knowledge-Graph-Nordic44-dirty.xml +0 -0
  31. {cognite_neat-0.117.0 → cognite_neat-0.117.2}/cognite/neat/_graph/examples/Knowledge-Graph-Nordic44.xml +0 -0
  32. {cognite_neat-0.117.0 → cognite_neat-0.117.2}/cognite/neat/_graph/examples/__init__.py +0 -0
  33. {cognite_neat-0.117.0 → cognite_neat-0.117.2}/cognite/neat/_graph/examples/skos-capturing-sheet-wind-topics.xlsx +0 -0
  34. {cognite_neat-0.117.0 → cognite_neat-0.117.2}/cognite/neat/_graph/extractors/__init__.py +0 -0
  35. {cognite_neat-0.117.0 → cognite_neat-0.117.2}/cognite/neat/_graph/extractors/_base.py +0 -0
  36. {cognite_neat-0.117.0 → cognite_neat-0.117.2}/cognite/neat/_graph/extractors/_classic_cdf/__init__.py +0 -0
  37. {cognite_neat-0.117.0 → cognite_neat-0.117.2}/cognite/neat/_graph/extractors/_classic_cdf/_assets.py +0 -0
  38. {cognite_neat-0.117.0 → cognite_neat-0.117.2}/cognite/neat/_graph/extractors/_classic_cdf/_base.py +0 -0
  39. {cognite_neat-0.117.0 → cognite_neat-0.117.2}/cognite/neat/_graph/extractors/_classic_cdf/_classic.py +0 -0
  40. {cognite_neat-0.117.0 → cognite_neat-0.117.2}/cognite/neat/_graph/extractors/_classic_cdf/_data_sets.py +0 -0
  41. {cognite_neat-0.117.0 → cognite_neat-0.117.2}/cognite/neat/_graph/extractors/_classic_cdf/_events.py +0 -0
  42. {cognite_neat-0.117.0 → cognite_neat-0.117.2}/cognite/neat/_graph/extractors/_classic_cdf/_files.py +0 -0
  43. {cognite_neat-0.117.0 → cognite_neat-0.117.2}/cognite/neat/_graph/extractors/_classic_cdf/_labels.py +0 -0
  44. {cognite_neat-0.117.0 → cognite_neat-0.117.2}/cognite/neat/_graph/extractors/_classic_cdf/_relationships.py +0 -0
  45. {cognite_neat-0.117.0 → cognite_neat-0.117.2}/cognite/neat/_graph/extractors/_classic_cdf/_sequences.py +0 -0
  46. {cognite_neat-0.117.0 → cognite_neat-0.117.2}/cognite/neat/_graph/extractors/_classic_cdf/_timeseries.py +0 -0
  47. {cognite_neat-0.117.0 → cognite_neat-0.117.2}/cognite/neat/_graph/extractors/_dexpi.py +0 -0
  48. {cognite_neat-0.117.0 → cognite_neat-0.117.2}/cognite/neat/_graph/extractors/_dict.py +0 -0
  49. {cognite_neat-0.117.0 → cognite_neat-0.117.2}/cognite/neat/_graph/extractors/_dms_graph.py +0 -0
  50. {cognite_neat-0.117.0 → cognite_neat-0.117.2}/cognite/neat/_graph/extractors/_iodd.py +0 -0
  51. {cognite_neat-0.117.0 → cognite_neat-0.117.2}/cognite/neat/_graph/extractors/_mock_graph_generator.py +0 -0
  52. {cognite_neat-0.117.0 → cognite_neat-0.117.2}/cognite/neat/_graph/extractors/_raw.py +0 -0
  53. {cognite_neat-0.117.0 → cognite_neat-0.117.2}/cognite/neat/_graph/extractors/_rdf_file.py +0 -0
  54. {cognite_neat-0.117.0 → cognite_neat-0.117.2}/cognite/neat/_graph/loaders/__init__.py +0 -0
  55. {cognite_neat-0.117.0 → cognite_neat-0.117.2}/cognite/neat/_graph/loaders/_base.py +0 -0
  56. {cognite_neat-0.117.0 → cognite_neat-0.117.2}/cognite/neat/_graph/loaders/_rdf2dms.py +0 -0
  57. {cognite_neat-0.117.0 → cognite_neat-0.117.2}/cognite/neat/_graph/queries/__init__.py +0 -0
  58. {cognite_neat-0.117.0 → cognite_neat-0.117.2}/cognite/neat/_graph/queries/_base.py +0 -0
  59. {cognite_neat-0.117.0 → cognite_neat-0.117.2}/cognite/neat/_graph/transformers/__init__.py +0 -0
  60. {cognite_neat-0.117.0 → cognite_neat-0.117.2}/cognite/neat/_graph/transformers/_base.py +0 -0
  61. {cognite_neat-0.117.0 → cognite_neat-0.117.2}/cognite/neat/_graph/transformers/_classic_cdf.py +0 -0
  62. {cognite_neat-0.117.0 → cognite_neat-0.117.2}/cognite/neat/_graph/transformers/_iodd.py +0 -0
  63. {cognite_neat-0.117.0 → cognite_neat-0.117.2}/cognite/neat/_graph/transformers/_prune_graph.py +0 -0
  64. {cognite_neat-0.117.0 → cognite_neat-0.117.2}/cognite/neat/_graph/transformers/_rdfpath.py +0 -0
  65. {cognite_neat-0.117.0 → cognite_neat-0.117.2}/cognite/neat/_graph/transformers/_value_type.py +0 -0
  66. {cognite_neat-0.117.0 → cognite_neat-0.117.2}/cognite/neat/_issues/__init__.py +0 -0
  67. {cognite_neat-0.117.0 → cognite_neat-0.117.2}/cognite/neat/_issues/_base.py +0 -0
  68. {cognite_neat-0.117.0 → cognite_neat-0.117.2}/cognite/neat/_issues/_contextmanagers.py +0 -0
  69. {cognite_neat-0.117.0 → cognite_neat-0.117.2}/cognite/neat/_issues/_factory.py +0 -0
  70. {cognite_neat-0.117.0 → cognite_neat-0.117.2}/cognite/neat/_issues/errors/__init__.py +0 -0
  71. {cognite_neat-0.117.0 → cognite_neat-0.117.2}/cognite/neat/_issues/errors/_external.py +0 -0
  72. {cognite_neat-0.117.0 → cognite_neat-0.117.2}/cognite/neat/_issues/errors/_general.py +0 -0
  73. {cognite_neat-0.117.0 → cognite_neat-0.117.2}/cognite/neat/_issues/errors/_properties.py +0 -0
  74. {cognite_neat-0.117.0 → cognite_neat-0.117.2}/cognite/neat/_issues/errors/_resources.py +0 -0
  75. {cognite_neat-0.117.0 → cognite_neat-0.117.2}/cognite/neat/_issues/errors/_wrapper.py +0 -0
  76. {cognite_neat-0.117.0 → cognite_neat-0.117.2}/cognite/neat/_issues/formatters.py +0 -0
  77. {cognite_neat-0.117.0 → cognite_neat-0.117.2}/cognite/neat/_issues/warnings/__init__.py +0 -0
  78. {cognite_neat-0.117.0 → cognite_neat-0.117.2}/cognite/neat/_issues/warnings/_external.py +0 -0
  79. {cognite_neat-0.117.0 → cognite_neat-0.117.2}/cognite/neat/_issues/warnings/_general.py +0 -0
  80. {cognite_neat-0.117.0 → cognite_neat-0.117.2}/cognite/neat/_issues/warnings/_models.py +0 -0
  81. {cognite_neat-0.117.0 → cognite_neat-0.117.2}/cognite/neat/_issues/warnings/_properties.py +0 -0
  82. {cognite_neat-0.117.0 → cognite_neat-0.117.2}/cognite/neat/_issues/warnings/_resources.py +0 -0
  83. {cognite_neat-0.117.0 → cognite_neat-0.117.2}/cognite/neat/_issues/warnings/user_modeling.py +0 -0
  84. {cognite_neat-0.117.0 → cognite_neat-0.117.2}/cognite/neat/_rules/__init__.py +0 -0
  85. {cognite_neat-0.117.0 → cognite_neat-0.117.2}/cognite/neat/_rules/_constants.py +0 -0
  86. {cognite_neat-0.117.0 → cognite_neat-0.117.2}/cognite/neat/_rules/_shared.py +0 -0
  87. {cognite_neat-0.117.0 → cognite_neat-0.117.2}/cognite/neat/_rules/analysis/__init__.py +0 -0
  88. {cognite_neat-0.117.0 → cognite_neat-0.117.2}/cognite/neat/_rules/analysis/_base.py +0 -0
  89. {cognite_neat-0.117.0 → cognite_neat-0.117.2}/cognite/neat/_rules/catalog/__init__.py +0 -0
  90. {cognite_neat-0.117.0 → cognite_neat-0.117.2}/cognite/neat/_rules/catalog/classic_model.xlsx +0 -0
  91. {cognite_neat-0.117.0 → cognite_neat-0.117.2}/cognite/neat/_rules/catalog/info-rules-imf.xlsx +0 -0
  92. {cognite_neat-0.117.0 → cognite_neat-0.117.2}/cognite/neat/_rules/exporters/__init__.py +0 -0
  93. {cognite_neat-0.117.0 → cognite_neat-0.117.2}/cognite/neat/_rules/exporters/_base.py +0 -0
  94. {cognite_neat-0.117.0 → cognite_neat-0.117.2}/cognite/neat/_rules/exporters/_rules2dms.py +0 -0
  95. {cognite_neat-0.117.0 → cognite_neat-0.117.2}/cognite/neat/_rules/exporters/_rules2excel.py +0 -0
  96. {cognite_neat-0.117.0 → cognite_neat-0.117.2}/cognite/neat/_rules/exporters/_rules2instance_template.py +0 -0
  97. {cognite_neat-0.117.0 → cognite_neat-0.117.2}/cognite/neat/_rules/exporters/_rules2ontology.py +0 -0
  98. {cognite_neat-0.117.0 → cognite_neat-0.117.2}/cognite/neat/_rules/exporters/_rules2yaml.py +0 -0
  99. {cognite_neat-0.117.0 → cognite_neat-0.117.2}/cognite/neat/_rules/exporters/_validation.py +0 -0
  100. {cognite_neat-0.117.0 → cognite_neat-0.117.2}/cognite/neat/_rules/importers/__init__.py +0 -0
  101. {cognite_neat-0.117.0 → cognite_neat-0.117.2}/cognite/neat/_rules/importers/_base.py +0 -0
  102. {cognite_neat-0.117.0 → cognite_neat-0.117.2}/cognite/neat/_rules/importers/_dms2rules.py +0 -0
  103. {cognite_neat-0.117.0 → cognite_neat-0.117.2}/cognite/neat/_rules/importers/_dtdl2rules/__init__.py +0 -0
  104. {cognite_neat-0.117.0 → cognite_neat-0.117.2}/cognite/neat/_rules/importers/_dtdl2rules/_unit_lookup.py +0 -0
  105. {cognite_neat-0.117.0 → cognite_neat-0.117.2}/cognite/neat/_rules/importers/_dtdl2rules/dtdl_converter.py +0 -0
  106. {cognite_neat-0.117.0 → cognite_neat-0.117.2}/cognite/neat/_rules/importers/_dtdl2rules/dtdl_importer.py +0 -0
  107. {cognite_neat-0.117.0 → cognite_neat-0.117.2}/cognite/neat/_rules/importers/_dtdl2rules/spec.py +0 -0
  108. {cognite_neat-0.117.0 → cognite_neat-0.117.2}/cognite/neat/_rules/importers/_rdf/__init__.py +0 -0
  109. {cognite_neat-0.117.0 → cognite_neat-0.117.2}/cognite/neat/_rules/importers/_rdf/_base.py +0 -0
  110. {cognite_neat-0.117.0 → cognite_neat-0.117.2}/cognite/neat/_rules/importers/_rdf/_imf2rules.py +0 -0
  111. {cognite_neat-0.117.0 → cognite_neat-0.117.2}/cognite/neat/_rules/importers/_rdf/_inference2rules.py +0 -0
  112. {cognite_neat-0.117.0 → cognite_neat-0.117.2}/cognite/neat/_rules/importers/_rdf/_owl2rules.py +0 -0
  113. {cognite_neat-0.117.0 → cognite_neat-0.117.2}/cognite/neat/_rules/importers/_rdf/_shared.py +0 -0
  114. {cognite_neat-0.117.0 → cognite_neat-0.117.2}/cognite/neat/_rules/importers/_spreadsheet2rules.py +0 -0
  115. {cognite_neat-0.117.0 → cognite_neat-0.117.2}/cognite/neat/_rules/importers/_yaml2rules.py +0 -0
  116. {cognite_neat-0.117.0 → cognite_neat-0.117.2}/cognite/neat/_rules/models/__init__.py +0 -0
  117. {cognite_neat-0.117.0 → cognite_neat-0.117.2}/cognite/neat/_rules/models/_base_input.py +0 -0
  118. {cognite_neat-0.117.0 → cognite_neat-0.117.2}/cognite/neat/_rules/models/_base_rules.py +0 -0
  119. {cognite_neat-0.117.0 → cognite_neat-0.117.2}/cognite/neat/_rules/models/_types.py +0 -0
  120. {cognite_neat-0.117.0 → cognite_neat-0.117.2}/cognite/neat/_rules/models/data_types.py +0 -0
  121. {cognite_neat-0.117.0 → cognite_neat-0.117.2}/cognite/neat/_rules/models/dms/__init__.py +0 -0
  122. {cognite_neat-0.117.0 → cognite_neat-0.117.2}/cognite/neat/_rules/models/dms/_exporter.py +0 -0
  123. {cognite_neat-0.117.0 → cognite_neat-0.117.2}/cognite/neat/_rules/models/dms/_rules.py +0 -0
  124. {cognite_neat-0.117.0 → cognite_neat-0.117.2}/cognite/neat/_rules/models/dms/_rules_input.py +0 -0
  125. {cognite_neat-0.117.0 → cognite_neat-0.117.2}/cognite/neat/_rules/models/dms/_validation.py +0 -0
  126. {cognite_neat-0.117.0 → cognite_neat-0.117.2}/cognite/neat/_rules/models/entities/__init__.py +0 -0
  127. {cognite_neat-0.117.0 → cognite_neat-0.117.2}/cognite/neat/_rules/models/entities/_constants.py +0 -0
  128. {cognite_neat-0.117.0 → cognite_neat-0.117.2}/cognite/neat/_rules/models/entities/_loaders.py +0 -0
  129. {cognite_neat-0.117.0 → cognite_neat-0.117.2}/cognite/neat/_rules/models/entities/_multi_value.py +0 -0
  130. {cognite_neat-0.117.0 → cognite_neat-0.117.2}/cognite/neat/_rules/models/entities/_single_value.py +0 -0
  131. {cognite_neat-0.117.0 → cognite_neat-0.117.2}/cognite/neat/_rules/models/entities/_types.py +0 -0
  132. {cognite_neat-0.117.0 → cognite_neat-0.117.2}/cognite/neat/_rules/models/entities/_wrapped.py +0 -0
  133. {cognite_neat-0.117.0 → cognite_neat-0.117.2}/cognite/neat/_rules/models/information/__init__.py +0 -0
  134. {cognite_neat-0.117.0 → cognite_neat-0.117.2}/cognite/neat/_rules/models/information/_rules.py +0 -0
  135. {cognite_neat-0.117.0 → cognite_neat-0.117.2}/cognite/neat/_rules/models/information/_rules_input.py +0 -0
  136. {cognite_neat-0.117.0 → cognite_neat-0.117.2}/cognite/neat/_rules/models/information/_validation.py +0 -0
  137. {cognite_neat-0.117.0 → cognite_neat-0.117.2}/cognite/neat/_rules/models/mapping/__init__.py +0 -0
  138. {cognite_neat-0.117.0 → cognite_neat-0.117.2}/cognite/neat/_rules/models/mapping/_classic2core.py +0 -0
  139. {cognite_neat-0.117.0 → cognite_neat-0.117.2}/cognite/neat/_rules/models/mapping/_classic2core.yaml +0 -0
  140. {cognite_neat-0.117.0 → cognite_neat-0.117.2}/cognite/neat/_rules/transformers/__init__.py +0 -0
  141. {cognite_neat-0.117.0 → cognite_neat-0.117.2}/cognite/neat/_rules/transformers/_base.py +0 -0
  142. {cognite_neat-0.117.0 → cognite_neat-0.117.2}/cognite/neat/_rules/transformers/_converters.py +0 -0
  143. {cognite_neat-0.117.0 → cognite_neat-0.117.2}/cognite/neat/_rules/transformers/_mapping.py +0 -0
  144. {cognite_neat-0.117.0 → cognite_neat-0.117.2}/cognite/neat/_rules/transformers/_verification.py +0 -0
  145. {cognite_neat-0.117.0 → cognite_neat-0.117.2}/cognite/neat/_session/__init__.py +0 -0
  146. {cognite_neat-0.117.0 → cognite_neat-0.117.2}/cognite/neat/_session/_base.py +0 -0
  147. {cognite_neat-0.117.0 → cognite_neat-0.117.2}/cognite/neat/_session/_collector.py +0 -0
  148. {cognite_neat-0.117.0 → cognite_neat-0.117.2}/cognite/neat/_session/_drop.py +0 -0
  149. {cognite_neat-0.117.0 → cognite_neat-0.117.2}/cognite/neat/_session/_explore.py +0 -0
  150. {cognite_neat-0.117.0 → cognite_neat-0.117.2}/cognite/neat/_session/_fix.py +0 -0
  151. {cognite_neat-0.117.0 → cognite_neat-0.117.2}/cognite/neat/_session/_inspect.py +0 -0
  152. {cognite_neat-0.117.0 → cognite_neat-0.117.2}/cognite/neat/_session/_mapping.py +0 -0
  153. {cognite_neat-0.117.0 → cognite_neat-0.117.2}/cognite/neat/_session/_prepare.py +0 -0
  154. {cognite_neat-0.117.0 → cognite_neat-0.117.2}/cognite/neat/_session/_read.py +0 -0
  155. {cognite_neat-0.117.0 → cognite_neat-0.117.2}/cognite/neat/_session/_set.py +0 -0
  156. {cognite_neat-0.117.0 → cognite_neat-0.117.2}/cognite/neat/_session/_show.py +0 -0
  157. {cognite_neat-0.117.0 → cognite_neat-0.117.2}/cognite/neat/_session/_state.py +0 -0
  158. {cognite_neat-0.117.0 → cognite_neat-0.117.2}/cognite/neat/_session/_subset.py +0 -0
  159. {cognite_neat-0.117.0 → cognite_neat-0.117.2}/cognite/neat/_session/_template.py +0 -0
  160. {cognite_neat-0.117.0 → cognite_neat-0.117.2}/cognite/neat/_session/_to.py +0 -0
  161. {cognite_neat-0.117.0 → cognite_neat-0.117.2}/cognite/neat/_session/_wizard.py +0 -0
  162. {cognite_neat-0.117.0 → cognite_neat-0.117.2}/cognite/neat/_session/engine/__init__.py +0 -0
  163. {cognite_neat-0.117.0 → cognite_neat-0.117.2}/cognite/neat/_session/engine/_import.py +0 -0
  164. {cognite_neat-0.117.0 → cognite_neat-0.117.2}/cognite/neat/_session/engine/_interface.py +0 -0
  165. {cognite_neat-0.117.0 → cognite_neat-0.117.2}/cognite/neat/_session/engine/_load.py +0 -0
  166. {cognite_neat-0.117.0 → cognite_neat-0.117.2}/cognite/neat/_session/exceptions.py +0 -0
  167. {cognite_neat-0.117.0 → cognite_neat-0.117.2}/cognite/neat/_shared.py +0 -0
  168. {cognite_neat-0.117.0 → cognite_neat-0.117.2}/cognite/neat/_store/__init__.py +0 -0
  169. {cognite_neat-0.117.0 → cognite_neat-0.117.2}/cognite/neat/_store/_graph_store.py +0 -0
  170. {cognite_neat-0.117.0 → cognite_neat-0.117.2}/cognite/neat/_store/_provenance.py +0 -0
  171. {cognite_neat-0.117.0 → cognite_neat-0.117.2}/cognite/neat/_store/_rules_store.py +0 -0
  172. {cognite_neat-0.117.0 → cognite_neat-0.117.2}/cognite/neat/_store/exceptions.py +0 -0
  173. {cognite_neat-0.117.0 → cognite_neat-0.117.2}/cognite/neat/_utils/__init__.py +0 -0
  174. {cognite_neat-0.117.0 → cognite_neat-0.117.2}/cognite/neat/_utils/auth.py +0 -0
  175. {cognite_neat-0.117.0 → cognite_neat-0.117.2}/cognite/neat/_utils/auxiliary.py +0 -0
  176. {cognite_neat-0.117.0 → cognite_neat-0.117.2}/cognite/neat/_utils/collection_.py +0 -0
  177. {cognite_neat-0.117.0 → cognite_neat-0.117.2}/cognite/neat/_utils/graph_transformations_report.py +0 -0
  178. {cognite_neat-0.117.0 → cognite_neat-0.117.2}/cognite/neat/_utils/io_.py +0 -0
  179. {cognite_neat-0.117.0 → cognite_neat-0.117.2}/cognite/neat/_utils/rdf_.py +0 -0
  180. {cognite_neat-0.117.0 → cognite_neat-0.117.2}/cognite/neat/_utils/reader/__init__.py +0 -0
  181. {cognite_neat-0.117.0 → cognite_neat-0.117.2}/cognite/neat/_utils/reader/_base.py +0 -0
  182. {cognite_neat-0.117.0 → cognite_neat-0.117.2}/cognite/neat/_utils/spreadsheet.py +0 -0
  183. {cognite_neat-0.117.0 → cognite_neat-0.117.2}/cognite/neat/_utils/text.py +0 -0
  184. {cognite_neat-0.117.0 → cognite_neat-0.117.2}/cognite/neat/_utils/time_.py +0 -0
  185. {cognite_neat-0.117.0 → cognite_neat-0.117.2}/cognite/neat/_utils/upload.py +0 -0
  186. {cognite_neat-0.117.0 → cognite_neat-0.117.2}/cognite/neat/_utils/xml_.py +0 -0
  187. {cognite_neat-0.117.0 → cognite_neat-0.117.2}/cognite/neat/py.typed +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: cognite-neat
3
- Version: 0.117.0
3
+ Version: 0.117.2
4
4
  Summary: Knowledge graph transformation
5
5
  License: Apache-2.0
6
6
  Author: Nikola Vasiljevic
@@ -0,0 +1,71 @@
1
+ import time
2
+ from collections.abc import Iterator
3
+ from typing import TYPE_CHECKING, Any, Literal
4
+
5
+ from cognite.client.data_classes.data_modeling import Edge, Node, ViewId
6
+ from cognite.client.data_classes.filters import Filter
7
+ from cognite.client.exceptions import CogniteAPIError
8
+ from cognite.client.utils.useful_types import SequenceNotStr
9
+
10
+ if TYPE_CHECKING:
11
+ from cognite.neat._client._api_client import NeatClient
12
+
13
+
14
+ class NeatInstancesAPI:
15
+ def __init__(self, client: "NeatClient") -> None:
16
+ self._client = client
17
+
18
+ def iterate(
19
+ self,
20
+ instance_type: Literal["node", "edge"] = "node",
21
+ space: str | SequenceNotStr[str] | None = None,
22
+ filter_: Filter | None = None,
23
+ source: ViewId | None = None,
24
+ ) -> Iterator[Node] | Iterator[Edge]:
25
+ """Neat specific implementation of the client.data_modeling.instances(...) method to account for 408.
26
+
27
+ In addition, we enforce sort based on the argument below (provided by Alex B.).
28
+ """
29
+ body: dict[str, Any] = {"limit": 1_000, "cursor": None, "instanceType": instance_type}
30
+ # Without a sort, the sort is implicitly by the internal id, as cursoring needs a stable sort.
31
+ # By making the sort be on external_id, Postgres should pick the index that's on
32
+ # (project_id, space, external_id) WHERE deleted_at IS NULL. In other words,
33
+ # avoiding soft deleted instances.
34
+ body["sort"] = [
35
+ {
36
+ "property": [instance_type, "externalId"],
37
+ "direction": "ascending",
38
+ }
39
+ ]
40
+ url = f"/api/{self._client._API_VERSION}/projects/{self._client.config.project}/models/instances/list"
41
+ filter_ = self._client.data_modeling.instances._merge_space_into_filter(instance_type, space, filter_)
42
+ if filter_:
43
+ body["filter"] = filter_.dump() if isinstance(filter_, Filter) else filter_
44
+ if source:
45
+ body["sources"] = [{"source": source.dump(include_type=True, camel_case=True)}]
46
+ last_limit_change: float = 0.0
47
+ while True:
48
+ try:
49
+ response = self._client.post(url=url, json=body)
50
+ except CogniteAPIError as e:
51
+ if e.code == 408 and body["limit"] > 1:
52
+ body["limit"] = body["limit"] // 2
53
+ last_limit_change = time.perf_counter()
54
+ continue
55
+ raise e
56
+ response_body = response.json()
57
+ yield from (
58
+ Node.load(item) if item.get("instanceType") == "node" else Edge.load(item)
59
+ for item in response_body["items"]
60
+ )
61
+ next_cursor = response_body.get("nextCursor")
62
+ if next_cursor is None:
63
+ break
64
+ body["cursor"] = next_cursor
65
+ # Increase the limit every 30 seconds to avoid fetching reduced
66
+ # instances for a long time after a 408. This limit is somewhat arbitrary,
67
+ # but it should be large enough to avoid many requests, but small enough
68
+ # to avoid fetching very slowly for a long time after a 408.
69
+ if (time.perf_counter() - last_limit_change) > 30.0 and body["limit"] < 1_000:
70
+ body["limit"] = min(int(body["limit"] * 1.5), 1_000)
71
+ last_limit_change = time.perf_counter()
@@ -3,6 +3,7 @@ from cognite.client import ClientConfig, CogniteClient
3
3
  from cognite.neat._utils.auth import _CLIENT_NAME
4
4
 
5
5
  from ._api.data_modeling_loaders import DataModelLoaderAPI
6
+ from ._api.neat_instances import NeatInstancesAPI
6
7
  from ._api.schema import SchemaAPI
7
8
 
8
9
 
@@ -15,3 +16,4 @@ class NeatClient(CogniteClient):
15
16
  self._config.client_name = _CLIENT_NAME
16
17
  self.loaders = DataModelLoaderAPI(self)
17
18
  self.schema = SchemaAPI(self)
19
+ self.instances = NeatInstancesAPI(self)
@@ -7,6 +7,7 @@ from cognite.client.testing import CogniteClientMock
7
7
  from cognite.neat._client._api_client import NeatClient
8
8
 
9
9
  from ._api.data_modeling_loaders import DataModelLoaderAPI
10
+ from ._api.neat_instances import NeatInstancesAPI
10
11
  from ._api.schema import SchemaAPI
11
12
 
12
13
 
@@ -23,6 +24,7 @@ class NeatClientMock(CogniteClientMock):
23
24
  super().__init__(*args, **kwargs)
24
25
  self.schema = SchemaAPI(self)
25
26
  self.loaders = DataModelLoaderAPI(self)
27
+ self.instances = NeatInstancesAPI(self)
26
28
 
27
29
 
28
30
  @contextmanager
@@ -1,15 +1,15 @@
1
+ import typing
1
2
  import urllib.parse
2
- from collections.abc import Iterable, Iterator, Set
3
+ from collections.abc import Callable, Iterable, Iterator, Set
3
4
  from functools import cached_property
4
- from typing import cast
5
5
 
6
- from cognite.client import CogniteClient
7
6
  from cognite.client import data_modeling as dm
8
7
  from cognite.client.data_classes.data_modeling import DataModelIdentifier
9
- from cognite.client.data_classes.data_modeling.instances import Instance, InstanceSort
8
+ from cognite.client.data_classes.data_modeling.instances import Edge, Instance, Node
10
9
  from cognite.client.utils.useful_types import SequenceNotStr
11
10
  from rdflib import RDF, Literal, Namespace, URIRef
12
11
 
12
+ from cognite.neat._client import NeatClient
13
13
  from cognite.neat._config import GLOBAL_CONFIG
14
14
  from cognite.neat._constants import DEFAULT_SPACE_URI, is_readonly_property
15
15
  from cognite.neat._issues.errors import ResourceRetrievalError
@@ -33,6 +33,10 @@ class DMSExtractor(BaseExtractor):
33
33
  considered as an empty value and skipped.
34
34
  str_to_ideal_type: If unpack_json is True, when unpacking JSON objects, if the value is a string, the extractor
35
35
  will try to convert it to the ideal type.
36
+ node_type: The prioritized order of the node type to use. The options are "view" and "type". "view"
37
+ means the externalId of the view used as type, while type is the node.type.
38
+ edge_type: The prioritized order of the edge type to use. The options are "view" and "type". "view"
39
+ means the externalId of the view used as type, while type is the edge.type.
36
40
  """
37
41
 
38
42
  def __init__(
@@ -43,6 +47,8 @@ class DMSExtractor(BaseExtractor):
43
47
  unpack_json: bool = False,
44
48
  empty_values: Set[str] = DEFAULT_EMPTY_VALUES,
45
49
  str_to_ideal_type: bool = False,
50
+ node_type: tuple[typing.Literal["view", "type"], ...] = ("view",),
51
+ edge_type: tuple[typing.Literal["view", "type"], ...] = ("view", "type"),
46
52
  ) -> None:
47
53
  self.total_instances_pair_by_view = total_instances_pair_by_view
48
54
  self.limit = limit
@@ -50,11 +56,13 @@ class DMSExtractor(BaseExtractor):
50
56
  self.unpack_json = unpack_json
51
57
  self.empty_values = empty_values
52
58
  self.str_to_ideal_type = str_to_ideal_type
59
+ self.node_type = node_type
60
+ self.edge_type = edge_type
53
61
 
54
62
  @classmethod
55
63
  def from_data_model(
56
64
  cls,
57
- client: CogniteClient,
65
+ client: NeatClient,
58
66
  data_model: DataModelIdentifier,
59
67
  limit: int | None = None,
60
68
  overwrite_namespace: Namespace | None = None,
@@ -88,7 +96,7 @@ class DMSExtractor(BaseExtractor):
88
96
  @classmethod
89
97
  def from_views(
90
98
  cls,
91
- client: CogniteClient,
99
+ client: NeatClient,
92
100
  views: Iterable[dm.View],
93
101
  limit: int | None = None,
94
102
  overwrite_namespace: Namespace | None = None,
@@ -154,7 +162,10 @@ class DMSExtractor(BaseExtractor):
154
162
  else:
155
163
  # If the edge has properties, we create a node for the edge and connect it to the start and end nodes.
156
164
  id_ = self._as_uri_ref(instance)
157
- yield id_, RDF.type, self._as_uri_ref(instance.type)
165
+ type_ = self._create_type(
166
+ instance, fallback=self._get_namespace(instance.space).Edge, type_priority=self.edge_type
167
+ )
168
+ yield id_, RDF.type, type_
158
169
  yield (
159
170
  id_,
160
171
  self._as_uri_ref(dm.DirectRelationReference(instance.space, "startNode")),
@@ -168,14 +179,9 @@ class DMSExtractor(BaseExtractor):
168
179
 
169
180
  elif isinstance(instance, dm.Node):
170
181
  id_ = self._as_uri_ref(instance)
171
- if instance.type:
172
- type_ = self._as_uri_ref(cast(dm.DirectRelationReference, instance.type))
173
- elif len(instance.properties) == 1:
174
- view_id = next(iter(instance.properties.keys()))
175
- type_ = self._get_namespace(view_id.space)[urllib.parse.quote(view_id.external_id)]
176
- else:
177
- type_ = self._get_namespace(instance.space).Node
178
-
182
+ type_ = self._create_type(
183
+ instance, fallback=self._get_namespace(instance.space).Node, type_priority=self.node_type
184
+ )
179
185
  yield id_, RDF.type, type_
180
186
  else:
181
187
  raise NotImplementedError(f"Unknown instance type {type(instance)}")
@@ -196,6 +202,31 @@ class DMSExtractor(BaseExtractor):
196
202
  self.unpack_json,
197
203
  ).extract()
198
204
 
205
+ def _create_type(
206
+ self, instance: Node | Edge, fallback: URIRef, type_priority: tuple[typing.Literal["view", "type"], ...]
207
+ ) -> URIRef:
208
+ method_by_name: dict[str, Callable[[Node | Edge], URIRef | None]] = {
209
+ "view": self._view_to_rdf_type,
210
+ "type": self._instance_type_to_rdf,
211
+ }
212
+ for method_name in type_priority:
213
+ type_ = method_by_name[method_name](instance)
214
+ if type_:
215
+ return type_
216
+ else:
217
+ return fallback
218
+
219
+ def _instance_type_to_rdf(self, instance: Node | Edge) -> URIRef | None:
220
+ if instance.type:
221
+ return self._as_uri_ref(instance.type)
222
+ return None
223
+
224
+ def _view_to_rdf_type(self, instance: Node | Edge) -> URIRef | None:
225
+ view_id = next(iter((instance.properties or {}).keys()), None)
226
+ if view_id:
227
+ return self._get_namespace(view_id.space)[urllib.parse.quote(view_id.external_id)]
228
+ return None
229
+
199
230
  def _as_uri_ref(self, instance: Instance | dm.DirectRelationReference) -> URIRef:
200
231
  return self._get_namespace(instance.space)[urllib.parse.quote(instance.external_id)]
201
232
 
@@ -206,7 +237,7 @@ class DMSExtractor(BaseExtractor):
206
237
 
207
238
 
208
239
  class _ViewInstanceIterator(Iterable[Instance]):
209
- def __init__(self, client: CogniteClient, view: dm.View, instance_space: str | SequenceNotStr[str] | None = None):
240
+ def __init__(self, client: NeatClient, view: dm.View, instance_space: str | SequenceNotStr[str] | None = None):
210
241
  self.client = client
211
242
  self.view = view
212
243
  self.instance_space = instance_space
@@ -244,28 +275,20 @@ class _ViewInstanceIterator(Iterable[Instance]):
244
275
  }
245
276
  # All nodes and edges with properties
246
277
  if self.view.used_for in ("node", "all"):
247
- # Without a sort, the sort is implicitly by the internal id, as cursoring needs a stable sort.
248
- # By making the sort be on external_id, Postgres should pick the index
249
- # that's on (project_id, space, external_id)
250
- # WHERE deleted_at IS NULL. In other words, avoiding soft deleted instances.
251
- node_iterable: Iterable[Instance] = self.client.data_modeling.instances(
252
- chunk_size=None,
278
+ node_iterable: Iterable[Instance] = self.client.instances.iterate(
253
279
  instance_type="node",
254
- sources=[view_id],
280
+ source=view_id,
255
281
  space=self.instance_space,
256
- sort=InstanceSort(["node", "externalId"]),
257
282
  )
258
283
  if read_only_properties:
259
284
  node_iterable = self._remove_read_only_properties(node_iterable, read_only_properties, view_id)
260
285
  yield from node_iterable
261
286
 
262
287
  if self.view.used_for in ("edge", "all"):
263
- yield from self.client.data_modeling.instances(
264
- chunk_size=None,
288
+ yield from self.client.instances.iterate(
265
289
  instance_type="edge",
266
- sources=[view_id],
290
+ source=view_id,
267
291
  space=self.instance_space,
268
- sort=InstanceSort(["edge", "externalId"]),
269
292
  )
270
293
 
271
294
  for prop in self.view.properties.values():
@@ -273,14 +296,12 @@ class _ViewInstanceIterator(Iterable[Instance]):
273
296
  if prop.edge_source:
274
297
  # All edges with properties are extracted from the edge source
275
298
  continue
276
- yield from self.client.data_modeling.instances(
277
- chunk_size=None,
299
+ yield from self.client.instances.iterate(
278
300
  instance_type="edge",
279
- filter=dm.filters.Equals(
301
+ filter_=dm.filters.Equals(
280
302
  ["edge", "type"], {"space": prop.type.space, "externalId": prop.type.external_id}
281
303
  ),
282
304
  space=self.instance_space,
283
- sort=InstanceSort(["edge", "externalId"]),
284
305
  )
285
306
 
286
307
  @staticmethod
@@ -0,0 +1,2 @@
1
+ __version__ = "0.117.2"
2
+ __engine__ = "^2.0.4"
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "cognite-neat"
3
- version = "0.117.0"
3
+ version = "0.117.2"
4
4
  readme = "README.md"
5
5
  description = "Knowledge graph transformation"
6
6
  authors = [
@@ -1,2 +0,0 @@
1
- __version__ = "0.117.0"
2
- __engine__ = "^2.0.4"
File without changes
File without changes