flowquery 1.0.46 → 1.0.48

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 (422) 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/data_structures/list_comprehension.d.ts +56 -0
  7. package/dist/parsing/data_structures/list_comprehension.d.ts.map +1 -0
  8. package/dist/parsing/data_structures/list_comprehension.js +102 -0
  9. package/dist/parsing/data_structures/list_comprehension.js.map +1 -0
  10. package/dist/parsing/parser.d.ts +18 -0
  11. package/dist/parsing/parser.d.ts.map +1 -1
  12. package/dist/parsing/parser.js +92 -0
  13. package/dist/parsing/parser.js.map +1 -1
  14. package/package.json +4 -1
  15. package/.editorconfig +0 -21
  16. package/.gitattributes +0 -3
  17. package/.github/workflows/npm-publish.yml +0 -32
  18. package/.github/workflows/python-publish.yml +0 -143
  19. package/.github/workflows/release.yml +0 -107
  20. package/.husky/pre-commit +0 -28
  21. package/.prettierrc +0 -22
  22. package/CODE_OF_CONDUCT.md +0 -10
  23. package/FlowQueryLogoIcon.png +0 -0
  24. package/SECURITY.md +0 -14
  25. package/SUPPORT.md +0 -13
  26. package/docs/flowquery.min.js +0 -1
  27. package/docs/index.html +0 -105
  28. package/flowquery-py/CONTRIBUTING.md +0 -127
  29. package/flowquery-py/README.md +0 -67
  30. package/flowquery-py/misc/data/test.json +0 -10
  31. package/flowquery-py/misc/data/users.json +0 -242
  32. package/flowquery-py/notebooks/TestFlowQuery.ipynb +0 -440
  33. package/flowquery-py/pyproject.toml +0 -121
  34. package/flowquery-py/setup_env.ps1 +0 -92
  35. package/flowquery-py/setup_env.sh +0 -87
  36. package/flowquery-py/src/__init__.py +0 -38
  37. package/flowquery-py/src/__main__.py +0 -10
  38. package/flowquery-py/src/compute/__init__.py +0 -6
  39. package/flowquery-py/src/compute/flowquery.py +0 -68
  40. package/flowquery-py/src/compute/runner.py +0 -64
  41. package/flowquery-py/src/extensibility.py +0 -52
  42. package/flowquery-py/src/graph/__init__.py +0 -31
  43. package/flowquery-py/src/graph/data.py +0 -136
  44. package/flowquery-py/src/graph/database.py +0 -141
  45. package/flowquery-py/src/graph/hops.py +0 -43
  46. package/flowquery-py/src/graph/node.py +0 -143
  47. package/flowquery-py/src/graph/node_data.py +0 -26
  48. package/flowquery-py/src/graph/node_reference.py +0 -50
  49. package/flowquery-py/src/graph/pattern.py +0 -115
  50. package/flowquery-py/src/graph/pattern_expression.py +0 -67
  51. package/flowquery-py/src/graph/patterns.py +0 -42
  52. package/flowquery-py/src/graph/physical_node.py +0 -41
  53. package/flowquery-py/src/graph/physical_relationship.py +0 -36
  54. package/flowquery-py/src/graph/relationship.py +0 -193
  55. package/flowquery-py/src/graph/relationship_data.py +0 -36
  56. package/flowquery-py/src/graph/relationship_match_collector.py +0 -85
  57. package/flowquery-py/src/graph/relationship_reference.py +0 -21
  58. package/flowquery-py/src/io/__init__.py +0 -5
  59. package/flowquery-py/src/io/command_line.py +0 -108
  60. package/flowquery-py/src/parsing/__init__.py +0 -17
  61. package/flowquery-py/src/parsing/alias.py +0 -20
  62. package/flowquery-py/src/parsing/alias_option.py +0 -11
  63. package/flowquery-py/src/parsing/ast_node.py +0 -147
  64. package/flowquery-py/src/parsing/base_parser.py +0 -84
  65. package/flowquery-py/src/parsing/components/__init__.py +0 -19
  66. package/flowquery-py/src/parsing/components/csv.py +0 -8
  67. package/flowquery-py/src/parsing/components/from_.py +0 -12
  68. package/flowquery-py/src/parsing/components/headers.py +0 -12
  69. package/flowquery-py/src/parsing/components/json.py +0 -8
  70. package/flowquery-py/src/parsing/components/null.py +0 -10
  71. package/flowquery-py/src/parsing/components/post.py +0 -8
  72. package/flowquery-py/src/parsing/components/text.py +0 -8
  73. package/flowquery-py/src/parsing/context.py +0 -50
  74. package/flowquery-py/src/parsing/data_structures/__init__.py +0 -15
  75. package/flowquery-py/src/parsing/data_structures/associative_array.py +0 -41
  76. package/flowquery-py/src/parsing/data_structures/json_array.py +0 -30
  77. package/flowquery-py/src/parsing/data_structures/key_value_pair.py +0 -38
  78. package/flowquery-py/src/parsing/data_structures/lookup.py +0 -51
  79. package/flowquery-py/src/parsing/data_structures/range_lookup.py +0 -42
  80. package/flowquery-py/src/parsing/expressions/__init__.py +0 -61
  81. package/flowquery-py/src/parsing/expressions/boolean.py +0 -20
  82. package/flowquery-py/src/parsing/expressions/expression.py +0 -141
  83. package/flowquery-py/src/parsing/expressions/expression_map.py +0 -26
  84. package/flowquery-py/src/parsing/expressions/f_string.py +0 -27
  85. package/flowquery-py/src/parsing/expressions/identifier.py +0 -21
  86. package/flowquery-py/src/parsing/expressions/number.py +0 -32
  87. package/flowquery-py/src/parsing/expressions/operator.py +0 -271
  88. package/flowquery-py/src/parsing/expressions/reference.py +0 -47
  89. package/flowquery-py/src/parsing/expressions/string.py +0 -27
  90. package/flowquery-py/src/parsing/functions/__init__.py +0 -127
  91. package/flowquery-py/src/parsing/functions/aggregate_function.py +0 -60
  92. package/flowquery-py/src/parsing/functions/async_function.py +0 -65
  93. package/flowquery-py/src/parsing/functions/avg.py +0 -55
  94. package/flowquery-py/src/parsing/functions/coalesce.py +0 -43
  95. package/flowquery-py/src/parsing/functions/collect.py +0 -75
  96. package/flowquery-py/src/parsing/functions/count.py +0 -79
  97. package/flowquery-py/src/parsing/functions/date_.py +0 -61
  98. package/flowquery-py/src/parsing/functions/datetime_.py +0 -62
  99. package/flowquery-py/src/parsing/functions/duration.py +0 -159
  100. package/flowquery-py/src/parsing/functions/element_id.py +0 -50
  101. package/flowquery-py/src/parsing/functions/function.py +0 -68
  102. package/flowquery-py/src/parsing/functions/function_factory.py +0 -170
  103. package/flowquery-py/src/parsing/functions/function_metadata.py +0 -148
  104. package/flowquery-py/src/parsing/functions/functions.py +0 -67
  105. package/flowquery-py/src/parsing/functions/head.py +0 -39
  106. package/flowquery-py/src/parsing/functions/id_.py +0 -49
  107. package/flowquery-py/src/parsing/functions/join.py +0 -49
  108. package/flowquery-py/src/parsing/functions/keys.py +0 -34
  109. package/flowquery-py/src/parsing/functions/last.py +0 -39
  110. package/flowquery-py/src/parsing/functions/localdatetime.py +0 -60
  111. package/flowquery-py/src/parsing/functions/localtime.py +0 -57
  112. package/flowquery-py/src/parsing/functions/max_.py +0 -49
  113. package/flowquery-py/src/parsing/functions/min_.py +0 -49
  114. package/flowquery-py/src/parsing/functions/nodes.py +0 -48
  115. package/flowquery-py/src/parsing/functions/predicate_function.py +0 -47
  116. package/flowquery-py/src/parsing/functions/predicate_sum.py +0 -49
  117. package/flowquery-py/src/parsing/functions/properties.py +0 -50
  118. package/flowquery-py/src/parsing/functions/rand.py +0 -28
  119. package/flowquery-py/src/parsing/functions/range_.py +0 -41
  120. package/flowquery-py/src/parsing/functions/reducer_element.py +0 -15
  121. package/flowquery-py/src/parsing/functions/relationships.py +0 -46
  122. package/flowquery-py/src/parsing/functions/replace.py +0 -39
  123. package/flowquery-py/src/parsing/functions/round_.py +0 -34
  124. package/flowquery-py/src/parsing/functions/schema.py +0 -40
  125. package/flowquery-py/src/parsing/functions/size.py +0 -34
  126. package/flowquery-py/src/parsing/functions/split.py +0 -54
  127. package/flowquery-py/src/parsing/functions/string_distance.py +0 -92
  128. package/flowquery-py/src/parsing/functions/stringify.py +0 -49
  129. package/flowquery-py/src/parsing/functions/substring.py +0 -76
  130. package/flowquery-py/src/parsing/functions/sum.py +0 -51
  131. package/flowquery-py/src/parsing/functions/tail.py +0 -37
  132. package/flowquery-py/src/parsing/functions/temporal_utils.py +0 -186
  133. package/flowquery-py/src/parsing/functions/time_.py +0 -57
  134. package/flowquery-py/src/parsing/functions/timestamp.py +0 -37
  135. package/flowquery-py/src/parsing/functions/to_float.py +0 -46
  136. package/flowquery-py/src/parsing/functions/to_integer.py +0 -46
  137. package/flowquery-py/src/parsing/functions/to_json.py +0 -35
  138. package/flowquery-py/src/parsing/functions/to_lower.py +0 -37
  139. package/flowquery-py/src/parsing/functions/to_string.py +0 -41
  140. package/flowquery-py/src/parsing/functions/trim.py +0 -37
  141. package/flowquery-py/src/parsing/functions/type_.py +0 -47
  142. package/flowquery-py/src/parsing/functions/value_holder.py +0 -24
  143. package/flowquery-py/src/parsing/logic/__init__.py +0 -15
  144. package/flowquery-py/src/parsing/logic/case.py +0 -28
  145. package/flowquery-py/src/parsing/logic/else_.py +0 -12
  146. package/flowquery-py/src/parsing/logic/end.py +0 -8
  147. package/flowquery-py/src/parsing/logic/then.py +0 -12
  148. package/flowquery-py/src/parsing/logic/when.py +0 -12
  149. package/flowquery-py/src/parsing/operations/__init__.py +0 -46
  150. package/flowquery-py/src/parsing/operations/aggregated_return.py +0 -25
  151. package/flowquery-py/src/parsing/operations/aggregated_with.py +0 -22
  152. package/flowquery-py/src/parsing/operations/call.py +0 -73
  153. package/flowquery-py/src/parsing/operations/create_node.py +0 -35
  154. package/flowquery-py/src/parsing/operations/create_relationship.py +0 -35
  155. package/flowquery-py/src/parsing/operations/delete_node.py +0 -29
  156. package/flowquery-py/src/parsing/operations/delete_relationship.py +0 -29
  157. package/flowquery-py/src/parsing/operations/group_by.py +0 -148
  158. package/flowquery-py/src/parsing/operations/limit.py +0 -33
  159. package/flowquery-py/src/parsing/operations/load.py +0 -148
  160. package/flowquery-py/src/parsing/operations/match.py +0 -52
  161. package/flowquery-py/src/parsing/operations/operation.py +0 -69
  162. package/flowquery-py/src/parsing/operations/order_by.py +0 -114
  163. package/flowquery-py/src/parsing/operations/projection.py +0 -21
  164. package/flowquery-py/src/parsing/operations/return_op.py +0 -88
  165. package/flowquery-py/src/parsing/operations/union.py +0 -115
  166. package/flowquery-py/src/parsing/operations/union_all.py +0 -17
  167. package/flowquery-py/src/parsing/operations/unwind.py +0 -42
  168. package/flowquery-py/src/parsing/operations/where.py +0 -43
  169. package/flowquery-py/src/parsing/operations/with_op.py +0 -18
  170. package/flowquery-py/src/parsing/parser.py +0 -1384
  171. package/flowquery-py/src/parsing/parser_state.py +0 -26
  172. package/flowquery-py/src/parsing/token_to_node.py +0 -109
  173. package/flowquery-py/src/tokenization/__init__.py +0 -23
  174. package/flowquery-py/src/tokenization/keyword.py +0 -54
  175. package/flowquery-py/src/tokenization/operator.py +0 -29
  176. package/flowquery-py/src/tokenization/string_walker.py +0 -158
  177. package/flowquery-py/src/tokenization/symbol.py +0 -19
  178. package/flowquery-py/src/tokenization/token.py +0 -693
  179. package/flowquery-py/src/tokenization/token_mapper.py +0 -53
  180. package/flowquery-py/src/tokenization/token_type.py +0 -21
  181. package/flowquery-py/src/tokenization/tokenizer.py +0 -214
  182. package/flowquery-py/src/tokenization/trie.py +0 -125
  183. package/flowquery-py/src/utils/__init__.py +0 -6
  184. package/flowquery-py/src/utils/object_utils.py +0 -20
  185. package/flowquery-py/src/utils/string_utils.py +0 -113
  186. package/flowquery-py/tests/__init__.py +0 -1
  187. package/flowquery-py/tests/compute/__init__.py +0 -1
  188. package/flowquery-py/tests/compute/test_runner.py +0 -4902
  189. package/flowquery-py/tests/graph/__init__.py +0 -1
  190. package/flowquery-py/tests/graph/test_create.py +0 -56
  191. package/flowquery-py/tests/graph/test_data.py +0 -73
  192. package/flowquery-py/tests/graph/test_match.py +0 -40
  193. package/flowquery-py/tests/parsing/__init__.py +0 -1
  194. package/flowquery-py/tests/parsing/test_context.py +0 -34
  195. package/flowquery-py/tests/parsing/test_expression.py +0 -248
  196. package/flowquery-py/tests/parsing/test_parser.py +0 -1237
  197. package/flowquery-py/tests/test_extensibility.py +0 -611
  198. package/flowquery-py/tests/tokenization/__init__.py +0 -1
  199. package/flowquery-py/tests/tokenization/test_token_mapper.py +0 -60
  200. package/flowquery-py/tests/tokenization/test_tokenizer.py +0 -198
  201. package/flowquery-py/tests/tokenization/test_trie.py +0 -30
  202. package/flowquery-vscode/.vscode-test.mjs +0 -5
  203. package/flowquery-vscode/.vscodeignore +0 -13
  204. package/flowquery-vscode/LICENSE +0 -21
  205. package/flowquery-vscode/README.md +0 -11
  206. package/flowquery-vscode/demo/FlowQueryVSCodeDemo.gif +0 -0
  207. package/flowquery-vscode/eslint.config.mjs +0 -25
  208. package/flowquery-vscode/extension.js +0 -508
  209. package/flowquery-vscode/flowQueryEngine/flowquery.min.js +0 -1
  210. package/flowquery-vscode/flowquery-worker.js +0 -66
  211. package/flowquery-vscode/images/FlowQueryLogoIcon.png +0 -0
  212. package/flowquery-vscode/jsconfig.json +0 -13
  213. package/flowquery-vscode/libs/page.css +0 -53
  214. package/flowquery-vscode/libs/table.css +0 -13
  215. package/flowquery-vscode/libs/tabs.css +0 -66
  216. package/flowquery-vscode/package-lock.json +0 -2917
  217. package/flowquery-vscode/package.json +0 -51
  218. package/flowquery-vscode/test/extension.test.js +0 -196
  219. package/flowquery-vscode/test/worker.test.js +0 -25
  220. package/flowquery-vscode/vsc-extension-quickstart.md +0 -42
  221. package/jest.config.js +0 -14
  222. package/misc/apps/RAG/README.md +0 -29
  223. package/misc/apps/RAG/data/chats.json +0 -302
  224. package/misc/apps/RAG/data/emails.json +0 -182
  225. package/misc/apps/RAG/data/events.json +0 -226
  226. package/misc/apps/RAG/data/files.json +0 -172
  227. package/misc/apps/RAG/data/users.json +0 -158
  228. package/misc/apps/RAG/jest.config.js +0 -21
  229. package/misc/apps/RAG/package.json +0 -48
  230. package/misc/apps/RAG/public/index.html +0 -18
  231. package/misc/apps/RAG/src/App.css +0 -42
  232. package/misc/apps/RAG/src/App.tsx +0 -50
  233. package/misc/apps/RAG/src/components/AdaptiveCardRenderer.css +0 -172
  234. package/misc/apps/RAG/src/components/AdaptiveCardRenderer.tsx +0 -380
  235. package/misc/apps/RAG/src/components/ApiKeySettings.tsx +0 -245
  236. package/misc/apps/RAG/src/components/ChatContainer.css +0 -67
  237. package/misc/apps/RAG/src/components/ChatContainer.tsx +0 -242
  238. package/misc/apps/RAG/src/components/ChatInput.css +0 -23
  239. package/misc/apps/RAG/src/components/ChatInput.tsx +0 -76
  240. package/misc/apps/RAG/src/components/ChatMessage.css +0 -160
  241. package/misc/apps/RAG/src/components/ChatMessage.tsx +0 -286
  242. package/misc/apps/RAG/src/components/FlowQueryAgent.ts +0 -708
  243. package/misc/apps/RAG/src/components/FlowQueryRunner.css +0 -113
  244. package/misc/apps/RAG/src/components/FlowQueryRunner.tsx +0 -371
  245. package/misc/apps/RAG/src/components/index.ts +0 -28
  246. package/misc/apps/RAG/src/graph/index.ts +0 -19
  247. package/misc/apps/RAG/src/graph/initializeGraph.ts +0 -254
  248. package/misc/apps/RAG/src/index.tsx +0 -29
  249. package/misc/apps/RAG/src/prompts/FlowQuerySystemPrompt.ts +0 -327
  250. package/misc/apps/RAG/src/prompts/index.ts +0 -10
  251. package/misc/apps/RAG/src/tests/graph.test.ts +0 -35
  252. package/misc/apps/RAG/src/utils/FlowQueryExecutor.ts +0 -130
  253. package/misc/apps/RAG/src/utils/FlowQueryExtractor.ts +0 -208
  254. package/misc/apps/RAG/src/utils/Llm.ts +0 -248
  255. package/misc/apps/RAG/src/utils/index.ts +0 -12
  256. package/misc/apps/RAG/tsconfig.json +0 -22
  257. package/misc/apps/RAG/webpack.config.js +0 -43
  258. package/misc/apps/README.md +0 -1
  259. package/misc/queries/analyze_catfacts.cql +0 -75
  260. package/misc/queries/azure_openai_completions.cql +0 -13
  261. package/misc/queries/azure_openai_models.cql +0 -9
  262. package/misc/queries/mock_pipeline.cql +0 -84
  263. package/misc/queries/openai_completions.cql +0 -15
  264. package/misc/queries/openai_models.cql +0 -13
  265. package/misc/queries/test.cql +0 -6
  266. package/misc/queries/tool_inference.cql +0 -24
  267. package/misc/queries/wisdom.cql +0 -6
  268. package/misc/queries/wisdom_letter_histogram.cql +0 -8
  269. package/src/compute/flowquery.ts +0 -46
  270. package/src/compute/runner.ts +0 -66
  271. package/src/extensibility.ts +0 -45
  272. package/src/graph/data.ts +0 -130
  273. package/src/graph/database.ts +0 -143
  274. package/src/graph/hops.ts +0 -22
  275. package/src/graph/node.ts +0 -122
  276. package/src/graph/node_data.ts +0 -18
  277. package/src/graph/node_reference.ts +0 -38
  278. package/src/graph/pattern.ts +0 -110
  279. package/src/graph/pattern_expression.ts +0 -48
  280. package/src/graph/patterns.ts +0 -36
  281. package/src/graph/physical_node.ts +0 -23
  282. package/src/graph/physical_relationship.ts +0 -23
  283. package/src/graph/relationship.ts +0 -167
  284. package/src/graph/relationship_data.ts +0 -31
  285. package/src/graph/relationship_match_collector.ts +0 -64
  286. package/src/graph/relationship_reference.ts +0 -25
  287. package/src/index.browser.ts +0 -46
  288. package/src/index.node.ts +0 -55
  289. package/src/index.ts +0 -12
  290. package/src/io/command_line.ts +0 -74
  291. package/src/parsing/alias.ts +0 -23
  292. package/src/parsing/alias_option.ts +0 -5
  293. package/src/parsing/ast_node.ts +0 -153
  294. package/src/parsing/base_parser.ts +0 -98
  295. package/src/parsing/components/csv.ts +0 -9
  296. package/src/parsing/components/from.ts +0 -12
  297. package/src/parsing/components/headers.ts +0 -12
  298. package/src/parsing/components/json.ts +0 -9
  299. package/src/parsing/components/null.ts +0 -9
  300. package/src/parsing/components/post.ts +0 -9
  301. package/src/parsing/components/text.ts +0 -9
  302. package/src/parsing/context.ts +0 -54
  303. package/src/parsing/data_structures/associative_array.ts +0 -43
  304. package/src/parsing/data_structures/json_array.ts +0 -31
  305. package/src/parsing/data_structures/key_value_pair.ts +0 -37
  306. package/src/parsing/data_structures/lookup.ts +0 -44
  307. package/src/parsing/data_structures/range_lookup.ts +0 -36
  308. package/src/parsing/expressions/boolean.ts +0 -21
  309. package/src/parsing/expressions/expression.ts +0 -150
  310. package/src/parsing/expressions/expression_map.ts +0 -22
  311. package/src/parsing/expressions/f_string.ts +0 -26
  312. package/src/parsing/expressions/identifier.ts +0 -22
  313. package/src/parsing/expressions/number.ts +0 -40
  314. package/src/parsing/expressions/operator.ts +0 -354
  315. package/src/parsing/expressions/reference.ts +0 -45
  316. package/src/parsing/expressions/string.ts +0 -34
  317. package/src/parsing/functions/aggregate_function.ts +0 -58
  318. package/src/parsing/functions/async_function.ts +0 -64
  319. package/src/parsing/functions/avg.ts +0 -47
  320. package/src/parsing/functions/coalesce.ts +0 -49
  321. package/src/parsing/functions/collect.ts +0 -54
  322. package/src/parsing/functions/count.ts +0 -54
  323. package/src/parsing/functions/date.ts +0 -63
  324. package/src/parsing/functions/datetime.ts +0 -63
  325. package/src/parsing/functions/duration.ts +0 -143
  326. package/src/parsing/functions/element_id.ts +0 -51
  327. package/src/parsing/functions/function.ts +0 -60
  328. package/src/parsing/functions/function_factory.ts +0 -195
  329. package/src/parsing/functions/function_metadata.ts +0 -217
  330. package/src/parsing/functions/functions.ts +0 -70
  331. package/src/parsing/functions/head.ts +0 -42
  332. package/src/parsing/functions/id.ts +0 -51
  333. package/src/parsing/functions/join.ts +0 -40
  334. package/src/parsing/functions/keys.ts +0 -29
  335. package/src/parsing/functions/last.ts +0 -42
  336. package/src/parsing/functions/localdatetime.ts +0 -63
  337. package/src/parsing/functions/localtime.ts +0 -58
  338. package/src/parsing/functions/max.ts +0 -37
  339. package/src/parsing/functions/min.ts +0 -37
  340. package/src/parsing/functions/nodes.ts +0 -54
  341. package/src/parsing/functions/predicate_function.ts +0 -48
  342. package/src/parsing/functions/predicate_sum.ts +0 -47
  343. package/src/parsing/functions/properties.ts +0 -56
  344. package/src/parsing/functions/rand.ts +0 -21
  345. package/src/parsing/functions/range.ts +0 -37
  346. package/src/parsing/functions/reducer_element.ts +0 -10
  347. package/src/parsing/functions/relationships.ts +0 -52
  348. package/src/parsing/functions/replace.ts +0 -38
  349. package/src/parsing/functions/round.ts +0 -28
  350. package/src/parsing/functions/schema.ts +0 -39
  351. package/src/parsing/functions/size.ts +0 -28
  352. package/src/parsing/functions/split.ts +0 -45
  353. package/src/parsing/functions/string_distance.ts +0 -83
  354. package/src/parsing/functions/stringify.ts +0 -37
  355. package/src/parsing/functions/substring.ts +0 -68
  356. package/src/parsing/functions/sum.ts +0 -41
  357. package/src/parsing/functions/tail.ts +0 -39
  358. package/src/parsing/functions/temporal_utils.ts +0 -180
  359. package/src/parsing/functions/time.ts +0 -58
  360. package/src/parsing/functions/timestamp.ts +0 -37
  361. package/src/parsing/functions/to_float.ts +0 -50
  362. package/src/parsing/functions/to_integer.ts +0 -50
  363. package/src/parsing/functions/to_json.ts +0 -28
  364. package/src/parsing/functions/to_lower.ts +0 -28
  365. package/src/parsing/functions/to_string.ts +0 -32
  366. package/src/parsing/functions/trim.ts +0 -28
  367. package/src/parsing/functions/type.ts +0 -39
  368. package/src/parsing/functions/value_holder.ts +0 -13
  369. package/src/parsing/logic/case.ts +0 -26
  370. package/src/parsing/logic/else.ts +0 -12
  371. package/src/parsing/logic/end.ts +0 -9
  372. package/src/parsing/logic/then.ts +0 -12
  373. package/src/parsing/logic/when.ts +0 -12
  374. package/src/parsing/operations/aggregated_return.ts +0 -22
  375. package/src/parsing/operations/aggregated_with.ts +0 -18
  376. package/src/parsing/operations/call.ts +0 -69
  377. package/src/parsing/operations/create_node.ts +0 -39
  378. package/src/parsing/operations/create_relationship.ts +0 -38
  379. package/src/parsing/operations/delete_node.ts +0 -33
  380. package/src/parsing/operations/delete_relationship.ts +0 -32
  381. package/src/parsing/operations/group_by.ts +0 -137
  382. package/src/parsing/operations/limit.ts +0 -31
  383. package/src/parsing/operations/load.ts +0 -146
  384. package/src/parsing/operations/match.ts +0 -54
  385. package/src/parsing/operations/operation.ts +0 -69
  386. package/src/parsing/operations/order_by.ts +0 -126
  387. package/src/parsing/operations/projection.ts +0 -18
  388. package/src/parsing/operations/return.ts +0 -76
  389. package/src/parsing/operations/union.ts +0 -114
  390. package/src/parsing/operations/union_all.ts +0 -16
  391. package/src/parsing/operations/unwind.ts +0 -36
  392. package/src/parsing/operations/where.ts +0 -42
  393. package/src/parsing/operations/with.ts +0 -20
  394. package/src/parsing/parser.ts +0 -1641
  395. package/src/parsing/parser_state.ts +0 -25
  396. package/src/parsing/token_to_node.ts +0 -114
  397. package/src/tokenization/keyword.ts +0 -50
  398. package/src/tokenization/operator.ts +0 -25
  399. package/src/tokenization/string_walker.ts +0 -197
  400. package/src/tokenization/symbol.ts +0 -15
  401. package/src/tokenization/token.ts +0 -764
  402. package/src/tokenization/token_mapper.ts +0 -53
  403. package/src/tokenization/token_type.ts +0 -16
  404. package/src/tokenization/tokenizer.ts +0 -250
  405. package/src/tokenization/trie.ts +0 -117
  406. package/src/utils/object_utils.ts +0 -17
  407. package/src/utils/string_utils.ts +0 -114
  408. package/tests/compute/runner.test.ts +0 -4559
  409. package/tests/extensibility.test.ts +0 -643
  410. package/tests/graph/create.test.ts +0 -36
  411. package/tests/graph/data.test.ts +0 -58
  412. package/tests/graph/match.test.ts +0 -29
  413. package/tests/parsing/context.test.ts +0 -27
  414. package/tests/parsing/expression.test.ts +0 -303
  415. package/tests/parsing/parser.test.ts +0 -1327
  416. package/tests/tokenization/token_mapper.test.ts +0 -47
  417. package/tests/tokenization/tokenizer.test.ts +0 -191
  418. package/tests/tokenization/trie.test.ts +0 -20
  419. package/tsconfig.json +0 -19
  420. package/typedoc.json +0 -16
  421. package/vscode-settings.json.recommended +0 -16
  422. 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.36"
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 ""