cognite-neat 0.103.1__py3-none-any.whl → 0.105.0__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.

Potentially problematic release.


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

Files changed (175) hide show
  1. cognite/neat/_client/_api/data_modeling_loaders.py +83 -23
  2. cognite/neat/_client/_api/schema.py +2 -1
  3. cognite/neat/_client/data_classes/neat_sequence.py +261 -0
  4. cognite/neat/_client/data_classes/schema.py +5 -1
  5. cognite/neat/_client/testing.py +33 -0
  6. cognite/neat/_constants.py +56 -0
  7. cognite/neat/_graph/extractors/_classic_cdf/_base.py +6 -5
  8. cognite/neat/_graph/extractors/_classic_cdf/_sequences.py +225 -11
  9. cognite/neat/_graph/extractors/_mock_graph_generator.py +2 -2
  10. cognite/neat/_graph/loaders/_rdf2dms.py +13 -2
  11. cognite/neat/_graph/transformers/__init__.py +3 -1
  12. cognite/neat/_graph/transformers/_base.py +109 -1
  13. cognite/neat/_graph/transformers/_classic_cdf.py +6 -1
  14. cognite/neat/_graph/transformers/_prune_graph.py +103 -47
  15. cognite/neat/_graph/transformers/_rdfpath.py +41 -17
  16. cognite/neat/_graph/transformers/_value_type.py +188 -151
  17. cognite/neat/_issues/__init__.py +0 -2
  18. cognite/neat/_issues/_base.py +54 -43
  19. cognite/neat/_issues/warnings/__init__.py +4 -1
  20. cognite/neat/_issues/warnings/_general.py +7 -0
  21. cognite/neat/_issues/warnings/_resources.py +12 -1
  22. cognite/neat/_rules/_shared.py +18 -34
  23. cognite/neat/_rules/exporters/_base.py +28 -2
  24. cognite/neat/_rules/exporters/_rules2dms.py +39 -1
  25. cognite/neat/_rules/exporters/_rules2excel.py +13 -2
  26. cognite/neat/_rules/exporters/_rules2instance_template.py +4 -0
  27. cognite/neat/_rules/exporters/_rules2ontology.py +13 -1
  28. cognite/neat/_rules/exporters/_rules2yaml.py +4 -0
  29. cognite/neat/_rules/importers/_base.py +9 -0
  30. cognite/neat/_rules/importers/_dms2rules.py +80 -57
  31. cognite/neat/_rules/importers/_dtdl2rules/dtdl_importer.py +5 -2
  32. cognite/neat/_rules/importers/_rdf/_base.py +10 -8
  33. cognite/neat/_rules/importers/_rdf/_imf2rules.py +4 -0
  34. cognite/neat/_rules/importers/_rdf/_inference2rules.py +7 -0
  35. cognite/neat/_rules/importers/_rdf/_owl2rules.py +4 -0
  36. cognite/neat/_rules/importers/_spreadsheet2rules.py +17 -8
  37. cognite/neat/_rules/importers/_yaml2rules.py +21 -7
  38. cognite/neat/_rules/models/_base_input.py +1 -1
  39. cognite/neat/_rules/models/_base_rules.py +9 -1
  40. cognite/neat/_rules/models/dms/_rules.py +4 -0
  41. cognite/neat/_rules/models/dms/_rules_input.py +9 -0
  42. cognite/neat/_rules/models/entities/_wrapped.py +10 -5
  43. cognite/neat/_rules/models/information/_rules.py +4 -0
  44. cognite/neat/_rules/models/information/_rules_input.py +9 -0
  45. cognite/neat/_rules/models/mapping/_classic2core.py +2 -5
  46. cognite/neat/_rules/models/mapping/_classic2core.yaml +239 -38
  47. cognite/neat/_rules/transformers/__init__.py +13 -6
  48. cognite/neat/_rules/transformers/_base.py +41 -65
  49. cognite/neat/_rules/transformers/_converters.py +404 -234
  50. cognite/neat/_rules/transformers/_mapping.py +93 -72
  51. cognite/neat/_rules/transformers/_verification.py +50 -38
  52. cognite/neat/_session/_base.py +32 -121
  53. cognite/neat/_session/_inspect.py +5 -3
  54. cognite/neat/_session/_mapping.py +17 -105
  55. cognite/neat/_session/_prepare.py +138 -268
  56. cognite/neat/_session/_read.py +39 -195
  57. cognite/neat/_session/_set.py +6 -30
  58. cognite/neat/_session/_show.py +40 -21
  59. cognite/neat/_session/_state.py +49 -107
  60. cognite/neat/_session/_to.py +44 -33
  61. cognite/neat/_shared.py +23 -2
  62. cognite/neat/_store/_provenance.py +3 -82
  63. cognite/neat/_store/_rules_store.py +368 -10
  64. cognite/neat/_store/exceptions.py +23 -0
  65. cognite/neat/_utils/graph_transformations_report.py +36 -0
  66. cognite/neat/_utils/rdf_.py +8 -0
  67. cognite/neat/_utils/reader/_base.py +27 -0
  68. cognite/neat/_utils/spreadsheet.py +5 -4
  69. cognite/neat/_version.py +1 -1
  70. {cognite_neat-0.103.1.dist-info → cognite_neat-0.105.0.dist-info}/METADATA +3 -2
  71. cognite_neat-0.105.0.dist-info/RECORD +179 -0
  72. {cognite_neat-0.103.1.dist-info → cognite_neat-0.105.0.dist-info}/WHEEL +1 -1
  73. cognite/neat/_app/api/__init__.py +0 -0
  74. cognite/neat/_app/api/asgi/metrics.py +0 -4
  75. cognite/neat/_app/api/configuration.py +0 -98
  76. cognite/neat/_app/api/context_manager/__init__.py +0 -3
  77. cognite/neat/_app/api/context_manager/manager.py +0 -16
  78. cognite/neat/_app/api/data_classes/__init__.py +0 -0
  79. cognite/neat/_app/api/data_classes/rest.py +0 -59
  80. cognite/neat/_app/api/explorer.py +0 -66
  81. cognite/neat/_app/api/routers/configuration.py +0 -25
  82. cognite/neat/_app/api/routers/crud.py +0 -102
  83. cognite/neat/_app/api/routers/metrics.py +0 -10
  84. cognite/neat/_app/api/routers/workflows.py +0 -224
  85. cognite/neat/_app/api/utils/__init__.py +0 -0
  86. cognite/neat/_app/api/utils/data_mapping.py +0 -17
  87. cognite/neat/_app/api/utils/logging.py +0 -26
  88. cognite/neat/_app/api/utils/query_templates.py +0 -92
  89. cognite/neat/_app/main.py +0 -17
  90. cognite/neat/_app/monitoring/__init__.py +0 -0
  91. cognite/neat/_app/monitoring/metrics.py +0 -69
  92. cognite/neat/_app/ui/index.html +0 -1
  93. cognite/neat/_app/ui/neat-app/.gitignore +0 -23
  94. cognite/neat/_app/ui/neat-app/README.md +0 -70
  95. cognite/neat/_app/ui/neat-app/build/asset-manifest.json +0 -14
  96. cognite/neat/_app/ui/neat-app/build/favicon.ico +0 -0
  97. cognite/neat/_app/ui/neat-app/build/img/architect-icon.svg +0 -116
  98. cognite/neat/_app/ui/neat-app/build/img/developer-icon.svg +0 -112
  99. cognite/neat/_app/ui/neat-app/build/img/sme-icon.svg +0 -34
  100. cognite/neat/_app/ui/neat-app/build/index.html +0 -1
  101. cognite/neat/_app/ui/neat-app/build/logo192.png +0 -0
  102. cognite/neat/_app/ui/neat-app/build/manifest.json +0 -25
  103. cognite/neat/_app/ui/neat-app/build/robots.txt +0 -3
  104. cognite/neat/_app/ui/neat-app/build/static/css/main.72e3d92e.css +0 -2
  105. cognite/neat/_app/ui/neat-app/build/static/css/main.72e3d92e.css.map +0 -1
  106. cognite/neat/_app/ui/neat-app/build/static/js/main.5a52cf09.js +0 -3
  107. cognite/neat/_app/ui/neat-app/build/static/js/main.5a52cf09.js.LICENSE.txt +0 -88
  108. cognite/neat/_app/ui/neat-app/build/static/js/main.5a52cf09.js.map +0 -1
  109. cognite/neat/_app/ui/neat-app/build/static/media/logo.8093b84df9ed36a174c629d6fe0b730d.svg +0 -1
  110. cognite/neat/_app/ui/neat-app/package-lock.json +0 -18306
  111. cognite/neat/_app/ui/neat-app/package.json +0 -62
  112. cognite/neat/_app/ui/neat-app/public/favicon.ico +0 -0
  113. cognite/neat/_app/ui/neat-app/public/img/architect-icon.svg +0 -116
  114. cognite/neat/_app/ui/neat-app/public/img/developer-icon.svg +0 -112
  115. cognite/neat/_app/ui/neat-app/public/img/sme-icon.svg +0 -34
  116. cognite/neat/_app/ui/neat-app/public/index.html +0 -43
  117. cognite/neat/_app/ui/neat-app/public/logo192.png +0 -0
  118. cognite/neat/_app/ui/neat-app/public/manifest.json +0 -25
  119. cognite/neat/_app/ui/neat-app/public/robots.txt +0 -3
  120. cognite/neat/_app/ui/neat-app/src/App.css +0 -38
  121. cognite/neat/_app/ui/neat-app/src/App.js +0 -17
  122. cognite/neat/_app/ui/neat-app/src/App.test.js +0 -8
  123. cognite/neat/_app/ui/neat-app/src/MainContainer.tsx +0 -70
  124. cognite/neat/_app/ui/neat-app/src/components/JsonViewer.tsx +0 -43
  125. cognite/neat/_app/ui/neat-app/src/components/LocalUploader.tsx +0 -124
  126. cognite/neat/_app/ui/neat-app/src/components/OverviewComponentEditorDialog.tsx +0 -63
  127. cognite/neat/_app/ui/neat-app/src/components/StepEditorDialog.tsx +0 -511
  128. cognite/neat/_app/ui/neat-app/src/components/TabPanel.tsx +0 -36
  129. cognite/neat/_app/ui/neat-app/src/components/Utils.tsx +0 -56
  130. cognite/neat/_app/ui/neat-app/src/components/WorkflowDeleteDialog.tsx +0 -60
  131. cognite/neat/_app/ui/neat-app/src/components/WorkflowExecutionReport.tsx +0 -112
  132. cognite/neat/_app/ui/neat-app/src/components/WorkflowImportExportDialog.tsx +0 -67
  133. cognite/neat/_app/ui/neat-app/src/components/WorkflowMetadataDialog.tsx +0 -79
  134. cognite/neat/_app/ui/neat-app/src/index.css +0 -13
  135. cognite/neat/_app/ui/neat-app/src/index.js +0 -13
  136. cognite/neat/_app/ui/neat-app/src/logo.svg +0 -1
  137. cognite/neat/_app/ui/neat-app/src/reportWebVitals.js +0 -13
  138. cognite/neat/_app/ui/neat-app/src/setupTests.js +0 -5
  139. cognite/neat/_app/ui/neat-app/src/types/WorkflowTypes.ts +0 -388
  140. cognite/neat/_app/ui/neat-app/src/views/AboutView.tsx +0 -61
  141. cognite/neat/_app/ui/neat-app/src/views/ConfigView.tsx +0 -184
  142. cognite/neat/_app/ui/neat-app/src/views/GlobalConfigView.tsx +0 -180
  143. cognite/neat/_app/ui/neat-app/src/views/WorkflowView.tsx +0 -570
  144. cognite/neat/_app/ui/neat-app/tsconfig.json +0 -27
  145. cognite/neat/_rules/transformers/_pipelines.py +0 -70
  146. cognite/neat/_workflows/__init__.py +0 -17
  147. cognite/neat/_workflows/base.py +0 -590
  148. cognite/neat/_workflows/cdf_store.py +0 -393
  149. cognite/neat/_workflows/examples/Export_DMS/workflow.yaml +0 -89
  150. cognite/neat/_workflows/examples/Export_Semantic_Data_Model/workflow.yaml +0 -66
  151. cognite/neat/_workflows/examples/Import_DMS/workflow.yaml +0 -65
  152. cognite/neat/_workflows/examples/Validate_Rules/workflow.yaml +0 -67
  153. cognite/neat/_workflows/examples/Validate_Solution_Model/workflow.yaml +0 -64
  154. cognite/neat/_workflows/manager.py +0 -292
  155. cognite/neat/_workflows/model.py +0 -203
  156. cognite/neat/_workflows/steps/__init__.py +0 -0
  157. cognite/neat/_workflows/steps/data_contracts.py +0 -109
  158. cognite/neat/_workflows/steps/lib/__init__.py +0 -0
  159. cognite/neat/_workflows/steps/lib/current/__init__.py +0 -6
  160. cognite/neat/_workflows/steps/lib/current/graph_extractor.py +0 -100
  161. cognite/neat/_workflows/steps/lib/current/graph_loader.py +0 -51
  162. cognite/neat/_workflows/steps/lib/current/graph_store.py +0 -48
  163. cognite/neat/_workflows/steps/lib/current/rules_exporter.py +0 -537
  164. cognite/neat/_workflows/steps/lib/current/rules_importer.py +0 -398
  165. cognite/neat/_workflows/steps/lib/current/rules_validator.py +0 -106
  166. cognite/neat/_workflows/steps/lib/io/__init__.py +0 -1
  167. cognite/neat/_workflows/steps/lib/io/io_steps.py +0 -393
  168. cognite/neat/_workflows/steps/step_model.py +0 -79
  169. cognite/neat/_workflows/steps_registry.py +0 -218
  170. cognite/neat/_workflows/tasks.py +0 -18
  171. cognite/neat/_workflows/triggers.py +0 -169
  172. cognite/neat/_workflows/utils.py +0 -19
  173. cognite_neat-0.103.1.dist-info/RECORD +0 -275
  174. {cognite_neat-0.103.1.dist-info → cognite_neat-0.105.0.dist-info}/LICENSE +0 -0
  175. {cognite_neat-0.103.1.dist-info → cognite_neat-0.105.0.dist-info}/entry_points.txt +0 -0
@@ -0,0 +1,179 @@
1
+ cognite/neat/__init__.py,sha256=AXLMIF5t8RmjOpSaIlfqT8ltbPc__Tb8nAVbc1pkE0Q,176
2
+ cognite/neat/_client/__init__.py,sha256=RQ7MwL8mwGqGHokRzsPqO3XStDzmI4-c12_gz1UPJ74,177
3
+ cognite/neat/_client/_api/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
4
+ cognite/neat/_client/_api/data_modeling_loaders.py,sha256=0BZ5_NeszBvs4DHuHr0cGXytmvkTxrQ8k7v6iaX_mn4,35932
5
+ cognite/neat/_client/_api/schema.py,sha256=mKN38Et45smCt0eg4Rzrl3Rc0b5fs06YSK8yYTzklTA,4845
6
+ cognite/neat/_client/_api_client.py,sha256=6cNMizDuqMJZiOqiNRLX46BEtlCB-BpgGLyypksRVYU,616
7
+ cognite/neat/_client/data_classes/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
8
+ cognite/neat/_client/data_classes/data_modeling.py,sha256=RvpUp9ygd-yffQFJ7O2mQqMLDPIa-dmip5zPb8QVIiw,6672
9
+ cognite/neat/_client/data_classes/neat_sequence.py,sha256=QZWSfWnwk6KlYJvsInco4Wdwc1U8DnOQKWmHebArbQY,10830
10
+ cognite/neat/_client/data_classes/schema.py,sha256=uD8ExxEiIP3zhK4b--Q5fND-vmcC05a9WU5ItLsqG88,23179
11
+ cognite/neat/_client/testing.py,sha256=c5ADJkRJFYGlJVQz-uPqxKExKXT297pxKh_ka4oGBjs,1082
12
+ cognite/neat/_config.py,sha256=f9Py4SEHwYYquIg-k1rC7MbXBLENXQauoZtLyUbWvJQ,10118
13
+ cognite/neat/_constants.py,sha256=XO5-wL6wjY722MQAmWfIW-sC0WT_PTWSFL_GpYSRFjQ,4962
14
+ cognite/neat/_graph/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
15
+ cognite/neat/_graph/_shared.py,sha256=g7XFITbVxdDyGZ6mlgFUv5cBycrU7QbPktRikdUVkks,863
16
+ cognite/neat/_graph/_tracking/__init__.py,sha256=WOwsYieZtCW-iW15YkxUFrfKVVdLWdXHOGGStTwvE8A,91
17
+ cognite/neat/_graph/_tracking/base.py,sha256=qU7DQL_aeG22jS-uE3G17B1WL1sOOxHt-eR0XlTZngs,821
18
+ cognite/neat/_graph/_tracking/log.py,sha256=_MGgMWxPDfKG4kbX-YL1UO0Lfq8nbcjyFFJeqN5wpuc,928
19
+ cognite/neat/_graph/examples/Knowledge-Graph-Nordic44-dirty.xml,sha256=ujJip6XBs5n8enVDPzNnuGkMBwv8g21tIr1sEVJpK5M,1439359
20
+ cognite/neat/_graph/examples/Knowledge-Graph-Nordic44.xml,sha256=U2Ns-M4LRjT1fBkhmRj63ur7jDzlRtHK9yOLf_npZ_g,1437996
21
+ cognite/neat/_graph/examples/__init__.py,sha256=yAjHVY3b5jOjmbW-iLbhvu7BG014TpGi3K4igkDqW5I,368
22
+ cognite/neat/_graph/examples/skos-capturing-sheet-wind-topics.xlsx,sha256=CV_yK5ZSbYS_ktfIZUPD8Sevs47zpswLXQUDFkGE4Gw,45798
23
+ cognite/neat/_graph/extractors/__init__.py,sha256=dUdr4lg4HfEJuXeGGo2dmNdFwv75isdQza94M6GpE7k,2110
24
+ cognite/neat/_graph/extractors/_base.py,sha256=xvoK8ZCu7OOvqcI9glOLEh1DxqW_TA1xYPI5tQQG_50,859
25
+ cognite/neat/_graph/extractors/_classic_cdf/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
26
+ cognite/neat/_graph/extractors/_classic_cdf/_assets.py,sha256=9WVFrAtUFAp_AAlb26Rtt2Axz9xsPQYetg7SKVrNCr4,1474
27
+ cognite/neat/_graph/extractors/_classic_cdf/_base.py,sha256=9kI2qBv5fvUPNPA7RL9HrUR3p5R40Cxz2zR0f3lTxrU,11115
28
+ cognite/neat/_graph/extractors/_classic_cdf/_classic.py,sha256=aKo5Z5eKMZuyq9k6Uxk-yizvBnPNVc_58lIGoKrOEMU,11206
29
+ cognite/neat/_graph/extractors/_classic_cdf/_data_sets.py,sha256=xRFv9pVFgIMTZ45E8teMC0Ynku_CuZdcZkVCbhPuPBk,1294
30
+ cognite/neat/_graph/extractors/_classic_cdf/_events.py,sha256=B8hRoMAg8GQvApjxals5PfPyjmdPO93U3nj_G7g0kDQ,1394
31
+ cognite/neat/_graph/extractors/_classic_cdf/_files.py,sha256=Q816cVQ9qS7Art66HJfErL2OV7MxH_eSIG7bJ8_HJ7Q,1406
32
+ cognite/neat/_graph/extractors/_classic_cdf/_labels.py,sha256=7guTZdGFT1r7ItE2VNgXwbBZ1y_005oB3fg1XbwT7WQ,2083
33
+ cognite/neat/_graph/extractors/_classic_cdf/_relationships.py,sha256=Mu0PRcgF3BEZ7HVNQpCT1Ht2TLl9n2JcRz-UinShiFY,2977
34
+ cognite/neat/_graph/extractors/_classic_cdf/_sequences.py,sha256=n8qaFNR5YCRkT8rMevnQArFovbzE3EI-DuWIXMtjmx0,10676
35
+ cognite/neat/_graph/extractors/_classic_cdf/_timeseries.py,sha256=6CmmxWWG2IErfNKOPhsjQ5wSOTUZZMjulpaRbHj0Q-g,1560
36
+ cognite/neat/_graph/extractors/_dexpi.py,sha256=SFWnKXYpQToWag9aoX8fxISNa9b8KlqjZnkwI18BzNY,9431
37
+ cognite/neat/_graph/extractors/_dms.py,sha256=bK5p4-NdXlnQMGaalr6vgODcIvWu2e4qE6f8nnvdQK0,6685
38
+ cognite/neat/_graph/extractors/_iodd.py,sha256=nMSLmtgvxLrQJMA5NECF1OCp4Bcv0Vq0WsNv8X9Oj1k,18458
39
+ cognite/neat/_graph/extractors/_mock_graph_generator.py,sha256=7WqyFu2Qj03pJD4auuV3vrqjNA9s9pO5jlKJoTrIink,15419
40
+ cognite/neat/_graph/extractors/_rdf_file.py,sha256=YgPZN4Ayk6UlbwFFjdWn4Yo3P74D8KeNUb3slXg6Ox8,1604
41
+ cognite/neat/_graph/loaders/__init__.py,sha256=1eam_rG1BXTUJ8iDm8_IYZldEe177vn2GmHihDBi8qk,718
42
+ cognite/neat/_graph/loaders/_base.py,sha256=Fp6uUkNfAM-SVgsLz7tyNJxJ1eeEw3h2d4Q0YyppR-Y,3991
43
+ cognite/neat/_graph/loaders/_rdf2dms.py,sha256=tTEGh_d0WZ_sTbqSkKUkb8IEtamiNGY46B5lnq0pCwc,24349
44
+ cognite/neat/_graph/queries/__init__.py,sha256=BgDd-037kvtWwAoGAy8eORVNMiZ5-E9sIV0txIpeaN4,50
45
+ cognite/neat/_graph/queries/_base.py,sha256=Y3Amuave6xdQsDE5ZXCrYLUgOMIH8BXa4n5Pc9czAF0,14926
46
+ cognite/neat/_graph/queries/_construct.py,sha256=CW8uHtXXACUXDj1AcEjROXtvoiuyx0CTgZ0bURY5Neo,7213
47
+ cognite/neat/_graph/queries/_shared.py,sha256=uhw-nY4jJvivgtj1msdCRrfTWgauU7ybSHUqqUaFOUU,5390
48
+ cognite/neat/_graph/transformers/__init__.py,sha256=sSrjK3_UDeesN8RzOjfNAYqyOEwjZJPUGO4uDuMLZ3s,1620
49
+ cognite/neat/_graph/transformers/_base.py,sha256=omFmfRGaudojjq3GlW6b8PA2TNRcN3jXkw6Xvnx5r4M,4345
50
+ cognite/neat/_graph/transformers/_classic_cdf.py,sha256=WoxjPNmuiLwIvbdVqeUX2HIjPoaBI4zWriR5Po1iXA0,19406
51
+ cognite/neat/_graph/transformers/_iodd.py,sha256=KNz1fPdKK40UaHgPMECzNZgSeU5PdPRyLdaRYdq1iug,866
52
+ cognite/neat/_graph/transformers/_prune_graph.py,sha256=LFiAMYFteND5LGEv9KqYJr5C9-n7S5fR6IrEdtJyRnk,12447
53
+ cognite/neat/_graph/transformers/_rdfpath.py,sha256=jaJwtvfY65X2aRTJ__MSWcv_i_CyvOrlYYLRMCx2Ji4,4993
54
+ cognite/neat/_graph/transformers/_value_type.py,sha256=ZtH1KZmOGBGpUcqj4fBRlPOMq6kADt-HMShvYPS5Org,12841
55
+ cognite/neat/_issues/__init__.py,sha256=OVgWivp_Br31p8zPeHjOEXs-Wj7lJU1pU1L3pfhfuqE,518
56
+ cognite/neat/_issues/_base.py,sha256=vV0E8cfXKlOnRXFIDZKg5QPMruELEbCaUfQ01l5dR9A,20073
57
+ cognite/neat/_issues/errors/__init__.py,sha256=cAmB92WnUDicT8adowED0-UbMTuJxdde2TS5G65IW50,2216
58
+ cognite/neat/_issues/errors/_external.py,sha256=2RUOH4zRLYZQGLNwoTospi8xTW-P7CUZ_hURjRPcSbE,1764
59
+ cognite/neat/_issues/errors/_general.py,sha256=zwEoaygHA2Nt9vCwiveDuzJsqZYIaX0BoUYkwJkQ4jU,844
60
+ cognite/neat/_issues/errors/_properties.py,sha256=T_nquQeEQS3DQY--DQ13acxhGX_-gpUMjWGTBKCh6r8,2536
61
+ cognite/neat/_issues/errors/_resources.py,sha256=YoajFF4Nxq_mhhVSZ7r3J6V-sH8cMMn576dSTsbcQZk,3964
62
+ cognite/neat/_issues/errors/_workflow.py,sha256=m_Hlsvl5A1Oy7P3IROnz-4_do8_orZ1Pr1IHqsMyEys,971
63
+ cognite/neat/_issues/formatters.py,sha256=ziNWT_YXwovTfU8Av5iYuSLgszzJYKTawM_z67VBdlU,3331
64
+ cognite/neat/_issues/warnings/__init__.py,sha256=Qq5z9Bi_4Htn0bKeHQyxssfwHRSMv9nuQbJX1psWThI,2885
65
+ cognite/neat/_issues/warnings/_external.py,sha256=3tE98nLzOx9pb-VMi0MmQskHj-IuEqwjjoqhKMJ-xIM,1325
66
+ cognite/neat/_issues/warnings/_general.py,sha256=idZZZDbeSrDJJ1PomdmIO40QsZQNn_lWztWvMA-9q50,782
67
+ cognite/neat/_issues/warnings/_models.py,sha256=i4ZXr1IINKbFiVhUd8-qAt9_cXB8D3W-ng1Ime_lQTA,4376
68
+ cognite/neat/_issues/warnings/_properties.py,sha256=xo_kaXaMOozmhxBRHhVTPaYobFpHWvfiO9q0UYqnKS8,2678
69
+ cognite/neat/_issues/warnings/_resources.py,sha256=jRhV7ROxuqcwah4rB3vTjBf_cZufRgnkDKZAflhlV3c,3556
70
+ cognite/neat/_issues/warnings/user_modeling.py,sha256=_cN1wbaQUStZ13aG0VbN5UwKM9YdtyPfuSNJ1AAS6o8,3668
71
+ cognite/neat/_rules/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
72
+ cognite/neat/_rules/_constants.py,sha256=lOyf7nybSYOuAE_wKmTMncHYz0Io0_J_YVnYBzjrvZA,5637
73
+ cognite/neat/_rules/_shared.py,sha256=2WrvsSKP4XQisDXUVu5z4GOfjQMIQZwed_UNfb4NCoY,1282
74
+ cognite/neat/_rules/analysis/__init__.py,sha256=sTW-gDkHn2VPAHnuOBYJF40Ap3AfxvhLkDGoIRKyOJE,126
75
+ cognite/neat/_rules/analysis/_base.py,sha256=RXPxgcjhA8xZMZ30TZAYw9vXxd6p2Bn6nWekLEExY_Q,16744
76
+ cognite/neat/_rules/analysis/_dms.py,sha256=k9OrN6kRCcdPr8GCJDRXyF0nNXmBYJQDtoGqw7R87po,2204
77
+ cognite/neat/_rules/analysis/_information.py,sha256=Ex4ZeADmJV35_KjOerlepZILVfZVPcud1zojogKc6_s,10699
78
+ cognite/neat/_rules/catalog/__init__.py,sha256=38VJJmLBBn-GxM6r9OpEjWq4Xn9df988yv2sqMlRLRs,202
79
+ cognite/neat/_rules/catalog/hello_world_pump.xlsx,sha256=4Fv9qyv7ARHBXSIh-PiOUHcYrtgznKyR2PZCdEBlA0o,17071
80
+ cognite/neat/_rules/catalog/info-rules-imf.xlsx,sha256=7odm5CoAU72-VTZk_z1u7GbycIb-X-8Yy3mtBGLjhE4,55511
81
+ cognite/neat/_rules/exporters/__init__.py,sha256=IYBa0DIYlx8cFItgYRw9W4FY_LmVEjuaqMz3JORZZX0,1204
82
+ cognite/neat/_rules/exporters/_base.py,sha256=VkNMy8wsH-x4tAjS44cXgzzNH0CM2k_4RhkMwK50J7g,2284
83
+ cognite/neat/_rules/exporters/_rules2dms.py,sha256=7I3a8ZPwkIBQAClQbMjJ2D2aIITY-OBVUD-8hirCmzM,19183
84
+ cognite/neat/_rules/exporters/_rules2excel.py,sha256=Y7QXtRoZNXuxM0gZIvy4u5_-V3r0qZ1ZfmMr-aMgH8A,12513
85
+ cognite/neat/_rules/exporters/_rules2instance_template.py,sha256=cgO8omyV5Jr0mPGI_W_9ipiE3W1xKxlMLW9ySOLJLZw,5932
86
+ cognite/neat/_rules/exporters/_rules2ontology.py,sha256=l0QJKh0qJ5CDtReWDeQ2jt7wa__v0FEgVMX9jCKHT2U,22120
87
+ cognite/neat/_rules/exporters/_rules2yaml.py,sha256=-TtE7-SvfJr0-ndNy26nrHXtxAq6hNyZQbh5jwGao4o,3149
88
+ cognite/neat/_rules/exporters/_validation.py,sha256=DVJGdNNU2WtAFgUg0h4SWVhveRErEPOcYdT65y5toV0,682
89
+ cognite/neat/_rules/importers/__init__.py,sha256=d5k8vNgf1rjECl6pubozVQV1Bdpz62GI59GYC-cJMrY,1316
90
+ cognite/neat/_rules/importers/_base.py,sha256=HOmfESfF9KLGWGa5AmhPGc-AimwKHgoShbxPz90h2JE,3589
91
+ cognite/neat/_rules/importers/_dms2rules.py,sha256=rj_JfbpH76045coBQaxkXSS__81SE-HWxfV4jCSUvuI,22772
92
+ cognite/neat/_rules/importers/_dtdl2rules/__init__.py,sha256=CNR-sUihs2mnR1bPMKs3j3L4ds3vFTsrl6YycExZTfU,68
93
+ cognite/neat/_rules/importers/_dtdl2rules/_unit_lookup.py,sha256=wW4saKva61Q_i17guY0dc4OseJDQfqHy_QZBtm0OD6g,12134
94
+ cognite/neat/_rules/importers/_dtdl2rules/dtdl_converter.py,sha256=j38U0um1ZWI-yRvEUR3z33vOvMCYXJxSO9L_B7m9xDE,11707
95
+ cognite/neat/_rules/importers/_dtdl2rules/dtdl_importer.py,sha256=amK-Q1n4Zl_LdZko23ZW6cJD7G6U3vm8EIDr3qiRo64,6097
96
+ cognite/neat/_rules/importers/_dtdl2rules/spec.py,sha256=u__f08rAiYG0FIRiWoecBN83bVN3GEy--Lvm7463Q68,12166
97
+ cognite/neat/_rules/importers/_rdf/__init__.py,sha256=x06gjJ3dXlhJRRgyXZ-HoF4vFnbPmzI2ni6wyzwtfPU,183
98
+ cognite/neat/_rules/importers/_rdf/_base.py,sha256=b7MM4PV4d0irLbU8nKws4ynhiIuzmvvZeeQycHVKMpQ,5682
99
+ cognite/neat/_rules/importers/_rdf/_imf2rules.py,sha256=M5hfWZUhoCgXFlr8QNfogNCI2pxzqqAvTJII4yA8xJw,3723
100
+ cognite/neat/_rules/importers/_rdf/_inference2rules.py,sha256=Kp0ShcswOP0HKL2RtTwnN5Q2mxpI1lXzqzgNF2npfHM,12741
101
+ cognite/neat/_rules/importers/_rdf/_owl2rules.py,sha256=gTMe94DC9xe8NR9KNVHTMTshg_NzVuN1v8Lz95BUshI,3392
102
+ cognite/neat/_rules/importers/_rdf/_shared.py,sha256=mxBoqFQfvHeLa4kbDYAd7FEcHe1fv97tcqHd9gmFeKk,5867
103
+ cognite/neat/_rules/importers/_spreadsheet2rules.py,sha256=2KhOSzNPmQgBb64L3aIARwmqY944LNP_9QciMnn7ecY,10911
104
+ cognite/neat/_rules/importers/_yaml2rules.py,sha256=k2oDgz--mxFVeyqQG3uvyYcb0BkFHwKHdBYHVaxtAEc,3721
105
+ cognite/neat/_rules/models/__init__.py,sha256=tf6tyWiYO0eC2PHCcpy208dwOHjEi9hg0sEaQLcB3uA,1024
106
+ cognite/neat/_rules/models/_base_input.py,sha256=kAVI6QYAzsgQ79eLPc_hANJjl-o1e9IKeD7lF61ru9Y,6656
107
+ cognite/neat/_rules/models/_base_rules.py,sha256=cU-FG-aE6nVq_OBQ68-jybkxqTxXq3nrZCY-aLwIvO8,15055
108
+ cognite/neat/_rules/models/_rdfpath.py,sha256=hqUMZCMeI8ESdJltu7FifuUhna5JNN_Heup2aYkV56Y,11882
109
+ cognite/neat/_rules/models/_types.py,sha256=7rh4PVaqI58OTXtoIgZKitmwa5hZlVtk8uX4czlSGFY,5261
110
+ cognite/neat/_rules/models/data_types.py,sha256=LJuWUbStlZM4hUJGExOJIJXmAA4uiA0tvO9zKqLUrQg,9805
111
+ cognite/neat/_rules/models/dms/__init__.py,sha256=fRaUH0IwG0YwWd_DNKM6j-jHHFyiIVz4_8DPiS1KR0Y,695
112
+ cognite/neat/_rules/models/dms/_exporter.py,sha256=eB5uDX06XYkQkON96eykSk7ZCegb9a5dCxTmTIr252c,28020
113
+ cognite/neat/_rules/models/dms/_rules.py,sha256=G0bJOm0tVOWMBZ9629gtK0M6ukZqKSBaqE2jG_wiHgE,20277
114
+ cognite/neat/_rules/models/dms/_rules_input.py,sha256=mDLojcIZyu-EIR0qLDCYIUqcgWDKdC7dEF5qffVvLfs,13197
115
+ cognite/neat/_rules/models/dms/_validation.py,sha256=PNFHsDNHJZfbHY1qt6D4t3eFOGjqe6Koa702Gzcz0I8,27734
116
+ cognite/neat/_rules/models/entities/__init__.py,sha256=Hlucp3LyV6ncLl79aqRTbSy2qgiGzoyN8x54D_zaJCY,1469
117
+ cognite/neat/_rules/models/entities/_constants.py,sha256=ToiLaaF-hGLPfn3AsKIIrfB4ZdTk4cY1RjM9gA1Qjkg,288
118
+ cognite/neat/_rules/models/entities/_loaders.py,sha256=jFllRty5XpS6uLklr9wJkx7Bzm-qwg65um6hnVistvw,2728
119
+ cognite/neat/_rules/models/entities/_multi_value.py,sha256=6j-nlUA392yQP_uB_CFB6_qFReNhi54ZlbFTcOKpbKY,2755
120
+ cognite/neat/_rules/models/entities/_single_value.py,sha256=GW1R8ko1vwjGhAs2Fl5BGgpz3qtiYnYoahT4hBgJdkA,19441
121
+ cognite/neat/_rules/models/entities/_types.py,sha256=df9rnXJJKciv2Bp-Ve2q4xdEJt6WWniq12Z0hW2d6sk,1917
122
+ cognite/neat/_rules/models/entities/_wrapped.py,sha256=-LP20mEv8H2NAoZplP-IJud-kaMHNFWE8fqbeJmdpk4,7579
123
+ cognite/neat/_rules/models/information/__init__.py,sha256=lV7l8RTfWBvN_DFkzea8OzADjq0rZGgWe_0Fiwtfje0,556
124
+ cognite/neat/_rules/models/information/_rules.py,sha256=juiqvFkSmpO9Z2EKOR1GH9eSapnWWm34BJJtdCg_iso,11897
125
+ cognite/neat/_rules/models/information/_rules_input.py,sha256=_e4ocafo4RYg0b67y2UgWIdPylrh8FkrimttAgIEqIs,5699
126
+ cognite/neat/_rules/models/information/_validation.py,sha256=HbaLShj6uumu-t9I3FUI_iKQfUDiwEkuFENHgWIPfrk,10202
127
+ cognite/neat/_rules/models/mapping/__init__.py,sha256=T68Hf7rhiXa7b03h4RMwarAmkGnB-Bbhc1H07b2PyC4,100
128
+ cognite/neat/_rules/models/mapping/_classic2core.py,sha256=2IEIWTF7siB7nHTKuafG_KJbt4h1CPMdG3yDsw3Sky8,1239
129
+ cognite/neat/_rules/models/mapping/_classic2core.yaml,sha256=invWES7qhqKXymx_Bt2ZdMJwBMpmFQ9hGe0nWt_hMEw,20055
130
+ cognite/neat/_rules/transformers/__init__.py,sha256=jzfzRDcyz_6azteTjGFBjKz9vQTwo_slT-eNocfWZxw,993
131
+ cognite/neat/_rules/transformers/_base.py,sha256=sflEUKfNgCE3NNErzBMJ88VJEYB12pU1H3da40B52Yg,2556
132
+ cognite/neat/_rules/transformers/_converters.py,sha256=0fnQl-RXGfh9WcRjIlgCmpjYs2gZa0ya8kNQL_FnMPk,52576
133
+ cognite/neat/_rules/transformers/_mapping.py,sha256=mx1FJCfflWmUPaDdlcLE2MEuuJwPcR4-gvx_CtK8Lds,18093
134
+ cognite/neat/_rules/transformers/_verification.py,sha256=jKTppklUCVwVlRfYyMfnUtV8r2ACTY-AtsoMF6L-KXo,4593
135
+ cognite/neat/_session/__init__.py,sha256=fxQ5URVlUnmEGYyB8Baw7IDq-uYacqkigbc4b-Pr9Fw,58
136
+ cognite/neat/_session/_base.py,sha256=qkZh5FFFydD3m4YOyAXEss429eCcb9nJyjCFszWWYqc,10067
137
+ cognite/neat/_session/_collector.py,sha256=SPCb1fEuOVIMHMQsVUNS7nkUUPhtUuNatnWPAIfQMcE,4093
138
+ cognite/neat/_session/_drop.py,sha256=kfXSgsq3xaLOAxtfjPkix9C18xulJv4Cfu4gj86nBSY,1392
139
+ cognite/neat/_session/_inspect.py,sha256=w8EGQIYMfhN4blCWo6BRCMckBhKMqmt1faa-7M0jqAg,8167
140
+ cognite/neat/_session/_mapping.py,sha256=WbFFho2Lr3PNL4WkfHw5K3ca9d8DiAcWRYkFkMURsds,2451
141
+ cognite/neat/_session/_prepare.py,sha256=wnWOX19cmnCTjiWxJAIOWznyE7yHQ12tdnJiVdjuTC4,23934
142
+ cognite/neat/_session/_read.py,sha256=Z-yl-h1c_OLZYEW7M8vsgoZigOlg79LwUMXKGt6bImo,14644
143
+ cognite/neat/_session/_set.py,sha256=5glxDLjgJaEmX-KbWTWsJOfYaDSZ-j-kxvZfnoHmV1k,1622
144
+ cognite/neat/_session/_show.py,sha256=bp1IddBd0vBxlWcewxL3U3zv-GsE8l7lxIE7muCvyXk,16305
145
+ cognite/neat/_session/_state.py,sha256=rleRNrjocCI8vG9jbIDAQ3a3bpe5O5t2kizXS0CWscY,4041
146
+ cognite/neat/_session/_to.py,sha256=yvI4VdICdWnQZSMrxDD1KncESBpPuv9WVo8I17tySEA,9795
147
+ cognite/neat/_session/_wizard.py,sha256=O8d0FA87RIoiTOD2KLyTVsxwA2-ewAG2By4JfxXSL84,1474
148
+ cognite/neat/_session/engine/__init__.py,sha256=D3MxUorEs6-NtgoICqtZ8PISQrjrr4dvca6n48bu_bI,120
149
+ cognite/neat/_session/engine/_import.py,sha256=1QxA2_EK613lXYAHKQbZyw2yjo5P9XuiX4Z6_6-WMNQ,169
150
+ cognite/neat/_session/engine/_interface.py,sha256=ItJ1VMrPt-pKKvpSpglD9n9yFC6ehF9xV2DUVCyfQB0,533
151
+ cognite/neat/_session/engine/_load.py,sha256=LcoYVthQyCzLWKzRE_75_nElS-n_eMWSPAgNJBnh5dA,5193
152
+ cognite/neat/_session/exceptions.py,sha256=dvhwF7d8AADxqEI13nZreLCPBPN_7A3KiAqlWjkpuqc,2303
153
+ cognite/neat/_shared.py,sha256=Ov59SWYboRRsncB_5V1ZC_BAoACfNLjo80vqE5Ru6wo,2325
154
+ cognite/neat/_store/__init__.py,sha256=RrvuZrMdezqun5dOrwHWSk26kampZcvqiHBqSFumkEE,130
155
+ cognite/neat/_store/_graph_store.py,sha256=36wShJzRTJUBg-rSZJwvD4c3RsdvxCL1ORQopeuCSuU,18384
156
+ cognite/neat/_store/_provenance.py,sha256=g_u6O7jo3ZekQVtc-FfJR1fTGqD9L3ipwfSEjdHB1xM,6610
157
+ cognite/neat/_store/_rules_store.py,sha256=mpx63LSceedrDiRDG66RW5zlsaCYzyYspDiAV_WwW5U,15335
158
+ cognite/neat/_store/exceptions.py,sha256=1xLtWqX-TiGcXdgayBgeNx1cipoXkye7LmTMFdpMg1s,506
159
+ cognite/neat/_utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
160
+ cognite/neat/_utils/auth.py,sha256=Y35foeQHHbnAWhfDtgNqXGOoPqBk5gtrfhPWgoSa5XQ,13444
161
+ cognite/neat/_utils/auxiliary.py,sha256=WFOycFgoYipvDmtGvn6ZNH3H8iNZmHamrfe2kXRb8lM,6667
162
+ cognite/neat/_utils/collection_.py,sha256=Q_LN1qypr0SeAV3dAR5KLD1szHNohSdYxyA8hr3n4T8,1433
163
+ cognite/neat/_utils/graph_transformations_report.py,sha256=rjEy4XMvOygFL4UgnYOmFW6AHxaU9IXep-dmYc5654c,1230
164
+ cognite/neat/_utils/io_.py,sha256=D2Mg8sOxfBoDg3fC0jBzaxO3vkXmr0QvZSgYIv6xRkM,386
165
+ cognite/neat/_utils/rdf_.py,sha256=b3sE3aTW9lu4gJWQJEaq_NCLbI54cc1o12utz-xbLh8,9023
166
+ cognite/neat/_utils/reader/__init__.py,sha256=fPkrNB_9hLB7CyHTCFV_xEbIfOMqUQzNly5JN33-QfM,146
167
+ cognite/neat/_utils/reader/_base.py,sha256=Q35hz8tqAiQiELjE4DsDDKQHLtRmSTrty4Gep9rg_CU,5444
168
+ cognite/neat/_utils/spreadsheet.py,sha256=ssNWat42srjbQfzzApaGiNanyEy-oFlAQ6qQXCZOhoE,2777
169
+ cognite/neat/_utils/text.py,sha256=0IffvBIAmeGh92F4T6xiEdd-vv3B7FOGEMbfuTktO5Y,4017
170
+ cognite/neat/_utils/time_.py,sha256=O30LUiDH9TdOYz8_a9pFqTtJdg8vEjC3qHCk8xZblG8,345
171
+ cognite/neat/_utils/upload.py,sha256=iWKmsQgw4EHLv-11NjYu7zAj5LtqTAfNa87a1kWeuaU,5727
172
+ cognite/neat/_utils/xml_.py,sha256=FQkq84u35MUsnKcL6nTMJ9ajtG9D5i1u4VBnhGqP2DQ,1710
173
+ cognite/neat/_version.py,sha256=k6808j5bC3aQEf0yqHcziCekV2_7uiJmkn-B2vMfJGs,46
174
+ cognite/neat/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
175
+ cognite_neat-0.105.0.dist-info/LICENSE,sha256=W8VmvFia4WHa3Gqxq1Ygrq85McUNqIGDVgtdvzT-XqA,11351
176
+ cognite_neat-0.105.0.dist-info/METADATA,sha256=VocFhvXyWxYiP10dCC4xlD7SUyNq37jSH5BX6FqIPUA,5759
177
+ cognite_neat-0.105.0.dist-info/WHEEL,sha256=RaoafKOydTQ7I_I3JTrPCg6kUmTgtm4BornzOqyEfJ8,88
178
+ cognite_neat-0.105.0.dist-info/entry_points.txt,sha256=SsQlnl8SNMSSjE3acBI835JYFtsIinLSbVmHmMEXv6E,51
179
+ cognite_neat-0.105.0.dist-info/RECORD,,
@@ -1,4 +1,4 @@
1
1
  Wheel-Version: 1.0
2
- Generator: poetry-core 1.9.1
2
+ Generator: poetry-core 2.0.0
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
File without changes
@@ -1,4 +0,0 @@
1
- from prometheus_client import Counter, make_asgi_app
2
-
3
- counter = Counter("started_workflows", "Description of counter")
4
- prometheus_app = make_asgi_app()
@@ -1,98 +0,0 @@
1
- import logging
2
- import os
3
- from pathlib import Path
4
- from typing import Any
5
-
6
- from cognite.client import CogniteClient
7
- from fastapi import FastAPI
8
-
9
- from cognite import neat
10
- from cognite.neat._config import Config, configure_logging, copy_examples_to_directory, create_data_dir_structure
11
- from cognite.neat._constants import PACKAGE_DIRECTORY
12
- from cognite.neat._workflows.cdf_store import CdfStore
13
- from cognite.neat._workflows.manager import WorkflowManager
14
- from cognite.neat._workflows.triggers import TriggerManager
15
-
16
- UI_PATH = PACKAGE_DIRECTORY / "_app" / "ui" / "neat-app" / "build"
17
-
18
-
19
- class NeatApp:
20
- def __init__(self, config: Config, cdf_client: CogniteClient | None = None):
21
- self.config = config
22
- self.cdf_client: CogniteClient | None = None
23
- self.cdf_store: CdfStore | None = None
24
- self.fast_api_app: FastAPI | None = None
25
- self.cdf_client = cdf_client
26
-
27
- def set_http_server(self, fast_api_app: FastAPI):
28
- """Set the http server to be used by the triggers manager"""
29
- self.fast_api_app = fast_api_app
30
-
31
- def start(self, config: Config | None = None):
32
- logging.info("Starting NeatApp")
33
- if config:
34
- self.config = config
35
- logging.info("Initializing global objects")
36
- if not self.cdf_client:
37
- self.cdf_client = self.config.cdf_auth_config.get_client()
38
- self.cdf_store = CdfStore(
39
- self.cdf_client,
40
- self.config.cdf_default_dataset_id,
41
- workflows_storage_path=self.config.workflows_store_path,
42
- rules_storage_path=self.config.rules_store_path,
43
- )
44
-
45
- # Automatically downloading workflows from CDF if enabled in config
46
- if self.config.workflow_downloader_filter:
47
- self.cdf_store.load_workflows_from_cfg_by_filter(self.config.workflow_downloader_filter)
48
-
49
- self.workflow_manager = WorkflowManager(
50
- client=self.cdf_client,
51
- config=self.config,
52
- )
53
- self.workflow_manager.load_workflows_from_storage()
54
- self.triggers_manager = TriggerManager(workflow_manager=self.workflow_manager)
55
- self.triggers_manager.start_time_schedulers()
56
- logging.info("NeatApp started")
57
-
58
- def stop(self):
59
- logging.info("Stopping NeatApp")
60
- if self.triggers_manager:
61
- self.triggers_manager.stop_scheduler_main_loop()
62
- self.cdf_client = None
63
- self.cdf_store = None
64
- self.workflow_manager = None
65
- self.triggers_manager = None
66
- logging.info("NeatApp stopped")
67
-
68
-
69
- def create_neat_app() -> NeatApp:
70
- logger = logging.getLogger(__name__) # temporary logger before config is loaded
71
-
72
- if os.environ.get("NEAT_CDF_PROJECT"):
73
- logger.info("ENV NEAT_CDF_PROJECT is set, loading config from env.")
74
- config = Config.from_env()
75
- elif (config_path := Path(os.environ.get("NEAT_CONFIG_PATH", "config.yaml"))).exists():
76
- logger.info(f"Loading config from {config_path.name}.")
77
- config = Config.from_yaml(config_path)
78
- else:
79
- logger.error(f"Config file {config_path.name} not found.Exiting.")
80
- config = Config()
81
- config.to_yaml(config_path)
82
-
83
- if config.load_examples:
84
- copy_examples_to_directory(config)
85
- else:
86
- create_data_dir_structure(config)
87
-
88
- configure_logging(config.log_level, config.log_format)
89
- logging.info(f" Starting NEAT version {neat.__version__}")
90
- logging.debug(
91
- f" Config: {config.model_dump(exclude={'cdf_client': {'client_secret': ...}})}" # type: ignore[arg-type]
92
- )
93
-
94
- return NeatApp(config)
95
-
96
-
97
- NEAT_APP = create_neat_app()
98
- CACHE_STORE: dict[str, Any] = {}
@@ -1,3 +0,0 @@
1
- from cognite.neat._app.api.context_manager.manager import lifespan
2
-
3
- __all__ = ["lifespan"]
@@ -1,16 +0,0 @@
1
- import logging
2
- from contextlib import asynccontextmanager
3
-
4
- from fastapi import FastAPI
5
-
6
- from cognite.neat._app.api.configuration import NEAT_APP
7
-
8
-
9
- @asynccontextmanager
10
- async def lifespan(app_ref: FastAPI):
11
- logging.info("Startup FastAPI server")
12
- NEAT_APP.set_http_server(app_ref)
13
- NEAT_APP.start()
14
- yield
15
- logging.info("FastApi shutdown event")
16
- NEAT_APP.stop()
File without changes
@@ -1,59 +0,0 @@
1
- import logging
2
-
3
- from pydantic import BaseModel, field_validator, model_validator
4
-
5
-
6
- class QueryRequest(BaseModel):
7
- graph_name: str
8
- workflow_name: str = "default"
9
- query: str
10
-
11
-
12
- class RuleRequest(BaseModel):
13
- graph_name: str
14
- workflow_name: str = "default"
15
- rule_type: str
16
- rule: str
17
-
18
-
19
- class RunWorkflowRequest(BaseModel):
20
- name: str
21
- config: dict
22
- start_step: str
23
- sync: bool = False
24
-
25
- @field_validator("config", mode="before")
26
- def empty_string_to_dict(cls, value):
27
- if value == "":
28
- return {}
29
- return value
30
-
31
- @model_validator(mode="before")
32
- def log_call(cls, values):
33
- logging.info(f"RunWorkflowRequest: {values}")
34
- return values
35
-
36
-
37
- class NodesAndEdgesRequest(BaseModel):
38
- graph_name: str
39
- workflow_name: str = "default"
40
- node_class_filter: list[str]
41
- src_edge_filter: list[str]
42
- dst_edge_filter: list[str]
43
- cache: bool = False
44
- limit: int = 1000
45
- node_name_property: str = ""
46
- sparql_query: str = ""
47
-
48
-
49
- class DatatypePropertyRequest(BaseModel):
50
- graph_name: str = "source"
51
- workflow_name: str = ""
52
- cache: bool = False
53
- limit: int = 10
54
-
55
-
56
- class TransformationRulesUpdateRequest(BaseModel):
57
- file_name: str = ""
58
- output_format: str = "excel"
59
- rules_object: dict = {}
@@ -1,66 +0,0 @@
1
- import logging
2
-
3
- import pkg_resources
4
- from fastapi import FastAPI
5
- from fastapi.middleware.cors import CORSMiddleware
6
- from fastapi.responses import RedirectResponse
7
- from fastapi.staticfiles import StaticFiles
8
-
9
- from cognite import neat
10
- from cognite.neat._app.api.asgi.metrics import prometheus_app
11
- from cognite.neat._app.api.configuration import NEAT_APP, UI_PATH
12
- from cognite.neat._app.api.context_manager import lifespan
13
- from cognite.neat._app.api.routers import (
14
- configuration,
15
- crud,
16
- metrics,
17
- workflows,
18
- )
19
- from cognite.neat._app.api.utils.logging import EndpointFilter
20
-
21
- app = FastAPI(title="Neat", lifespan=lifespan)
22
-
23
- # Define excluded endpoints
24
- EXCLUDED_ENDPOINTS = ["/api/workflow/stats"]
25
-
26
- # Add filter to the logger
27
- logging.getLogger("uvicorn.access").addFilter(EndpointFilter(EXCLUDED_ENDPOINTS))
28
-
29
-
30
- origins = [
31
- "http://localhost:8000",
32
- "http://localhost:3000",
33
- ]
34
-
35
- app.add_middleware(
36
- CORSMiddleware,
37
- allow_origins=["*"],
38
- allow_credentials=True,
39
- allow_methods=["*"],
40
- allow_headers=["*"],
41
- )
42
-
43
- # Mount ASGI apps
44
- app.mount("/metrics", prometheus_app)
45
- app.mount("/static", StaticFiles(directory=UI_PATH), name="static")
46
- app.mount("/data", StaticFiles(directory=NEAT_APP.config.data_store_path), name="data")
47
-
48
-
49
- # Mount routers
50
- app.include_router(configuration.router)
51
- app.include_router(metrics.router)
52
- app.include_router(workflows.router)
53
- app.include_router(crud.router)
54
-
55
-
56
- # General routes
57
- @app.get("/")
58
- def read_root():
59
- return RedirectResponse("/static/index.html")
60
-
61
-
62
- @app.get("/api/about")
63
- def get_about():
64
- installed_packages = pkg_resources.working_set
65
- installed_packages_list = sorted([f"{i.key}=={i.version}" for i in installed_packages])
66
- return {"version": neat.__version__, "packages": installed_packages_list}
@@ -1,25 +0,0 @@
1
- import logging
2
- import os
3
- from pathlib import Path
4
-
5
- from fastapi import APIRouter
6
-
7
- from cognite.neat._app.api.configuration import NEAT_APP
8
- from cognite.neat._config import Config
9
-
10
- router = APIRouter()
11
-
12
-
13
- @router.get("/api/configs/global")
14
- def get_configs():
15
- return NEAT_APP.config.as_legacy_config()
16
-
17
-
18
- @router.post("/api/configs/global")
19
- def set_configs(request: Config):
20
- logging.info(f"Updating global config: {request}")
21
- config = request
22
- config.to_yaml(Path(os.environ.get("NEAT_CONFIG_PATH", "config.yaml")))
23
- NEAT_APP.stop()
24
- NEAT_APP.start(config=config)
25
- return config
@@ -1,102 +0,0 @@
1
- # IO, CDF, Workflows
2
-
3
-
4
- import logging
5
- import shutil
6
-
7
- from fastapi import APIRouter, UploadFile
8
-
9
- from cognite.neat._app.api.configuration import NEAT_APP
10
- from cognite.neat._config import Config
11
- from cognite.neat._workflows.model import FlowMessage
12
- from cognite.neat._workflows.utils import get_file_hash
13
-
14
- router = APIRouter()
15
-
16
-
17
- @router.post("/api/file/upload/{workflow_name}/{file_type}/{step_id}/{action}")
18
- async def file_upload_handler(
19
- files: list[UploadFile],
20
- workflow_name: str,
21
- file_type: str,
22
- step_id: str,
23
- action: str,
24
- ) -> dict[str, str]:
25
- if NEAT_APP.cdf_store is None or NEAT_APP.workflow_manager is None:
26
- return {"error": "NeatApp is not initialized"}
27
- if NEAT_APP.workflow_manager.data_store_path is None:
28
- return {"error": "Workflow Manager is not initialized"}
29
-
30
- # get directory path
31
- upload_dir = NEAT_APP.config.rules_store_path
32
- file_name = ""
33
- file_version = ""
34
- if file_type == "file_from_editor":
35
- upload_dir = NEAT_APP.workflow_manager.config.workflows_store_path / workflow_name
36
- elif file_type == "workflow":
37
- upload_dir = NEAT_APP.workflow_manager.config.workflows_store_path
38
- elif file_type == "staging":
39
- upload_dir = NEAT_APP.workflow_manager.config.staging_path
40
- elif file_type == "source_graph":
41
- upload_dir = NEAT_APP.workflow_manager.config.source_graph_path
42
-
43
- for file in files:
44
- logging.info(
45
- f"Uploading file : {file.filename} , workflow : {workflow_name} , step_id {step_id} , action : {action}"
46
- )
47
- # save file to disk
48
- if file.filename:
49
- if file_type == "global_config":
50
- full_path = NEAT_APP.config.data_store_path / "config.yaml"
51
- else:
52
- full_path = upload_dir / file.filename
53
- with full_path.open("wb") as buffer:
54
- shutil.copyfileobj(file.file, buffer)
55
- file_name = file.filename
56
- file_version = get_file_hash(full_path)
57
- break # only one file is supported for now
58
-
59
- if "update_config" in action and file_type == "rules":
60
- logging.info("Automatically updating workflow config")
61
- workflow = NEAT_APP.workflow_manager.get_workflow(workflow_name)
62
- if workflow is None:
63
- return {"error": f"Workflow {workflow_name} not found"}
64
- workflow_definition = workflow.get_workflow_definition()
65
-
66
- for step in workflow_definition.steps:
67
- if step.method == "ImportExcelToRules":
68
- step.configs["file_name"] = file_name
69
- step.configs["version"] = ""
70
-
71
- NEAT_APP.workflow_manager.save_workflow_to_storage(workflow_name)
72
-
73
- if ("start_workflow" in action and file_type == "rules") or file_type == "staging":
74
- logging.info("Starting workflow after file upload")
75
- workflow = NEAT_APP.workflow_manager.get_workflow(workflow_name)
76
- if workflow is None:
77
- return {"error": f"Workflow {workflow_name} not found"}
78
- flow_msg = FlowMessage(
79
- payload={
80
- "file_name": file_name,
81
- "hash": file_version,
82
- "full_path": full_path,
83
- "file_type": file_type,
84
- }
85
- )
86
- start_step_id = None if step_id == "none" else step_id
87
-
88
- workflow.start(sync=False, flow_message=flow_msg, start_step_id=start_step_id)
89
-
90
- if action == "install" and file_type == "workflow":
91
- logging.info("Installing workflow after file upload")
92
- NEAT_APP.cdf_store.extract_workflow_package(file_name)
93
-
94
- if file_type == "global_config":
95
- logging.info("Updating global config and restarting NeatApp")
96
- config = Config.from_yaml(full_path)
97
- config.data_store_path = NEAT_APP.config.data_store_path
98
- NEAT_APP.stop()
99
- NEAT_APP.start(config=config)
100
- logging.info("NeatApp restarted")
101
-
102
- return {"file_name": file_name, "hash": file_version}
@@ -1,10 +0,0 @@
1
- from fastapi import APIRouter
2
- from prometheus_client import REGISTRY
3
-
4
- router = APIRouter()
5
-
6
-
7
- @router.get("/api/metrics")
8
- def get_metrics():
9
- metrics = REGISTRY.collect()
10
- return {"prom_metrics": metrics}