flowquery 1.0.45 → 1.0.47

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (418) hide show
  1. package/dist/flowquery.min.js +1 -1
  2. package/dist/index.d.ts +0 -7
  3. package/dist/index.d.ts.map +1 -1
  4. package/dist/index.js +6 -4
  5. package/dist/index.js.map +1 -1
  6. package/dist/parsing/operations/unwind.d.ts +1 -1
  7. package/dist/parsing/operations/unwind.d.ts.map +1 -1
  8. package/dist/parsing/operations/unwind.js +9 -5
  9. package/dist/parsing/operations/unwind.js.map +1 -1
  10. package/package.json +4 -1
  11. package/.editorconfig +0 -21
  12. package/.gitattributes +0 -3
  13. package/.github/workflows/npm-publish.yml +0 -32
  14. package/.github/workflows/python-publish.yml +0 -143
  15. package/.github/workflows/release.yml +0 -107
  16. package/.husky/pre-commit +0 -28
  17. package/.prettierrc +0 -22
  18. package/CODE_OF_CONDUCT.md +0 -10
  19. package/FlowQueryLogoIcon.png +0 -0
  20. package/SECURITY.md +0 -14
  21. package/SUPPORT.md +0 -13
  22. package/docs/flowquery.min.js +0 -1
  23. package/docs/index.html +0 -105
  24. package/flowquery-py/CONTRIBUTING.md +0 -127
  25. package/flowquery-py/README.md +0 -67
  26. package/flowquery-py/misc/data/test.json +0 -10
  27. package/flowquery-py/misc/data/users.json +0 -242
  28. package/flowquery-py/notebooks/TestFlowQuery.ipynb +0 -440
  29. package/flowquery-py/pyproject.toml +0 -121
  30. package/flowquery-py/setup_env.ps1 +0 -92
  31. package/flowquery-py/setup_env.sh +0 -87
  32. package/flowquery-py/src/__init__.py +0 -38
  33. package/flowquery-py/src/__main__.py +0 -10
  34. package/flowquery-py/src/compute/__init__.py +0 -6
  35. package/flowquery-py/src/compute/flowquery.py +0 -68
  36. package/flowquery-py/src/compute/runner.py +0 -64
  37. package/flowquery-py/src/extensibility.py +0 -52
  38. package/flowquery-py/src/graph/__init__.py +0 -31
  39. package/flowquery-py/src/graph/data.py +0 -136
  40. package/flowquery-py/src/graph/database.py +0 -141
  41. package/flowquery-py/src/graph/hops.py +0 -43
  42. package/flowquery-py/src/graph/node.py +0 -143
  43. package/flowquery-py/src/graph/node_data.py +0 -26
  44. package/flowquery-py/src/graph/node_reference.py +0 -50
  45. package/flowquery-py/src/graph/pattern.py +0 -115
  46. package/flowquery-py/src/graph/pattern_expression.py +0 -67
  47. package/flowquery-py/src/graph/patterns.py +0 -42
  48. package/flowquery-py/src/graph/physical_node.py +0 -41
  49. package/flowquery-py/src/graph/physical_relationship.py +0 -36
  50. package/flowquery-py/src/graph/relationship.py +0 -193
  51. package/flowquery-py/src/graph/relationship_data.py +0 -36
  52. package/flowquery-py/src/graph/relationship_match_collector.py +0 -85
  53. package/flowquery-py/src/graph/relationship_reference.py +0 -21
  54. package/flowquery-py/src/io/__init__.py +0 -5
  55. package/flowquery-py/src/io/command_line.py +0 -108
  56. package/flowquery-py/src/parsing/__init__.py +0 -17
  57. package/flowquery-py/src/parsing/alias.py +0 -20
  58. package/flowquery-py/src/parsing/alias_option.py +0 -11
  59. package/flowquery-py/src/parsing/ast_node.py +0 -147
  60. package/flowquery-py/src/parsing/base_parser.py +0 -84
  61. package/flowquery-py/src/parsing/components/__init__.py +0 -19
  62. package/flowquery-py/src/parsing/components/csv.py +0 -8
  63. package/flowquery-py/src/parsing/components/from_.py +0 -12
  64. package/flowquery-py/src/parsing/components/headers.py +0 -12
  65. package/flowquery-py/src/parsing/components/json.py +0 -8
  66. package/flowquery-py/src/parsing/components/null.py +0 -10
  67. package/flowquery-py/src/parsing/components/post.py +0 -8
  68. package/flowquery-py/src/parsing/components/text.py +0 -8
  69. package/flowquery-py/src/parsing/context.py +0 -50
  70. package/flowquery-py/src/parsing/data_structures/__init__.py +0 -15
  71. package/flowquery-py/src/parsing/data_structures/associative_array.py +0 -41
  72. package/flowquery-py/src/parsing/data_structures/json_array.py +0 -30
  73. package/flowquery-py/src/parsing/data_structures/key_value_pair.py +0 -38
  74. package/flowquery-py/src/parsing/data_structures/lookup.py +0 -51
  75. package/flowquery-py/src/parsing/data_structures/range_lookup.py +0 -42
  76. package/flowquery-py/src/parsing/expressions/__init__.py +0 -61
  77. package/flowquery-py/src/parsing/expressions/boolean.py +0 -20
  78. package/flowquery-py/src/parsing/expressions/expression.py +0 -141
  79. package/flowquery-py/src/parsing/expressions/expression_map.py +0 -26
  80. package/flowquery-py/src/parsing/expressions/f_string.py +0 -27
  81. package/flowquery-py/src/parsing/expressions/identifier.py +0 -21
  82. package/flowquery-py/src/parsing/expressions/number.py +0 -32
  83. package/flowquery-py/src/parsing/expressions/operator.py +0 -271
  84. package/flowquery-py/src/parsing/expressions/reference.py +0 -47
  85. package/flowquery-py/src/parsing/expressions/string.py +0 -27
  86. package/flowquery-py/src/parsing/functions/__init__.py +0 -127
  87. package/flowquery-py/src/parsing/functions/aggregate_function.py +0 -60
  88. package/flowquery-py/src/parsing/functions/async_function.py +0 -65
  89. package/flowquery-py/src/parsing/functions/avg.py +0 -55
  90. package/flowquery-py/src/parsing/functions/coalesce.py +0 -43
  91. package/flowquery-py/src/parsing/functions/collect.py +0 -75
  92. package/flowquery-py/src/parsing/functions/count.py +0 -79
  93. package/flowquery-py/src/parsing/functions/date_.py +0 -61
  94. package/flowquery-py/src/parsing/functions/datetime_.py +0 -62
  95. package/flowquery-py/src/parsing/functions/duration.py +0 -159
  96. package/flowquery-py/src/parsing/functions/element_id.py +0 -50
  97. package/flowquery-py/src/parsing/functions/function.py +0 -68
  98. package/flowquery-py/src/parsing/functions/function_factory.py +0 -170
  99. package/flowquery-py/src/parsing/functions/function_metadata.py +0 -148
  100. package/flowquery-py/src/parsing/functions/functions.py +0 -67
  101. package/flowquery-py/src/parsing/functions/head.py +0 -39
  102. package/flowquery-py/src/parsing/functions/id_.py +0 -49
  103. package/flowquery-py/src/parsing/functions/join.py +0 -49
  104. package/flowquery-py/src/parsing/functions/keys.py +0 -34
  105. package/flowquery-py/src/parsing/functions/last.py +0 -39
  106. package/flowquery-py/src/parsing/functions/localdatetime.py +0 -60
  107. package/flowquery-py/src/parsing/functions/localtime.py +0 -57
  108. package/flowquery-py/src/parsing/functions/max_.py +0 -49
  109. package/flowquery-py/src/parsing/functions/min_.py +0 -49
  110. package/flowquery-py/src/parsing/functions/nodes.py +0 -48
  111. package/flowquery-py/src/parsing/functions/predicate_function.py +0 -47
  112. package/flowquery-py/src/parsing/functions/predicate_sum.py +0 -49
  113. package/flowquery-py/src/parsing/functions/properties.py +0 -50
  114. package/flowquery-py/src/parsing/functions/rand.py +0 -28
  115. package/flowquery-py/src/parsing/functions/range_.py +0 -41
  116. package/flowquery-py/src/parsing/functions/reducer_element.py +0 -15
  117. package/flowquery-py/src/parsing/functions/relationships.py +0 -46
  118. package/flowquery-py/src/parsing/functions/replace.py +0 -39
  119. package/flowquery-py/src/parsing/functions/round_.py +0 -34
  120. package/flowquery-py/src/parsing/functions/schema.py +0 -40
  121. package/flowquery-py/src/parsing/functions/size.py +0 -34
  122. package/flowquery-py/src/parsing/functions/split.py +0 -54
  123. package/flowquery-py/src/parsing/functions/string_distance.py +0 -92
  124. package/flowquery-py/src/parsing/functions/stringify.py +0 -49
  125. package/flowquery-py/src/parsing/functions/substring.py +0 -76
  126. package/flowquery-py/src/parsing/functions/sum.py +0 -51
  127. package/flowquery-py/src/parsing/functions/tail.py +0 -37
  128. package/flowquery-py/src/parsing/functions/temporal_utils.py +0 -186
  129. package/flowquery-py/src/parsing/functions/time_.py +0 -57
  130. package/flowquery-py/src/parsing/functions/timestamp.py +0 -37
  131. package/flowquery-py/src/parsing/functions/to_float.py +0 -46
  132. package/flowquery-py/src/parsing/functions/to_integer.py +0 -46
  133. package/flowquery-py/src/parsing/functions/to_json.py +0 -35
  134. package/flowquery-py/src/parsing/functions/to_lower.py +0 -37
  135. package/flowquery-py/src/parsing/functions/to_string.py +0 -41
  136. package/flowquery-py/src/parsing/functions/trim.py +0 -37
  137. package/flowquery-py/src/parsing/functions/type_.py +0 -47
  138. package/flowquery-py/src/parsing/functions/value_holder.py +0 -24
  139. package/flowquery-py/src/parsing/logic/__init__.py +0 -15
  140. package/flowquery-py/src/parsing/logic/case.py +0 -28
  141. package/flowquery-py/src/parsing/logic/else_.py +0 -12
  142. package/flowquery-py/src/parsing/logic/end.py +0 -8
  143. package/flowquery-py/src/parsing/logic/then.py +0 -12
  144. package/flowquery-py/src/parsing/logic/when.py +0 -12
  145. package/flowquery-py/src/parsing/operations/__init__.py +0 -46
  146. package/flowquery-py/src/parsing/operations/aggregated_return.py +0 -25
  147. package/flowquery-py/src/parsing/operations/aggregated_with.py +0 -22
  148. package/flowquery-py/src/parsing/operations/call.py +0 -73
  149. package/flowquery-py/src/parsing/operations/create_node.py +0 -35
  150. package/flowquery-py/src/parsing/operations/create_relationship.py +0 -35
  151. package/flowquery-py/src/parsing/operations/delete_node.py +0 -29
  152. package/flowquery-py/src/parsing/operations/delete_relationship.py +0 -29
  153. package/flowquery-py/src/parsing/operations/group_by.py +0 -148
  154. package/flowquery-py/src/parsing/operations/limit.py +0 -33
  155. package/flowquery-py/src/parsing/operations/load.py +0 -148
  156. package/flowquery-py/src/parsing/operations/match.py +0 -52
  157. package/flowquery-py/src/parsing/operations/operation.py +0 -69
  158. package/flowquery-py/src/parsing/operations/order_by.py +0 -114
  159. package/flowquery-py/src/parsing/operations/projection.py +0 -21
  160. package/flowquery-py/src/parsing/operations/return_op.py +0 -88
  161. package/flowquery-py/src/parsing/operations/union.py +0 -115
  162. package/flowquery-py/src/parsing/operations/union_all.py +0 -17
  163. package/flowquery-py/src/parsing/operations/unwind.py +0 -38
  164. package/flowquery-py/src/parsing/operations/where.py +0 -43
  165. package/flowquery-py/src/parsing/operations/with_op.py +0 -18
  166. package/flowquery-py/src/parsing/parser.py +0 -1384
  167. package/flowquery-py/src/parsing/parser_state.py +0 -26
  168. package/flowquery-py/src/parsing/token_to_node.py +0 -109
  169. package/flowquery-py/src/tokenization/__init__.py +0 -23
  170. package/flowquery-py/src/tokenization/keyword.py +0 -54
  171. package/flowquery-py/src/tokenization/operator.py +0 -29
  172. package/flowquery-py/src/tokenization/string_walker.py +0 -158
  173. package/flowquery-py/src/tokenization/symbol.py +0 -19
  174. package/flowquery-py/src/tokenization/token.py +0 -693
  175. package/flowquery-py/src/tokenization/token_mapper.py +0 -53
  176. package/flowquery-py/src/tokenization/token_type.py +0 -21
  177. package/flowquery-py/src/tokenization/tokenizer.py +0 -214
  178. package/flowquery-py/src/tokenization/trie.py +0 -125
  179. package/flowquery-py/src/utils/__init__.py +0 -6
  180. package/flowquery-py/src/utils/object_utils.py +0 -20
  181. package/flowquery-py/src/utils/string_utils.py +0 -113
  182. package/flowquery-py/tests/__init__.py +0 -1
  183. package/flowquery-py/tests/compute/__init__.py +0 -1
  184. package/flowquery-py/tests/compute/test_runner.py +0 -4879
  185. package/flowquery-py/tests/graph/__init__.py +0 -1
  186. package/flowquery-py/tests/graph/test_create.py +0 -56
  187. package/flowquery-py/tests/graph/test_data.py +0 -73
  188. package/flowquery-py/tests/graph/test_match.py +0 -40
  189. package/flowquery-py/tests/parsing/__init__.py +0 -1
  190. package/flowquery-py/tests/parsing/test_context.py +0 -34
  191. package/flowquery-py/tests/parsing/test_expression.py +0 -248
  192. package/flowquery-py/tests/parsing/test_parser.py +0 -1237
  193. package/flowquery-py/tests/test_extensibility.py +0 -611
  194. package/flowquery-py/tests/tokenization/__init__.py +0 -1
  195. package/flowquery-py/tests/tokenization/test_token_mapper.py +0 -60
  196. package/flowquery-py/tests/tokenization/test_tokenizer.py +0 -198
  197. package/flowquery-py/tests/tokenization/test_trie.py +0 -30
  198. package/flowquery-vscode/.vscode-test.mjs +0 -5
  199. package/flowquery-vscode/.vscodeignore +0 -13
  200. package/flowquery-vscode/LICENSE +0 -21
  201. package/flowquery-vscode/README.md +0 -11
  202. package/flowquery-vscode/demo/FlowQueryVSCodeDemo.gif +0 -0
  203. package/flowquery-vscode/eslint.config.mjs +0 -25
  204. package/flowquery-vscode/extension.js +0 -508
  205. package/flowquery-vscode/flowQueryEngine/flowquery.min.js +0 -1
  206. package/flowquery-vscode/flowquery-worker.js +0 -66
  207. package/flowquery-vscode/images/FlowQueryLogoIcon.png +0 -0
  208. package/flowquery-vscode/jsconfig.json +0 -13
  209. package/flowquery-vscode/libs/page.css +0 -53
  210. package/flowquery-vscode/libs/table.css +0 -13
  211. package/flowquery-vscode/libs/tabs.css +0 -66
  212. package/flowquery-vscode/package-lock.json +0 -2917
  213. package/flowquery-vscode/package.json +0 -51
  214. package/flowquery-vscode/test/extension.test.js +0 -196
  215. package/flowquery-vscode/test/worker.test.js +0 -25
  216. package/flowquery-vscode/vsc-extension-quickstart.md +0 -42
  217. package/jest.config.js +0 -8
  218. package/misc/apps/RAG/README.md +0 -29
  219. package/misc/apps/RAG/data/chats.json +0 -302
  220. package/misc/apps/RAG/data/emails.json +0 -182
  221. package/misc/apps/RAG/data/events.json +0 -226
  222. package/misc/apps/RAG/data/files.json +0 -172
  223. package/misc/apps/RAG/data/users.json +0 -158
  224. package/misc/apps/RAG/jest.config.js +0 -21
  225. package/misc/apps/RAG/package.json +0 -48
  226. package/misc/apps/RAG/public/index.html +0 -18
  227. package/misc/apps/RAG/src/App.css +0 -42
  228. package/misc/apps/RAG/src/App.tsx +0 -50
  229. package/misc/apps/RAG/src/components/AdaptiveCardRenderer.css +0 -172
  230. package/misc/apps/RAG/src/components/AdaptiveCardRenderer.tsx +0 -380
  231. package/misc/apps/RAG/src/components/ApiKeySettings.tsx +0 -245
  232. package/misc/apps/RAG/src/components/ChatContainer.css +0 -67
  233. package/misc/apps/RAG/src/components/ChatContainer.tsx +0 -242
  234. package/misc/apps/RAG/src/components/ChatInput.css +0 -23
  235. package/misc/apps/RAG/src/components/ChatInput.tsx +0 -76
  236. package/misc/apps/RAG/src/components/ChatMessage.css +0 -160
  237. package/misc/apps/RAG/src/components/ChatMessage.tsx +0 -286
  238. package/misc/apps/RAG/src/components/FlowQueryAgent.ts +0 -708
  239. package/misc/apps/RAG/src/components/FlowQueryRunner.css +0 -113
  240. package/misc/apps/RAG/src/components/FlowQueryRunner.tsx +0 -371
  241. package/misc/apps/RAG/src/components/index.ts +0 -28
  242. package/misc/apps/RAG/src/graph/index.ts +0 -19
  243. package/misc/apps/RAG/src/graph/initializeGraph.ts +0 -254
  244. package/misc/apps/RAG/src/index.tsx +0 -29
  245. package/misc/apps/RAG/src/prompts/FlowQuerySystemPrompt.ts +0 -327
  246. package/misc/apps/RAG/src/prompts/index.ts +0 -10
  247. package/misc/apps/RAG/src/tests/graph.test.ts +0 -35
  248. package/misc/apps/RAG/src/utils/FlowQueryExecutor.ts +0 -130
  249. package/misc/apps/RAG/src/utils/FlowQueryExtractor.ts +0 -208
  250. package/misc/apps/RAG/src/utils/Llm.ts +0 -248
  251. package/misc/apps/RAG/src/utils/index.ts +0 -12
  252. package/misc/apps/RAG/tsconfig.json +0 -22
  253. package/misc/apps/RAG/webpack.config.js +0 -43
  254. package/misc/apps/README.md +0 -1
  255. package/misc/queries/analyze_catfacts.cql +0 -75
  256. package/misc/queries/azure_openai_completions.cql +0 -13
  257. package/misc/queries/azure_openai_models.cql +0 -9
  258. package/misc/queries/mock_pipeline.cql +0 -84
  259. package/misc/queries/openai_completions.cql +0 -15
  260. package/misc/queries/openai_models.cql +0 -13
  261. package/misc/queries/test.cql +0 -6
  262. package/misc/queries/tool_inference.cql +0 -24
  263. package/misc/queries/wisdom.cql +0 -6
  264. package/misc/queries/wisdom_letter_histogram.cql +0 -8
  265. package/src/compute/flowquery.ts +0 -46
  266. package/src/compute/runner.ts +0 -66
  267. package/src/extensibility.ts +0 -45
  268. package/src/graph/data.ts +0 -130
  269. package/src/graph/database.ts +0 -143
  270. package/src/graph/hops.ts +0 -22
  271. package/src/graph/node.ts +0 -122
  272. package/src/graph/node_data.ts +0 -18
  273. package/src/graph/node_reference.ts +0 -38
  274. package/src/graph/pattern.ts +0 -110
  275. package/src/graph/pattern_expression.ts +0 -48
  276. package/src/graph/patterns.ts +0 -36
  277. package/src/graph/physical_node.ts +0 -23
  278. package/src/graph/physical_relationship.ts +0 -23
  279. package/src/graph/relationship.ts +0 -167
  280. package/src/graph/relationship_data.ts +0 -31
  281. package/src/graph/relationship_match_collector.ts +0 -64
  282. package/src/graph/relationship_reference.ts +0 -25
  283. package/src/index.browser.ts +0 -46
  284. package/src/index.node.ts +0 -55
  285. package/src/index.ts +0 -12
  286. package/src/io/command_line.ts +0 -74
  287. package/src/parsing/alias.ts +0 -23
  288. package/src/parsing/alias_option.ts +0 -5
  289. package/src/parsing/ast_node.ts +0 -153
  290. package/src/parsing/base_parser.ts +0 -98
  291. package/src/parsing/components/csv.ts +0 -9
  292. package/src/parsing/components/from.ts +0 -12
  293. package/src/parsing/components/headers.ts +0 -12
  294. package/src/parsing/components/json.ts +0 -9
  295. package/src/parsing/components/null.ts +0 -9
  296. package/src/parsing/components/post.ts +0 -9
  297. package/src/parsing/components/text.ts +0 -9
  298. package/src/parsing/context.ts +0 -54
  299. package/src/parsing/data_structures/associative_array.ts +0 -43
  300. package/src/parsing/data_structures/json_array.ts +0 -31
  301. package/src/parsing/data_structures/key_value_pair.ts +0 -37
  302. package/src/parsing/data_structures/lookup.ts +0 -44
  303. package/src/parsing/data_structures/range_lookup.ts +0 -36
  304. package/src/parsing/expressions/boolean.ts +0 -21
  305. package/src/parsing/expressions/expression.ts +0 -150
  306. package/src/parsing/expressions/expression_map.ts +0 -22
  307. package/src/parsing/expressions/f_string.ts +0 -26
  308. package/src/parsing/expressions/identifier.ts +0 -22
  309. package/src/parsing/expressions/number.ts +0 -40
  310. package/src/parsing/expressions/operator.ts +0 -354
  311. package/src/parsing/expressions/reference.ts +0 -45
  312. package/src/parsing/expressions/string.ts +0 -34
  313. package/src/parsing/functions/aggregate_function.ts +0 -58
  314. package/src/parsing/functions/async_function.ts +0 -64
  315. package/src/parsing/functions/avg.ts +0 -47
  316. package/src/parsing/functions/coalesce.ts +0 -49
  317. package/src/parsing/functions/collect.ts +0 -54
  318. package/src/parsing/functions/count.ts +0 -54
  319. package/src/parsing/functions/date.ts +0 -63
  320. package/src/parsing/functions/datetime.ts +0 -63
  321. package/src/parsing/functions/duration.ts +0 -143
  322. package/src/parsing/functions/element_id.ts +0 -51
  323. package/src/parsing/functions/function.ts +0 -60
  324. package/src/parsing/functions/function_factory.ts +0 -195
  325. package/src/parsing/functions/function_metadata.ts +0 -217
  326. package/src/parsing/functions/functions.ts +0 -70
  327. package/src/parsing/functions/head.ts +0 -42
  328. package/src/parsing/functions/id.ts +0 -51
  329. package/src/parsing/functions/join.ts +0 -40
  330. package/src/parsing/functions/keys.ts +0 -29
  331. package/src/parsing/functions/last.ts +0 -42
  332. package/src/parsing/functions/localdatetime.ts +0 -63
  333. package/src/parsing/functions/localtime.ts +0 -58
  334. package/src/parsing/functions/max.ts +0 -37
  335. package/src/parsing/functions/min.ts +0 -37
  336. package/src/parsing/functions/nodes.ts +0 -54
  337. package/src/parsing/functions/predicate_function.ts +0 -48
  338. package/src/parsing/functions/predicate_sum.ts +0 -47
  339. package/src/parsing/functions/properties.ts +0 -56
  340. package/src/parsing/functions/rand.ts +0 -21
  341. package/src/parsing/functions/range.ts +0 -37
  342. package/src/parsing/functions/reducer_element.ts +0 -10
  343. package/src/parsing/functions/relationships.ts +0 -52
  344. package/src/parsing/functions/replace.ts +0 -38
  345. package/src/parsing/functions/round.ts +0 -28
  346. package/src/parsing/functions/schema.ts +0 -39
  347. package/src/parsing/functions/size.ts +0 -28
  348. package/src/parsing/functions/split.ts +0 -45
  349. package/src/parsing/functions/string_distance.ts +0 -83
  350. package/src/parsing/functions/stringify.ts +0 -37
  351. package/src/parsing/functions/substring.ts +0 -68
  352. package/src/parsing/functions/sum.ts +0 -41
  353. package/src/parsing/functions/tail.ts +0 -39
  354. package/src/parsing/functions/temporal_utils.ts +0 -180
  355. package/src/parsing/functions/time.ts +0 -58
  356. package/src/parsing/functions/timestamp.ts +0 -37
  357. package/src/parsing/functions/to_float.ts +0 -50
  358. package/src/parsing/functions/to_integer.ts +0 -50
  359. package/src/parsing/functions/to_json.ts +0 -28
  360. package/src/parsing/functions/to_lower.ts +0 -28
  361. package/src/parsing/functions/to_string.ts +0 -32
  362. package/src/parsing/functions/trim.ts +0 -28
  363. package/src/parsing/functions/type.ts +0 -39
  364. package/src/parsing/functions/value_holder.ts +0 -13
  365. package/src/parsing/logic/case.ts +0 -26
  366. package/src/parsing/logic/else.ts +0 -12
  367. package/src/parsing/logic/end.ts +0 -9
  368. package/src/parsing/logic/then.ts +0 -12
  369. package/src/parsing/logic/when.ts +0 -12
  370. package/src/parsing/operations/aggregated_return.ts +0 -22
  371. package/src/parsing/operations/aggregated_with.ts +0 -18
  372. package/src/parsing/operations/call.ts +0 -69
  373. package/src/parsing/operations/create_node.ts +0 -39
  374. package/src/parsing/operations/create_relationship.ts +0 -38
  375. package/src/parsing/operations/delete_node.ts +0 -33
  376. package/src/parsing/operations/delete_relationship.ts +0 -32
  377. package/src/parsing/operations/group_by.ts +0 -137
  378. package/src/parsing/operations/limit.ts +0 -31
  379. package/src/parsing/operations/load.ts +0 -146
  380. package/src/parsing/operations/match.ts +0 -54
  381. package/src/parsing/operations/operation.ts +0 -69
  382. package/src/parsing/operations/order_by.ts +0 -126
  383. package/src/parsing/operations/projection.ts +0 -18
  384. package/src/parsing/operations/return.ts +0 -76
  385. package/src/parsing/operations/union.ts +0 -114
  386. package/src/parsing/operations/union_all.ts +0 -16
  387. package/src/parsing/operations/unwind.ts +0 -32
  388. package/src/parsing/operations/where.ts +0 -42
  389. package/src/parsing/operations/with.ts +0 -20
  390. package/src/parsing/parser.ts +0 -1641
  391. package/src/parsing/parser_state.ts +0 -25
  392. package/src/parsing/token_to_node.ts +0 -114
  393. package/src/tokenization/keyword.ts +0 -50
  394. package/src/tokenization/operator.ts +0 -25
  395. package/src/tokenization/string_walker.ts +0 -197
  396. package/src/tokenization/symbol.ts +0 -15
  397. package/src/tokenization/token.ts +0 -764
  398. package/src/tokenization/token_mapper.ts +0 -53
  399. package/src/tokenization/token_type.ts +0 -16
  400. package/src/tokenization/tokenizer.ts +0 -250
  401. package/src/tokenization/trie.ts +0 -117
  402. package/src/utils/object_utils.ts +0 -17
  403. package/src/utils/string_utils.ts +0 -114
  404. package/tests/compute/runner.test.ts +0 -4538
  405. package/tests/extensibility.test.ts +0 -643
  406. package/tests/graph/create.test.ts +0 -36
  407. package/tests/graph/data.test.ts +0 -58
  408. package/tests/graph/match.test.ts +0 -29
  409. package/tests/parsing/context.test.ts +0 -27
  410. package/tests/parsing/expression.test.ts +0 -303
  411. package/tests/parsing/parser.test.ts +0 -1327
  412. package/tests/tokenization/token_mapper.test.ts +0 -47
  413. package/tests/tokenization/tokenizer.test.ts +0 -191
  414. package/tests/tokenization/trie.test.ts +0 -20
  415. package/tsconfig.json +0 -18
  416. package/typedoc.json +0 -16
  417. package/vscode-settings.json.recommended +0 -16
  418. package/webpack.config.js +0 -26
@@ -1,440 +0,0 @@
1
- {
2
- "cells": [
3
- {
4
- "cell_type": "code",
5
- "execution_count": null,
6
- "id": "0",
7
- "metadata": {},
8
- "outputs": [],
9
- "source": [
10
- "%reload_ext autoreload\n",
11
- "%autoreload 2\n",
12
- "\n",
13
- "from flowquery import Runner"
14
- ]
15
- },
16
- {
17
- "cell_type": "markdown",
18
- "id": "1",
19
- "metadata": {},
20
- "source": [
21
- "Create virtual node test"
22
- ]
23
- },
24
- {
25
- "cell_type": "code",
26
- "execution_count": null,
27
- "id": "2",
28
- "metadata": {},
29
- "outputs": [],
30
- "source": [
31
- "query: str = \"\"\"\n",
32
- " create virtual (:Fact) as {\n",
33
- " unwind range(0,6) as i\n",
34
- " load json from \"https://catfact.ninja/fact\" as item\n",
35
- " return i as id, item.fact\n",
36
- " }\n",
37
- "\"\"\"\n",
38
- "\n",
39
- "runner: Runner = Runner(query)\n",
40
- "await runner.run()"
41
- ]
42
- },
43
- {
44
- "cell_type": "markdown",
45
- "id": "3",
46
- "metadata": {},
47
- "source": [
48
- "Query virtual graph node"
49
- ]
50
- },
51
- {
52
- "cell_type": "code",
53
- "execution_count": null,
54
- "id": "4",
55
- "metadata": {},
56
- "outputs": [],
57
- "source": [
58
- "runner: Runner = Runner(\"match (n:Fact) return n\")\n",
59
- "await runner.run()\n",
60
- "for record in runner.results:\n",
61
- " print(record)"
62
- ]
63
- },
64
- {
65
- "cell_type": "markdown",
66
- "id": "5",
67
- "metadata": {},
68
- "source": [
69
- "Test extensibility"
70
- ]
71
- },
72
- {
73
- "cell_type": "code",
74
- "execution_count": null,
75
- "id": "6",
76
- "metadata": {},
77
- "outputs": [],
78
- "source": [
79
- "from flowquery.extensibility import (\n",
80
- " Function,\n",
81
- " FunctionDef,\n",
82
- " AggregateFunction,\n",
83
- " ReducerElement,\n",
84
- " AsyncFunction,\n",
85
- " PredicateFunction\n",
86
- ")\n",
87
- "import aiohttp\n",
88
- "import json\n",
89
- "from typing import Any, List, Iterator, Union, Dict\n",
90
- "\n",
91
- "@FunctionDef({\n",
92
- " \"description\": \"Converts a string to uppercase\",\n",
93
- " \"category\": \"string\",\n",
94
- " \"parameters\": [\n",
95
- " {\"name\": \"text\", \"description\": \"String to convert\", \"type\": \"string\"}\n",
96
- " ],\n",
97
- " \"output\": {\"description\": \"Uppercase string\", \"type\": \"string\"}\n",
98
- "})\n",
99
- "class UpperCase(Function):\n",
100
- " def __init__(self):\n",
101
- " super().__init__(\"uppercase\")\n",
102
- " self._expected_parameter_count = 1\n",
103
- "\n",
104
- " def value(self) -> str:\n",
105
- " return str(self.get_children()[0].value()).upper()\n",
106
- " \n",
107
- "@FunctionDef({\n",
108
- " \"description\": \"Extracts nodes from a collection\",\n",
109
- " \"category\": \"scalar\",\n",
110
- " \"parameters\": [\n",
111
- " {\"name\": \"collection\", \"description\": \"Collection to extract nodes from\", \"type\": \"any[]\"}\n",
112
- " ],\n",
113
- " \"output\": {\"description\": \"List of nodes extracted from the collection\", \"type\": \"node[]\"}\n",
114
- "})\n",
115
- "class Nodes(Function):\n",
116
- " def __init__(self):\n",
117
- " super().__init__(\"nodes\")\n",
118
- " self._expected_parameter_count = 1\n",
119
- "\n",
120
- " def value(self) -> List[Dict[str, Any]]:\n",
121
- " pattern: List[Dict[str, Any]] = self.get_children()[0].value()\n",
122
- " return list(self._nodes(pattern))\n",
123
- "\n",
124
- " def _nodes(self, pattern: List[Dict[str, Any]]) -> Iterator[Dict[str, Any]]:\n",
125
- " for element in pattern:\n",
126
- " if isinstance(element, dict) and \"id\" in element:\n",
127
- " yield element\n",
128
- " \n",
129
- "\n",
130
- "class ProductElement(ReducerElement):\n",
131
- " def __init__(self):\n",
132
- " self._value: float = 1.0\n",
133
- "\n",
134
- " @property\n",
135
- " def value(self) -> float:\n",
136
- " return self._value\n",
137
- "\n",
138
- " @value.setter\n",
139
- " def value(self, v: float) -> None:\n",
140
- " self._value = v\n",
141
- " \n",
142
- "@FunctionDef({\n",
143
- " \"description\": \"Calculates the product of a list of numbers\",\n",
144
- " \"category\": \"aggregate\",\n",
145
- " \"parameters\": [\n",
146
- " {\"name\": \"numbers\", \"description\": \"List of numbers to multiply\", \"type\": \"number[]\"}\n",
147
- " ],\n",
148
- " \"output\": {\"description\": \"Product of the numbers\", \"type\": \"number\"}\n",
149
- "})\n",
150
- "class Product(AggregateFunction):\n",
151
- " def __init__(self):\n",
152
- " super().__init__(\"product\")\n",
153
- "\n",
154
- " def reduce(self, element: ReducerElement) -> None:\n",
155
- " element.value *= self.first_child().value()\n",
156
- "\n",
157
- " def element(self) -> ReducerElement:\n",
158
- " return ProductElement()\n",
159
- "\n",
160
- "@FunctionDef({\n",
161
- " \"description\": \"Asynchronous function that fetches data from a URL\",\n",
162
- " \"category\": \"async\",\n",
163
- " \"parameters\": [\n",
164
- " {\"name\": \"url\", \"description\": \"URL to fetch data from\", \"type\": \"string\"}\n",
165
- " ],\n",
166
- " \"output\": {\"description\": \"Fetched data\", \"type\": \"string\"}\n",
167
- "})\n",
168
- "class get(AsyncFunction):\n",
169
- " async def generate(self, url: str):\n",
170
- " async with aiohttp.ClientSession() as session:\n",
171
- " async with session.get(url) as response:\n",
172
- " yield await response.json()\n",
173
- "\n",
174
- "@FunctionDef({\n",
175
- " \"description\": \"Fetch json data from a file path\",\n",
176
- " \"category\": \"async\",\n",
177
- " \"parameters\": [\n",
178
- " {\"name\": \"path\", \"description\": \"File path to fetch data from\", \"type\": \"string\"}\n",
179
- " ],\n",
180
- " \"output\": {\"description\": \"Fetched data\", \"type\": \"string\"}\n",
181
- "})\n",
182
- "class json_file(AsyncFunction):\n",
183
- " async def generate(self, path: str):\n",
184
- " with open(path, \"r\") as file:\n",
185
- " yield json.load(file)\n",
186
- "\n",
187
- "@FunctionDef({\n",
188
- " \"description\": \"Extracts values from an array with optional filtering. Uses list comprehension syntax: extract(variable IN array [WHERE condition] | expression)\",\n",
189
- " \"category\": \"predicate\",\n",
190
- " \"parameters\": [\n",
191
- " {\"name\": \"variable\", \"description\": \"Variable name to bind each element\", \"type\": \"string\"},\n",
192
- " {\"name\": \"array\", \"description\": \"Array to iterate over\", \"type\": \"array\"},\n",
193
- " {\"name\": \"expression\", \"description\": \"Expression to return for each element\", \"type\": \"any\"},\n",
194
- " {\"name\": \"where\", \"description\": \"Optional filter condition\", \"type\": \"boolean\", \"required\": False}\n",
195
- " ],\n",
196
- " \"output\": {\"description\": \"Extracted values from the array after applying the optional filter\", \"type\": \"array\", \"example\": [2, 4]},\n",
197
- " \"examples\": [\n",
198
- " \"WITH [1, 2, 3] AS nums RETURN extract(n IN nums | n)\",\n",
199
- " \"WITH [1, 2, 3, 4] AS nums RETURN extract(n IN nums WHERE n > 1 | n * 2)\"\n",
200
- " ]\n",
201
- "})\n",
202
- "class PredicateExtract(PredicateFunction):\n",
203
- " \"\"\"PredicateExtract function.\n",
204
- " \n",
205
- " Extracts values from an array with optional filtering.\n",
206
- " \"\"\"\n",
207
- "\n",
208
- " def __init__(self):\n",
209
- " super().__init__(\"extract\")\n",
210
- "\n",
211
- " def value(self) -> List[Any]:\n",
212
- " return list(self._extract())\n",
213
- " \n",
214
- " def _extract(self) -> Iterator[Any]:\n",
215
- " self.reference.referred = self._value_holder\n",
216
- " array = self.array.value()\n",
217
- " if array is None or not isinstance(array, list):\n",
218
- " raise ValueError(\"Invalid array for extract function\")\n",
219
- " \n",
220
- " for item in array:\n",
221
- " self._value_holder.holder = item\n",
222
- " if self.where is None or self.where.value():\n",
223
- " yield self._return.value()\n",
224
- "\n",
225
- "@FunctionDef({\n",
226
- " \"description\": \"Checks if any element in the array satisfies the condition. Uses list comprehension syntax: any(variable IN array [WHERE condition])\",\n",
227
- " \"category\": \"predicate\",\n",
228
- " \"parameters\": [\n",
229
- " {\"name\": \"variable\", \"description\": \"Variable name to bind each element\", \"type\": \"string\"},\n",
230
- " {\"name\": \"array\", \"description\": \"Array to iterate over\", \"type\": \"array\"},\n",
231
- " {\"name\": \"where\", \"description\": \"Condition to check for each element\", \"type\": \"boolean\", \"required\": False}\n",
232
- " ],\n",
233
- " \"output\": {\"description\": \"True if any element satisfies the condition, otherwise false\", \"type\": \"boolean\", \"example\": True},\n",
234
- " \"examples\": [\n",
235
- " \"WITH [1, 2, 3] AS nums RETURN any(n IN nums | n > 2)\",\n",
236
- " \"WITH [1, 2, 3] AS nums RETURN any(n IN nums | n > 5)\"\n",
237
- " ]\n",
238
- "})\n",
239
- "class Any(PredicateFunction):\n",
240
- " \"\"\"Any function.\n",
241
- " \n",
242
- " Returns true if any element in the array satisfies the condition.\n",
243
- " \"\"\"\n",
244
- "\n",
245
- " def __init__(self):\n",
246
- " super().__init__(\"any\")\n",
247
- "\n",
248
- " def value(self) -> bool:\n",
249
- " return any(self._any())\n",
250
- " \n",
251
- " def _any(self) -> Iterator[bool]:\n",
252
- " self.reference.referred = self._value_holder\n",
253
- " array = self.array.value()\n",
254
- " if array is None or not isinstance(array, list):\n",
255
- " raise ValueError(\"Invalid array for any function\")\n",
256
- " \n",
257
- " for item in array:\n",
258
- " self._value_holder.holder = item\n",
259
- " if self.where is None or self.where.value():\n",
260
- " yield True"
261
- ]
262
- },
263
- {
264
- "cell_type": "markdown",
265
- "id": "7",
266
- "metadata": {},
267
- "source": [
268
- "Test functions just created"
269
- ]
270
- },
271
- {
272
- "cell_type": "code",
273
- "execution_count": null,
274
- "id": "8",
275
- "metadata": {},
276
- "outputs": [],
277
- "source": [
278
- "runner: Runner = Runner(\"\"\"\n",
279
- " return uppercase(\"hello world\") as uppercased\n",
280
- "\"\"\")\n",
281
- "await runner.run()\n",
282
- "for record in runner.results:\n",
283
- " print(record)\n",
284
- "\n",
285
- "runner: Runner = Runner(\"\"\"\n",
286
- " unwind [1, 2, 3, 4, 5] as num\n",
287
- " return product(num) as total_product\n",
288
- "\"\"\")\n",
289
- "await runner.run()\n",
290
- "for record in runner.results:\n",
291
- " print(record)\n",
292
- "\n",
293
- "runner: Runner = Runner(\"\"\"\n",
294
- " load json from get(\"https://catfact.ninja/fact\") as result\n",
295
- " return result.fact as cat_fact\n",
296
- "\"\"\")\n",
297
- "await runner.run()\n",
298
- "for record in runner.results:\n",
299
- " print(record)\n",
300
- "\n",
301
- "runner: Runner = Runner(\"\"\"\n",
302
- " load json from json_file(\"../misc/data/test.json\") as result\n",
303
- " unwind result as entry\n",
304
- " return entry\n",
305
- "\"\"\")\n",
306
- "await runner.run()\n",
307
- "for record in runner.results:\n",
308
- " print(record)\n",
309
- "\n",
310
- "runner: Runner = Runner(\"\"\"\n",
311
- " with [\n",
312
- " {\"age\": 25, \"name\": \"Alice\"},\n",
313
- " {\"age\": 30, \"name\": \"Bob\"},\n",
314
- " {\"age\": 22, \"name\": \"Charlie\"},\n",
315
- " {\"age\": 28, \"name\": \"Diana\"}\n",
316
- " ] as people\n",
317
- " return extract(p IN people | p.name WHERE p.age > 25) as names_over_25\n",
318
- "\"\"\")\n",
319
- "await runner.run()\n",
320
- "for record in runner.results:\n",
321
- " print(record)\n",
322
- "\n",
323
- "runner: Runner = Runner(\"\"\"\n",
324
- " with [1, 2, 3, 4, 5] as numbers\n",
325
- " return any(n IN numbers | n where n > 6) as has_greater_than_3\n",
326
- "\"\"\")\n",
327
- "await runner.run()\n",
328
- "for record in runner.results:\n",
329
- " print(record)"
330
- ]
331
- },
332
- {
333
- "cell_type": "markdown",
334
- "id": "9",
335
- "metadata": {},
336
- "source": [
337
- "List functions"
338
- ]
339
- },
340
- {
341
- "cell_type": "code",
342
- "execution_count": null,
343
- "id": "10",
344
- "metadata": {},
345
- "outputs": [],
346
- "source": [
347
- "runner: Runner = Runner(\"\"\"\n",
348
- " unwind functions() as func\n",
349
- " return func\n",
350
- "\"\"\")\n",
351
- "await runner.run()\n",
352
- "for record in runner.results:\n",
353
- " print(record)"
354
- ]
355
- },
356
- {
357
- "cell_type": "markdown",
358
- "id": "11",
359
- "metadata": {},
360
- "source": [
361
- "Test virtual graph"
362
- ]
363
- },
364
- {
365
- "cell_type": "code",
366
- "execution_count": null,
367
- "id": "12",
368
- "metadata": {},
369
- "outputs": [],
370
- "source": [
371
- "await Runner(\"\"\"\n",
372
- " create virtual (:User) as {\n",
373
- " load json from json_file(\n",
374
- " \"../misc/data/users.json\"\n",
375
- " ) as users\n",
376
- " unwind users as user\n",
377
- " return user.id as id,\n",
378
- " user.name as name,\n",
379
- " user.title as title,\n",
380
- " user.department as department,\n",
381
- " user.email as email,\n",
382
- " user.managerId as managerId\n",
383
- " }\n",
384
- "\"\"\").run()\n",
385
- "\n",
386
- "await Runner(\"\"\"\n",
387
- " create virtual (:User)-[:MANAGED_BY]->(:User) as {\n",
388
- " load json from json_file(\n",
389
- " \"../misc/data/users.json\"\n",
390
- " ) as users\n",
391
- " unwind users as user\n",
392
- " return user.id as left_id, user.managerId as right_id\n",
393
- " }\n",
394
- "\"\"\").run()\n",
395
- "\n",
396
- "runner: Runner = Runner(\"\"\"\n",
397
- " MATCH p=(u:User)-[:MANAGED_BY*]->(ceo:User)\n",
398
- " WHERE NOT (ceo)-[:MANAGED_BY]->(:User)\n",
399
- " and any(n IN nodes(p) | n where n.department = \"Litigation\")\n",
400
- " RETURN\n",
401
- " u.name as employee,\n",
402
- " extract(n IN nodes(p) | n.name) as management_chain\n",
403
- "\"\"\")\n",
404
- "await runner.run()\n",
405
- "print(f\"Total results: {len(runner.results)}\")\n",
406
- "for record in runner.results:\n",
407
- " print(record)"
408
- ]
409
- },
410
- {
411
- "cell_type": "code",
412
- "execution_count": null,
413
- "id": "13",
414
- "metadata": {},
415
- "outputs": [],
416
- "source": []
417
- }
418
- ],
419
- "metadata": {
420
- "kernelspec": {
421
- "display_name": "flowquery",
422
- "language": "python",
423
- "name": "python3"
424
- },
425
- "language_info": {
426
- "codemirror_mode": {
427
- "name": "ipython",
428
- "version": 3
429
- },
430
- "file_extension": ".py",
431
- "mimetype": "text/x-python",
432
- "name": "python",
433
- "nbconvert_exporter": "python",
434
- "pygments_lexer": "ipython3",
435
- "version": "3.10.19"
436
- }
437
- },
438
- "nbformat": 4,
439
- "nbformat_minor": 5
440
- }
@@ -1,121 +0,0 @@
1
- [project]
2
- name = "flowquery"
3
- version = "1.0.35"
4
- description = "A declarative query language for data processing pipelines"
5
- readme = "README.md"
6
- requires-python = ">=3.10"
7
- license = {text = "MIT"}
8
- authors = [
9
- {name = "FlowQuery Contributors"}
10
- ]
11
- keywords = ["query", "data-processing", "pipeline", "declarative"]
12
- classifiers = [
13
- "Development Status :: 4 - Beta",
14
- "Intended Audience :: Developers",
15
- "License :: OSI Approved :: MIT License",
16
- "Operating System :: OS Independent",
17
- "Programming Language :: Python :: 3",
18
- "Programming Language :: Python :: 3.10",
19
- "Programming Language :: Python :: 3.11",
20
- "Programming Language :: Python :: 3.12",
21
- "Topic :: Database :: Front-Ends",
22
- "Topic :: Software Development :: Libraries :: Python Modules",
23
- ]
24
- dependencies = [
25
- "aiohttp>=3.8.0",
26
- ]
27
-
28
- [project.scripts]
29
- flowquery = "flowquery.io.command_line:main"
30
-
31
- [project.urls]
32
- Homepage = "https://github.com/microsoft/FlowQuery/flowquery-py"
33
- Repository = "https://github.com/microsoft/FlowQuery/flowquery-py"
34
- Documentation = "https://github.com/microsoft/FlowQuery/flowquery-py#readme"
35
- Issues = "https://github.com/microsoft/FlowQuery/issues"
36
-
37
- [project.optional-dependencies]
38
- dev = [
39
- "pytest>=7.0.0",
40
- "pytest-asyncio>=0.21.0",
41
- "jupyter>=1.0.0",
42
- "ipykernel>=6.0.0",
43
- "nbstripout>=0.6.0",
44
- "mypy>=1.0.0",
45
- "ruff>=0.1.0",
46
- ]
47
-
48
- [build-system]
49
- requires = ["setuptools>=61.0"]
50
- build-backend = "setuptools.build_meta"
51
-
52
- [tool.setuptools.package-dir]
53
- "flowquery" = "src"
54
- "flowquery.compute" = "src/compute"
55
- "flowquery.graph" = "src/graph"
56
- "flowquery.io" = "src/io"
57
- "flowquery.parsing" = "src/parsing"
58
- "flowquery.parsing.components" = "src/parsing/components"
59
- "flowquery.parsing.data_structures" = "src/parsing/data_structures"
60
- "flowquery.parsing.expressions" = "src/parsing/expressions"
61
- "flowquery.parsing.functions" = "src/parsing/functions"
62
- "flowquery.parsing.logic" = "src/parsing/logic"
63
- "flowquery.parsing.operations" = "src/parsing/operations"
64
- "flowquery.tokenization" = "src/tokenization"
65
- "flowquery.utils" = "src/utils"
66
-
67
- [tool.setuptools]
68
- packages = ["flowquery", "flowquery.compute", "flowquery.graph", "flowquery.io", "flowquery.parsing", "flowquery.parsing.components", "flowquery.parsing.data_structures", "flowquery.parsing.expressions", "flowquery.parsing.functions", "flowquery.parsing.logic", "flowquery.parsing.operations", "flowquery.tokenization", "flowquery.utils"]
69
-
70
- [tool.pytest.ini_options]
71
- minversion = "7.0"
72
- asyncio_mode = "auto"
73
- testpaths = ["tests"]
74
- python_files = ["test_*.py"]
75
- python_classes = ["Test*"]
76
- python_functions = ["test_*"]
77
- addopts = "-v --tb=short"
78
-
79
- [tool.pytest-asyncio]
80
- mode = "auto"
81
-
82
- [tool.mypy]
83
- python_version = "3.10"
84
- strict = true
85
- ignore_missing_imports = true
86
- exclude = [
87
- "tests/",
88
- "__pycache__",
89
- ".git",
90
- "build",
91
- "dist",
92
- ]
93
-
94
- [[tool.mypy.overrides]]
95
- module = "src.parsing.parser"
96
- warn_return_any = false
97
- disable_error_code = ["union-attr", "arg-type"]
98
-
99
- [tool.ruff]
100
- target-version = "py310"
101
- line-length = 120
102
- exclude = [
103
- ".git",
104
- "__pycache__",
105
- "build",
106
- "dist",
107
- ]
108
-
109
- [tool.ruff.lint]
110
- select = [
111
- "F", # Pyflakes (includes F401 unused imports)
112
- "E", # pycodestyle errors
113
- "W", # pycodestyle warnings
114
- "I", # isort
115
- ]
116
- ignore = [
117
- "E501", # line too long (handled by formatter)
118
- ]
119
-
120
- [tool.ruff.lint.isort]
121
- known-first-party = ["flowquery", "src"]
@@ -1,92 +0,0 @@
1
- # FlowQuery Python Environment Setup Script for Windows (PowerShell)
2
- # This script creates a conda environment for FlowQuery development
3
-
4
- Write-Host "========================================"
5
- Write-Host "FlowQuery Python Environment Setup"
6
- Write-Host "========================================"
7
- Write-Host ""
8
-
9
- # Check if conda is available
10
- $condaPath = Get-Command conda -ErrorAction SilentlyContinue
11
- if (-not $condaPath) {
12
- Write-Host "ERROR: Conda is not installed or not in PATH." -ForegroundColor Red
13
- Write-Host "Please install Anaconda or Miniconda first."
14
- exit 1
15
- }
16
-
17
- # Set environment name
18
- $envName = "flowquery"
19
-
20
- # Get Python version from pyproject.toml
21
- $pyprojectContent = Get-Content "pyproject.toml" -Raw
22
- if ($pyprojectContent -match 'requires-python\s*=\s*">=([0-9.]+)"') {
23
- $pythonVersion = $matches[1]
24
- } else {
25
- $pythonVersion = "3.10" # fallback
26
- }
27
- Write-Host "Using Python version: $pythonVersion"
28
-
29
- # Check if environment already exists
30
- $envList = conda env list
31
- if ($envList -match "^$envName\s") {
32
- Write-Host "Environment '$envName' already exists."
33
- $recreate = Read-Host "Do you want to recreate it? (y/n)"
34
- if ($recreate -eq "y" -or $recreate -eq "Y") {
35
- Write-Host "Removing existing environment..."
36
- conda env remove -n $envName -y
37
- } else {
38
- Write-Host "Keeping existing environment..."
39
- Write-Host ""
40
- Write-Host "========================================"
41
- Write-Host "Environment ready!"
42
- Write-Host "========================================"
43
- Write-Host ""
44
- Write-Host "To activate the environment, run:"
45
- Write-Host " conda activate $envName" -ForegroundColor Cyan
46
- Write-Host ""
47
- Write-Host "To run tests:"
48
- Write-Host " pytest tests/" -ForegroundColor Cyan
49
- Write-Host ""
50
- Write-Host "To deactivate when done:"
51
- Write-Host " conda deactivate" -ForegroundColor Cyan
52
- exit 0
53
- }
54
- }
55
-
56
- # Create the environment
57
- Write-Host ""
58
- Write-Host "Creating conda environment '$envName' with Python $pythonVersion..."
59
- conda create -n $envName python=$pythonVersion pip -y
60
-
61
- if ($LASTEXITCODE -ne 0) {
62
- Write-Host ""
63
- Write-Host "ERROR: Failed to create conda environment." -ForegroundColor Red
64
- exit 1
65
- }
66
-
67
- # Activate and install package in dev mode
68
- Write-Host ""
69
- Write-Host "Installing package in development mode..."
70
- conda activate $envName
71
- pip install -e ".[dev]"
72
-
73
- if ($LASTEXITCODE -ne 0) {
74
- Write-Host ""
75
- Write-Host "ERROR: Failed to install package." -ForegroundColor Red
76
- exit 1
77
- }
78
-
79
- Write-Host ""
80
- Write-Host "========================================"
81
- Write-Host "Environment created successfully!" -ForegroundColor Green
82
- Write-Host "========================================"
83
- Write-Host ""
84
- Write-Host "To activate the environment, run:"
85
- Write-Host " conda activate $envName" -ForegroundColor Cyan
86
- Write-Host ""
87
- Write-Host "To run tests:"
88
- Write-Host " pytest tests/" -ForegroundColor Cyan
89
- Write-Host ""
90
- Write-Host "To deactivate when done:"
91
- Write-Host " conda deactivate" -ForegroundColor Cyan
92
- Write-Host ""