graphglot 0.1.4__tar.gz

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 (473) hide show
  1. graphglot-0.1.4/.github/ISSUE_TEMPLATE/bug_report.yml +31 -0
  2. graphglot-0.1.4/.github/ISSUE_TEMPLATE/feature_request.yml +16 -0
  3. graphglot-0.1.4/.github/PULL_REQUEST_TEMPLATE.md +18 -0
  4. graphglot-0.1.4/.github/workflows/ci.yml +29 -0
  5. graphglot-0.1.4/.github/workflows/docs.yml +47 -0
  6. graphglot-0.1.4/.github/workflows/release.yml +78 -0
  7. graphglot-0.1.4/.github/workflows/security.yml +46 -0
  8. graphglot-0.1.4/.github/workflows/test-lint.yml +129 -0
  9. graphglot-0.1.4/.gitignore +186 -0
  10. graphglot-0.1.4/.pre-commit-config.yaml +35 -0
  11. graphglot-0.1.4/CHANGELOG.md +66 -0
  12. graphglot-0.1.4/CODE_OF_CONDUCT.md +5 -0
  13. graphglot-0.1.4/CONTRIBUTING.md +29 -0
  14. graphglot-0.1.4/LICENSE +190 -0
  15. graphglot-0.1.4/Makefile +111 -0
  16. graphglot-0.1.4/PKG-INFO +429 -0
  17. graphglot-0.1.4/README.md +195 -0
  18. graphglot-0.1.4/SECURITY.md +28 -0
  19. graphglot-0.1.4/docs/architecture/README.md +41 -0
  20. graphglot-0.1.4/docs/assets/favicon.ico +0 -0
  21. graphglot-0.1.4/docs/gen_ref_pages.py +63 -0
  22. graphglot-0.1.4/docs/getting-started.md +95 -0
  23. graphglot-0.1.4/docs/gql_features.md +1874 -0
  24. graphglot-0.1.4/docs/gql_query_composition.md +484 -0
  25. graphglot-0.1.4/docs/gql_workflow.md +146 -0
  26. graphglot-0.1.4/docs/guide/ast.md +144 -0
  27. graphglot-0.1.4/docs/guide/cli.md +202 -0
  28. graphglot-0.1.4/docs/guide/dialects.md +156 -0
  29. graphglot-0.1.4/docs/guide/lineage.md +134 -0
  30. graphglot-0.1.4/docs/stylesheets/extra.css +18 -0
  31. graphglot-0.1.4/docs/tck.md +101 -0
  32. graphglot-0.1.4/graphglot/__init__.py +5 -0
  33. graphglot-0.1.4/graphglot/analysis/__init__.py +11 -0
  34. graphglot-0.1.4/graphglot/analysis/analyzer.py +68 -0
  35. graphglot-0.1.4/graphglot/analysis/models.py +81 -0
  36. graphglot-0.1.4/graphglot/analysis/rules/__init__.py +24 -0
  37. graphglot-0.1.4/graphglot/analysis/rules/_registry.py +36 -0
  38. graphglot-0.1.4/graphglot/analysis/rules/scope_rules.py +524 -0
  39. graphglot-0.1.4/graphglot/analysis/rules/scope_validator.py +813 -0
  40. graphglot-0.1.4/graphglot/analysis/rules/structural_rules.py +729 -0
  41. graphglot-0.1.4/graphglot/ast/__init__.py +1461 -0
  42. graphglot-0.1.4/graphglot/ast/base.py +517 -0
  43. graphglot-0.1.4/graphglot/ast/cypher.py +719 -0
  44. graphglot-0.1.4/graphglot/ast/expressions.py +6396 -0
  45. graphglot-0.1.4/graphglot/ast/functions.py +414 -0
  46. graphglot-0.1.4/graphglot/ast/macros.py +27 -0
  47. graphglot-0.1.4/graphglot/ast/validation.py +37 -0
  48. graphglot-0.1.4/graphglot/cli/__init__.py +57 -0
  49. graphglot-0.1.4/graphglot/cli/_ast.py +58 -0
  50. graphglot-0.1.4/graphglot/cli/_dialects.py +48 -0
  51. graphglot-0.1.4/graphglot/cli/_features.py +104 -0
  52. graphglot-0.1.4/graphglot/cli/_lineage.py +291 -0
  53. graphglot-0.1.4/graphglot/cli/_parse.py +57 -0
  54. graphglot-0.1.4/graphglot/cli/_shared.py +171 -0
  55. graphglot-0.1.4/graphglot/cli/_tokenize.py +110 -0
  56. graphglot-0.1.4/graphglot/cli/_transpile.py +98 -0
  57. graphglot-0.1.4/graphglot/cli/_type.py +142 -0
  58. graphglot-0.1.4/graphglot/cli/_validate.py +83 -0
  59. graphglot-0.1.4/graphglot/dialect/__init__.py +8 -0
  60. graphglot-0.1.4/graphglot/dialect/base.py +579 -0
  61. graphglot-0.1.4/graphglot/dialect/coregql.py +19 -0
  62. graphglot-0.1.4/graphglot/dialect/cypher.py +3494 -0
  63. graphglot-0.1.4/graphglot/dialect/cypher_features.py +40 -0
  64. graphglot-0.1.4/graphglot/dialect/fullgql.py +19 -0
  65. graphglot-0.1.4/graphglot/dialect/neo4j.py +315 -0
  66. graphglot-0.1.4/graphglot/error.py +444 -0
  67. graphglot-0.1.4/graphglot/features.py +434 -0
  68. graphglot-0.1.4/graphglot/generator/__init__.py +6 -0
  69. graphglot-0.1.4/graphglot/generator/base.py +257 -0
  70. graphglot-0.1.4/graphglot/generator/fragment.py +233 -0
  71. graphglot-0.1.4/graphglot/generator/generators/__init__.py +22 -0
  72. graphglot-0.1.4/graphglot/generator/generators/clauses.py +166 -0
  73. graphglot-0.1.4/graphglot/generator/generators/commands.py +436 -0
  74. graphglot-0.1.4/graphglot/generator/generators/core.py +316 -0
  75. graphglot-0.1.4/graphglot/generator/generators/expressions.py +827 -0
  76. graphglot-0.1.4/graphglot/generator/generators/literals.py +101 -0
  77. graphglot-0.1.4/graphglot/generator/generators/macros.py +25 -0
  78. graphglot-0.1.4/graphglot/generator/generators/patterns.py +469 -0
  79. graphglot-0.1.4/graphglot/generator/generators/predicates.py +191 -0
  80. graphglot-0.1.4/graphglot/generator/generators/statements.py +382 -0
  81. graphglot-0.1.4/graphglot/generator/generators/types.py +338 -0
  82. graphglot-0.1.4/graphglot/generator/registry.py +51 -0
  83. graphglot-0.1.4/graphglot/lexer/__init__.py +10 -0
  84. graphglot-0.1.4/graphglot/lexer/lexer.py +1318 -0
  85. graphglot-0.1.4/graphglot/lexer/token.py +545 -0
  86. graphglot-0.1.4/graphglot/lineage/__init__.py +75 -0
  87. graphglot-0.1.4/graphglot/lineage/analyzer.py +1294 -0
  88. graphglot-0.1.4/graphglot/lineage/dependency_extractor.py +133 -0
  89. graphglot-0.1.4/graphglot/lineage/exporter.py +172 -0
  90. graphglot-0.1.4/graphglot/lineage/impact.py +898 -0
  91. graphglot-0.1.4/graphglot/lineage/models.py +420 -0
  92. graphglot-0.1.4/graphglot/lineage/pattern_analyzer.py +268 -0
  93. graphglot-0.1.4/graphglot/parser/__init__.py +3 -0
  94. graphglot-0.1.4/graphglot/parser/base.py +574 -0
  95. graphglot-0.1.4/graphglot/parser/functions.py +82 -0
  96. graphglot-0.1.4/graphglot/parser/parsers/__init__.py +16 -0
  97. graphglot-0.1.4/graphglot/parser/parsers/clauses.py +386 -0
  98. graphglot-0.1.4/graphglot/parser/parsers/commands.py +82 -0
  99. graphglot-0.1.4/graphglot/parser/parsers/core.py +6215 -0
  100. graphglot-0.1.4/graphglot/parser/parsers/expressions.py +1123 -0
  101. graphglot-0.1.4/graphglot/parser/parsers/literals.py +308 -0
  102. graphglot-0.1.4/graphglot/parser/parsers/macros.py +40 -0
  103. graphglot-0.1.4/graphglot/parser/parsers/patterns.py +278 -0
  104. graphglot-0.1.4/graphglot/parser/parsers/predicates.py +275 -0
  105. graphglot-0.1.4/graphglot/parser/parsers/statements.py +767 -0
  106. graphglot-0.1.4/graphglot/parser/parsers/types.py +1239 -0
  107. graphglot-0.1.4/graphglot/parser/registry.py +100 -0
  108. graphglot-0.1.4/graphglot/scope.py +188 -0
  109. graphglot-0.1.4/graphglot/transformations.py +203 -0
  110. graphglot-0.1.4/graphglot/typing/__init__.py +15 -0
  111. graphglot-0.1.4/graphglot/typing/annotator.py +107 -0
  112. graphglot-0.1.4/graphglot/typing/errors.py +29 -0
  113. graphglot-0.1.4/graphglot/typing/rules/__init__.py +39 -0
  114. graphglot-0.1.4/graphglot/typing/rules/cast.py +63 -0
  115. graphglot-0.1.4/graphglot/typing/rules/functions.py +197 -0
  116. graphglot-0.1.4/graphglot/typing/rules/literals.py +109 -0
  117. graphglot-0.1.4/graphglot/typing/rules/operators.py +256 -0
  118. graphglot-0.1.4/graphglot/typing/rules/resolution.py +114 -0
  119. graphglot-0.1.4/graphglot/typing/rules/variables.py +121 -0
  120. graphglot-0.1.4/graphglot/typing/scope.py +59 -0
  121. graphglot-0.1.4/graphglot/typing/types.py +269 -0
  122. graphglot-0.1.4/graphglot/utils/__init__.py +0 -0
  123. graphglot-0.1.4/graphglot/utils/deprecation.py +17 -0
  124. graphglot-0.1.4/graphglot/utils/helper.py +58 -0
  125. graphglot-0.1.4/graphglot/utils/trie.py +86 -0
  126. graphglot-0.1.4/graphglot/visualization/__init__.py +5 -0
  127. graphglot-0.1.4/graphglot/visualization/tree.py +120 -0
  128. graphglot-0.1.4/mkdocs.yml +95 -0
  129. graphglot-0.1.4/pyproject.toml +119 -0
  130. graphglot-0.1.4/scripts/bnf.py +420 -0
  131. graphglot-0.1.4/scripts/check_version_consistency.py +132 -0
  132. graphglot-0.1.4/scripts/update-tck.sh +56 -0
  133. graphglot-0.1.4/tests/graphglot/analysis/__init__.py +0 -0
  134. graphglot-0.1.4/tests/graphglot/analysis/test_analyzer.py +194 -0
  135. graphglot-0.1.4/tests/graphglot/analysis/test_feature_toggle.py +221 -0
  136. graphglot-0.1.4/tests/graphglot/analysis/test_scope_rules.py +480 -0
  137. graphglot-0.1.4/tests/graphglot/analysis/test_scope_validator.py +2448 -0
  138. graphglot-0.1.4/tests/graphglot/analysis/test_structural_rules.py +487 -0
  139. graphglot-0.1.4/tests/graphglot/cli/__init__.py +0 -0
  140. graphglot-0.1.4/tests/graphglot/cli/test_dialects.py +57 -0
  141. graphglot-0.1.4/tests/graphglot/cli/test_features.py +90 -0
  142. graphglot-0.1.4/tests/graphglot/cli/test_parse.py +47 -0
  143. graphglot-0.1.4/tests/graphglot/cli/test_type.py +62 -0
  144. graphglot-0.1.4/tests/graphglot/cli/test_version.py +26 -0
  145. graphglot-0.1.4/tests/graphglot/dialect/__init__.py +0 -0
  146. graphglot-0.1.4/tests/graphglot/dialect/test_features.py +57 -0
  147. graphglot-0.1.4/tests/graphglot/generator/__init__.py +1 -0
  148. graphglot-0.1.4/tests/graphglot/generator/test_dialect_generation.py +201 -0
  149. graphglot-0.1.4/tests/graphglot/generator/test_generator_parser_alignment.py +121 -0
  150. graphglot-0.1.4/tests/graphglot/generator/test_generators.py +787 -0
  151. graphglot-0.1.4/tests/graphglot/generator/test_pretty_print.py +189 -0
  152. graphglot-0.1.4/tests/graphglot/generator/test_round_trip.py +1450 -0
  153. graphglot-0.1.4/tests/graphglot/integration/__init__.py +0 -0
  154. graphglot-0.1.4/tests/graphglot/integration/conftest.py +125 -0
  155. graphglot-0.1.4/tests/graphglot/integration/queries.py +1373 -0
  156. graphglot-0.1.4/tests/graphglot/integration/test_gql_mode.py +29 -0
  157. graphglot-0.1.4/tests/graphglot/integration/test_keyword_discovery.py +36 -0
  158. graphglot-0.1.4/tests/graphglot/integration/test_neo4j_execution.py +114 -0
  159. graphglot-0.1.4/tests/graphglot/lexer/test_feature_toggle.py +390 -0
  160. graphglot-0.1.4/tests/graphglot/lineage/__init__.py +1 -0
  161. graphglot-0.1.4/tests/graphglot/lineage/conftest.py +96 -0
  162. graphglot-0.1.4/tests/graphglot/lineage/test_aggregation.py +159 -0
  163. graphglot-0.1.4/tests/graphglot/lineage/test_bindings.py +404 -0
  164. graphglot-0.1.4/tests/graphglot/lineage/test_constraints.py +356 -0
  165. graphglot-0.1.4/tests/graphglot/lineage/test_dependencies.py +537 -0
  166. graphglot-0.1.4/tests/graphglot/lineage/test_export.py +723 -0
  167. graphglot-0.1.4/tests/graphglot/lineage/test_for_lineage.py +327 -0
  168. graphglot-0.1.4/tests/graphglot/lineage/test_graph_context.py +425 -0
  169. graphglot-0.1.4/tests/graphglot/lineage/test_graph_entity.py +196 -0
  170. graphglot-0.1.4/tests/graphglot/lineage/test_impact.py +363 -0
  171. graphglot-0.1.4/tests/graphglot/lineage/test_literal_outputs.py +85 -0
  172. graphglot-0.1.4/tests/graphglot/lineage/test_mutations.py +501 -0
  173. graphglot-0.1.4/tests/graphglot/lineage/test_output_names.py +151 -0
  174. graphglot-0.1.4/tests/graphglot/lineage/test_scope_propagation.py +460 -0
  175. graphglot-0.1.4/tests/graphglot/lineage/test_unified_storage.py +86 -0
  176. graphglot-0.1.4/tests/graphglot/lineage/test_unsupported.py +88 -0
  177. graphglot-0.1.4/tests/graphglot/lineage/test_upstream.py +789 -0
  178. graphglot-0.1.4/tests/graphglot/parser/__init__.py +1 -0
  179. graphglot-0.1.4/tests/graphglot/parser/helpers.py +50 -0
  180. graphglot-0.1.4/tests/graphglot/parser/test_aggregate_functions.py +96 -0
  181. graphglot-0.1.4/tests/graphglot/parser/test_base_parser.py +49 -0
  182. graphglot-0.1.4/tests/graphglot/parser/test_catalog_modifying_statements.py +142 -0
  183. graphglot-0.1.4/tests/graphglot/parser/test_clauses.py +129 -0
  184. graphglot-0.1.4/tests/graphglot/parser/test_common_value_expression.py +162 -0
  185. graphglot-0.1.4/tests/graphglot/parser/test_core.py +213 -0
  186. graphglot-0.1.4/tests/graphglot/parser/test_data_modifying_statements.py +176 -0
  187. graphglot-0.1.4/tests/graphglot/parser/test_dynamic_and_reference_types.py +287 -0
  188. graphglot-0.1.4/tests/graphglot/parser/test_feature_toggle.py +1881 -0
  189. graphglot-0.1.4/tests/graphglot/parser/test_gql_program.py +148 -0
  190. graphglot-0.1.4/tests/graphglot/parser/test_graph_patterns.py +113 -0
  191. graphglot-0.1.4/tests/graphglot/parser/test_identifier.py +80 -0
  192. graphglot-0.1.4/tests/graphglot/parser/test_literals.py +333 -0
  193. graphglot-0.1.4/tests/graphglot/parser/test_match_statements.py +57 -0
  194. graphglot-0.1.4/tests/graphglot/parser/test_numeric_functions.py +106 -0
  195. graphglot-0.1.4/tests/graphglot/parser/test_parser_bugs.py +166 -0
  196. graphglot-0.1.4/tests/graphglot/parser/test_parser_coverage.py +408 -0
  197. graphglot-0.1.4/tests/graphglot/parser/test_parser_registry.py +49 -0
  198. graphglot-0.1.4/tests/graphglot/parser/test_path_patterns.py +238 -0
  199. graphglot-0.1.4/tests/graphglot/parser/test_path_search.py +69 -0
  200. graphglot-0.1.4/tests/graphglot/parser/test_predicates.py +103 -0
  201. graphglot-0.1.4/tests/graphglot/parser/test_procedures.py +76 -0
  202. graphglot-0.1.4/tests/graphglot/parser/test_query_expressions.py +58 -0
  203. graphglot-0.1.4/tests/graphglot/parser/test_query_statements.py +277 -0
  204. graphglot-0.1.4/tests/graphglot/parser/test_recursion_issues.py +83 -0
  205. graphglot-0.1.4/tests/graphglot/parser/test_return_statements.py +32 -0
  206. graphglot-0.1.4/tests/graphglot/parser/test_schema_references.py +67 -0
  207. graphglot-0.1.4/tests/graphglot/parser/test_select_statements.py +124 -0
  208. graphglot-0.1.4/tests/graphglot/parser/test_session_commands.py +79 -0
  209. graphglot-0.1.4/tests/graphglot/parser/test_spans.py +196 -0
  210. graphglot-0.1.4/tests/graphglot/parser/test_statements.py +73 -0
  211. graphglot-0.1.4/tests/graphglot/parser/test_string_functions.py +61 -0
  212. graphglot-0.1.4/tests/graphglot/parser/test_temporal_functions.py +39 -0
  213. graphglot-0.1.4/tests/graphglot/parser/test_transaction_commands.py +38 -0
  214. graphglot-0.1.4/tests/graphglot/parser/test_type_system_ddl.py +165 -0
  215. graphglot-0.1.4/tests/graphglot/parser/test_value_expressions.py +168 -0
  216. graphglot-0.1.4/tests/graphglot/parser/test_value_types.py +443 -0
  217. graphglot-0.1.4/tests/graphglot/parser_tests.yaml +79 -0
  218. graphglot-0.1.4/tests/graphglot/tck/__init__.py +0 -0
  219. graphglot-0.1.4/tests/graphglot/tck/conftest.py +19 -0
  220. graphglot-0.1.4/tests/graphglot/tck/features/clauses/call/Call1.feature +236 -0
  221. graphglot-0.1.4/tests/graphglot/tck/features/clauses/call/Call2.feature +125 -0
  222. graphglot-0.1.4/tests/graphglot/tck/features/clauses/call/Call3.feature +122 -0
  223. graphglot-0.1.4/tests/graphglot/tck/features/clauses/call/Call4.feature +60 -0
  224. graphglot-0.1.4/tests/graphglot/tck/features/clauses/call/Call5.feature +172 -0
  225. graphglot-0.1.4/tests/graphglot/tck/features/clauses/call/Call6.feature +82 -0
  226. graphglot-0.1.4/tests/graphglot/tck/features/clauses/create/Create1.feature +248 -0
  227. graphglot-0.1.4/tests/graphglot/tck/features/clauses/create/Create2.feature +355 -0
  228. graphglot-0.1.4/tests/graphglot/tck/features/clauses/create/Create3.feature +257 -0
  229. graphglot-0.1.4/tests/graphglot/tck/features/clauses/create/Create4.feature +1374 -0
  230. graphglot-0.1.4/tests/graphglot/tck/features/clauses/create/Create5.feature +130 -0
  231. graphglot-0.1.4/tests/graphglot/tck/features/clauses/create/Create6.feature +273 -0
  232. graphglot-0.1.4/tests/graphglot/tck/features/clauses/delete/Delete1.feature +139 -0
  233. graphglot-0.1.4/tests/graphglot/tck/features/clauses/delete/Delete2.feature +107 -0
  234. graphglot-0.1.4/tests/graphglot/tck/features/clauses/delete/Delete3.feature +61 -0
  235. graphglot-0.1.4/tests/graphglot/tck/features/clauses/delete/Delete4.feature +86 -0
  236. graphglot-0.1.4/tests/graphglot/tck/features/clauses/delete/Delete5.feature +186 -0
  237. graphglot-0.1.4/tests/graphglot/tck/features/clauses/delete/Delete6.feature +372 -0
  238. graphglot-0.1.4/tests/graphglot/tck/features/clauses/match/Match1.feature +273 -0
  239. graphglot-0.1.4/tests/graphglot/tck/features/clauses/match/Match2.feature +300 -0
  240. graphglot-0.1.4/tests/graphglot/tck/features/clauses/match/Match3.feature +574 -0
  241. graphglot-0.1.4/tests/graphglot/tck/features/clauses/match/Match4.feature +281 -0
  242. graphglot-0.1.4/tests/graphglot/tck/features/clauses/match/Match5.feature +652 -0
  243. graphglot-0.1.4/tests/graphglot/tck/features/clauses/match/Match6.feature +528 -0
  244. graphglot-0.1.4/tests/graphglot/tck/features/clauses/match/Match7.feature +669 -0
  245. graphglot-0.1.4/tests/graphglot/tck/features/clauses/match/Match8.feature +104 -0
  246. graphglot-0.1.4/tests/graphglot/tck/features/clauses/match/Match9.feature +200 -0
  247. graphglot-0.1.4/tests/graphglot/tck/features/clauses/match-where/MatchWhere1.feature +291 -0
  248. graphglot-0.1.4/tests/graphglot/tck/features/clauses/match-where/MatchWhere2.feature +88 -0
  249. graphglot-0.1.4/tests/graphglot/tck/features/clauses/match-where/MatchWhere3.feature +94 -0
  250. graphglot-0.1.4/tests/graphglot/tck/features/clauses/match-where/MatchWhere4.feature +70 -0
  251. graphglot-0.1.4/tests/graphglot/tck/features/clauses/match-where/MatchWhere5.feature +116 -0
  252. graphglot-0.1.4/tests/graphglot/tck/features/clauses/match-where/MatchWhere6.feature +208 -0
  253. graphglot-0.1.4/tests/graphglot/tck/features/clauses/merge/Merge1.feature +306 -0
  254. graphglot-0.1.4/tests/graphglot/tck/features/clauses/merge/Merge2.feature +123 -0
  255. graphglot-0.1.4/tests/graphglot/tck/features/clauses/merge/Merge3.feature +114 -0
  256. graphglot-0.1.4/tests/graphglot/tck/features/clauses/merge/Merge4.feature +73 -0
  257. graphglot-0.1.4/tests/graphglot/tck/features/clauses/merge/Merge5.feature +519 -0
  258. graphglot-0.1.4/tests/graphglot/tck/features/clauses/merge/Merge6.feature +167 -0
  259. graphglot-0.1.4/tests/graphglot/tck/features/clauses/merge/Merge7.feature +143 -0
  260. graphglot-0.1.4/tests/graphglot/tck/features/clauses/merge/Merge8.feature +54 -0
  261. graphglot-0.1.4/tests/graphglot/tck/features/clauses/merge/Merge9.feature +98 -0
  262. graphglot-0.1.4/tests/graphglot/tck/features/clauses/remove/Remove1.feature +151 -0
  263. graphglot-0.1.4/tests/graphglot/tck/features/clauses/remove/Remove2.feature +115 -0
  264. graphglot-0.1.4/tests/graphglot/tck/features/clauses/remove/Remove3.feature +502 -0
  265. graphglot-0.1.4/tests/graphglot/tck/features/clauses/return/Return1.feature +56 -0
  266. graphglot-0.1.4/tests/graphglot/tck/features/clauses/return/Return2.feature +301 -0
  267. graphglot-0.1.4/tests/graphglot/tck/features/clauses/return/Return3.feature +80 -0
  268. graphglot-0.1.4/tests/graphglot/tck/features/clauses/return/Return4.feature +208 -0
  269. graphglot-0.1.4/tests/graphglot/tck/features/clauses/return/Return5.feature +115 -0
  270. graphglot-0.1.4/tests/graphglot/tck/features/clauses/return/Return6.feature +353 -0
  271. graphglot-0.1.4/tests/graphglot/tck/features/clauses/return/Return7.feature +56 -0
  272. graphglot-0.1.4/tests/graphglot/tck/features/clauses/return/Return8.feature +49 -0
  273. graphglot-0.1.4/tests/graphglot/tck/features/clauses/return-orderby/ReturnOrderBy1.feature +245 -0
  274. graphglot-0.1.4/tests/graphglot/tck/features/clauses/return-orderby/ReturnOrderBy2.feature +288 -0
  275. graphglot-0.1.4/tests/graphglot/tck/features/clauses/return-orderby/ReturnOrderBy3.feature +53 -0
  276. graphglot-0.1.4/tests/graphglot/tck/features/clauses/return-orderby/ReturnOrderBy4.feature +74 -0
  277. graphglot-0.1.4/tests/graphglot/tck/features/clauses/return-orderby/ReturnOrderBy5.feature +52 -0
  278. graphglot-0.1.4/tests/graphglot/tck/features/clauses/return-orderby/ReturnOrderBy6.feature +90 -0
  279. graphglot-0.1.4/tests/graphglot/tck/features/clauses/return-skip-limit/ReturnSkipLimit1.feature +204 -0
  280. graphglot-0.1.4/tests/graphglot/tck/features/clauses/return-skip-limit/ReturnSkipLimit2.feature +304 -0
  281. graphglot-0.1.4/tests/graphglot/tck/features/clauses/return-skip-limit/ReturnSkipLimit3.feature +107 -0
  282. graphglot-0.1.4/tests/graphglot/tck/features/clauses/set/Set1.feature +205 -0
  283. graphglot-0.1.4/tests/graphglot/tck/features/clauses/set/Set2.feature +86 -0
  284. graphglot-0.1.4/tests/graphglot/tck/features/clauses/set/Set3.feature +170 -0
  285. graphglot-0.1.4/tests/graphglot/tck/features/clauses/set/Set4.feature +118 -0
  286. graphglot-0.1.4/tests/graphglot/tck/features/clauses/set/Set5.feature +116 -0
  287. graphglot-0.1.4/tests/graphglot/tck/features/clauses/set/Set6.feature +518 -0
  288. graphglot-0.1.4/tests/graphglot/tck/features/clauses/union/Union1.feature +109 -0
  289. graphglot-0.1.4/tests/graphglot/tck/features/clauses/union/Union2.feature +112 -0
  290. graphglot-0.1.4/tests/graphglot/tck/features/clauses/union/Union3.feature +55 -0
  291. graphglot-0.1.4/tests/graphglot/tck/features/clauses/unwind/Unwind1.feature +281 -0
  292. graphglot-0.1.4/tests/graphglot/tck/features/clauses/with/With1.feature +143 -0
  293. graphglot-0.1.4/tests/graphglot/tck/features/clauses/with/With2.feature +65 -0
  294. graphglot-0.1.4/tests/graphglot/tck/features/clauses/with/With3.feature +53 -0
  295. graphglot-0.1.4/tests/graphglot/tck/features/clauses/with/With4.feature +148 -0
  296. graphglot-0.1.4/tests/graphglot/tck/features/clauses/with/With5.feature +68 -0
  297. graphglot-0.1.4/tests/graphglot/tck/features/clauses/with/With6.feature +174 -0
  298. graphglot-0.1.4/tests/graphglot/tck/features/clauses/with/With7.feature +82 -0
  299. graphglot-0.1.4/tests/graphglot/tck/features/clauses/with-orderBy/WithOrderBy1.feature +1182 -0
  300. graphglot-0.1.4/tests/graphglot/tck/features/clauses/with-orderBy/WithOrderBy2.feature +794 -0
  301. graphglot-0.1.4/tests/graphglot/tck/features/clauses/with-orderBy/WithOrderBy3.feature +333 -0
  302. graphglot-0.1.4/tests/graphglot/tck/features/clauses/with-orderBy/WithOrderBy4.feature +463 -0
  303. graphglot-0.1.4/tests/graphglot/tck/features/clauses/with-skip-limit/WithSkipLimit1.feature +103 -0
  304. graphglot-0.1.4/tests/graphglot/tck/features/clauses/with-skip-limit/WithSkipLimit2.feature +144 -0
  305. graphglot-0.1.4/tests/graphglot/tck/features/clauses/with-skip-limit/WithSkipLimit3.feature +139 -0
  306. graphglot-0.1.4/tests/graphglot/tck/features/clauses/with-where/WithWhere1.feature +109 -0
  307. graphglot-0.1.4/tests/graphglot/tck/features/clauses/with-where/WithWhere2.feature +90 -0
  308. graphglot-0.1.4/tests/graphglot/tck/features/clauses/with-where/WithWhere3.feature +97 -0
  309. graphglot-0.1.4/tests/graphglot/tck/features/clauses/with-where/WithWhere4.feature +72 -0
  310. graphglot-0.1.4/tests/graphglot/tck/features/clauses/with-where/WithWhere5.feature +120 -0
  311. graphglot-0.1.4/tests/graphglot/tck/features/clauses/with-where/WithWhere6.feature +54 -0
  312. graphglot-0.1.4/tests/graphglot/tck/features/clauses/with-where/WithWhere7.feature +92 -0
  313. graphglot-0.1.4/tests/graphglot/tck/features/expressions/aggregation/Aggregation1.feature +66 -0
  314. graphglot-0.1.4/tests/graphglot/tck/features/expressions/aggregation/Aggregation2.feature +175 -0
  315. graphglot-0.1.4/tests/graphglot/tck/features/expressions/aggregation/Aggregation3.feature +63 -0
  316. graphglot-0.1.4/tests/graphglot/tck/features/expressions/aggregation/Aggregation4.feature +31 -0
  317. graphglot-0.1.4/tests/graphglot/tck/features/expressions/aggregation/Aggregation5.feature +67 -0
  318. graphglot-0.1.4/tests/graphglot/tck/features/expressions/aggregation/Aggregation6.feature +146 -0
  319. graphglot-0.1.4/tests/graphglot/tck/features/expressions/aggregation/Aggregation7.feature +31 -0
  320. graphglot-0.1.4/tests/graphglot/tck/features/expressions/aggregation/Aggregation8.feature +83 -0
  321. graphglot-0.1.4/tests/graphglot/tck/features/expressions/boolean/Boolean1.feature +231 -0
  322. graphglot-0.1.4/tests/graphglot/tck/features/expressions/boolean/Boolean2.feature +231 -0
  323. graphglot-0.1.4/tests/graphglot/tck/features/expressions/boolean/Boolean3.feature +231 -0
  324. graphglot-0.1.4/tests/graphglot/tck/features/expressions/boolean/Boolean4.feature +130 -0
  325. graphglot-0.1.4/tests/graphglot/tck/features/expressions/boolean/Boolean5.feature +225 -0
  326. graphglot-0.1.4/tests/graphglot/tck/features/expressions/comparison/Comparison1.feature +324 -0
  327. graphglot-0.1.4/tests/graphglot/tck/features/expressions/comparison/Comparison2.feature +155 -0
  328. graphglot-0.1.4/tests/graphglot/tck/features/expressions/comparison/Comparison3.feature +199 -0
  329. graphglot-0.1.4/tests/graphglot/tck/features/expressions/comparison/Comparison4.feature +53 -0
  330. graphglot-0.1.4/tests/graphglot/tck/features/expressions/conditional/Conditional1.feature +48 -0
  331. graphglot-0.1.4/tests/graphglot/tck/features/expressions/conditional/Conditional2.feature +65 -0
  332. graphglot-0.1.4/tests/graphglot/tck/features/expressions/existentialSubqueries/ExistentialSubquery1.feature +110 -0
  333. graphglot-0.1.4/tests/graphglot/tck/features/expressions/existentialSubqueries/ExistentialSubquery2.feature +88 -0
  334. graphglot-0.1.4/tests/graphglot/tck/features/expressions/existentialSubqueries/ExistentialSubquery3.feature +100 -0
  335. graphglot-0.1.4/tests/graphglot/tck/features/expressions/graph/Graph1.feature +31 -0
  336. graphglot-0.1.4/tests/graphglot/tck/features/expressions/graph/Graph2.feature +31 -0
  337. graphglot-0.1.4/tests/graphglot/tck/features/expressions/graph/Graph3.feature +165 -0
  338. graphglot-0.1.4/tests/graphglot/tck/features/expressions/graph/Graph4.feature +145 -0
  339. graphglot-0.1.4/tests/graphglot/tck/features/expressions/graph/Graph5.feature +148 -0
  340. graphglot-0.1.4/tests/graphglot/tck/features/expressions/graph/Graph6.feature +172 -0
  341. graphglot-0.1.4/tests/graphglot/tck/features/expressions/graph/Graph7.feature +78 -0
  342. graphglot-0.1.4/tests/graphglot/tck/features/expressions/graph/Graph8.feature +170 -0
  343. graphglot-0.1.4/tests/graphglot/tck/features/expressions/graph/Graph9.feature +111 -0
  344. graphglot-0.1.4/tests/graphglot/tck/features/expressions/list/List1.feature +170 -0
  345. graphglot-0.1.4/tests/graphglot/tck/features/expressions/list/List10.feature +31 -0
  346. graphglot-0.1.4/tests/graphglot/tck/features/expressions/list/List11.feature +163 -0
  347. graphglot-0.1.4/tests/graphglot/tck/features/expressions/list/List12.feature +153 -0
  348. graphglot-0.1.4/tests/graphglot/tck/features/expressions/list/List2.feature +177 -0
  349. graphglot-0.1.4/tests/graphglot/tck/features/expressions/list/List3.feature +108 -0
  350. graphglot-0.1.4/tests/graphglot/tck/features/expressions/list/List4.feature +53 -0
  351. graphglot-0.1.4/tests/graphglot/tck/features/expressions/list/List5.feature +504 -0
  352. graphglot-0.1.4/tests/graphglot/tck/features/expressions/list/List6.feature +189 -0
  353. graphglot-0.1.4/tests/graphglot/tck/features/expressions/list/List7.feature +32 -0
  354. graphglot-0.1.4/tests/graphglot/tck/features/expressions/list/List8.feature +31 -0
  355. graphglot-0.1.4/tests/graphglot/tck/features/expressions/list/List9.feature +49 -0
  356. graphglot-0.1.4/tests/graphglot/tck/features/expressions/literals/Literals1.feature +100 -0
  357. graphglot-0.1.4/tests/graphglot/tck/features/expressions/literals/Literals2.feature +153 -0
  358. graphglot-0.1.4/tests/graphglot/tck/features/expressions/literals/Literals3.feature +205 -0
  359. graphglot-0.1.4/tests/graphglot/tck/features/expressions/literals/Literals4.feature +135 -0
  360. graphglot-0.1.4/tests/graphglot/tck/features/expressions/literals/Literals5.feature +325 -0
  361. graphglot-0.1.4/tests/graphglot/tck/features/expressions/literals/Literals6.feature +176 -0
  362. graphglot-0.1.4/tests/graphglot/tck/features/expressions/literals/Literals7.feature +325 -0
  363. graphglot-0.1.4/tests/graphglot/tck/features/expressions/literals/Literals8.feature +377 -0
  364. graphglot-0.1.4/tests/graphglot/tck/features/expressions/map/Map1.feature +126 -0
  365. graphglot-0.1.4/tests/graphglot/tck/features/expressions/map/Map2.feature +144 -0
  366. graphglot-0.1.4/tests/graphglot/tck/features/expressions/map/Map3.feature +102 -0
  367. graphglot-0.1.4/tests/graphglot/tck/features/expressions/mathematical/Mathematical1.feature +31 -0
  368. graphglot-0.1.4/tests/graphglot/tck/features/expressions/mathematical/Mathematical10.feature +31 -0
  369. graphglot-0.1.4/tests/graphglot/tck/features/expressions/mathematical/Mathematical11.feature +42 -0
  370. graphglot-0.1.4/tests/graphglot/tck/features/expressions/mathematical/Mathematical12.feature +31 -0
  371. graphglot-0.1.4/tests/graphglot/tck/features/expressions/mathematical/Mathematical13.feature +42 -0
  372. graphglot-0.1.4/tests/graphglot/tck/features/expressions/mathematical/Mathematical14.feature +31 -0
  373. graphglot-0.1.4/tests/graphglot/tck/features/expressions/mathematical/Mathematical15.feature +31 -0
  374. graphglot-0.1.4/tests/graphglot/tck/features/expressions/mathematical/Mathematical16.feature +31 -0
  375. graphglot-0.1.4/tests/graphglot/tck/features/expressions/mathematical/Mathematical17.feature +31 -0
  376. graphglot-0.1.4/tests/graphglot/tck/features/expressions/mathematical/Mathematical2.feature +48 -0
  377. graphglot-0.1.4/tests/graphglot/tck/features/expressions/mathematical/Mathematical3.feature +40 -0
  378. graphglot-0.1.4/tests/graphglot/tck/features/expressions/mathematical/Mathematical4.feature +31 -0
  379. graphglot-0.1.4/tests/graphglot/tck/features/expressions/mathematical/Mathematical5.feature +31 -0
  380. graphglot-0.1.4/tests/graphglot/tck/features/expressions/mathematical/Mathematical6.feature +31 -0
  381. graphglot-0.1.4/tests/graphglot/tck/features/expressions/mathematical/Mathematical7.feature +31 -0
  382. graphglot-0.1.4/tests/graphglot/tck/features/expressions/mathematical/Mathematical8.feature +53 -0
  383. graphglot-0.1.4/tests/graphglot/tck/features/expressions/mathematical/Mathematical9.feature +31 -0
  384. graphglot-0.1.4/tests/graphglot/tck/features/expressions/null/Null1.feature +133 -0
  385. graphglot-0.1.4/tests/graphglot/tck/features/expressions/null/Null2.feature +133 -0
  386. graphglot-0.1.4/tests/graphglot/tck/features/expressions/null/Null3.feature +89 -0
  387. graphglot-0.1.4/tests/graphglot/tck/features/expressions/path/Path1.feature +44 -0
  388. graphglot-0.1.4/tests/graphglot/tck/features/expressions/path/Path2.feature +77 -0
  389. graphglot-0.1.4/tests/graphglot/tck/features/expressions/path/Path3.feature +67 -0
  390. graphglot-0.1.4/tests/graphglot/tck/features/expressions/pattern/Pattern1.feature +426 -0
  391. graphglot-0.1.4/tests/graphglot/tck/features/expressions/pattern/Pattern2.feature +243 -0
  392. graphglot-0.1.4/tests/graphglot/tck/features/expressions/precedence/Precedence1.feature +520 -0
  393. graphglot-0.1.4/tests/graphglot/tck/features/expressions/precedence/Precedence2.feature +135 -0
  394. graphglot-0.1.4/tests/graphglot/tck/features/expressions/precedence/Precedence3.feature +119 -0
  395. graphglot-0.1.4/tests/graphglot/tck/features/expressions/precedence/Precedence4.feature +101 -0
  396. graphglot-0.1.4/tests/graphglot/tck/features/expressions/quantifier/Quantifier1.feature +394 -0
  397. graphglot-0.1.4/tests/graphglot/tck/features/expressions/quantifier/Quantifier10.feature +127 -0
  398. graphglot-0.1.4/tests/graphglot/tck/features/expressions/quantifier/Quantifier11.feature +209 -0
  399. graphglot-0.1.4/tests/graphglot/tck/features/expressions/quantifier/Quantifier12.feature +173 -0
  400. graphglot-0.1.4/tests/graphglot/tck/features/expressions/quantifier/Quantifier2.feature +405 -0
  401. graphglot-0.1.4/tests/graphglot/tck/features/expressions/quantifier/Quantifier3.feature +394 -0
  402. graphglot-0.1.4/tests/graphglot/tck/features/expressions/quantifier/Quantifier4.feature +394 -0
  403. graphglot-0.1.4/tests/graphglot/tck/features/expressions/quantifier/Quantifier5.feature +133 -0
  404. graphglot-0.1.4/tests/graphglot/tck/features/expressions/quantifier/Quantifier6.feature +95 -0
  405. graphglot-0.1.4/tests/graphglot/tck/features/expressions/quantifier/Quantifier7.feature +153 -0
  406. graphglot-0.1.4/tests/graphglot/tck/features/expressions/quantifier/Quantifier8.feature +133 -0
  407. graphglot-0.1.4/tests/graphglot/tck/features/expressions/quantifier/Quantifier9.feature +173 -0
  408. graphglot-0.1.4/tests/graphglot/tck/features/expressions/string/String1.feature +42 -0
  409. graphglot-0.1.4/tests/graphglot/tck/features/expressions/string/String10.feature +214 -0
  410. graphglot-0.1.4/tests/graphglot/tck/features/expressions/string/String11.feature +72 -0
  411. graphglot-0.1.4/tests/graphglot/tck/features/expressions/string/String12.feature +31 -0
  412. graphglot-0.1.4/tests/graphglot/tck/features/expressions/string/String13.feature +31 -0
  413. graphglot-0.1.4/tests/graphglot/tck/features/expressions/string/String14.feature +31 -0
  414. graphglot-0.1.4/tests/graphglot/tck/features/expressions/string/String2.feature +31 -0
  415. graphglot-0.1.4/tests/graphglot/tck/features/expressions/string/String3.feature +42 -0
  416. graphglot-0.1.4/tests/graphglot/tck/features/expressions/string/String4.feature +43 -0
  417. graphglot-0.1.4/tests/graphglot/tck/features/expressions/string/String5.feature +31 -0
  418. graphglot-0.1.4/tests/graphglot/tck/features/expressions/string/String6.feature +31 -0
  419. graphglot-0.1.4/tests/graphglot/tck/features/expressions/string/String7.feature +31 -0
  420. graphglot-0.1.4/tests/graphglot/tck/features/expressions/string/String8.feature +214 -0
  421. graphglot-0.1.4/tests/graphglot/tck/features/expressions/string/String9.feature +215 -0
  422. graphglot-0.1.4/tests/graphglot/tck/features/expressions/temporal/Temporal1.feature +417 -0
  423. graphglot-0.1.4/tests/graphglot/tck/features/expressions/temporal/Temporal10.feature +333 -0
  424. graphglot-0.1.4/tests/graphglot/tck/features/expressions/temporal/Temporal2.feature +182 -0
  425. graphglot-0.1.4/tests/graphglot/tck/features/expressions/temporal/Temporal3.feature +378 -0
  426. graphglot-0.1.4/tests/graphglot/tck/features/expressions/temporal/Temporal4.feature +349 -0
  427. graphglot-0.1.4/tests/graphglot/tck/features/expressions/temporal/Temporal5.feature +155 -0
  428. graphglot-0.1.4/tests/graphglot/tck/features/expressions/temporal/Temporal6.feature +129 -0
  429. graphglot-0.1.4/tests/graphglot/tck/features/expressions/temporal/Temporal7.feature +139 -0
  430. graphglot-0.1.4/tests/graphglot/tck/features/expressions/temporal/Temporal8.feature +197 -0
  431. graphglot-0.1.4/tests/graphglot/tck/features/expressions/temporal/Temporal9.feature +423 -0
  432. graphglot-0.1.4/tests/graphglot/tck/features/expressions/typeConversion/TypeConversion1.feature +105 -0
  433. graphglot-0.1.4/tests/graphglot/tck/features/expressions/typeConversion/TypeConversion2.feature +143 -0
  434. graphglot-0.1.4/tests/graphglot/tck/features/expressions/typeConversion/TypeConversion3.feature +119 -0
  435. graphglot-0.1.4/tests/graphglot/tck/features/expressions/typeConversion/TypeConversion4.feature +170 -0
  436. graphglot-0.1.4/tests/graphglot/tck/features/expressions/typeConversion/TypeConversion5.feature +34 -0
  437. graphglot-0.1.4/tests/graphglot/tck/features/expressions/typeConversion/TypeConversion6.feature +34 -0
  438. graphglot-0.1.4/tests/graphglot/tck/features/useCases/countingSubgraphMatches/CountingSubgraphMatches1.feature +212 -0
  439. graphglot-0.1.4/tests/graphglot/tck/features/useCases/triadicSelection/TriadicSelection1.feature +340 -0
  440. graphglot-0.1.4/tests/graphglot/tck/loader.py +160 -0
  441. graphglot-0.1.4/tests/graphglot/tck/models.py +91 -0
  442. graphglot-0.1.4/tests/graphglot/tck/test_tck_errors.py +48 -0
  443. graphglot-0.1.4/tests/graphglot/tck/test_tck_loader.py +129 -0
  444. graphglot-0.1.4/tests/graphglot/tck/test_tck_parse.py +44 -0
  445. graphglot-0.1.4/tests/graphglot/tck/test_tck_roundtrip.py +92 -0
  446. graphglot-0.1.4/tests/graphglot/tck/xfails.py +105 -0
  447. graphglot-0.1.4/tests/graphglot/test_cypher_extension.py +4316 -0
  448. graphglot-0.1.4/tests/graphglot/test_cypher_functions.py +292 -0
  449. graphglot-0.1.4/tests/graphglot/test_dialect.py +104 -0
  450. graphglot-0.1.4/tests/graphglot/test_eq.py +45 -0
  451. graphglot-0.1.4/tests/graphglot/test_error_messages.py +359 -0
  452. graphglot-0.1.4/tests/graphglot/test_func_transpilation.py +188 -0
  453. graphglot-0.1.4/tests/graphglot/test_fuzz.py +151 -0
  454. graphglot-0.1.4/tests/graphglot/test_lexer.py +192 -0
  455. graphglot-0.1.4/tests/graphglot/test_macros.py +690 -0
  456. graphglot-0.1.4/tests/graphglot/test_nonstandard.py +162 -0
  457. graphglot-0.1.4/tests/graphglot/test_parser_yaml.py +99 -0
  458. graphglot-0.1.4/tests/graphglot/test_scope.py +145 -0
  459. graphglot-0.1.4/tests/graphglot/test_transformations.py +403 -0
  460. graphglot-0.1.4/tests/graphglot/test_transpile.py +259 -0
  461. graphglot-0.1.4/tests/graphglot/test_unified_diagnostics.py +416 -0
  462. graphglot-0.1.4/tests/graphglot/test_validate.py +180 -0
  463. graphglot-0.1.4/tests/graphglot/test_version_consistency.py +130 -0
  464. graphglot-0.1.4/tests/graphglot/type_inference/__init__.py +0 -0
  465. graphglot-0.1.4/tests/graphglot/type_inference/test_cast.py +47 -0
  466. graphglot-0.1.4/tests/graphglot/type_inference/test_functions.py +66 -0
  467. graphglot-0.1.4/tests/graphglot/type_inference/test_literals.py +95 -0
  468. graphglot-0.1.4/tests/graphglot/type_inference/test_operators.py +83 -0
  469. graphglot-0.1.4/tests/graphglot/type_inference/test_resolution.py +64 -0
  470. graphglot-0.1.4/tests/graphglot/type_inference/test_typed_rules.py +61 -0
  471. graphglot-0.1.4/tests/graphglot/type_inference/test_types.py +229 -0
  472. graphglot-0.1.4/tests/graphglot/type_inference/test_variables.py +95 -0
  473. graphglot-0.1.4/uv.lock +1212 -0
@@ -0,0 +1,31 @@
1
+ name: Bug Report
2
+ description: Report a bug in GraphGlot
3
+ labels: ["bug"]
4
+ body:
5
+ - type: textarea
6
+ id: description
7
+ attributes:
8
+ label: Description
9
+ description: What happened and what did you expect?
10
+ validations:
11
+ required: true
12
+ - type: textarea
13
+ id: reproduction
14
+ attributes:
15
+ label: Reproduction
16
+ description: Minimal code or query to reproduce the issue.
17
+ render: python
18
+ validations:
19
+ required: true
20
+ - type: input
21
+ id: version
22
+ attributes:
23
+ label: GraphGlot version
24
+ placeholder: "pip show graphglot"
25
+ validations:
26
+ required: true
27
+ - type: input
28
+ id: python-version
29
+ attributes:
30
+ label: Python version
31
+ placeholder: "3.12"
@@ -0,0 +1,16 @@
1
+ name: Feature Request
2
+ description: Suggest a new feature or improvement
3
+ labels: ["enhancement"]
4
+ body:
5
+ - type: textarea
6
+ id: description
7
+ attributes:
8
+ label: Description
9
+ description: What would you like GraphGlot to do?
10
+ validations:
11
+ required: true
12
+ - type: textarea
13
+ id: motivation
14
+ attributes:
15
+ label: Motivation
16
+ description: Why is this useful? What problem does it solve?
@@ -0,0 +1,18 @@
1
+ ## What does this PR do?
2
+
3
+ <!-- A brief description of the change. Link to a related issue if applicable: Closes #123 -->
4
+
5
+ ## How was it tested?
6
+
7
+ <!-- Describe what you tested and how. Include relevant test output if helpful. -->
8
+
9
+ ## Checklist
10
+
11
+ - [ ] PR is focused and kept as small as possible
12
+ - [ ] Tests added or updated for behavioral changes
13
+ - [ ] New or changed behavior is documented
14
+ - [ ] `make test && make type && make pre` passes locally
15
+ - [ ] Commit messages follow [Conventional Commits](https://www.conventionalcommits.org/) (`feat:`, `fix:`, `docs:`, etc.)
16
+ - [ ] Reviewed for security implications
17
+ - [ ] Integration impact checked when relevant (`make neo4j`)
18
+ - [ ] TCK conformance checked when relevant (`make tck`)
@@ -0,0 +1,29 @@
1
+ name: PR
2
+
3
+ on:
4
+ pull_request:
5
+ branches: [master, main]
6
+ types: [opened, edited, reopened, synchronize]
7
+
8
+ permissions:
9
+ contents: read
10
+ pull-requests: write
11
+
12
+ jobs:
13
+ check-pr-title:
14
+ name: Validate PR Title
15
+ runs-on: ubuntu-latest
16
+ if: github.event_name == 'pull_request'
17
+ steps:
18
+ - name: Check Commit Type
19
+ uses: gsactions/commit-message-checker@v2
20
+ with:
21
+ pattern: '^(build|ci|docs|chore|feat|fix|perf|refactor|style|test){1}(\((.+)\))?(!)?: (.+)'
22
+ flags: ''
23
+ excludeDescription: 'true'
24
+ error: 'The PR title does not follow the Conventional Commit guidelines.'
25
+
26
+ test:
27
+ name: Tests
28
+ uses: ./.github/workflows/test-lint.yml
29
+ secrets: inherit
@@ -0,0 +1,47 @@
1
+ name: Docs
2
+
3
+ on:
4
+ push:
5
+ branches: [main]
6
+ workflow_dispatch:
7
+
8
+ permissions:
9
+ contents: read
10
+ pages: write
11
+ id-token: write
12
+
13
+ concurrency:
14
+ group: pages
15
+ cancel-in-progress: true
16
+
17
+ jobs:
18
+ deploy:
19
+ name: Deploy docs
20
+ runs-on: ubuntu-latest
21
+ environment:
22
+ name: github-pages
23
+ url: ${{ steps.deployment.outputs.page_url }}
24
+
25
+ steps:
26
+ - name: Checkout code
27
+ uses: actions/checkout@v4
28
+
29
+ - name: Set up Python
30
+ uses: actions/setup-python@v5
31
+ with:
32
+ python-version: "3.12"
33
+
34
+ - name: Install uv
35
+ uses: astral-sh/setup-uv@v5
36
+
37
+ - name: Build docs
38
+ run: uv run --extra docs mkdocs build --strict
39
+
40
+ - name: Upload Pages artifact
41
+ uses: actions/upload-pages-artifact@v3
42
+ with:
43
+ path: site
44
+
45
+ - name: Deploy to GitHub Pages
46
+ id: deployment
47
+ uses: actions/deploy-pages@v4
@@ -0,0 +1,78 @@
1
+ name: CI
2
+
3
+ on:
4
+ push:
5
+ branches: [main]
6
+ workflow_dispatch:
7
+
8
+ permissions:
9
+ contents: read
10
+
11
+ jobs:
12
+ ci:
13
+ name: CI
14
+ uses: ./.github/workflows/test-lint.yml
15
+ secrets: inherit
16
+
17
+ release:
18
+ name: Release
19
+ needs: ci
20
+ runs-on: ubuntu-latest
21
+ concurrency:
22
+ group: ${{ github.workflow }}-release
23
+ cancel-in-progress: false
24
+
25
+ permissions:
26
+ contents: write
27
+
28
+ outputs:
29
+ released: ${{ steps.release.outputs.released || 'false' }}
30
+ tag: ${{ steps.release.outputs.tag }}
31
+
32
+ steps:
33
+ - name: Checkout code
34
+ uses: actions/checkout@v4
35
+ with:
36
+ ref: ${{ github.ref_name }}
37
+ fetch-depth: 0
38
+
39
+ - name: Force branch to workflow sha
40
+ run: git reset --hard ${{ github.sha }}
41
+
42
+ - name: Semantic release
43
+ id: release
44
+ uses: python-semantic-release/python-semantic-release@v10.5.3
45
+ with:
46
+ github_token: ${{ secrets.GITHUB_TOKEN }}
47
+ git_committer_name: "github-actions"
48
+ git_committer_email: "actions@users.noreply.github.com"
49
+
50
+ publish:
51
+ name: Publish to PyPI
52
+ needs: release
53
+ if: needs.release.outputs.released == 'true'
54
+ runs-on: ubuntu-latest
55
+ environment: pypi
56
+ permissions:
57
+ contents: read
58
+ id-token: write
59
+
60
+ steps:
61
+ - name: Checkout code
62
+ uses: actions/checkout@v4
63
+ with:
64
+ ref: ${{ needs.release.outputs.tag }}
65
+
66
+ - name: Set up Python
67
+ uses: actions/setup-python@v5
68
+ with:
69
+ python-version: "3.12"
70
+
71
+ - name: Install uv
72
+ uses: astral-sh/setup-uv@v5
73
+
74
+ - name: Build distribution artifacts
75
+ run: uv build
76
+
77
+ - name: Publish to PyPI
78
+ uses: pypa/gh-action-pypi-publish@release/v1
@@ -0,0 +1,46 @@
1
+ name: Security
2
+
3
+ on:
4
+ pull_request:
5
+ branches: [master, main]
6
+ schedule:
7
+ - cron: "0 8 * * 1" # Weekly Monday 08:00 UTC
8
+ workflow_dispatch:
9
+
10
+ permissions:
11
+ contents: read
12
+
13
+ jobs:
14
+ dependency-audit:
15
+ name: Dependency audit
16
+ permissions:
17
+ contents: read
18
+ actions: read
19
+ security-events: write
20
+ uses: google/osv-scanner-action/.github/workflows/osv-scanner-reusable.yml@v2.3.3
21
+ with:
22
+ scan-args: |-
23
+ --lockfile=uv.lock
24
+ upload-sarif: false
25
+
26
+ fuzz:
27
+ name: Fuzz tests
28
+ runs-on: ubuntu-latest
29
+
30
+ steps:
31
+ - name: Checkout code
32
+ uses: actions/checkout@v4
33
+
34
+ - name: Set up Python
35
+ uses: actions/setup-python@v5
36
+ with:
37
+ python-version: "3.12"
38
+
39
+ - name: Install uv
40
+ uses: astral-sh/setup-uv@v5
41
+
42
+ - name: Install dependencies
43
+ run: uv pip install --system -e ".[dev]"
44
+
45
+ - name: Run fuzz tests
46
+ run: make fuzz
@@ -0,0 +1,129 @@
1
+ name: Tests
2
+
3
+ on:
4
+ workflow_call:
5
+
6
+ permissions:
7
+ contents: read
8
+
9
+ jobs:
10
+ version-check:
11
+ name: Version consistency
12
+ runs-on: ubuntu-latest
13
+
14
+ steps:
15
+ - name: Checkout code
16
+ uses: actions/checkout@v4
17
+
18
+ - name: Set up Python
19
+ uses: actions/setup-python@v5
20
+ with:
21
+ python-version: "3.12"
22
+
23
+ - name: Check version consistency
24
+ run: python scripts/check_version_consistency.py
25
+
26
+ lint:
27
+ name: Lint
28
+ runs-on: ubuntu-latest
29
+
30
+ steps:
31
+ - name: Checkout code
32
+ uses: actions/checkout@v4
33
+
34
+ - name: Set up Python
35
+ uses: actions/setup-python@v5
36
+ with:
37
+ python-version: "3.12"
38
+
39
+ - name: Run pre-commit
40
+ uses: pre-commit/action@v3.0.1
41
+
42
+ test:
43
+ name: Test (Python ${{ matrix.python-version }})
44
+ runs-on: ubuntu-latest
45
+ strategy:
46
+ matrix:
47
+ python-version: ["3.11", "3.12", "3.13", "3.14"]
48
+
49
+ steps:
50
+ - name: Checkout code
51
+ uses: actions/checkout@v4
52
+
53
+ - name: Set up Python ${{ matrix.python-version }}
54
+ uses: actions/setup-python@v5
55
+ with:
56
+ python-version: ${{ matrix.python-version }}
57
+
58
+ - name: Install uv
59
+ uses: astral-sh/setup-uv@v5
60
+
61
+ - name: Install dependencies
62
+ run: uv pip install --system -e ".[dev]"
63
+
64
+ - name: Run tests with coverage
65
+ run: make test-cov
66
+
67
+ - name: Run type checks
68
+ run: make type
69
+
70
+ tck:
71
+ name: TCK conformance
72
+ runs-on: ubuntu-latest
73
+
74
+ steps:
75
+ - name: Checkout code
76
+ uses: actions/checkout@v4
77
+
78
+ - name: Set up Python
79
+ uses: actions/setup-python@v5
80
+ with:
81
+ python-version: "3.12"
82
+
83
+ - name: Install uv
84
+ uses: astral-sh/setup-uv@v5
85
+
86
+ - name: Install dependencies
87
+ run: uv pip install --system -e ".[dev]"
88
+
89
+ - name: Run TCK tests
90
+ run: make tck
91
+
92
+ integration:
93
+ name: Integration (Neo4j)
94
+ runs-on: ubuntu-latest
95
+
96
+ services:
97
+ neo4j:
98
+ image: neo4j:2026-community
99
+ ports:
100
+ - 7687:7687
101
+ env:
102
+ NEO4J_AUTH: neo4j/testpassword
103
+ NEO4J_db_query_default__language: CYPHER_25
104
+ options: >-
105
+ --health-cmd "cypher-shell -u neo4j -p testpassword 'RETURN 1'"
106
+ --health-interval 10s
107
+ --health-timeout 5s
108
+ --health-retries 10
109
+ --health-start-period 30s
110
+
111
+ steps:
112
+ - name: Checkout code
113
+ uses: actions/checkout@v4
114
+
115
+ - name: Set up Python
116
+ uses: actions/setup-python@v5
117
+ with:
118
+ python-version: "3.12"
119
+
120
+ - name: Install uv
121
+ uses: astral-sh/setup-uv@v5
122
+
123
+ - name: Install dependencies
124
+ run: uv pip install --system -e ".[dev]"
125
+
126
+ - name: Run integration tests
127
+ env:
128
+ NEO4J_URI: bolt://localhost:7687
129
+ run: make neo4j
@@ -0,0 +1,186 @@
1
+ bnf.json
2
+ .claude
3
+ CLAUDE.md
4
+ .devcontainer
5
+ /assets
6
+ /playground
7
+ /ADR
8
+
9
+ # Byte-compiled / optimized / DLL files
10
+ __pycache__/
11
+ *.py[cod]
12
+ *$py.class
13
+
14
+ # C extensions
15
+ *.so
16
+
17
+ # Distribution / packaging
18
+ .Python
19
+ build/
20
+ develop-eggs/
21
+ dist/
22
+ downloads/
23
+ eggs/
24
+ .eggs/
25
+ lib/
26
+ lib64/
27
+ parts/
28
+ sdist/
29
+ var/
30
+ wheels/
31
+ share/python-wheels/
32
+ *.egg-info/
33
+ .installed.cfg
34
+ *.egg
35
+ MANIFEST
36
+
37
+ # PyInstaller
38
+ # Usually these files are written by a python script from a template
39
+ # before PyInstaller builds the exe, so as to inject date/other infos into it.
40
+ *.manifest
41
+ *.spec
42
+
43
+ # Installer logs
44
+ pip-log.txt
45
+ pip-delete-this-directory.txt
46
+
47
+ # Unit test / coverage reports
48
+ htmlcov/
49
+ .tox/
50
+ .nox/
51
+ .coverage
52
+ .coverage.*
53
+ .cache
54
+ nosetests.xml
55
+ coverage.xml
56
+ *.cover
57
+ *.py,cover
58
+ .hypothesis/
59
+ .pytest_cache/
60
+ cover/
61
+
62
+ # Translations
63
+ *.mo
64
+ *.pot
65
+
66
+ # Django stuff:
67
+ *.log
68
+ local_settings.py
69
+ db.sqlite3
70
+ db.sqlite3-journal
71
+
72
+ # Flask stuff:
73
+ instance/
74
+ .webassets-cache
75
+
76
+ # Scrapy stuff:
77
+ .scrapy
78
+
79
+ # Sphinx documentation
80
+ docs/_build/
81
+
82
+ # PyBuilder
83
+ .pybuilder/
84
+ target/
85
+
86
+ # Jupyter Notebook
87
+ .ipynb_checkpoints
88
+
89
+ # IPython
90
+ profile_default/
91
+ ipython_config.py
92
+
93
+ # pyenv
94
+ # For a library or package, you might want to ignore these files since the code is
95
+ # intended to run in multiple environments; otherwise, check them in:
96
+ # .python-version
97
+
98
+ # pipenv
99
+ # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
100
+ # However, in case of collaboration, if having platform-specific dependencies or dependencies
101
+ # having no cross-platform support, pipenv may install dependencies that don't work, or not
102
+ # install all needed dependencies.
103
+ #Pipfile.lock
104
+
105
+ # UV
106
+ # Similar to Pipfile.lock, it is generally recommended to include uv.lock in version control.
107
+ # This is especially recommended for binary packages to ensure reproducibility, and is more
108
+ # commonly ignored for libraries.
109
+ #uv.lock
110
+
111
+ # poetry
112
+ # Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control.
113
+ # This is especially recommended for binary packages to ensure reproducibility, and is more
114
+ # commonly ignored for libraries.
115
+ # https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control
116
+ #poetry.lock
117
+
118
+ # pdm
119
+ # Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control.
120
+ #pdm.lock
121
+ # pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it
122
+ # in version control.
123
+ # https://pdm.fming.dev/latest/usage/project/#working-with-version-control
124
+ .pdm.toml
125
+ .pdm-python
126
+ .pdm-build/
127
+
128
+ # PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm
129
+ __pypackages__/
130
+
131
+ # Celery stuff
132
+ celerybeat-schedule
133
+ celerybeat.pid
134
+
135
+ # SageMath parsed files
136
+ *.sage.py
137
+
138
+ # Environments
139
+ .env
140
+ .venv
141
+ env/
142
+ venv/
143
+ ENV/
144
+ env.bak/
145
+ venv.bak/
146
+
147
+ # Spyder project settings
148
+ .spyderproject
149
+ .spyproject
150
+
151
+ # Rope project settings
152
+ .ropeproject
153
+
154
+ # mkdocs documentation
155
+ /site
156
+ docs/reference/
157
+
158
+ # mypy
159
+ .mypy_cache/
160
+ .dmypy.json
161
+ dmypy.json
162
+
163
+ # Pyre type checker
164
+ .pyre/
165
+
166
+ # pytype static type analyzer
167
+ .pytype/
168
+
169
+ # Cython debug symbols
170
+ cython_debug/
171
+
172
+ # PyCharm
173
+ # JetBrains specific template is maintained in a separate JetBrains.gitignore that can
174
+ # be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore
175
+ # and can be added to the global gitignore or merged into this file. For a more nuclear
176
+ # option (not recommended) you can uncomment the following to ignore the entire idea folder.
177
+ #.idea/
178
+
179
+ # Ruff stuff:
180
+ .ruff_cache/
181
+
182
+ # PyPI configuration file
183
+ .pypirc
184
+
185
+
186
+ .DS_Store
@@ -0,0 +1,35 @@
1
+ repos:
2
+ - repo: https://github.com/astral-sh/ruff-pre-commit
3
+ # Ruff version.
4
+ rev: v0.11.6
5
+ hooks:
6
+ # Run the linter.
7
+ - id: ruff
8
+ types_or: [python, pyi]
9
+ args: [--fix]
10
+ # Run the formatter.
11
+ - id: ruff-format
12
+ types_or: [python, pyi]
13
+ - repo: https://github.com/pre-commit/pre-commit-hooks
14
+ rev: v5.0.0 # Use the latest version
15
+ hooks:
16
+ - id: check-yaml
17
+ exclude: mkdocs\.yml
18
+ - id: end-of-file-fixer
19
+ - id: trailing-whitespace
20
+ - repo: https://github.com/pre-commit/pygrep-hooks
21
+ rev: v1.10.0 # Use the latest version
22
+ hooks:
23
+ - id: python-check-mock-methods # Ensures you're using the correct mock methods
24
+ - repo: https://github.com/kynan/nbstripout
25
+ rev: 0.8.1
26
+ hooks:
27
+ - id: nbstripout
28
+ - repo: local
29
+ hooks:
30
+ - id: no-bnf
31
+ name: check for BNF definitions
32
+ entry: python scripts/bnf.py check-staged
33
+ language: python
34
+ files: ^graphglot/ast/expressions\.py$
35
+ stages: [pre-commit]
@@ -0,0 +1,66 @@
1
+ # CHANGELOG
2
+
3
+ <!-- version list -->
4
+
5
+ ## v0.1.4 (2026-03-20)
6
+
7
+ ### Bug Fixes
8
+
9
+ - **ci**: Inline publish job to avoid reusable workflow OIDC issues
10
+ ([`0e33fa9`](https://github.com/averdeny/graphglot/commit/0e33fa9df618288dc46fdeb49991d058af0e0aff))
11
+
12
+
13
+ ## v0.1.3 (2026-03-20)
14
+
15
+ ### Bug Fixes
16
+
17
+ - **ci**: Use semantic-release action to trigger PyPI publish
18
+ ([`f063bf5`](https://github.com/averdeny/graphglot/commit/f063bf5a12d3614b8e6290c5fa9b9587086c5df8))
19
+
20
+
21
+ ## v0.1.2 (2026-03-20)
22
+
23
+ ### Bug Fixes
24
+
25
+ - Resolve PathValueConcatenation parser by using list_ with min_items=2
26
+ ([`3b9082e`](https://github.com/averdeny/graphglot/commit/3b9082e9cdcc6433656ac8b1cafa7fb8abda8d48))
27
+
28
+ ### Chores
29
+
30
+ - Remove .devcontainer from version control
31
+ ([`be1210f`](https://github.com/averdeny/graphglot/commit/be1210f913f7e033af369798c29408953db90e92))
32
+
33
+ ### Continuous Integration
34
+
35
+ - Add GitHub Pages docs deployment
36
+ ([`0dce280`](https://github.com/averdeny/graphglot/commit/0dce28060da8a7982e51b52ea63a105ac8dd0a92))
37
+
38
+ - Clarify workflow display names and fix README badge
39
+ ([`fb0bc6f`](https://github.com/averdeny/graphglot/commit/fb0bc6f8c517b770f4574a5603ac03ec9ab38b7d))
40
+
41
+ - Configure PyPI trusted publishing
42
+ ([`d71a675`](https://github.com/averdeny/graphglot/commit/d71a67595bc2a99d16ac5a30749cae41e7e4927e))
43
+
44
+ - Rename build-test-lint.yml to test-lint.yml
45
+ ([`0edc825`](https://github.com/averdeny/graphglot/commit/0edc8256d5071bf1dcee1d6ec44870ff453dd5cf))
46
+
47
+ - Rename workflow to test-lint.yml and fix badge and display name
48
+ ([`f4700ec`](https://github.com/averdeny/graphglot/commit/f4700ec4149d229b4fa5db93f7ba4d73a55f9795))
49
+
50
+ ### Refactoring
51
+
52
+ - Remove pydantic dependency from AST base class
53
+ ([`40a4362`](https://github.com/averdeny/graphglot/commit/40a4362e881f37c7dd939794e9145c70e92a2d41))
54
+
55
+
56
+ ## v0.1.1 (2026-03-19)
57
+
58
+ ### Bug Fixes
59
+
60
+ - **tck**: Increase parse test timeout to 10s for CI runners
61
+ ([`d4dda2c`](https://github.com/averdeny/graphglot/commit/d4dda2c2f6fad252547d2b30abaad11d9770e986))
62
+
63
+ ### Continuous Integration
64
+
65
+ - Add TCK conformance tests to CI pipeline
66
+ ([`1a36510`](https://github.com/averdeny/graphglot/commit/1a365103bd9f0090cd8a6cdf7ecb4e3d4e8bfd71))
@@ -0,0 +1,5 @@
1
+ # Code of Conduct
2
+
3
+ Everyone participating in GraphGlot is expected to treat other people with respect and follow the guidelines in the [Python Community Code of Conduct](https://policies.python.org/python.org/code-of-conduct/).
4
+
5
+ If you experience or witness unacceptable behavior, please report it to `admin@graphglot.com`.