cognite-neat 0.104.0__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 (141) 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 +1 -1
  10. cognite/neat/_graph/loaders/_rdf2dms.py +13 -2
  11. cognite/neat/_graph/transformers/__init__.py +3 -1
  12. cognite/neat/_graph/transformers/_classic_cdf.py +2 -1
  13. cognite/neat/_graph/transformers/_value_type.py +72 -0
  14. cognite/neat/_issues/__init__.py +0 -2
  15. cognite/neat/_issues/_base.py +19 -35
  16. cognite/neat/_issues/warnings/__init__.py +4 -1
  17. cognite/neat/_issues/warnings/_general.py +7 -0
  18. cognite/neat/_issues/warnings/_resources.py +11 -0
  19. cognite/neat/_rules/exporters/_rules2dms.py +35 -1
  20. cognite/neat/_rules/exporters/_rules2excel.py +2 -2
  21. cognite/neat/_rules/importers/_dms2rules.py +66 -55
  22. cognite/neat/_rules/models/_base_rules.py +4 -1
  23. cognite/neat/_rules/models/entities/_wrapped.py +10 -5
  24. cognite/neat/_rules/models/mapping/_classic2core.yaml +239 -38
  25. cognite/neat/_rules/transformers/__init__.py +8 -2
  26. cognite/neat/_rules/transformers/_converters.py +271 -188
  27. cognite/neat/_rules/transformers/_mapping.py +75 -59
  28. cognite/neat/_rules/transformers/_verification.py +2 -3
  29. cognite/neat/_session/_inspect.py +3 -1
  30. cognite/neat/_session/_prepare.py +112 -24
  31. cognite/neat/_session/_read.py +33 -70
  32. cognite/neat/_session/_state.py +2 -2
  33. cognite/neat/_session/_to.py +2 -2
  34. cognite/neat/_store/_rules_store.py +4 -8
  35. cognite/neat/_utils/reader/_base.py +27 -0
  36. cognite/neat/_version.py +1 -1
  37. {cognite_neat-0.104.0.dist-info → cognite_neat-0.105.0.dist-info}/METADATA +3 -2
  38. cognite_neat-0.105.0.dist-info/RECORD +179 -0
  39. {cognite_neat-0.104.0.dist-info → cognite_neat-0.105.0.dist-info}/WHEEL +1 -1
  40. cognite/neat/_app/api/__init__.py +0 -0
  41. cognite/neat/_app/api/asgi/metrics.py +0 -4
  42. cognite/neat/_app/api/configuration.py +0 -98
  43. cognite/neat/_app/api/context_manager/__init__.py +0 -3
  44. cognite/neat/_app/api/context_manager/manager.py +0 -16
  45. cognite/neat/_app/api/data_classes/__init__.py +0 -0
  46. cognite/neat/_app/api/data_classes/rest.py +0 -59
  47. cognite/neat/_app/api/explorer.py +0 -66
  48. cognite/neat/_app/api/routers/configuration.py +0 -25
  49. cognite/neat/_app/api/routers/crud.py +0 -102
  50. cognite/neat/_app/api/routers/metrics.py +0 -10
  51. cognite/neat/_app/api/routers/workflows.py +0 -224
  52. cognite/neat/_app/api/utils/__init__.py +0 -0
  53. cognite/neat/_app/api/utils/data_mapping.py +0 -17
  54. cognite/neat/_app/api/utils/logging.py +0 -26
  55. cognite/neat/_app/api/utils/query_templates.py +0 -92
  56. cognite/neat/_app/main.py +0 -17
  57. cognite/neat/_app/monitoring/__init__.py +0 -0
  58. cognite/neat/_app/monitoring/metrics.py +0 -69
  59. cognite/neat/_app/ui/index.html +0 -1
  60. cognite/neat/_app/ui/neat-app/.gitignore +0 -23
  61. cognite/neat/_app/ui/neat-app/README.md +0 -70
  62. cognite/neat/_app/ui/neat-app/build/asset-manifest.json +0 -14
  63. cognite/neat/_app/ui/neat-app/build/favicon.ico +0 -0
  64. cognite/neat/_app/ui/neat-app/build/img/architect-icon.svg +0 -116
  65. cognite/neat/_app/ui/neat-app/build/img/developer-icon.svg +0 -112
  66. cognite/neat/_app/ui/neat-app/build/img/sme-icon.svg +0 -34
  67. cognite/neat/_app/ui/neat-app/build/index.html +0 -1
  68. cognite/neat/_app/ui/neat-app/build/logo192.png +0 -0
  69. cognite/neat/_app/ui/neat-app/build/manifest.json +0 -25
  70. cognite/neat/_app/ui/neat-app/build/robots.txt +0 -3
  71. cognite/neat/_app/ui/neat-app/build/static/css/main.72e3d92e.css +0 -2
  72. cognite/neat/_app/ui/neat-app/build/static/css/main.72e3d92e.css.map +0 -1
  73. cognite/neat/_app/ui/neat-app/build/static/js/main.5a52cf09.js +0 -3
  74. cognite/neat/_app/ui/neat-app/build/static/js/main.5a52cf09.js.LICENSE.txt +0 -88
  75. cognite/neat/_app/ui/neat-app/build/static/js/main.5a52cf09.js.map +0 -1
  76. cognite/neat/_app/ui/neat-app/build/static/media/logo.8093b84df9ed36a174c629d6fe0b730d.svg +0 -1
  77. cognite/neat/_app/ui/neat-app/package-lock.json +0 -18306
  78. cognite/neat/_app/ui/neat-app/package.json +0 -62
  79. cognite/neat/_app/ui/neat-app/public/favicon.ico +0 -0
  80. cognite/neat/_app/ui/neat-app/public/img/architect-icon.svg +0 -116
  81. cognite/neat/_app/ui/neat-app/public/img/developer-icon.svg +0 -112
  82. cognite/neat/_app/ui/neat-app/public/img/sme-icon.svg +0 -34
  83. cognite/neat/_app/ui/neat-app/public/index.html +0 -43
  84. cognite/neat/_app/ui/neat-app/public/logo192.png +0 -0
  85. cognite/neat/_app/ui/neat-app/public/manifest.json +0 -25
  86. cognite/neat/_app/ui/neat-app/public/robots.txt +0 -3
  87. cognite/neat/_app/ui/neat-app/src/App.css +0 -38
  88. cognite/neat/_app/ui/neat-app/src/App.js +0 -17
  89. cognite/neat/_app/ui/neat-app/src/App.test.js +0 -8
  90. cognite/neat/_app/ui/neat-app/src/MainContainer.tsx +0 -70
  91. cognite/neat/_app/ui/neat-app/src/components/JsonViewer.tsx +0 -43
  92. cognite/neat/_app/ui/neat-app/src/components/LocalUploader.tsx +0 -124
  93. cognite/neat/_app/ui/neat-app/src/components/OverviewComponentEditorDialog.tsx +0 -63
  94. cognite/neat/_app/ui/neat-app/src/components/StepEditorDialog.tsx +0 -511
  95. cognite/neat/_app/ui/neat-app/src/components/TabPanel.tsx +0 -36
  96. cognite/neat/_app/ui/neat-app/src/components/Utils.tsx +0 -56
  97. cognite/neat/_app/ui/neat-app/src/components/WorkflowDeleteDialog.tsx +0 -60
  98. cognite/neat/_app/ui/neat-app/src/components/WorkflowExecutionReport.tsx +0 -112
  99. cognite/neat/_app/ui/neat-app/src/components/WorkflowImportExportDialog.tsx +0 -67
  100. cognite/neat/_app/ui/neat-app/src/components/WorkflowMetadataDialog.tsx +0 -79
  101. cognite/neat/_app/ui/neat-app/src/index.css +0 -13
  102. cognite/neat/_app/ui/neat-app/src/index.js +0 -13
  103. cognite/neat/_app/ui/neat-app/src/logo.svg +0 -1
  104. cognite/neat/_app/ui/neat-app/src/reportWebVitals.js +0 -13
  105. cognite/neat/_app/ui/neat-app/src/setupTests.js +0 -5
  106. cognite/neat/_app/ui/neat-app/src/types/WorkflowTypes.ts +0 -388
  107. cognite/neat/_app/ui/neat-app/src/views/AboutView.tsx +0 -61
  108. cognite/neat/_app/ui/neat-app/src/views/ConfigView.tsx +0 -184
  109. cognite/neat/_app/ui/neat-app/src/views/GlobalConfigView.tsx +0 -180
  110. cognite/neat/_app/ui/neat-app/src/views/WorkflowView.tsx +0 -570
  111. cognite/neat/_app/ui/neat-app/tsconfig.json +0 -27
  112. cognite/neat/_workflows/__init__.py +0 -17
  113. cognite/neat/_workflows/base.py +0 -590
  114. cognite/neat/_workflows/cdf_store.py +0 -393
  115. cognite/neat/_workflows/examples/Export_DMS/workflow.yaml +0 -89
  116. cognite/neat/_workflows/examples/Export_Semantic_Data_Model/workflow.yaml +0 -66
  117. cognite/neat/_workflows/examples/Import_DMS/workflow.yaml +0 -65
  118. cognite/neat/_workflows/examples/Validate_Rules/workflow.yaml +0 -67
  119. cognite/neat/_workflows/examples/Validate_Solution_Model/workflow.yaml +0 -64
  120. cognite/neat/_workflows/manager.py +0 -292
  121. cognite/neat/_workflows/model.py +0 -203
  122. cognite/neat/_workflows/steps/__init__.py +0 -0
  123. cognite/neat/_workflows/steps/data_contracts.py +0 -109
  124. cognite/neat/_workflows/steps/lib/__init__.py +0 -0
  125. cognite/neat/_workflows/steps/lib/current/__init__.py +0 -6
  126. cognite/neat/_workflows/steps/lib/current/graph_extractor.py +0 -100
  127. cognite/neat/_workflows/steps/lib/current/graph_loader.py +0 -51
  128. cognite/neat/_workflows/steps/lib/current/graph_store.py +0 -48
  129. cognite/neat/_workflows/steps/lib/current/rules_exporter.py +0 -537
  130. cognite/neat/_workflows/steps/lib/current/rules_importer.py +0 -323
  131. cognite/neat/_workflows/steps/lib/current/rules_validator.py +0 -106
  132. cognite/neat/_workflows/steps/lib/io/__init__.py +0 -1
  133. cognite/neat/_workflows/steps/lib/io/io_steps.py +0 -393
  134. cognite/neat/_workflows/steps/step_model.py +0 -79
  135. cognite/neat/_workflows/steps_registry.py +0 -218
  136. cognite/neat/_workflows/tasks.py +0 -18
  137. cognite/neat/_workflows/triggers.py +0 -169
  138. cognite/neat/_workflows/utils.py +0 -19
  139. cognite_neat-0.104.0.dist-info/RECORD +0 -276
  140. {cognite_neat-0.104.0.dist-info → cognite_neat-0.105.0.dist-info}/LICENSE +0 -0
  141. {cognite_neat-0.104.0.dist-info → cognite_neat-0.105.0.dist-info}/entry_points.txt +0 -0
@@ -82,10 +82,10 @@ class ToAPI:
82
82
  return self._state.rule_store.export_to_file(exporter, Path(io))
83
83
 
84
84
  @overload
85
- def yaml(self, io: None, format: Literal["neat"] = "neat") -> str: ...
85
+ def yaml(self, io: None, format: Literal["neat"] = "neat", skip_system_spaces: bool = True) -> str: ...
86
86
 
87
87
  @overload
88
- def yaml(self, io: Any, format: Literal["neat", "toolkit"] = "neat") -> None: ...
88
+ def yaml(self, io: Any, format: Literal["neat", "toolkit"] = "neat", skip_system_spaces: bool = True) -> None: ...
89
89
 
90
90
  def yaml(
91
91
  self, io: Any | None = None, format: Literal["neat", "toolkit"] = "neat", skip_system_spaces: bool = True
@@ -110,8 +110,7 @@ class NeatRulesStore:
110
110
 
111
111
  agent = exporter.agent
112
112
  start = datetime.now(timezone.utc)
113
- issue_list = IssueList()
114
- with catch_issues(issue_list) as _:
113
+ with catch_issues() as issue_list:
115
114
  # Validate the type of the result
116
115
  result = exporter.export(source_entity.result) # type: ignore[arg-type]
117
116
  end = datetime.now(timezone.utc)
@@ -151,8 +150,7 @@ class NeatRulesStore:
151
150
  target_id = DEFAULT_NAMESPACE[path.name]
152
151
  agent = exporter.agent
153
152
  start = datetime.now(timezone.utc)
154
- issue_list = IssueList()
155
- with catch_issues(issue_list) as _:
153
+ with catch_issues() as issue_list:
156
154
  exporter.export_to_file(source_entity.result, path)
157
155
  end = datetime.now(timezone.utc)
158
156
 
@@ -191,9 +189,8 @@ class NeatRulesStore:
191
189
  agent = exporter.agent
192
190
  start = datetime.now(timezone.utc)
193
191
  target_id = DEFAULT_NAMESPACE["upload-result"]
194
- issue_list = IssueList()
195
192
  result: UploadResultList | None = None
196
- with catch_issues(issue_list) as _:
193
+ with catch_issues() as issue_list:
197
194
  result = exporter.export_to_cdf(source_entity.result, client, dry_run)
198
195
  end = datetime.now(timezone.utc)
199
196
 
@@ -263,9 +260,8 @@ class NeatRulesStore:
263
260
  self, action: Callable[[], Rules | None], agent: Agent, source_entity: Entity, description: str
264
261
  ) -> tuple[Any, IssueList]:
265
262
  start = datetime.now(timezone.utc)
266
- issue_list = IssueList()
267
263
  result: Rules | None = None
268
- with catch_issues(issue_list) as _:
264
+ with catch_issues() as issue_list:
269
265
  result = action()
270
266
  end = datetime.now(timezone.utc)
271
267
 
@@ -1,3 +1,4 @@
1
+ import tempfile
1
2
  from abc import ABC, abstractmethod
2
3
  from collections.abc import Iterable
3
4
  from io import StringIO
@@ -33,6 +34,11 @@ class NeatReader(ABC):
33
34
  """Read the buffer as a string"""
34
35
  raise NotImplementedError()
35
36
 
37
+ @abstractmethod
38
+ def read_bytes(self) -> bytes:
39
+ """Read the buffer as bytes"""
40
+ raise NotImplementedError()
41
+
36
42
  @abstractmethod
37
43
  def size(self) -> int:
38
44
  """Size of the buffer in bytes"""
@@ -59,6 +65,10 @@ class NeatReader(ABC):
59
65
  def exists(self) -> bool:
60
66
  raise NotImplementedError
61
67
 
68
+ @abstractmethod
69
+ def materialize_path(self) -> Path:
70
+ raise NotImplementedError
71
+
62
72
 
63
73
  class PathReader(NeatReader):
64
74
  def __init__(self, path: Path):
@@ -72,6 +82,9 @@ class PathReader(NeatReader):
72
82
  def read_text(self) -> str:
73
83
  return self.path.read_text()
74
84
 
85
+ def read_bytes(self) -> bytes:
86
+ return self.path.read_bytes()
87
+
75
88
  def size(self) -> int:
76
89
  return self.path.stat().st_size
77
90
 
@@ -95,6 +108,9 @@ class PathReader(NeatReader):
95
108
  def exists(self) -> bool:
96
109
  return self.path.exists()
97
110
 
111
+ def materialize_path(self) -> Path:
112
+ return self.path
113
+
98
114
 
99
115
  class HttpFileReader(NeatReader):
100
116
  def __init__(self, url: str, path: str):
@@ -112,6 +128,11 @@ class HttpFileReader(NeatReader):
112
128
  response.raise_for_status()
113
129
  return response.text
114
130
 
131
+ def read_bytes(self) -> bytes:
132
+ response = requests.get(self._url)
133
+ response.raise_for_status()
134
+ return response.content
135
+
115
136
  def size(self) -> int:
116
137
  response = requests.head(self._url)
117
138
  response.raise_for_status()
@@ -133,6 +154,12 @@ class HttpFileReader(NeatReader):
133
154
  response = requests.head(self._url)
134
155
  return 200 <= response.status_code < 400
135
156
 
157
+ def materialize_path(self) -> Path:
158
+ path = Path(tempfile.gettempdir()).resolve() / "neat" / self.name
159
+ path.parent.mkdir(parents=True, exist_ok=True)
160
+ path.write_bytes(self.read_bytes())
161
+ return path
162
+
136
163
 
137
164
  class GitHubReader(HttpFileReader):
138
165
  raw_url = "https://raw.githubusercontent.com/"
cognite/neat/_version.py CHANGED
@@ -1,2 +1,2 @@
1
- __version__ = "0.104.0"
1
+ __version__ = "0.105.0"
2
2
  __engine__ = "^2.0.3"
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.3
2
2
  Name: cognite-neat
3
- Version: 0.104.0
3
+ Version: 0.105.0
4
4
  Summary: Knowledge graph transformation
5
5
  Home-page: https://cognite-neat.readthedocs-hosted.com/
6
6
  License: Apache-2.0
@@ -29,6 +29,7 @@ Requires-Dist: google-auth-oauthlib ; extra == "google"
29
29
  Requires-Dist: gspread ; extra == "google"
30
30
  Requires-Dist: jsonpath-python (>=1.0.6,<2.0.0)
31
31
  Requires-Dist: lxml (>=5.3.0,<6.0.0) ; extra == "all"
32
+ Requires-Dist: mistune (==3.0.2) ; extra == "docs"
32
33
  Requires-Dist: mixpanel (>=4.10.1,<5.0.0)
33
34
  Requires-Dist: mkdocs ; extra == "docs"
34
35
  Requires-Dist: mkdocs-autorefs (>=0.5.0,<0.6.0) ; extra == "docs"
@@ -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