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.
- graphglot-0.1.4/.github/ISSUE_TEMPLATE/bug_report.yml +31 -0
- graphglot-0.1.4/.github/ISSUE_TEMPLATE/feature_request.yml +16 -0
- graphglot-0.1.4/.github/PULL_REQUEST_TEMPLATE.md +18 -0
- graphglot-0.1.4/.github/workflows/ci.yml +29 -0
- graphglot-0.1.4/.github/workflows/docs.yml +47 -0
- graphglot-0.1.4/.github/workflows/release.yml +78 -0
- graphglot-0.1.4/.github/workflows/security.yml +46 -0
- graphglot-0.1.4/.github/workflows/test-lint.yml +129 -0
- graphglot-0.1.4/.gitignore +186 -0
- graphglot-0.1.4/.pre-commit-config.yaml +35 -0
- graphglot-0.1.4/CHANGELOG.md +66 -0
- graphglot-0.1.4/CODE_OF_CONDUCT.md +5 -0
- graphglot-0.1.4/CONTRIBUTING.md +29 -0
- graphglot-0.1.4/LICENSE +190 -0
- graphglot-0.1.4/Makefile +111 -0
- graphglot-0.1.4/PKG-INFO +429 -0
- graphglot-0.1.4/README.md +195 -0
- graphglot-0.1.4/SECURITY.md +28 -0
- graphglot-0.1.4/docs/architecture/README.md +41 -0
- graphglot-0.1.4/docs/assets/favicon.ico +0 -0
- graphglot-0.1.4/docs/gen_ref_pages.py +63 -0
- graphglot-0.1.4/docs/getting-started.md +95 -0
- graphglot-0.1.4/docs/gql_features.md +1874 -0
- graphglot-0.1.4/docs/gql_query_composition.md +484 -0
- graphglot-0.1.4/docs/gql_workflow.md +146 -0
- graphglot-0.1.4/docs/guide/ast.md +144 -0
- graphglot-0.1.4/docs/guide/cli.md +202 -0
- graphglot-0.1.4/docs/guide/dialects.md +156 -0
- graphglot-0.1.4/docs/guide/lineage.md +134 -0
- graphglot-0.1.4/docs/stylesheets/extra.css +18 -0
- graphglot-0.1.4/docs/tck.md +101 -0
- graphglot-0.1.4/graphglot/__init__.py +5 -0
- graphglot-0.1.4/graphglot/analysis/__init__.py +11 -0
- graphglot-0.1.4/graphglot/analysis/analyzer.py +68 -0
- graphglot-0.1.4/graphglot/analysis/models.py +81 -0
- graphglot-0.1.4/graphglot/analysis/rules/__init__.py +24 -0
- graphglot-0.1.4/graphglot/analysis/rules/_registry.py +36 -0
- graphglot-0.1.4/graphglot/analysis/rules/scope_rules.py +524 -0
- graphglot-0.1.4/graphglot/analysis/rules/scope_validator.py +813 -0
- graphglot-0.1.4/graphglot/analysis/rules/structural_rules.py +729 -0
- graphglot-0.1.4/graphglot/ast/__init__.py +1461 -0
- graphglot-0.1.4/graphglot/ast/base.py +517 -0
- graphglot-0.1.4/graphglot/ast/cypher.py +719 -0
- graphglot-0.1.4/graphglot/ast/expressions.py +6396 -0
- graphglot-0.1.4/graphglot/ast/functions.py +414 -0
- graphglot-0.1.4/graphglot/ast/macros.py +27 -0
- graphglot-0.1.4/graphglot/ast/validation.py +37 -0
- graphglot-0.1.4/graphglot/cli/__init__.py +57 -0
- graphglot-0.1.4/graphglot/cli/_ast.py +58 -0
- graphglot-0.1.4/graphglot/cli/_dialects.py +48 -0
- graphglot-0.1.4/graphglot/cli/_features.py +104 -0
- graphglot-0.1.4/graphglot/cli/_lineage.py +291 -0
- graphglot-0.1.4/graphglot/cli/_parse.py +57 -0
- graphglot-0.1.4/graphglot/cli/_shared.py +171 -0
- graphglot-0.1.4/graphglot/cli/_tokenize.py +110 -0
- graphglot-0.1.4/graphglot/cli/_transpile.py +98 -0
- graphglot-0.1.4/graphglot/cli/_type.py +142 -0
- graphglot-0.1.4/graphglot/cli/_validate.py +83 -0
- graphglot-0.1.4/graphglot/dialect/__init__.py +8 -0
- graphglot-0.1.4/graphglot/dialect/base.py +579 -0
- graphglot-0.1.4/graphglot/dialect/coregql.py +19 -0
- graphglot-0.1.4/graphglot/dialect/cypher.py +3494 -0
- graphglot-0.1.4/graphglot/dialect/cypher_features.py +40 -0
- graphglot-0.1.4/graphglot/dialect/fullgql.py +19 -0
- graphglot-0.1.4/graphglot/dialect/neo4j.py +315 -0
- graphglot-0.1.4/graphglot/error.py +444 -0
- graphglot-0.1.4/graphglot/features.py +434 -0
- graphglot-0.1.4/graphglot/generator/__init__.py +6 -0
- graphglot-0.1.4/graphglot/generator/base.py +257 -0
- graphglot-0.1.4/graphglot/generator/fragment.py +233 -0
- graphglot-0.1.4/graphglot/generator/generators/__init__.py +22 -0
- graphglot-0.1.4/graphglot/generator/generators/clauses.py +166 -0
- graphglot-0.1.4/graphglot/generator/generators/commands.py +436 -0
- graphglot-0.1.4/graphglot/generator/generators/core.py +316 -0
- graphglot-0.1.4/graphglot/generator/generators/expressions.py +827 -0
- graphglot-0.1.4/graphglot/generator/generators/literals.py +101 -0
- graphglot-0.1.4/graphglot/generator/generators/macros.py +25 -0
- graphglot-0.1.4/graphglot/generator/generators/patterns.py +469 -0
- graphglot-0.1.4/graphglot/generator/generators/predicates.py +191 -0
- graphglot-0.1.4/graphglot/generator/generators/statements.py +382 -0
- graphglot-0.1.4/graphglot/generator/generators/types.py +338 -0
- graphglot-0.1.4/graphglot/generator/registry.py +51 -0
- graphglot-0.1.4/graphglot/lexer/__init__.py +10 -0
- graphglot-0.1.4/graphglot/lexer/lexer.py +1318 -0
- graphglot-0.1.4/graphglot/lexer/token.py +545 -0
- graphglot-0.1.4/graphglot/lineage/__init__.py +75 -0
- graphglot-0.1.4/graphglot/lineage/analyzer.py +1294 -0
- graphglot-0.1.4/graphglot/lineage/dependency_extractor.py +133 -0
- graphglot-0.1.4/graphglot/lineage/exporter.py +172 -0
- graphglot-0.1.4/graphglot/lineage/impact.py +898 -0
- graphglot-0.1.4/graphglot/lineage/models.py +420 -0
- graphglot-0.1.4/graphglot/lineage/pattern_analyzer.py +268 -0
- graphglot-0.1.4/graphglot/parser/__init__.py +3 -0
- graphglot-0.1.4/graphglot/parser/base.py +574 -0
- graphglot-0.1.4/graphglot/parser/functions.py +82 -0
- graphglot-0.1.4/graphglot/parser/parsers/__init__.py +16 -0
- graphglot-0.1.4/graphglot/parser/parsers/clauses.py +386 -0
- graphglot-0.1.4/graphglot/parser/parsers/commands.py +82 -0
- graphglot-0.1.4/graphglot/parser/parsers/core.py +6215 -0
- graphglot-0.1.4/graphglot/parser/parsers/expressions.py +1123 -0
- graphglot-0.1.4/graphglot/parser/parsers/literals.py +308 -0
- graphglot-0.1.4/graphglot/parser/parsers/macros.py +40 -0
- graphglot-0.1.4/graphglot/parser/parsers/patterns.py +278 -0
- graphglot-0.1.4/graphglot/parser/parsers/predicates.py +275 -0
- graphglot-0.1.4/graphglot/parser/parsers/statements.py +767 -0
- graphglot-0.1.4/graphglot/parser/parsers/types.py +1239 -0
- graphglot-0.1.4/graphglot/parser/registry.py +100 -0
- graphglot-0.1.4/graphglot/scope.py +188 -0
- graphglot-0.1.4/graphglot/transformations.py +203 -0
- graphglot-0.1.4/graphglot/typing/__init__.py +15 -0
- graphglot-0.1.4/graphglot/typing/annotator.py +107 -0
- graphglot-0.1.4/graphglot/typing/errors.py +29 -0
- graphglot-0.1.4/graphglot/typing/rules/__init__.py +39 -0
- graphglot-0.1.4/graphglot/typing/rules/cast.py +63 -0
- graphglot-0.1.4/graphglot/typing/rules/functions.py +197 -0
- graphglot-0.1.4/graphglot/typing/rules/literals.py +109 -0
- graphglot-0.1.4/graphglot/typing/rules/operators.py +256 -0
- graphglot-0.1.4/graphglot/typing/rules/resolution.py +114 -0
- graphglot-0.1.4/graphglot/typing/rules/variables.py +121 -0
- graphglot-0.1.4/graphglot/typing/scope.py +59 -0
- graphglot-0.1.4/graphglot/typing/types.py +269 -0
- graphglot-0.1.4/graphglot/utils/__init__.py +0 -0
- graphglot-0.1.4/graphglot/utils/deprecation.py +17 -0
- graphglot-0.1.4/graphglot/utils/helper.py +58 -0
- graphglot-0.1.4/graphglot/utils/trie.py +86 -0
- graphglot-0.1.4/graphglot/visualization/__init__.py +5 -0
- graphglot-0.1.4/graphglot/visualization/tree.py +120 -0
- graphglot-0.1.4/mkdocs.yml +95 -0
- graphglot-0.1.4/pyproject.toml +119 -0
- graphglot-0.1.4/scripts/bnf.py +420 -0
- graphglot-0.1.4/scripts/check_version_consistency.py +132 -0
- graphglot-0.1.4/scripts/update-tck.sh +56 -0
- graphglot-0.1.4/tests/graphglot/analysis/__init__.py +0 -0
- graphglot-0.1.4/tests/graphglot/analysis/test_analyzer.py +194 -0
- graphglot-0.1.4/tests/graphglot/analysis/test_feature_toggle.py +221 -0
- graphglot-0.1.4/tests/graphglot/analysis/test_scope_rules.py +480 -0
- graphglot-0.1.4/tests/graphglot/analysis/test_scope_validator.py +2448 -0
- graphglot-0.1.4/tests/graphglot/analysis/test_structural_rules.py +487 -0
- graphglot-0.1.4/tests/graphglot/cli/__init__.py +0 -0
- graphglot-0.1.4/tests/graphglot/cli/test_dialects.py +57 -0
- graphglot-0.1.4/tests/graphglot/cli/test_features.py +90 -0
- graphglot-0.1.4/tests/graphglot/cli/test_parse.py +47 -0
- graphglot-0.1.4/tests/graphglot/cli/test_type.py +62 -0
- graphglot-0.1.4/tests/graphglot/cli/test_version.py +26 -0
- graphglot-0.1.4/tests/graphglot/dialect/__init__.py +0 -0
- graphglot-0.1.4/tests/graphglot/dialect/test_features.py +57 -0
- graphglot-0.1.4/tests/graphglot/generator/__init__.py +1 -0
- graphglot-0.1.4/tests/graphglot/generator/test_dialect_generation.py +201 -0
- graphglot-0.1.4/tests/graphglot/generator/test_generator_parser_alignment.py +121 -0
- graphglot-0.1.4/tests/graphglot/generator/test_generators.py +787 -0
- graphglot-0.1.4/tests/graphglot/generator/test_pretty_print.py +189 -0
- graphglot-0.1.4/tests/graphglot/generator/test_round_trip.py +1450 -0
- graphglot-0.1.4/tests/graphglot/integration/__init__.py +0 -0
- graphglot-0.1.4/tests/graphglot/integration/conftest.py +125 -0
- graphglot-0.1.4/tests/graphglot/integration/queries.py +1373 -0
- graphglot-0.1.4/tests/graphglot/integration/test_gql_mode.py +29 -0
- graphglot-0.1.4/tests/graphglot/integration/test_keyword_discovery.py +36 -0
- graphglot-0.1.4/tests/graphglot/integration/test_neo4j_execution.py +114 -0
- graphglot-0.1.4/tests/graphglot/lexer/test_feature_toggle.py +390 -0
- graphglot-0.1.4/tests/graphglot/lineage/__init__.py +1 -0
- graphglot-0.1.4/tests/graphglot/lineage/conftest.py +96 -0
- graphglot-0.1.4/tests/graphglot/lineage/test_aggregation.py +159 -0
- graphglot-0.1.4/tests/graphglot/lineage/test_bindings.py +404 -0
- graphglot-0.1.4/tests/graphglot/lineage/test_constraints.py +356 -0
- graphglot-0.1.4/tests/graphglot/lineage/test_dependencies.py +537 -0
- graphglot-0.1.4/tests/graphglot/lineage/test_export.py +723 -0
- graphglot-0.1.4/tests/graphglot/lineage/test_for_lineage.py +327 -0
- graphglot-0.1.4/tests/graphglot/lineage/test_graph_context.py +425 -0
- graphglot-0.1.4/tests/graphglot/lineage/test_graph_entity.py +196 -0
- graphglot-0.1.4/tests/graphglot/lineage/test_impact.py +363 -0
- graphglot-0.1.4/tests/graphglot/lineage/test_literal_outputs.py +85 -0
- graphglot-0.1.4/tests/graphglot/lineage/test_mutations.py +501 -0
- graphglot-0.1.4/tests/graphglot/lineage/test_output_names.py +151 -0
- graphglot-0.1.4/tests/graphglot/lineage/test_scope_propagation.py +460 -0
- graphglot-0.1.4/tests/graphglot/lineage/test_unified_storage.py +86 -0
- graphglot-0.1.4/tests/graphglot/lineage/test_unsupported.py +88 -0
- graphglot-0.1.4/tests/graphglot/lineage/test_upstream.py +789 -0
- graphglot-0.1.4/tests/graphglot/parser/__init__.py +1 -0
- graphglot-0.1.4/tests/graphglot/parser/helpers.py +50 -0
- graphglot-0.1.4/tests/graphglot/parser/test_aggregate_functions.py +96 -0
- graphglot-0.1.4/tests/graphglot/parser/test_base_parser.py +49 -0
- graphglot-0.1.4/tests/graphglot/parser/test_catalog_modifying_statements.py +142 -0
- graphglot-0.1.4/tests/graphglot/parser/test_clauses.py +129 -0
- graphglot-0.1.4/tests/graphglot/parser/test_common_value_expression.py +162 -0
- graphglot-0.1.4/tests/graphglot/parser/test_core.py +213 -0
- graphglot-0.1.4/tests/graphglot/parser/test_data_modifying_statements.py +176 -0
- graphglot-0.1.4/tests/graphglot/parser/test_dynamic_and_reference_types.py +287 -0
- graphglot-0.1.4/tests/graphglot/parser/test_feature_toggle.py +1881 -0
- graphglot-0.1.4/tests/graphglot/parser/test_gql_program.py +148 -0
- graphglot-0.1.4/tests/graphglot/parser/test_graph_patterns.py +113 -0
- graphglot-0.1.4/tests/graphglot/parser/test_identifier.py +80 -0
- graphglot-0.1.4/tests/graphglot/parser/test_literals.py +333 -0
- graphglot-0.1.4/tests/graphglot/parser/test_match_statements.py +57 -0
- graphglot-0.1.4/tests/graphglot/parser/test_numeric_functions.py +106 -0
- graphglot-0.1.4/tests/graphglot/parser/test_parser_bugs.py +166 -0
- graphglot-0.1.4/tests/graphglot/parser/test_parser_coverage.py +408 -0
- graphglot-0.1.4/tests/graphglot/parser/test_parser_registry.py +49 -0
- graphglot-0.1.4/tests/graphglot/parser/test_path_patterns.py +238 -0
- graphglot-0.1.4/tests/graphglot/parser/test_path_search.py +69 -0
- graphglot-0.1.4/tests/graphglot/parser/test_predicates.py +103 -0
- graphglot-0.1.4/tests/graphglot/parser/test_procedures.py +76 -0
- graphglot-0.1.4/tests/graphglot/parser/test_query_expressions.py +58 -0
- graphglot-0.1.4/tests/graphglot/parser/test_query_statements.py +277 -0
- graphglot-0.1.4/tests/graphglot/parser/test_recursion_issues.py +83 -0
- graphglot-0.1.4/tests/graphglot/parser/test_return_statements.py +32 -0
- graphglot-0.1.4/tests/graphglot/parser/test_schema_references.py +67 -0
- graphglot-0.1.4/tests/graphglot/parser/test_select_statements.py +124 -0
- graphglot-0.1.4/tests/graphglot/parser/test_session_commands.py +79 -0
- graphglot-0.1.4/tests/graphglot/parser/test_spans.py +196 -0
- graphglot-0.1.4/tests/graphglot/parser/test_statements.py +73 -0
- graphglot-0.1.4/tests/graphglot/parser/test_string_functions.py +61 -0
- graphglot-0.1.4/tests/graphglot/parser/test_temporal_functions.py +39 -0
- graphglot-0.1.4/tests/graphglot/parser/test_transaction_commands.py +38 -0
- graphglot-0.1.4/tests/graphglot/parser/test_type_system_ddl.py +165 -0
- graphglot-0.1.4/tests/graphglot/parser/test_value_expressions.py +168 -0
- graphglot-0.1.4/tests/graphglot/parser/test_value_types.py +443 -0
- graphglot-0.1.4/tests/graphglot/parser_tests.yaml +79 -0
- graphglot-0.1.4/tests/graphglot/tck/__init__.py +0 -0
- graphglot-0.1.4/tests/graphglot/tck/conftest.py +19 -0
- graphglot-0.1.4/tests/graphglot/tck/features/clauses/call/Call1.feature +236 -0
- graphglot-0.1.4/tests/graphglot/tck/features/clauses/call/Call2.feature +125 -0
- graphglot-0.1.4/tests/graphglot/tck/features/clauses/call/Call3.feature +122 -0
- graphglot-0.1.4/tests/graphglot/tck/features/clauses/call/Call4.feature +60 -0
- graphglot-0.1.4/tests/graphglot/tck/features/clauses/call/Call5.feature +172 -0
- graphglot-0.1.4/tests/graphglot/tck/features/clauses/call/Call6.feature +82 -0
- graphglot-0.1.4/tests/graphglot/tck/features/clauses/create/Create1.feature +248 -0
- graphglot-0.1.4/tests/graphglot/tck/features/clauses/create/Create2.feature +355 -0
- graphglot-0.1.4/tests/graphglot/tck/features/clauses/create/Create3.feature +257 -0
- graphglot-0.1.4/tests/graphglot/tck/features/clauses/create/Create4.feature +1374 -0
- graphglot-0.1.4/tests/graphglot/tck/features/clauses/create/Create5.feature +130 -0
- graphglot-0.1.4/tests/graphglot/tck/features/clauses/create/Create6.feature +273 -0
- graphglot-0.1.4/tests/graphglot/tck/features/clauses/delete/Delete1.feature +139 -0
- graphglot-0.1.4/tests/graphglot/tck/features/clauses/delete/Delete2.feature +107 -0
- graphglot-0.1.4/tests/graphglot/tck/features/clauses/delete/Delete3.feature +61 -0
- graphglot-0.1.4/tests/graphglot/tck/features/clauses/delete/Delete4.feature +86 -0
- graphglot-0.1.4/tests/graphglot/tck/features/clauses/delete/Delete5.feature +186 -0
- graphglot-0.1.4/tests/graphglot/tck/features/clauses/delete/Delete6.feature +372 -0
- graphglot-0.1.4/tests/graphglot/tck/features/clauses/match/Match1.feature +273 -0
- graphglot-0.1.4/tests/graphglot/tck/features/clauses/match/Match2.feature +300 -0
- graphglot-0.1.4/tests/graphglot/tck/features/clauses/match/Match3.feature +574 -0
- graphglot-0.1.4/tests/graphglot/tck/features/clauses/match/Match4.feature +281 -0
- graphglot-0.1.4/tests/graphglot/tck/features/clauses/match/Match5.feature +652 -0
- graphglot-0.1.4/tests/graphglot/tck/features/clauses/match/Match6.feature +528 -0
- graphglot-0.1.4/tests/graphglot/tck/features/clauses/match/Match7.feature +669 -0
- graphglot-0.1.4/tests/graphglot/tck/features/clauses/match/Match8.feature +104 -0
- graphglot-0.1.4/tests/graphglot/tck/features/clauses/match/Match9.feature +200 -0
- graphglot-0.1.4/tests/graphglot/tck/features/clauses/match-where/MatchWhere1.feature +291 -0
- graphglot-0.1.4/tests/graphglot/tck/features/clauses/match-where/MatchWhere2.feature +88 -0
- graphglot-0.1.4/tests/graphglot/tck/features/clauses/match-where/MatchWhere3.feature +94 -0
- graphglot-0.1.4/tests/graphglot/tck/features/clauses/match-where/MatchWhere4.feature +70 -0
- graphglot-0.1.4/tests/graphglot/tck/features/clauses/match-where/MatchWhere5.feature +116 -0
- graphglot-0.1.4/tests/graphglot/tck/features/clauses/match-where/MatchWhere6.feature +208 -0
- graphglot-0.1.4/tests/graphglot/tck/features/clauses/merge/Merge1.feature +306 -0
- graphglot-0.1.4/tests/graphglot/tck/features/clauses/merge/Merge2.feature +123 -0
- graphglot-0.1.4/tests/graphglot/tck/features/clauses/merge/Merge3.feature +114 -0
- graphglot-0.1.4/tests/graphglot/tck/features/clauses/merge/Merge4.feature +73 -0
- graphglot-0.1.4/tests/graphglot/tck/features/clauses/merge/Merge5.feature +519 -0
- graphglot-0.1.4/tests/graphglot/tck/features/clauses/merge/Merge6.feature +167 -0
- graphglot-0.1.4/tests/graphglot/tck/features/clauses/merge/Merge7.feature +143 -0
- graphglot-0.1.4/tests/graphglot/tck/features/clauses/merge/Merge8.feature +54 -0
- graphglot-0.1.4/tests/graphglot/tck/features/clauses/merge/Merge9.feature +98 -0
- graphglot-0.1.4/tests/graphglot/tck/features/clauses/remove/Remove1.feature +151 -0
- graphglot-0.1.4/tests/graphglot/tck/features/clauses/remove/Remove2.feature +115 -0
- graphglot-0.1.4/tests/graphglot/tck/features/clauses/remove/Remove3.feature +502 -0
- graphglot-0.1.4/tests/graphglot/tck/features/clauses/return/Return1.feature +56 -0
- graphglot-0.1.4/tests/graphglot/tck/features/clauses/return/Return2.feature +301 -0
- graphglot-0.1.4/tests/graphglot/tck/features/clauses/return/Return3.feature +80 -0
- graphglot-0.1.4/tests/graphglot/tck/features/clauses/return/Return4.feature +208 -0
- graphglot-0.1.4/tests/graphglot/tck/features/clauses/return/Return5.feature +115 -0
- graphglot-0.1.4/tests/graphglot/tck/features/clauses/return/Return6.feature +353 -0
- graphglot-0.1.4/tests/graphglot/tck/features/clauses/return/Return7.feature +56 -0
- graphglot-0.1.4/tests/graphglot/tck/features/clauses/return/Return8.feature +49 -0
- graphglot-0.1.4/tests/graphglot/tck/features/clauses/return-orderby/ReturnOrderBy1.feature +245 -0
- graphglot-0.1.4/tests/graphglot/tck/features/clauses/return-orderby/ReturnOrderBy2.feature +288 -0
- graphglot-0.1.4/tests/graphglot/tck/features/clauses/return-orderby/ReturnOrderBy3.feature +53 -0
- graphglot-0.1.4/tests/graphglot/tck/features/clauses/return-orderby/ReturnOrderBy4.feature +74 -0
- graphglot-0.1.4/tests/graphglot/tck/features/clauses/return-orderby/ReturnOrderBy5.feature +52 -0
- graphglot-0.1.4/tests/graphglot/tck/features/clauses/return-orderby/ReturnOrderBy6.feature +90 -0
- graphglot-0.1.4/tests/graphglot/tck/features/clauses/return-skip-limit/ReturnSkipLimit1.feature +204 -0
- graphglot-0.1.4/tests/graphglot/tck/features/clauses/return-skip-limit/ReturnSkipLimit2.feature +304 -0
- graphglot-0.1.4/tests/graphglot/tck/features/clauses/return-skip-limit/ReturnSkipLimit3.feature +107 -0
- graphglot-0.1.4/tests/graphglot/tck/features/clauses/set/Set1.feature +205 -0
- graphglot-0.1.4/tests/graphglot/tck/features/clauses/set/Set2.feature +86 -0
- graphglot-0.1.4/tests/graphglot/tck/features/clauses/set/Set3.feature +170 -0
- graphglot-0.1.4/tests/graphglot/tck/features/clauses/set/Set4.feature +118 -0
- graphglot-0.1.4/tests/graphglot/tck/features/clauses/set/Set5.feature +116 -0
- graphglot-0.1.4/tests/graphglot/tck/features/clauses/set/Set6.feature +518 -0
- graphglot-0.1.4/tests/graphglot/tck/features/clauses/union/Union1.feature +109 -0
- graphglot-0.1.4/tests/graphglot/tck/features/clauses/union/Union2.feature +112 -0
- graphglot-0.1.4/tests/graphglot/tck/features/clauses/union/Union3.feature +55 -0
- graphglot-0.1.4/tests/graphglot/tck/features/clauses/unwind/Unwind1.feature +281 -0
- graphglot-0.1.4/tests/graphglot/tck/features/clauses/with/With1.feature +143 -0
- graphglot-0.1.4/tests/graphglot/tck/features/clauses/with/With2.feature +65 -0
- graphglot-0.1.4/tests/graphglot/tck/features/clauses/with/With3.feature +53 -0
- graphglot-0.1.4/tests/graphglot/tck/features/clauses/with/With4.feature +148 -0
- graphglot-0.1.4/tests/graphglot/tck/features/clauses/with/With5.feature +68 -0
- graphglot-0.1.4/tests/graphglot/tck/features/clauses/with/With6.feature +174 -0
- graphglot-0.1.4/tests/graphglot/tck/features/clauses/with/With7.feature +82 -0
- graphglot-0.1.4/tests/graphglot/tck/features/clauses/with-orderBy/WithOrderBy1.feature +1182 -0
- graphglot-0.1.4/tests/graphglot/tck/features/clauses/with-orderBy/WithOrderBy2.feature +794 -0
- graphglot-0.1.4/tests/graphglot/tck/features/clauses/with-orderBy/WithOrderBy3.feature +333 -0
- graphglot-0.1.4/tests/graphglot/tck/features/clauses/with-orderBy/WithOrderBy4.feature +463 -0
- graphglot-0.1.4/tests/graphglot/tck/features/clauses/with-skip-limit/WithSkipLimit1.feature +103 -0
- graphglot-0.1.4/tests/graphglot/tck/features/clauses/with-skip-limit/WithSkipLimit2.feature +144 -0
- graphglot-0.1.4/tests/graphglot/tck/features/clauses/with-skip-limit/WithSkipLimit3.feature +139 -0
- graphglot-0.1.4/tests/graphglot/tck/features/clauses/with-where/WithWhere1.feature +109 -0
- graphglot-0.1.4/tests/graphglot/tck/features/clauses/with-where/WithWhere2.feature +90 -0
- graphglot-0.1.4/tests/graphglot/tck/features/clauses/with-where/WithWhere3.feature +97 -0
- graphglot-0.1.4/tests/graphglot/tck/features/clauses/with-where/WithWhere4.feature +72 -0
- graphglot-0.1.4/tests/graphglot/tck/features/clauses/with-where/WithWhere5.feature +120 -0
- graphglot-0.1.4/tests/graphglot/tck/features/clauses/with-where/WithWhere6.feature +54 -0
- graphglot-0.1.4/tests/graphglot/tck/features/clauses/with-where/WithWhere7.feature +92 -0
- graphglot-0.1.4/tests/graphglot/tck/features/expressions/aggregation/Aggregation1.feature +66 -0
- graphglot-0.1.4/tests/graphglot/tck/features/expressions/aggregation/Aggregation2.feature +175 -0
- graphglot-0.1.4/tests/graphglot/tck/features/expressions/aggregation/Aggregation3.feature +63 -0
- graphglot-0.1.4/tests/graphglot/tck/features/expressions/aggregation/Aggregation4.feature +31 -0
- graphglot-0.1.4/tests/graphglot/tck/features/expressions/aggregation/Aggregation5.feature +67 -0
- graphglot-0.1.4/tests/graphglot/tck/features/expressions/aggregation/Aggregation6.feature +146 -0
- graphglot-0.1.4/tests/graphglot/tck/features/expressions/aggregation/Aggregation7.feature +31 -0
- graphglot-0.1.4/tests/graphglot/tck/features/expressions/aggregation/Aggregation8.feature +83 -0
- graphglot-0.1.4/tests/graphglot/tck/features/expressions/boolean/Boolean1.feature +231 -0
- graphglot-0.1.4/tests/graphglot/tck/features/expressions/boolean/Boolean2.feature +231 -0
- graphglot-0.1.4/tests/graphglot/tck/features/expressions/boolean/Boolean3.feature +231 -0
- graphglot-0.1.4/tests/graphglot/tck/features/expressions/boolean/Boolean4.feature +130 -0
- graphglot-0.1.4/tests/graphglot/tck/features/expressions/boolean/Boolean5.feature +225 -0
- graphglot-0.1.4/tests/graphglot/tck/features/expressions/comparison/Comparison1.feature +324 -0
- graphglot-0.1.4/tests/graphglot/tck/features/expressions/comparison/Comparison2.feature +155 -0
- graphglot-0.1.4/tests/graphglot/tck/features/expressions/comparison/Comparison3.feature +199 -0
- graphglot-0.1.4/tests/graphglot/tck/features/expressions/comparison/Comparison4.feature +53 -0
- graphglot-0.1.4/tests/graphglot/tck/features/expressions/conditional/Conditional1.feature +48 -0
- graphglot-0.1.4/tests/graphglot/tck/features/expressions/conditional/Conditional2.feature +65 -0
- graphglot-0.1.4/tests/graphglot/tck/features/expressions/existentialSubqueries/ExistentialSubquery1.feature +110 -0
- graphglot-0.1.4/tests/graphglot/tck/features/expressions/existentialSubqueries/ExistentialSubquery2.feature +88 -0
- graphglot-0.1.4/tests/graphglot/tck/features/expressions/existentialSubqueries/ExistentialSubquery3.feature +100 -0
- graphglot-0.1.4/tests/graphglot/tck/features/expressions/graph/Graph1.feature +31 -0
- graphglot-0.1.4/tests/graphglot/tck/features/expressions/graph/Graph2.feature +31 -0
- graphglot-0.1.4/tests/graphglot/tck/features/expressions/graph/Graph3.feature +165 -0
- graphglot-0.1.4/tests/graphglot/tck/features/expressions/graph/Graph4.feature +145 -0
- graphglot-0.1.4/tests/graphglot/tck/features/expressions/graph/Graph5.feature +148 -0
- graphglot-0.1.4/tests/graphglot/tck/features/expressions/graph/Graph6.feature +172 -0
- graphglot-0.1.4/tests/graphglot/tck/features/expressions/graph/Graph7.feature +78 -0
- graphglot-0.1.4/tests/graphglot/tck/features/expressions/graph/Graph8.feature +170 -0
- graphglot-0.1.4/tests/graphglot/tck/features/expressions/graph/Graph9.feature +111 -0
- graphglot-0.1.4/tests/graphglot/tck/features/expressions/list/List1.feature +170 -0
- graphglot-0.1.4/tests/graphglot/tck/features/expressions/list/List10.feature +31 -0
- graphglot-0.1.4/tests/graphglot/tck/features/expressions/list/List11.feature +163 -0
- graphglot-0.1.4/tests/graphglot/tck/features/expressions/list/List12.feature +153 -0
- graphglot-0.1.4/tests/graphglot/tck/features/expressions/list/List2.feature +177 -0
- graphglot-0.1.4/tests/graphglot/tck/features/expressions/list/List3.feature +108 -0
- graphglot-0.1.4/tests/graphglot/tck/features/expressions/list/List4.feature +53 -0
- graphglot-0.1.4/tests/graphglot/tck/features/expressions/list/List5.feature +504 -0
- graphglot-0.1.4/tests/graphglot/tck/features/expressions/list/List6.feature +189 -0
- graphglot-0.1.4/tests/graphglot/tck/features/expressions/list/List7.feature +32 -0
- graphglot-0.1.4/tests/graphglot/tck/features/expressions/list/List8.feature +31 -0
- graphglot-0.1.4/tests/graphglot/tck/features/expressions/list/List9.feature +49 -0
- graphglot-0.1.4/tests/graphglot/tck/features/expressions/literals/Literals1.feature +100 -0
- graphglot-0.1.4/tests/graphglot/tck/features/expressions/literals/Literals2.feature +153 -0
- graphglot-0.1.4/tests/graphglot/tck/features/expressions/literals/Literals3.feature +205 -0
- graphglot-0.1.4/tests/graphglot/tck/features/expressions/literals/Literals4.feature +135 -0
- graphglot-0.1.4/tests/graphglot/tck/features/expressions/literals/Literals5.feature +325 -0
- graphglot-0.1.4/tests/graphglot/tck/features/expressions/literals/Literals6.feature +176 -0
- graphglot-0.1.4/tests/graphglot/tck/features/expressions/literals/Literals7.feature +325 -0
- graphglot-0.1.4/tests/graphglot/tck/features/expressions/literals/Literals8.feature +377 -0
- graphglot-0.1.4/tests/graphglot/tck/features/expressions/map/Map1.feature +126 -0
- graphglot-0.1.4/tests/graphglot/tck/features/expressions/map/Map2.feature +144 -0
- graphglot-0.1.4/tests/graphglot/tck/features/expressions/map/Map3.feature +102 -0
- graphglot-0.1.4/tests/graphglot/tck/features/expressions/mathematical/Mathematical1.feature +31 -0
- graphglot-0.1.4/tests/graphglot/tck/features/expressions/mathematical/Mathematical10.feature +31 -0
- graphglot-0.1.4/tests/graphglot/tck/features/expressions/mathematical/Mathematical11.feature +42 -0
- graphglot-0.1.4/tests/graphglot/tck/features/expressions/mathematical/Mathematical12.feature +31 -0
- graphglot-0.1.4/tests/graphglot/tck/features/expressions/mathematical/Mathematical13.feature +42 -0
- graphglot-0.1.4/tests/graphglot/tck/features/expressions/mathematical/Mathematical14.feature +31 -0
- graphglot-0.1.4/tests/graphglot/tck/features/expressions/mathematical/Mathematical15.feature +31 -0
- graphglot-0.1.4/tests/graphglot/tck/features/expressions/mathematical/Mathematical16.feature +31 -0
- graphglot-0.1.4/tests/graphglot/tck/features/expressions/mathematical/Mathematical17.feature +31 -0
- graphglot-0.1.4/tests/graphglot/tck/features/expressions/mathematical/Mathematical2.feature +48 -0
- graphglot-0.1.4/tests/graphglot/tck/features/expressions/mathematical/Mathematical3.feature +40 -0
- graphglot-0.1.4/tests/graphglot/tck/features/expressions/mathematical/Mathematical4.feature +31 -0
- graphglot-0.1.4/tests/graphglot/tck/features/expressions/mathematical/Mathematical5.feature +31 -0
- graphglot-0.1.4/tests/graphglot/tck/features/expressions/mathematical/Mathematical6.feature +31 -0
- graphglot-0.1.4/tests/graphglot/tck/features/expressions/mathematical/Mathematical7.feature +31 -0
- graphglot-0.1.4/tests/graphglot/tck/features/expressions/mathematical/Mathematical8.feature +53 -0
- graphglot-0.1.4/tests/graphglot/tck/features/expressions/mathematical/Mathematical9.feature +31 -0
- graphglot-0.1.4/tests/graphglot/tck/features/expressions/null/Null1.feature +133 -0
- graphglot-0.1.4/tests/graphglot/tck/features/expressions/null/Null2.feature +133 -0
- graphglot-0.1.4/tests/graphglot/tck/features/expressions/null/Null3.feature +89 -0
- graphglot-0.1.4/tests/graphglot/tck/features/expressions/path/Path1.feature +44 -0
- graphglot-0.1.4/tests/graphglot/tck/features/expressions/path/Path2.feature +77 -0
- graphglot-0.1.4/tests/graphglot/tck/features/expressions/path/Path3.feature +67 -0
- graphglot-0.1.4/tests/graphglot/tck/features/expressions/pattern/Pattern1.feature +426 -0
- graphglot-0.1.4/tests/graphglot/tck/features/expressions/pattern/Pattern2.feature +243 -0
- graphglot-0.1.4/tests/graphglot/tck/features/expressions/precedence/Precedence1.feature +520 -0
- graphglot-0.1.4/tests/graphglot/tck/features/expressions/precedence/Precedence2.feature +135 -0
- graphglot-0.1.4/tests/graphglot/tck/features/expressions/precedence/Precedence3.feature +119 -0
- graphglot-0.1.4/tests/graphglot/tck/features/expressions/precedence/Precedence4.feature +101 -0
- graphglot-0.1.4/tests/graphglot/tck/features/expressions/quantifier/Quantifier1.feature +394 -0
- graphglot-0.1.4/tests/graphglot/tck/features/expressions/quantifier/Quantifier10.feature +127 -0
- graphglot-0.1.4/tests/graphglot/tck/features/expressions/quantifier/Quantifier11.feature +209 -0
- graphglot-0.1.4/tests/graphglot/tck/features/expressions/quantifier/Quantifier12.feature +173 -0
- graphglot-0.1.4/tests/graphglot/tck/features/expressions/quantifier/Quantifier2.feature +405 -0
- graphglot-0.1.4/tests/graphglot/tck/features/expressions/quantifier/Quantifier3.feature +394 -0
- graphglot-0.1.4/tests/graphglot/tck/features/expressions/quantifier/Quantifier4.feature +394 -0
- graphglot-0.1.4/tests/graphglot/tck/features/expressions/quantifier/Quantifier5.feature +133 -0
- graphglot-0.1.4/tests/graphglot/tck/features/expressions/quantifier/Quantifier6.feature +95 -0
- graphglot-0.1.4/tests/graphglot/tck/features/expressions/quantifier/Quantifier7.feature +153 -0
- graphglot-0.1.4/tests/graphglot/tck/features/expressions/quantifier/Quantifier8.feature +133 -0
- graphglot-0.1.4/tests/graphglot/tck/features/expressions/quantifier/Quantifier9.feature +173 -0
- graphglot-0.1.4/tests/graphglot/tck/features/expressions/string/String1.feature +42 -0
- graphglot-0.1.4/tests/graphglot/tck/features/expressions/string/String10.feature +214 -0
- graphglot-0.1.4/tests/graphglot/tck/features/expressions/string/String11.feature +72 -0
- graphglot-0.1.4/tests/graphglot/tck/features/expressions/string/String12.feature +31 -0
- graphglot-0.1.4/tests/graphglot/tck/features/expressions/string/String13.feature +31 -0
- graphglot-0.1.4/tests/graphglot/tck/features/expressions/string/String14.feature +31 -0
- graphglot-0.1.4/tests/graphglot/tck/features/expressions/string/String2.feature +31 -0
- graphglot-0.1.4/tests/graphglot/tck/features/expressions/string/String3.feature +42 -0
- graphglot-0.1.4/tests/graphglot/tck/features/expressions/string/String4.feature +43 -0
- graphglot-0.1.4/tests/graphglot/tck/features/expressions/string/String5.feature +31 -0
- graphglot-0.1.4/tests/graphglot/tck/features/expressions/string/String6.feature +31 -0
- graphglot-0.1.4/tests/graphglot/tck/features/expressions/string/String7.feature +31 -0
- graphglot-0.1.4/tests/graphglot/tck/features/expressions/string/String8.feature +214 -0
- graphglot-0.1.4/tests/graphglot/tck/features/expressions/string/String9.feature +215 -0
- graphglot-0.1.4/tests/graphglot/tck/features/expressions/temporal/Temporal1.feature +417 -0
- graphglot-0.1.4/tests/graphglot/tck/features/expressions/temporal/Temporal10.feature +333 -0
- graphglot-0.1.4/tests/graphglot/tck/features/expressions/temporal/Temporal2.feature +182 -0
- graphglot-0.1.4/tests/graphglot/tck/features/expressions/temporal/Temporal3.feature +378 -0
- graphglot-0.1.4/tests/graphglot/tck/features/expressions/temporal/Temporal4.feature +349 -0
- graphglot-0.1.4/tests/graphglot/tck/features/expressions/temporal/Temporal5.feature +155 -0
- graphglot-0.1.4/tests/graphglot/tck/features/expressions/temporal/Temporal6.feature +129 -0
- graphglot-0.1.4/tests/graphglot/tck/features/expressions/temporal/Temporal7.feature +139 -0
- graphglot-0.1.4/tests/graphglot/tck/features/expressions/temporal/Temporal8.feature +197 -0
- graphglot-0.1.4/tests/graphglot/tck/features/expressions/temporal/Temporal9.feature +423 -0
- graphglot-0.1.4/tests/graphglot/tck/features/expressions/typeConversion/TypeConversion1.feature +105 -0
- graphglot-0.1.4/tests/graphglot/tck/features/expressions/typeConversion/TypeConversion2.feature +143 -0
- graphglot-0.1.4/tests/graphglot/tck/features/expressions/typeConversion/TypeConversion3.feature +119 -0
- graphglot-0.1.4/tests/graphglot/tck/features/expressions/typeConversion/TypeConversion4.feature +170 -0
- graphglot-0.1.4/tests/graphglot/tck/features/expressions/typeConversion/TypeConversion5.feature +34 -0
- graphglot-0.1.4/tests/graphglot/tck/features/expressions/typeConversion/TypeConversion6.feature +34 -0
- graphglot-0.1.4/tests/graphglot/tck/features/useCases/countingSubgraphMatches/CountingSubgraphMatches1.feature +212 -0
- graphglot-0.1.4/tests/graphglot/tck/features/useCases/triadicSelection/TriadicSelection1.feature +340 -0
- graphglot-0.1.4/tests/graphglot/tck/loader.py +160 -0
- graphglot-0.1.4/tests/graphglot/tck/models.py +91 -0
- graphglot-0.1.4/tests/graphglot/tck/test_tck_errors.py +48 -0
- graphglot-0.1.4/tests/graphglot/tck/test_tck_loader.py +129 -0
- graphglot-0.1.4/tests/graphglot/tck/test_tck_parse.py +44 -0
- graphglot-0.1.4/tests/graphglot/tck/test_tck_roundtrip.py +92 -0
- graphglot-0.1.4/tests/graphglot/tck/xfails.py +105 -0
- graphglot-0.1.4/tests/graphglot/test_cypher_extension.py +4316 -0
- graphglot-0.1.4/tests/graphglot/test_cypher_functions.py +292 -0
- graphglot-0.1.4/tests/graphglot/test_dialect.py +104 -0
- graphglot-0.1.4/tests/graphglot/test_eq.py +45 -0
- graphglot-0.1.4/tests/graphglot/test_error_messages.py +359 -0
- graphglot-0.1.4/tests/graphglot/test_func_transpilation.py +188 -0
- graphglot-0.1.4/tests/graphglot/test_fuzz.py +151 -0
- graphglot-0.1.4/tests/graphglot/test_lexer.py +192 -0
- graphglot-0.1.4/tests/graphglot/test_macros.py +690 -0
- graphglot-0.1.4/tests/graphglot/test_nonstandard.py +162 -0
- graphglot-0.1.4/tests/graphglot/test_parser_yaml.py +99 -0
- graphglot-0.1.4/tests/graphglot/test_scope.py +145 -0
- graphglot-0.1.4/tests/graphglot/test_transformations.py +403 -0
- graphglot-0.1.4/tests/graphglot/test_transpile.py +259 -0
- graphglot-0.1.4/tests/graphglot/test_unified_diagnostics.py +416 -0
- graphglot-0.1.4/tests/graphglot/test_validate.py +180 -0
- graphglot-0.1.4/tests/graphglot/test_version_consistency.py +130 -0
- graphglot-0.1.4/tests/graphglot/type_inference/__init__.py +0 -0
- graphglot-0.1.4/tests/graphglot/type_inference/test_cast.py +47 -0
- graphglot-0.1.4/tests/graphglot/type_inference/test_functions.py +66 -0
- graphglot-0.1.4/tests/graphglot/type_inference/test_literals.py +95 -0
- graphglot-0.1.4/tests/graphglot/type_inference/test_operators.py +83 -0
- graphglot-0.1.4/tests/graphglot/type_inference/test_resolution.py +64 -0
- graphglot-0.1.4/tests/graphglot/type_inference/test_typed_rules.py +61 -0
- graphglot-0.1.4/tests/graphglot/type_inference/test_types.py +229 -0
- graphglot-0.1.4/tests/graphglot/type_inference/test_variables.py +95 -0
- 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`.
|