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