xwquery 0.0.1.8__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.
- xwquery-0.0.1.8/._pytest_status_err.txt +0 -0
- xwquery-0.0.1.8/._pytest_status_out.txt +65 -0
- xwquery-0.0.1.8/.github/workflows/check-versions.yml +32 -0
- xwquery-0.0.1.8/.github/workflows/check_version_source_of_truth.py +147 -0
- xwquery-0.0.1.8/.github/workflows/publish.yml +86 -0
- xwquery-0.0.1.8/.github/workflows/update_release_date_from_version_file.py +60 -0
- xwquery-0.0.1.8/.github/workflows/verify_tag_matches_version.py +72 -0
- xwquery-0.0.1.8/.github/workflows-config.yaml +9 -0
- xwquery-0.0.1.8/.gitignore +172 -0
- xwquery-0.0.1.8/EXTRACTION_SUMMARY.md +353 -0
- xwquery-0.0.1.8/LICENSE +22 -0
- xwquery-0.0.1.8/PKG-INFO +405 -0
- xwquery-0.0.1.8/README.md +384 -0
- xwquery-0.0.1.8/SUCCESS_SUMMARY.md +298 -0
- xwquery-0.0.1.8/docs/GUIDE_01_USAGE.md +19 -0
- xwquery-0.0.1.8/docs/INDEX.md +47 -0
- xwquery-0.0.1.8/docs/PROJECT_PHASES.md +219 -0
- xwquery-0.0.1.8/docs/README.md +8 -0
- xwquery-0.0.1.8/docs/REF_01_REQ.md +127 -0
- xwquery-0.0.1.8/docs/REF_12_IDEA.md +73 -0
- xwquery-0.0.1.8/docs/REF_13_ARCH.md +77 -0
- xwquery-0.0.1.8/docs/REF_14_DX.md +68 -0
- xwquery-0.0.1.8/docs/REF_15_API.md +75 -0
- xwquery-0.0.1.8/docs/REF_22_PROJECT.md +85 -0
- xwquery-0.0.1.8/docs/REF_35_REVIEW.md +59 -0
- xwquery-0.0.1.8/docs/REF_51_TEST.md +50 -0
- xwquery-0.0.1.8/docs/_archive/CRITICAL_ISSUES_AND_FIXES.md +3 -0
- xwquery-0.0.1.8/docs/_archive/FEATURES_TO_BEAT_SQL_SUMMARY.md +3 -0
- xwquery-0.0.1.8/docs/_archive/GRAMMAR_FIX_PLAN.md +3 -0
- xwquery-0.0.1.8/docs/_archive/README.md +13 -0
- xwquery-0.0.1.8/docs/_archive/XWQUERY_FIXES_COMPLETE.md +3 -0
- xwquery-0.0.1.8/docs/changes/CRITICAL_ISSUES_AND_FIXES.md +3 -0
- xwquery-0.0.1.8/docs/changes/FEATURES_TO_BEAT_SQL_SUMMARY.md +3 -0
- xwquery-0.0.1.8/docs/changes/GRAMMAR_FIX_PLAN.md +3 -0
- xwquery-0.0.1.8/docs/changes/XWQUERY_FIXES_COMPLETE.md +3 -0
- xwquery-0.0.1.8/docs/logs/BIDIRECTIONAL_GRAMMAR_STATUS.md +272 -0
- xwquery-0.0.1.8/docs/logs/FINAL_REVIEW_SUMMARY.md +229 -0
- xwquery-0.0.1.8/docs/logs/reviews/REVIEW_20260207_PROJECT_STATUS.md +21 -0
- xwquery-0.0.1.8/docs/logs/reviews/REVIEW_20260208_ARCHIVE_CONSOLIDATION.md +94 -0
- xwquery-0.0.1.8/docs/logs/reviews/REVIEW_20260220_043628_000_XWQUERY_XWQS_VS_POSTGRES.md +321 -0
- xwquery-0.0.1.8/docs/logs/reviews/REVIEW_20260220_165944_014_FULL_STACK_VS_POSTGRES.md +170 -0
- xwquery-0.0.1.8/docs/ref_12_idea_syntax_schema_sql.md +185 -0
- xwquery-0.0.1.8/pyproject.backup.toml +91 -0
- xwquery-0.0.1.8/pyproject.toml +106 -0
- xwquery-0.0.1.8/pyproject.xwquery.toml +106 -0
- xwquery-0.0.1.8/pytest.ini +89 -0
- xwquery-0.0.1.8/requirements.txt +62 -0
- xwquery-0.0.1.8/src/exonware/__init__.py +8 -0
- xwquery-0.0.1.8/src/exonware/nodes/__init__.py +2 -0
- xwquery-0.0.1.8/src/exonware/nodes/strategies/__init__.py +2 -0
- xwquery-0.0.1.8/src/exonware/nodes/strategies/contracts.py +6 -0
- xwquery-0.0.1.8/src/exonware/xwquery/__init__.py +475 -0
- xwquery-0.0.1.8/src/exonware/xwquery/base.py +37 -0
- xwquery-0.0.1.8/src/exonware/xwquery/codec_adapter.py +293 -0
- xwquery-0.0.1.8/src/exonware/xwquery/common/__init__.py +37 -0
- xwquery-0.0.1.8/src/exonware/xwquery/common/integration/__init__.py +12 -0
- xwquery-0.0.1.8/src/exonware/xwquery/common/integration/xwsystem_query_provider.py +34 -0
- xwquery-0.0.1.8/src/exonware/xwquery/compiler/__init__.py +105 -0
- xwquery-0.0.1.8/src/exonware/xwquery/compiler/adapters/__init__.py +30 -0
- xwquery-0.0.1.8/src/exonware/xwquery/compiler/adapters/ast_utils.py +7 -0
- xwquery-0.0.1.8/src/exonware/xwquery/compiler/adapters/format_converters.py +385 -0
- xwquery-0.0.1.8/src/exonware/xwquery/compiler/adapters/format_mappings.py +561 -0
- xwquery-0.0.1.8/src/exonware/xwquery/compiler/adapters/grammar_adapter.py +23 -0
- xwquery-0.0.1.8/src/exonware/xwquery/compiler/adapters/operation_coverage.py +793 -0
- xwquery-0.0.1.8/src/exonware/xwquery/compiler/adapters/operation_detection.py +657 -0
- xwquery-0.0.1.8/src/exonware/xwquery/compiler/adapters/syntax_adapter.py +723 -0
- xwquery-0.0.1.8/src/exonware/xwquery/compiler/base.py +203 -0
- xwquery-0.0.1.8/src/exonware/xwquery/compiler/converters/__init__.py +24 -0
- xwquery-0.0.1.8/src/exonware/xwquery/compiler/converters/universal_converter.py +274 -0
- xwquery-0.0.1.8/src/exonware/xwquery/compiler/generators/__init__.py +27 -0
- xwquery-0.0.1.8/src/exonware/xwquery/compiler/generators/base_generator.py +678 -0
- xwquery-0.0.1.8/src/exonware/xwquery/compiler/generators/generator_utils.py +524 -0
- xwquery-0.0.1.8/src/exonware/xwquery/compiler/generators/hiveql_generator.py +28 -0
- xwquery-0.0.1.8/src/exonware/xwquery/compiler/generators/hql_generator.py +28 -0
- xwquery-0.0.1.8/src/exonware/xwquery/compiler/generators/kql_generator.py +28 -0
- xwquery-0.0.1.8/src/exonware/xwquery/compiler/generators/n1ql_generator.py +28 -0
- xwquery-0.0.1.8/src/exonware/xwquery/compiler/generators/partiql_generator.py +58 -0
- xwquery-0.0.1.8/src/exonware/xwquery/compiler/generators/sql_generator.py +426 -0
- xwquery-0.0.1.8/src/exonware/xwquery/compiler/generators/template_engine.py +338 -0
- xwquery-0.0.1.8/src/exonware/xwquery/compiler/generators/templates/README.md +109 -0
- xwquery-0.0.1.8/src/exonware/xwquery/compiler/generators/xpath_generator.py +276 -0
- xwquery-0.0.1.8/src/exonware/xwquery/compiler/parsers/__init__.py +34 -0
- xwquery-0.0.1.8/src/exonware/xwquery/compiler/parsers/base.py +16 -0
- xwquery-0.0.1.8/src/exonware/xwquery/compiler/parsers/base_parser.py +388 -0
- xwquery-0.0.1.8/src/exonware/xwquery/compiler/parsers/contracts.py +14 -0
- xwquery-0.0.1.8/src/exonware/xwquery/compiler/parsers/cypher_parser.py +88 -0
- xwquery-0.0.1.8/src/exonware/xwquery/compiler/parsers/errors.py +32 -0
- xwquery-0.0.1.8/src/exonware/xwquery/compiler/parsers/format_detector.py +9 -0
- xwquery-0.0.1.8/src/exonware/xwquery/compiler/parsers/graphql_parser.py +70 -0
- xwquery-0.0.1.8/src/exonware/xwquery/compiler/parsers/hiveql_parser.py +38 -0
- xwquery-0.0.1.8/src/exonware/xwquery/compiler/parsers/hql_parser.py +37 -0
- xwquery-0.0.1.8/src/exonware/xwquery/compiler/parsers/kql_parser.py +37 -0
- xwquery-0.0.1.8/src/exonware/xwquery/compiler/parsers/n1ql_parser.py +40 -0
- xwquery-0.0.1.8/src/exonware/xwquery/compiler/parsers/parser_utils.py +494 -0
- xwquery-0.0.1.8/src/exonware/xwquery/compiler/parsers/partiql_parser.py +62 -0
- xwquery-0.0.1.8/src/exonware/xwquery/compiler/parsers/query_action_builder.py +279 -0
- xwquery-0.0.1.8/src/exonware/xwquery/compiler/parsers/sparql_parser.py +88 -0
- xwquery-0.0.1.8/src/exonware/xwquery/compiler/parsers/sql_param_extractor.py +449 -0
- xwquery-0.0.1.8/src/exonware/xwquery/compiler/parsers/sql_parser.py +660 -0
- xwquery-0.0.1.8/src/exonware/xwquery/compiler/parsers/sql_tokenizer.py +648 -0
- xwquery-0.0.1.8/src/exonware/xwquery/compiler/parsers/xpath_parser.py +388 -0
- xwquery-0.0.1.8/src/exonware/xwquery/compiler/strategies/__init__.py +35 -0
- xwquery-0.0.1.8/src/exonware/xwquery/compiler/strategies/arangodb_aql.py +72 -0
- xwquery-0.0.1.8/src/exonware/xwquery/compiler/strategies/asterixdb_aql.py +6 -0
- xwquery-0.0.1.8/src/exonware/xwquery/compiler/strategies/awk.py +99 -0
- xwquery-0.0.1.8/src/exonware/xwquery/compiler/strategies/base.py +257 -0
- xwquery-0.0.1.8/src/exonware/xwquery/compiler/strategies/bash_pipeline.py +99 -0
- xwquery-0.0.1.8/src/exonware/xwquery/compiler/strategies/beam_sql.py +6 -0
- xwquery-0.0.1.8/src/exonware/xwquery/compiler/strategies/chronograf.py +6 -0
- xwquery-0.0.1.8/src/exonware/xwquery/compiler/strategies/compat_passthrough.py +74 -0
- xwquery-0.0.1.8/src/exonware/xwquery/compiler/strategies/couchdb_mango.py +150 -0
- xwquery-0.0.1.8/src/exonware/xwquery/compiler/strategies/cql.py +265 -0
- xwquery-0.0.1.8/src/exonware/xwquery/compiler/strategies/cue.py +110 -0
- xwquery-0.0.1.8/src/exonware/xwquery/compiler/strategies/cypher.py +309 -0
- xwquery-0.0.1.8/src/exonware/xwquery/compiler/strategies/cypher_age.py +95 -0
- xwquery-0.0.1.8/src/exonware/xwquery/compiler/strategies/databricks_sql.py +6 -0
- xwquery-0.0.1.8/src/exonware/xwquery/compiler/strategies/datalog.py +6 -0
- xwquery-0.0.1.8/src/exonware/xwquery/compiler/strategies/dax.py +6 -0
- xwquery-0.0.1.8/src/exonware/xwquery/compiler/strategies/db2_sql_pl.py +6 -0
- xwquery-0.0.1.8/src/exonware/xwquery/compiler/strategies/dhall.py +8 -0
- xwquery-0.0.1.8/src/exonware/xwquery/compiler/strategies/dql.py +85 -0
- xwquery-0.0.1.8/src/exonware/xwquery/compiler/strategies/drill.py +6 -0
- xwquery-0.0.1.8/src/exonware/xwquery/compiler/strategies/edgeql.py +6 -0
- xwquery-0.0.1.8/src/exonware/xwquery/compiler/strategies/elastic_dsl.py +77 -0
- xwquery-0.0.1.8/src/exonware/xwquery/compiler/strategies/elasticsearch_sql.py +6 -0
- xwquery-0.0.1.8/src/exonware/xwquery/compiler/strategies/eql.py +3 -0
- xwquery-0.0.1.8/src/exonware/xwquery/compiler/strategies/exasol_sql.py +6 -0
- xwquery-0.0.1.8/src/exonware/xwquery/compiler/strategies/firebird_sql.py +6 -0
- xwquery-0.0.1.8/src/exonware/xwquery/compiler/strategies/flink_sql.py +6 -0
- xwquery-0.0.1.8/src/exonware/xwquery/compiler/strategies/fluent_bit.py +72 -0
- xwquery-0.0.1.8/src/exonware/xwquery/compiler/strategies/fluentd.py +72 -0
- xwquery-0.0.1.8/src/exonware/xwquery/compiler/strategies/flux.py +2 -0
- xwquery-0.0.1.8/src/exonware/xwquery/compiler/strategies/format_registry.py +247 -0
- xwquery-0.0.1.8/src/exonware/xwquery/compiler/strategies/gql.py +197 -0
- xwquery-0.0.1.8/src/exonware/xwquery/compiler/strategies/gql_gae.py +6 -0
- xwquery-0.0.1.8/src/exonware/xwquery/compiler/strategies/grammar_based.py +267 -0
- xwquery-0.0.1.8/src/exonware/xwquery/compiler/strategies/graphite.py +6 -0
- xwquery-0.0.1.8/src/exonware/xwquery/compiler/strategies/graphql.py +403 -0
- xwquery-0.0.1.8/src/exonware/xwquery/compiler/strategies/gremlin.py +310 -0
- xwquery-0.0.1.8/src/exonware/xwquery/compiler/strategies/gsql.py +95 -0
- xwquery-0.0.1.8/src/exonware/xwquery/compiler/strategies/hcl.py +108 -0
- xwquery-0.0.1.8/src/exonware/xwquery/compiler/strategies/hiveql.py +262 -0
- xwquery-0.0.1.8/src/exonware/xwquery/compiler/strategies/hql.py +3 -0
- xwquery-0.0.1.8/src/exonware/xwquery/compiler/strategies/influxql.py +6 -0
- xwquery-0.0.1.8/src/exonware/xwquery/compiler/strategies/jmespath.py +308 -0
- xwquery-0.0.1.8/src/exonware/xwquery/compiler/strategies/jq.py +196 -0
- xwquery-0.0.1.8/src/exonware/xwquery/compiler/strategies/json_patch.py +139 -0
- xwquery-0.0.1.8/src/exonware/xwquery/compiler/strategies/json_query.py +143 -0
- xwquery-0.0.1.8/src/exonware/xwquery/compiler/strategies/jsonata.py +8 -0
- xwquery-0.0.1.8/src/exonware/xwquery/compiler/strategies/jsoniq.py +323 -0
- xwquery-0.0.1.8/src/exonware/xwquery/compiler/strategies/jsonnet.py +8 -0
- xwquery-0.0.1.8/src/exonware/xwquery/compiler/strategies/jsonpath.py +8 -0
- xwquery-0.0.1.8/src/exonware/xwquery/compiler/strategies/kql.py +3 -0
- xwquery-0.0.1.8/src/exonware/xwquery/compiler/strategies/krm_kyaml.py +108 -0
- xwquery-0.0.1.8/src/exonware/xwquery/compiler/strategies/kustomize.py +108 -0
- xwquery-0.0.1.8/src/exonware/xwquery/compiler/strategies/linq.py +394 -0
- xwquery-0.0.1.8/src/exonware/xwquery/compiler/strategies/logql.py +3 -0
- xwquery-0.0.1.8/src/exonware/xwquery/compiler/strategies/logstash.py +97 -0
- xwquery-0.0.1.8/src/exonware/xwquery/compiler/strategies/m.py +137 -0
- xwquery-0.0.1.8/src/exonware/xwquery/compiler/strategies/m3ql.py +8 -0
- xwquery-0.0.1.8/src/exonware/xwquery/compiler/strategies/materialize.py +6 -0
- xwquery-0.0.1.8/src/exonware/xwquery/compiler/strategies/mdx.py +6 -0
- xwquery-0.0.1.8/src/exonware/xwquery/compiler/strategies/metricsql.py +8 -0
- xwquery-0.0.1.8/src/exonware/xwquery/compiler/strategies/mongodb_aggregation.py +163 -0
- xwquery-0.0.1.8/src/exonware/xwquery/compiler/strategies/mql.py +164 -0
- xwquery-0.0.1.8/src/exonware/xwquery/compiler/strategies/mysql_stored.py +6 -0
- xwquery-0.0.1.8/src/exonware/xwquery/compiler/strategies/n1ql.py +303 -0
- xwquery-0.0.1.8/src/exonware/xwquery/compiler/strategies/netezza_sql.py +6 -0
- xwquery-0.0.1.8/src/exonware/xwquery/compiler/strategies/ngql.py +91 -0
- xwquery-0.0.1.8/src/exonware/xwquery/compiler/strategies/nifi_el.py +98 -0
- xwquery-0.0.1.8/src/exonware/xwquery/compiler/strategies/nrql.py +81 -0
- xwquery-0.0.1.8/src/exonware/xwquery/compiler/strategies/odata.py +6 -0
- xwquery-0.0.1.8/src/exonware/xwquery/compiler/strategies/opencypher.py +96 -0
- xwquery-0.0.1.8/src/exonware/xwquery/compiler/strategies/opensearch_dsl.py +8 -0
- xwquery-0.0.1.8/src/exonware/xwquery/compiler/strategies/opensearch_ppl.py +6 -0
- xwquery-0.0.1.8/src/exonware/xwquery/compiler/strategies/painless.py +99 -0
- xwquery-0.0.1.8/src/exonware/xwquery/compiler/strategies/partiql.py +3 -0
- xwquery-0.0.1.8/src/exonware/xwquery/compiler/strategies/pig.py +2 -0
- xwquery-0.0.1.8/src/exonware/xwquery/compiler/strategies/plperl.py +6 -0
- xwquery-0.0.1.8/src/exonware/xwquery/compiler/strategies/plpgsql.py +6 -0
- xwquery-0.0.1.8/src/exonware/xwquery/compiler/strategies/plpython.py +6 -0
- xwquery-0.0.1.8/src/exonware/xwquery/compiler/strategies/plv8.py +6 -0
- xwquery-0.0.1.8/src/exonware/xwquery/compiler/strategies/powerfx.py +143 -0
- xwquery-0.0.1.8/src/exonware/xwquery/compiler/strategies/presto_sql.py +6 -0
- xwquery-0.0.1.8/src/exonware/xwquery/compiler/strategies/promql.py +3 -0
- xwquery-0.0.1.8/src/exonware/xwquery/compiler/strategies/reql.py +295 -0
- xwquery-0.0.1.8/src/exonware/xwquery/compiler/strategies/risingwave.py +6 -0
- xwquery-0.0.1.8/src/exonware/xwquery/compiler/strategies/rql.py +268 -0
- xwquery-0.0.1.8/src/exonware/xwquery/compiler/strategies/saql.py +6 -0
- xwquery-0.0.1.8/src/exonware/xwquery/compiler/strategies/scripting_base.py +105 -0
- xwquery-0.0.1.8/src/exonware/xwquery/compiler/strategies/sed.py +8 -0
- xwquery-0.0.1.8/src/exonware/xwquery/compiler/strategies/sosl.py +8 -0
- xwquery-0.0.1.8/src/exonware/xwquery/compiler/strategies/spark_sql.py +6 -0
- xwquery-0.0.1.8/src/exonware/xwquery/compiler/strategies/sparql.py +366 -0
- xwquery-0.0.1.8/src/exonware/xwquery/compiler/strategies/spl.py +6 -0
- xwquery-0.0.1.8/src/exonware/xwquery/compiler/strategies/sql.py +528 -0
- xwquery-0.0.1.8/src/exonware/xwquery/compiler/strategies/sql_grammar.py +280 -0
- xwquery-0.0.1.8/src/exonware/xwquery/compiler/strategies/sql_plus_plus.py +6 -0
- xwquery-0.0.1.8/src/exonware/xwquery/compiler/strategies/starlark.py +8 -0
- xwquery-0.0.1.8/src/exonware/xwquery/compiler/strategies/sumologic.py +6 -0
- xwquery-0.0.1.8/src/exonware/xwquery/compiler/strategies/surrealql.py +6 -0
- xwquery-0.0.1.8/src/exonware/xwquery/compiler/strategies/tcl.py +99 -0
- xwquery-0.0.1.8/src/exonware/xwquery/compiler/strategies/teradata_sql.py +6 -0
- xwquery-0.0.1.8/src/exonware/xwquery/compiler/strategies/tick.py +6 -0
- xwquery-0.0.1.8/src/exonware/xwquery/compiler/strategies/timescaledb.py +6 -0
- xwquery-0.0.1.8/src/exonware/xwquery/compiler/strategies/trino_sql.py +6 -0
- xwquery-0.0.1.8/src/exonware/xwquery/compiler/strategies/vertica_sql.py +6 -0
- xwquery-0.0.1.8/src/exonware/xwquery/compiler/strategies/wavefront.py +8 -0
- xwquery-0.0.1.8/src/exonware/xwquery/compiler/strategies/xml_query.py +175 -0
- xwquery-0.0.1.8/src/exonware/xwquery/compiler/strategies/xpath.py +296 -0
- xwquery-0.0.1.8/src/exonware/xwquery/compiler/strategies/xquery.py +332 -0
- xwquery-0.0.1.8/src/exonware/xwquery/compiler/strategies/xwnode_executor.py +300 -0
- xwquery-0.0.1.8/src/exonware/xwquery/compiler/strategies/xwqs.py +595 -0
- xwquery-0.0.1.8/src/exonware/xwquery/compiler/strategies/xwquery.py +9 -0
- xwquery-0.0.1.8/src/exonware/xwquery/config.py +164 -0
- xwquery-0.0.1.8/src/exonware/xwquery/contracts.py +709 -0
- xwquery-0.0.1.8/src/exonware/xwquery/defs.py +331 -0
- xwquery-0.0.1.8/src/exonware/xwquery/errors.py +370 -0
- xwquery-0.0.1.8/src/exonware/xwquery/executors/__init__.py +163 -0
- xwquery-0.0.1.8/src/exonware/xwquery/executors/advanced/__init__.py +37 -0
- xwquery-0.0.1.8/src/exonware/xwquery/executors/advanced/aggregate_executor.py +50 -0
- xwquery-0.0.1.8/src/exonware/xwquery/executors/advanced/ask_executor.py +50 -0
- xwquery-0.0.1.8/src/exonware/xwquery/executors/advanced/construct_executor.py +50 -0
- xwquery-0.0.1.8/src/exonware/xwquery/executors/advanced/describe_executor.py +50 -0
- xwquery-0.0.1.8/src/exonware/xwquery/executors/advanced/for_loop_executor.py +50 -0
- xwquery-0.0.1.8/src/exonware/xwquery/executors/advanced/foreach_executor.py +50 -0
- xwquery-0.0.1.8/src/exonware/xwquery/executors/advanced/join_executor.py +50 -0
- xwquery-0.0.1.8/src/exonware/xwquery/executors/advanced/let_executor.py +50 -0
- xwquery-0.0.1.8/src/exonware/xwquery/executors/advanced/mutation_executor.py +50 -0
- xwquery-0.0.1.8/src/exonware/xwquery/executors/advanced/options_executor.py +50 -0
- xwquery-0.0.1.8/src/exonware/xwquery/executors/advanced/pipe_executor.py +50 -0
- xwquery-0.0.1.8/src/exonware/xwquery/executors/advanced/subscribe_executor.py +50 -0
- xwquery-0.0.1.8/src/exonware/xwquery/executors/advanced/subscription_executor.py +50 -0
- xwquery-0.0.1.8/src/exonware/xwquery/executors/advanced/union_executor.py +50 -0
- xwquery-0.0.1.8/src/exonware/xwquery/executors/advanced/window_executor.py +51 -0
- xwquery-0.0.1.8/src/exonware/xwquery/executors/advanced/with_cte_executor.py +50 -0
- xwquery-0.0.1.8/src/exonware/xwquery/executors/aggregation/__init__.py +23 -0
- xwquery-0.0.1.8/src/exonware/xwquery/executors/aggregation/avg_executor.py +50 -0
- xwquery-0.0.1.8/src/exonware/xwquery/executors/aggregation/count_executor.py +38 -0
- xwquery-0.0.1.8/src/exonware/xwquery/executors/aggregation/distinct_executor.py +50 -0
- xwquery-0.0.1.8/src/exonware/xwquery/executors/aggregation/group_executor.py +50 -0
- xwquery-0.0.1.8/src/exonware/xwquery/executors/aggregation/having_executor.py +50 -0
- xwquery-0.0.1.8/src/exonware/xwquery/executors/aggregation/max_executor.py +50 -0
- xwquery-0.0.1.8/src/exonware/xwquery/executors/aggregation/min_executor.py +50 -0
- xwquery-0.0.1.8/src/exonware/xwquery/executors/aggregation/sum_executor.py +50 -0
- xwquery-0.0.1.8/src/exonware/xwquery/executors/aggregation/summarize_executor.py +50 -0
- xwquery-0.0.1.8/src/exonware/xwquery/executors/array/__init__.py +9 -0
- xwquery-0.0.1.8/src/exonware/xwquery/executors/array/indexing_executor.py +51 -0
- xwquery-0.0.1.8/src/exonware/xwquery/executors/array/slicing_executor.py +51 -0
- xwquery-0.0.1.8/src/exonware/xwquery/executors/base.py +257 -0
- xwquery-0.0.1.8/src/exonware/xwquery/executors/capability_checker.py +208 -0
- xwquery-0.0.1.8/src/exonware/xwquery/executors/contracts.py +164 -0
- xwquery-0.0.1.8/src/exonware/xwquery/executors/core/__init__.py +17 -0
- xwquery-0.0.1.8/src/exonware/xwquery/executors/core/create_executor.py +95 -0
- xwquery-0.0.1.8/src/exonware/xwquery/executors/core/delete_executor.py +98 -0
- xwquery-0.0.1.8/src/exonware/xwquery/executors/core/drop_executor.py +99 -0
- xwquery-0.0.1.8/src/exonware/xwquery/executors/core/insert_executor.py +39 -0
- xwquery-0.0.1.8/src/exonware/xwquery/executors/core/select_executor.py +246 -0
- xwquery-0.0.1.8/src/exonware/xwquery/executors/core/update_executor.py +101 -0
- xwquery-0.0.1.8/src/exonware/xwquery/executors/data/__init__.py +13 -0
- xwquery-0.0.1.8/src/exonware/xwquery/executors/data/alter_executor.py +50 -0
- xwquery-0.0.1.8/src/exonware/xwquery/executors/data/load_executor.py +50 -0
- xwquery-0.0.1.8/src/exonware/xwquery/executors/data/merge_executor.py +50 -0
- xwquery-0.0.1.8/src/exonware/xwquery/executors/data/store_executor.py +50 -0
- xwquery-0.0.1.8/src/exonware/xwquery/executors/defs.py +93 -0
- xwquery-0.0.1.8/src/exonware/xwquery/executors/engine.py +220 -0
- xwquery-0.0.1.8/src/exonware/xwquery/executors/errors.py +64 -0
- xwquery-0.0.1.8/src/exonware/xwquery/executors/filtering/__init__.py +25 -0
- xwquery-0.0.1.8/src/exonware/xwquery/executors/filtering/between_executor.py +80 -0
- xwquery-0.0.1.8/src/exonware/xwquery/executors/filtering/filter_executor.py +80 -0
- xwquery-0.0.1.8/src/exonware/xwquery/executors/filtering/has_executor.py +70 -0
- xwquery-0.0.1.8/src/exonware/xwquery/executors/filtering/in_executor.py +70 -0
- xwquery-0.0.1.8/src/exonware/xwquery/executors/filtering/like_executor.py +76 -0
- xwquery-0.0.1.8/src/exonware/xwquery/executors/filtering/optional_executor.py +76 -0
- xwquery-0.0.1.8/src/exonware/xwquery/executors/filtering/range_executor.py +80 -0
- xwquery-0.0.1.8/src/exonware/xwquery/executors/filtering/term_executor.py +77 -0
- xwquery-0.0.1.8/src/exonware/xwquery/executors/filtering/values_executor.py +70 -0
- xwquery-0.0.1.8/src/exonware/xwquery/executors/filtering/where_executor.py +44 -0
- xwquery-0.0.1.8/src/exonware/xwquery/executors/graph/__init__.py +15 -0
- xwquery-0.0.1.8/src/exonware/xwquery/executors/graph/in_traverse_executor.py +51 -0
- xwquery-0.0.1.8/src/exonware/xwquery/executors/graph/match_executor.py +51 -0
- xwquery-0.0.1.8/src/exonware/xwquery/executors/graph/out_executor.py +51 -0
- xwquery-0.0.1.8/src/exonware/xwquery/executors/graph/path_executor.py +51 -0
- xwquery-0.0.1.8/src/exonware/xwquery/executors/graph/return_executor.py +51 -0
- xwquery-0.0.1.8/src/exonware/xwquery/executors/ordering/__init__.py +9 -0
- xwquery-0.0.1.8/src/exonware/xwquery/executors/ordering/by_executor.py +50 -0
- xwquery-0.0.1.8/src/exonware/xwquery/executors/ordering/order_executor.py +51 -0
- xwquery-0.0.1.8/src/exonware/xwquery/executors/projection/__init__.py +9 -0
- xwquery-0.0.1.8/src/exonware/xwquery/executors/projection/extend_executor.py +50 -0
- xwquery-0.0.1.8/src/exonware/xwquery/executors/projection/project_executor.py +50 -0
- xwquery-0.0.1.8/src/exonware/xwquery/executors/registry.py +171 -0
- xwquery-0.0.1.8/src/exonware/xwquery/facade.py +262 -0
- xwquery-0.0.1.8/src/exonware/xwquery/grammars/reql.grammar.in.lark +127 -0
- xwquery-0.0.1.8/src/exonware/xwquery/grammars/reql.grammar.out.lark +68 -0
- xwquery-0.0.1.8/src/exonware/xwquery/grammars/rql.grammar.in.lark +95 -0
- xwquery-0.0.1.8/src/exonware/xwquery/grammars/rql.grammar.out.lark +50 -0
- xwquery-0.0.1.8/src/exonware/xwquery/parsers/__init__.py +26 -0
- xwquery-0.0.1.8/src/exonware/xwquery/parsers/base.py +84 -0
- xwquery-0.0.1.8/src/exonware/xwquery/parsers/contracts.py +44 -0
- xwquery-0.0.1.8/src/exonware/xwquery/parsers/errors.py +51 -0
- xwquery-0.0.1.8/src/exonware/xwquery/parsers/sql_param_extractor.py +317 -0
- xwquery-0.0.1.8/src/exonware/xwquery/query/__init__.py +1 -0
- xwquery-0.0.1.8/src/exonware/xwquery/query/adapters.py +17 -0
- xwquery-0.0.1.8/src/exonware/xwquery/query/optimization/__init__.py +55 -0
- xwquery-0.0.1.8/src/exonware/xwquery/query/parsers/__init__.py +2 -0
- xwquery-0.0.1.8/src/exonware/xwquery/query/parsers/format_detector.py +2 -0
- xwquery-0.0.1.8/src/exonware/xwquery/query/parsers/query_action_builder.py +2 -0
- xwquery-0.0.1.8/src/exonware/xwquery/query/strategies/__init__.py +31 -0
- xwquery-0.0.1.8/src/exonware/xwquery/query/strategies/base.py +1 -0
- xwquery-0.0.1.8/src/exonware/xwquery/query/strategies/cql.py +1 -0
- xwquery-0.0.1.8/src/exonware/xwquery/query/strategies/cypher.py +1 -0
- xwquery-0.0.1.8/src/exonware/xwquery/query/strategies/datalog.py +1 -0
- xwquery-0.0.1.8/src/exonware/xwquery/query/strategies/elastic_dsl.py +1 -0
- xwquery-0.0.1.8/src/exonware/xwquery/query/strategies/eql.py +1 -0
- xwquery-0.0.1.8/src/exonware/xwquery/query/strategies/flux.py +1 -0
- xwquery-0.0.1.8/src/exonware/xwquery/query/strategies/gql.py +1 -0
- xwquery-0.0.1.8/src/exonware/xwquery/query/strategies/graphql.py +1 -0
- xwquery-0.0.1.8/src/exonware/xwquery/query/strategies/gremlin.py +1 -0
- xwquery-0.0.1.8/src/exonware/xwquery/query/strategies/hiveql.py +1 -0
- xwquery-0.0.1.8/src/exonware/xwquery/query/strategies/hql.py +1 -0
- xwquery-0.0.1.8/src/exonware/xwquery/query/strategies/jmespath.py +1 -0
- xwquery-0.0.1.8/src/exonware/xwquery/query/strategies/jq.py +1 -0
- xwquery-0.0.1.8/src/exonware/xwquery/query/strategies/json_query.py +1 -0
- xwquery-0.0.1.8/src/exonware/xwquery/query/strategies/jsoniq.py +1 -0
- xwquery-0.0.1.8/src/exonware/xwquery/query/strategies/kql.py +1 -0
- xwquery-0.0.1.8/src/exonware/xwquery/query/strategies/linq.py +1 -0
- xwquery-0.0.1.8/src/exonware/xwquery/query/strategies/logql.py +1 -0
- xwquery-0.0.1.8/src/exonware/xwquery/query/strategies/mql.py +1 -0
- xwquery-0.0.1.8/src/exonware/xwquery/query/strategies/n1ql.py +1 -0
- xwquery-0.0.1.8/src/exonware/xwquery/query/strategies/partiql.py +1 -0
- xwquery-0.0.1.8/src/exonware/xwquery/query/strategies/pig.py +1 -0
- xwquery-0.0.1.8/src/exonware/xwquery/query/strategies/promql.py +1 -0
- xwquery-0.0.1.8/src/exonware/xwquery/query/strategies/sparql.py +1 -0
- xwquery-0.0.1.8/src/exonware/xwquery/query/strategies/sql.py +1 -0
- xwquery-0.0.1.8/src/exonware/xwquery/query/strategies/xml_query.py +1 -0
- xwquery-0.0.1.8/src/exonware/xwquery/query/strategies/xpath.py +1 -0
- xwquery-0.0.1.8/src/exonware/xwquery/query/strategies/xquery.py +1 -0
- xwquery-0.0.1.8/src/exonware/xwquery/query/strategies/xwnode_executor.py +1 -0
- xwquery-0.0.1.8/src/exonware/xwquery/query/strategies/xwquery.py +1 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/__init__.py +92 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/base.py +617 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/engines/__init__.py +24 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/engines/serialization_engine.py +392 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/engines/xwnode_engine.py +114 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/engines/xwstorage_engine.py +227 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/__init__.py +333 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/advanced/__init__.py +56 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/advanced/aggregate_executor.py +151 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/advanced/ask_executor.py +81 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/advanced/construct_executor.py +131 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/advanced/dense_rank_executor.py +77 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/advanced/describe_executor.py +129 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/advanced/for_loop_executor.py +89 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/advanced/foreach_executor.py +91 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/advanced/include_executor.py +295 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/advanced/intersect_executor.py +55 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/advanced/join_executor.py +379 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/advanced/let_executor.py +100 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/advanced/minus_executor.py +117 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/advanced/mutation_executor.py +145 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/advanced/options_executor.py +73 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/advanced/pipe_executor.py +142 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/advanced/pivot_executor.py +79 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/advanced/rank_executor.py +77 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/advanced/recursive_cte_executor.py +74 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/advanced/row_number_executor.py +75 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/advanced/subquery_executor.py +85 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/advanced/subscribe_executor.py +93 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/advanced/subscription_executor.py +111 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/advanced/union_executor.py +86 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/advanced/unpivot_executor.py +59 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/advanced/window_executor.py +181 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/advanced/with_cte_executor.py +102 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/aggregation/__init__.py +40 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/aggregation/avg_executor.py +81 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/aggregation/collect_executor.py +59 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/aggregation/count_executor.py +37 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/aggregation/distinct_executor.py +134 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/aggregation/first_value_executor.py +53 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/aggregation/group_concat_executor.py +72 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/aggregation/group_executor.py +135 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/aggregation/having_executor.py +129 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/aggregation/last_value_executor.py +52 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/aggregation/max_executor.py +78 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/aggregation/median_executor.py +79 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/aggregation/min_executor.py +78 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/aggregation/percentile_executor.py +98 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/aggregation/reduce_executor.py +96 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/aggregation/stddev_executor.py +87 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/aggregation/sum_executor.py +81 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/aggregation/summarize_executor.py +59 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/aggregation/variance_executor.py +84 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/array/__init__.py +28 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/array/array_concat_executor.py +60 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/array/array_contains_executor.py +56 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/array/array_distinct_executor.py +72 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/array/array_length_executor.py +54 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/array/array_reverse_executor.py +54 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/array/array_sort_executor.py +68 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/array/flatten_executor.py +85 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/array/indexing_executor.py +48 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/array/pop_executor.py +67 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/array/push_executor.py +64 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/array/slicing_executor.py +47 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/array/unwind_executor.py +89 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/base.py +77 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/capability_checker.py +169 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/conditional/__init__.py +14 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/conditional/case_executor.py +139 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/conditional/coalesce_executor.py +82 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/conditional/if_expr_executor.py +118 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/conditional/nullif_executor.py +74 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/conditional/switch_executor.py +89 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/contracts.py +27 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/core/__init__.py +22 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/core/create_executor.py +86 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/core/delete_executor.py +188 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/core/drop_executor.py +87 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/core/explain_executor.py +167 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/core/insert_executor.py +70 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/core/select_executor.py +630 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/core/truncate_executor.py +118 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/core/update_executor.py +195 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/core/upsert_executor.py +164 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/data/__init__.py +22 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/data/alter_executor.py +48 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/data/bulk_write_executor.py +84 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/data/copy_executor.py +55 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/data/export_executor.py +85 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/data/file_source_executor.py +225 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/data/import_executor.py +70 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/data/load_executor.py +128 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/data/merge_executor.py +48 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/data/store_executor.py +159 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/datetime/__init__.py +25 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/datetime/date_add_executor.py +88 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/datetime/date_diff_executor.py +82 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/datetime/date_format_executor.py +69 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/datetime/date_parse_executor.py +69 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/datetime/date_trunc_executor.py +80 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/datetime/extract_date_executor.py +87 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/datetime/from_unixtime_executor.py +69 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/datetime/interval_executor.py +88 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/datetime/now_executor.py +73 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/datetime/unix_timestamp_executor.py +65 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/defs.py +32 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/engine.py +135 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/errors.py +58 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/filtering/__init__.py +46 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/filtering/all_match_executor.py +146 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/filtering/any_match_executor.py +146 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/filtering/between_executor.py +86 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/filtering/contains_executor.py +97 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/filtering/ends_with_executor.py +97 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/filtering/exists_executor.py +119 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/filtering/filter_executor.py +112 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/filtering/fuzzy_executor.py +158 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/filtering/has_executor.py +53 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/filtering/in_executor.py +81 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/filtering/is_missing_executor.py +101 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/filtering/is_null_executor.py +91 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/filtering/like_executor.py +84 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/filtering/not_in_executor.py +89 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/filtering/optional_executor.py +63 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/filtering/range_executor.py +99 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/filtering/regex_executor.py +141 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/filtering/starts_with_executor.py +97 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/filtering/term_executor.py +60 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/filtering/values_executor.py +61 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/filtering/where_executor.py +207 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/graph/__init__.py +84 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/graph/add_vertex_executor.py +49 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/graph/all_paths_executor.py +107 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/graph/all_shortest_paths_executor.py +136 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/graph/all_simple_paths_executor.py +103 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/graph/both_e_executor.py +60 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/graph/both_executor.py +67 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/graph/both_v_executor.py +64 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/graph/choose_executor.py +71 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/graph/clone_executor.py +69 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/graph/coalesce_step_executor.py +71 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/graph/connected_components_executor.py +64 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/graph/create_edge_executor.py +61 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/graph/cycle_detection_executor.py +161 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/graph/degree_executor.py +65 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/graph/delete_edge_executor.py +64 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/graph/detach_delete_executor.py +64 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/graph/drop_vertex_executor.py +57 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/graph/expand_executor.py +62 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/graph/extract_path_executor.py +65 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/graph/in_e_executor.py +57 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/graph/in_traverse_executor.py +125 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/graph/in_v_executor.py +58 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/graph/match_executor.py +128 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/graph/neighbors_executor.py +56 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/graph/out_e_executor.py +57 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/graph/out_executor.py +105 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/graph/out_v_executor.py +58 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/graph/page_rank_executor.py +87 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/graph/path_executor.py +121 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/graph/path_length_executor.py +63 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/graph/properties_executor.py +62 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/graph/repeat_executor.py +89 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/graph/return_executor.py +93 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/graph/set_executor.py +68 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/graph/shortest_path_executor.py +151 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/graph/simple_path_executor.py +104 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/graph/subgraph_executor.py +71 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/graph/traversal_executor.py +141 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/graph/update_edge_executor.py +64 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/graph/variable_path_executor.py +66 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/math/__init__.py +33 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/math/abs_executor.py +50 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/math/ceil_executor.py +50 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/math/exp_executor.py +50 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/math/floor_executor.py +50 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/math/greatest_executor.py +60 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/math/least_executor.py +60 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/math/log_executor.py +51 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/math/mod_executor.py +51 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/math/power_executor.py +56 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/math/random_executor.py +59 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/math/round_executor.py +51 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/math/sign_executor.py +56 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/math/sqrt_executor.py +50 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/math/trunc_executor.py +50 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/ordering/__init__.py +10 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/ordering/by_executor.py +41 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/ordering/limit_executor.py +78 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/ordering/order_executor.py +103 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/projection/__init__.py +8 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/projection/extend_executor.py +57 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/projection/project_executor.py +150 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/registry.py +148 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/string/__init__.py +35 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/string/concat_executor.py +60 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/string/length_executor.py +55 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/string/lower_executor.py +55 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/string/lpad_executor.py +60 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/string/position_executor.py +64 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/string/regex_extract_executor.py +79 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/string/regex_replace_executor.py +77 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/string/repeat_str_executor.py +57 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/string/replace_str_executor.py +65 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/string/reverse_str_executor.py +55 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/string/rpad_executor.py +60 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/string/split_executor.py +63 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/string/substring_executor.py +63 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/string/trim_executor.py +70 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/string/upper_executor.py +55 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/type/__init__.py +15 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/type/cast_executor.py +87 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/type/is_number_executor.py +54 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/type/is_string_executor.py +54 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/type/to_boolean_executor.py +57 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/type/to_date_executor.py +55 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/type/to_number_executor.py +55 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/type/to_string_executor.py +62 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/type/try_cast_executor.py +89 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/type/typeof_executor.py +54 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/utils.py +537 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/executors/xw_reuse.py +363 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/optimization/__init__.py +81 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/optimization/base.py +239 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/optimization/contracts.py +246 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/optimization/cost_model.py +180 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/optimization/defs.py +124 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/optimization/optimizer.py +86 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/optimization/query_planner.py +346 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/optimization/rules.py +256 -0
- xwquery-0.0.1.8/src/exonware/xwquery/runtime/optimization/statistics_manager.py +250 -0
- xwquery-0.0.1.8/src/exonware/xwquery/strategies/__init__.py +24 -0
- xwquery-0.0.1.8/src/exonware/xwquery/strategies/base.py +304 -0
- xwquery-0.0.1.8/src/exonware/xwquery/strategies/cql.py +200 -0
- xwquery-0.0.1.8/src/exonware/xwquery/strategies/cypher.py +181 -0
- xwquery-0.0.1.8/src/exonware/xwquery/strategies/datalog.py +70 -0
- xwquery-0.0.1.8/src/exonware/xwquery/strategies/elastic_dsl.py +70 -0
- xwquery-0.0.1.8/src/exonware/xwquery/strategies/eql.py +70 -0
- xwquery-0.0.1.8/src/exonware/xwquery/strategies/flux.py +70 -0
- xwquery-0.0.1.8/src/exonware/xwquery/strategies/gql.py +70 -0
- xwquery-0.0.1.8/src/exonware/xwquery/strategies/graphql.py +239 -0
- xwquery-0.0.1.8/src/exonware/xwquery/strategies/gremlin.py +180 -0
- xwquery-0.0.1.8/src/exonware/xwquery/strategies/hiveql.py +213 -0
- xwquery-0.0.1.8/src/exonware/xwquery/strategies/hql.py +70 -0
- xwquery-0.0.1.8/src/exonware/xwquery/strategies/jmespath.py +218 -0
- xwquery-0.0.1.8/src/exonware/xwquery/strategies/jq.py +66 -0
- xwquery-0.0.1.8/src/exonware/xwquery/strategies/json_query.py +66 -0
- xwquery-0.0.1.8/src/exonware/xwquery/strategies/jsoniq.py +247 -0
- xwquery-0.0.1.8/src/exonware/xwquery/strategies/kql.py +70 -0
- xwquery-0.0.1.8/src/exonware/xwquery/strategies/linq.py +237 -0
- xwquery-0.0.1.8/src/exonware/xwquery/strategies/logql.py +70 -0
- xwquery-0.0.1.8/src/exonware/xwquery/strategies/mql.py +68 -0
- xwquery-0.0.1.8/src/exonware/xwquery/strategies/n1ql.py +209 -0
- xwquery-0.0.1.8/src/exonware/xwquery/strategies/partiql.py +70 -0
- xwquery-0.0.1.8/src/exonware/xwquery/strategies/pig.py +214 -0
- xwquery-0.0.1.8/src/exonware/xwquery/strategies/promql.py +70 -0
- xwquery-0.0.1.8/src/exonware/xwquery/strategies/sparql.py +220 -0
- xwquery-0.0.1.8/src/exonware/xwquery/strategies/sql.py +274 -0
- xwquery-0.0.1.8/src/exonware/xwquery/strategies/xml_query.py +66 -0
- xwquery-0.0.1.8/src/exonware/xwquery/strategies/xpath.py +222 -0
- xwquery-0.0.1.8/src/exonware/xwquery/strategies/xquery.py +257 -0
- xwquery-0.0.1.8/src/exonware/xwquery/strategies/xwnode_executor.py +333 -0
- xwquery-0.0.1.8/src/exonware/xwquery/strategies/xwquery.py +537 -0
- xwquery-0.0.1.8/src/exonware/xwquery/version.py +78 -0
- xwquery-0.0.1.8/src/xwquery.py +21 -0
- xwquery-0.0.1.8/src/xwquery_wrapper.py +12 -0
- xwquery-0.0.1.8/tests/3.advance/__init__.py +4 -0
- xwquery-0.0.1.8/tests/3.advance/conftest.py +5 -0
- xwquery-0.0.1.8/tests/3.advance/runner.py +39 -0
- xwquery-0.0.1.8/tests/3.advance/test_performance.py +59 -0
- xwquery-0.0.1.8/tests/TEST_RESULTS_SUMMARY.md +125 -0
- xwquery-0.0.1.8/tests/__init__.py +10 -0
- xwquery-0.0.1.8/tests/conftest.py +25 -0
- xwquery-0.0.1.8/tests/core/__init__.py +2 -0
- xwquery-0.0.1.8/tests/core/test_core_all_grammars.py +262 -0
- xwquery-0.0.1.8/tests/core/test_cross_format.py +186 -0
- xwquery-0.0.1.8/tests/core/test_edge_cases_comprehensive.py +429 -0
- xwquery-0.0.1.8/tests/core/test_executor_refactoring.py +635 -0
- xwquery-0.0.1.8/tests/core/test_format_parsing.py +243 -0
- xwquery-0.0.1.8/tests/core/test_operation_gap_coverage.py +345 -0
- xwquery-0.0.1.8/tests/core/test_operations.py +126 -0
- xwquery-0.0.1.8/tests/core/test_order_by_limit_fix.py +280 -0
- xwquery-0.0.1.8/tests/core/test_p3_executors.py +294 -0
- xwquery-0.0.1.8/tests/core/test_phase2_graph_operations.py +427 -0
- xwquery-0.0.1.8/tests/core/test_string_conversion_exhaustive.py +116 -0
- xwquery-0.0.1.8/tests/core/test_xwquery_basic.py +97 -0
- xwquery-0.0.1.8/tests/integration/__init__.py +2 -0
- xwquery-0.0.1.8/tests/integration/test_all_formats_to_xwqueryscript.py +361 -0
- xwquery-0.0.1.8/tests/integration/test_backend_action_compatibility.py +351 -0
- xwquery-0.0.1.8/tests/integration/test_query_conversion_all_formats.py +175 -0
- xwquery-0.0.1.8/tests/integration/test_query_conversion_three_levels.py +185 -0
- xwquery-0.0.1.8/tests/integration/test_sql_grammar_integration.py +139 -0
- xwquery-0.0.1.8/tests/runner.py +53 -0
- xwquery-0.0.1.8/tests/strategies/README.md +84 -0
- xwquery-0.0.1.8/tests/strategies/__init__.py +16 -0
- xwquery-0.0.1.8/tests/strategies/base_strategy_test.py +362 -0
- xwquery-0.0.1.8/tests/strategies/conftest.py +32 -0
- xwquery-0.0.1.8/tests/strategies/test_cql_strategy.py +85 -0
- xwquery-0.0.1.8/tests/strategies/test_cypher_strategy.py +85 -0
- xwquery-0.0.1.8/tests/strategies/test_datalog_strategy.py +85 -0
- xwquery-0.0.1.8/tests/strategies/test_elastic_dsl_strategy.py +85 -0
- xwquery-0.0.1.8/tests/strategies/test_eql_strategy.py +85 -0
- xwquery-0.0.1.8/tests/strategies/test_flux_strategy.py +85 -0
- xwquery-0.0.1.8/tests/strategies/test_generator.py +426 -0
- xwquery-0.0.1.8/tests/strategies/test_gql_strategy.py +85 -0
- xwquery-0.0.1.8/tests/strategies/test_graphql_strategy.py +85 -0
- xwquery-0.0.1.8/tests/strategies/test_gremlin_strategy.py +85 -0
- xwquery-0.0.1.8/tests/strategies/test_hiveql_strategy.py +85 -0
- xwquery-0.0.1.8/tests/strategies/test_hql_strategy.py +85 -0
- xwquery-0.0.1.8/tests/strategies/test_jmespath_strategy.py +85 -0
- xwquery-0.0.1.8/tests/strategies/test_jq_strategy.py +85 -0
- xwquery-0.0.1.8/tests/strategies/test_json_query_strategy.py +85 -0
- xwquery-0.0.1.8/tests/strategies/test_jsoniq_strategy.py +85 -0
- xwquery-0.0.1.8/tests/strategies/test_kql_strategy.py +85 -0
- xwquery-0.0.1.8/tests/strategies/test_linq_strategy.py +85 -0
- xwquery-0.0.1.8/tests/strategies/test_logql_strategy.py +85 -0
- xwquery-0.0.1.8/tests/strategies/test_mql_strategy.py +85 -0
- xwquery-0.0.1.8/tests/strategies/test_n1ql_strategy.py +85 -0
- xwquery-0.0.1.8/tests/strategies/test_new_sql_strategies_roundtrip.py +276 -0
- xwquery-0.0.1.8/tests/strategies/test_new_strategies_comprehensive.py +339 -0
- xwquery-0.0.1.8/tests/strategies/test_new_strategies_manual.py +118 -0
- xwquery-0.0.1.8/tests/strategies/test_new_strategies_roundtrip.py +329 -0
- xwquery-0.0.1.8/tests/strategies/test_new_strategies_xwquery_integration.py +253 -0
- xwquery-0.0.1.8/tests/strategies/test_new_time_series_strategies.py +353 -0
- xwquery-0.0.1.8/tests/strategies/test_partiql_strategy.py +85 -0
- xwquery-0.0.1.8/tests/strategies/test_pig_strategy.py +85 -0
- xwquery-0.0.1.8/tests/strategies/test_promql_strategy.py +85 -0
- xwquery-0.0.1.8/tests/strategies/test_sparql_strategy.py +85 -0
- xwquery-0.0.1.8/tests/strategies/test_sql_strategy.py +85 -0
- xwquery-0.0.1.8/tests/strategies/test_xml_query_strategy.py +85 -0
- xwquery-0.0.1.8/tests/strategies/test_xpath_strategy.py +85 -0
- xwquery-0.0.1.8/tests/strategies/test_xquery_strategy.py +85 -0
- xwquery-0.0.1.8/tests/strategies/test_xwnode_executor_strategy.py +85 -0
- xwquery-0.0.1.8/tests/strategies/test_xwquery_strategy.py +85 -0
- xwquery-0.0.1.8/tests/test_format_detection.py +427 -0
- xwquery-0.0.1.8/tests/test_grammar_parse_unparse.py +158 -0
- xwquery-0.0.1.8/tests/test_xwnode_integration.py +146 -0
- xwquery-0.0.1.8/tests/test_xwquery_xwnode_comprehensive.py +420 -0
- xwquery-0.0.1.8/tests/unit/__init__.py +2 -0
- xwquery-0.0.1.8/tests/unit/final_test.py +36 -0
- xwquery-0.0.1.8/tests/unit/test_all_31_grammars.py +233 -0
- xwquery-0.0.1.8/tests/unit/test_all_operations.py +189 -0
- xwquery-0.0.1.8/tests/unit/test_column_where.py +35 -0
- xwquery-0.0.1.8/tests/unit/test_console.py +231 -0
- xwquery-0.0.1.8/tests/unit/test_direct_lark_parsing.py +144 -0
- xwquery-0.0.1.8/tests/unit/test_format_detection.py +193 -0
- xwquery-0.0.1.8/tests/unit/test_interactive.py +85 -0
- xwquery-0.0.1.8/tests/unit/test_multiple_grammars.py +223 -0
- xwquery-0.0.1.8/tests/unit/test_query.py +20 -0
- xwquery-0.0.1.8/tests/unit/test_simple_sql_parsing.py +157 -0
- xwquery-0.0.1.8/tests/unit/test_xwqueryscript_grammar.py +225 -0
- xwquery-0.0.1.8/tests/verify_installation.py +72 -0
|
File without changes
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
|
|
2
|
+
============================== warnings summary ===============================
|
|
3
|
+
tests\strategies\base_strategy_test.py:237
|
|
4
|
+
d:\OneDrive\DEV\exonware\xwquery\tests\strategies\base_strategy_test.py:237: PytestUnknownMarkWarning: Unknown pytest.mark.slow - is this a typo? You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/stable/how-to/mark.html
|
|
5
|
+
@pytest.mark.slow
|
|
6
|
+
|
|
7
|
+
tests\strategies\test_cql_strategy.py:17
|
|
8
|
+
d:\OneDrive\DEV\exonware\xwquery\tests\strategies\test_cql_strategy.py:17: PytestUnknownMarkWarning: Unknown pytest.mark.xwquery_cql - is this a typo? You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/stable/how-to/mark.html
|
|
9
|
+
@pytest.mark.xwquery_cql
|
|
10
|
+
|
|
11
|
+
tests\strategies\test_cypher_strategy.py:17
|
|
12
|
+
d:\OneDrive\DEV\exonware\xwquery\tests\strategies\test_cypher_strategy.py:17: PytestUnknownMarkWarning: Unknown pytest.mark.xwquery_cypher - is this a typo? You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/stable/how-to/mark.html
|
|
13
|
+
@pytest.mark.xwquery_cypher
|
|
14
|
+
|
|
15
|
+
tests\strategies\test_datalog_strategy.py:17
|
|
16
|
+
d:\OneDrive\DEV\exonware\xwquery\tests\strategies\test_datalog_strategy.py:17: PytestUnknownMarkWarning: Unknown pytest.mark.xwquery_datalog - is this a typo? You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/stable/how-to/mark.html
|
|
17
|
+
@pytest.mark.xwquery_datalog
|
|
18
|
+
|
|
19
|
+
tests\strategies\test_elastic_dsl_strategy.py:17
|
|
20
|
+
d:\OneDrive\DEV\exonware\xwquery\tests\strategies\test_elastic_dsl_strategy.py:17: PytestUnknownMarkWarning: Unknown pytest.mark.xwquery_elastic_dsl - is this a typo? You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/stable/how-to/mark.html
|
|
21
|
+
@pytest.mark.xwquery_elastic_dsl
|
|
22
|
+
|
|
23
|
+
tests\strategies\test_gremlin_strategy.py:17
|
|
24
|
+
d:\OneDrive\DEV\exonware\xwquery\tests\strategies\test_gremlin_strategy.py:17: PytestUnknownMarkWarning: Unknown pytest.mark.xwquery_gremlin - is this a typo? You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/stable/how-to/mark.html
|
|
25
|
+
@pytest.mark.xwquery_gremlin
|
|
26
|
+
|
|
27
|
+
-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html
|
|
28
|
+
=========================== short test summary info ===========================
|
|
29
|
+
ERROR tests/strategies/test_eql_strategy.py
|
|
30
|
+
ERROR tests/strategies/test_flux_strategy.py
|
|
31
|
+
ERROR tests/strategies/test_gql_strategy.py
|
|
32
|
+
ERROR tests/strategies/test_graphql_strategy.py
|
|
33
|
+
ERROR tests/strategies/test_hiveql_strategy.py
|
|
34
|
+
ERROR tests/strategies/test_hql_strategy.py
|
|
35
|
+
ERROR tests/strategies/test_jmespath_strategy.py
|
|
36
|
+
ERROR tests/strategies/test_jq_strategy.py
|
|
37
|
+
ERROR tests/strategies/test_json_query_strategy.py
|
|
38
|
+
ERROR tests/strategies/test_jsoniq_strategy.py
|
|
39
|
+
ERROR tests/strategies/test_kql_strategy.py
|
|
40
|
+
ERROR tests/strategies/test_linq_strategy.py
|
|
41
|
+
ERROR tests/strategies/test_logql_strategy.py
|
|
42
|
+
ERROR tests/strategies/test_mql_strategy.py
|
|
43
|
+
ERROR tests/strategies/test_n1ql_strategy.py
|
|
44
|
+
ERROR tests/strategies/test_new_sql_strategies_roundtrip.py
|
|
45
|
+
ERROR tests/strategies/test_new_strategies_comprehensive.py
|
|
46
|
+
ERROR tests/strategies/test_new_strategies_manual.py
|
|
47
|
+
ERROR tests/strategies/test_new_strategies_roundtrip.py
|
|
48
|
+
ERROR tests/strategies/test_new_strategies_xwquery_integration.py
|
|
49
|
+
ERROR tests/strategies/test_new_time_series_strategies.py
|
|
50
|
+
ERROR tests/strategies/test_partiql_strategy.py
|
|
51
|
+
ERROR tests/strategies/test_pig_strategy.py
|
|
52
|
+
ERROR tests/strategies/test_promql_strategy.py
|
|
53
|
+
ERROR tests/strategies/test_sparql_strategy.py
|
|
54
|
+
ERROR tests/strategies/test_sql_strategy.py
|
|
55
|
+
ERROR tests/strategies/test_xml_query_strategy.py
|
|
56
|
+
ERROR tests/strategies/test_xpath_strategy.py
|
|
57
|
+
ERROR tests/strategies/test_xquery_strategy.py
|
|
58
|
+
ERROR tests/strategies/test_xwnode_executor_strategy.py
|
|
59
|
+
ERROR tests/strategies/test_xwquery_strategy.py
|
|
60
|
+
ERROR tests/test_format_detection.py
|
|
61
|
+
ERROR tests/test_grammar_parse_unparse.py
|
|
62
|
+
ERROR tests/test_xwnode_integration.py
|
|
63
|
+
ERROR tests/test_xwquery_xwnode_comprehensive.py
|
|
64
|
+
!!!!!!!!!!!!!!!!!! Interrupted: 35 errors during collection !!!!!!!!!!!!!!!!!!!
|
|
65
|
+
6 warnings, 35 errors in 3.94s
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
# NOTE: AUTO-GENERATED FILE
|
|
2
|
+
# This workflow was generated by tools/ci/python_scripts/generate_workflows.py.
|
|
3
|
+
# Do NOT edit this file manually - changes will be overwritten.
|
|
4
|
+
|
|
5
|
+
name: Check for Hardcoded Versions
|
|
6
|
+
|
|
7
|
+
on:
|
|
8
|
+
pull_request:
|
|
9
|
+
paths:
|
|
10
|
+
- 'src/**/*.py'
|
|
11
|
+
- 'tests/**/*.py'
|
|
12
|
+
- 'docs/**/*.md'
|
|
13
|
+
- '*.md'
|
|
14
|
+
- '*.txt'
|
|
15
|
+
push:
|
|
16
|
+
branches: [main, develop]
|
|
17
|
+
|
|
18
|
+
jobs:
|
|
19
|
+
check-versions:
|
|
20
|
+
runs-on: ubuntu-latest
|
|
21
|
+
steps:
|
|
22
|
+
- uses: actions/checkout@v3
|
|
23
|
+
|
|
24
|
+
- name: Set up Python
|
|
25
|
+
uses: actions/setup-python@v4
|
|
26
|
+
with:
|
|
27
|
+
python-version: '3.12'
|
|
28
|
+
|
|
29
|
+
- name: Verify version.py is the source of truth
|
|
30
|
+
run: |
|
|
31
|
+
python .github/workflows/check_version_source_of_truth.py
|
|
32
|
+
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
"""
|
|
3
|
+
Verify that the version configured in pyproject.toml ultimately comes from a
|
|
4
|
+
single source-of-truth version location (file or attribute) and print it.
|
|
5
|
+
|
|
6
|
+
This is extracted from the GitHub Actions check-versions workflow so it can be
|
|
7
|
+
tested and reused outside of CI.
|
|
8
|
+
"""
|
|
9
|
+
|
|
10
|
+
from __future__ import annotations
|
|
11
|
+
|
|
12
|
+
import importlib
|
|
13
|
+
import re
|
|
14
|
+
import sys
|
|
15
|
+
from pathlib import Path
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
def _read_pyproject() -> str:
|
|
19
|
+
path = Path("pyproject.toml")
|
|
20
|
+
if not path.exists():
|
|
21
|
+
print("No pyproject.toml", file=sys.stderr)
|
|
22
|
+
sys.exit(2)
|
|
23
|
+
return path.read_text(encoding="utf-8")
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
def _read_attr_from_module_source(
|
|
27
|
+
project_root: Path,
|
|
28
|
+
module_name: str,
|
|
29
|
+
attr_name: str,
|
|
30
|
+
) -> str | None:
|
|
31
|
+
"""
|
|
32
|
+
Resolve module source under ./src and read a simple string assignment
|
|
33
|
+
like: __version__ = "1.2.3"
|
|
34
|
+
This avoids import side effects from package-level dependencies.
|
|
35
|
+
"""
|
|
36
|
+
module_rel = Path(*module_name.split("."))
|
|
37
|
+
candidates = [
|
|
38
|
+
project_root / "src" / (str(module_rel) + ".py"),
|
|
39
|
+
project_root / "src" / module_rel / "__init__.py",
|
|
40
|
+
]
|
|
41
|
+
pattern = re.compile(
|
|
42
|
+
rf"^\s*{re.escape(attr_name)}\s*=\s*['\"]([^'\"]+)['\"]\s*$",
|
|
43
|
+
re.MULTILINE,
|
|
44
|
+
)
|
|
45
|
+
for candidate in candidates:
|
|
46
|
+
if not candidate.exists():
|
|
47
|
+
continue
|
|
48
|
+
text = candidate.read_text(encoding="utf-8")
|
|
49
|
+
m = pattern.search(text)
|
|
50
|
+
if m:
|
|
51
|
+
return m.group(1)
|
|
52
|
+
return None
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
def main() -> None:
|
|
56
|
+
text = _read_pyproject()
|
|
57
|
+
|
|
58
|
+
# 1) Hatchling: [tool.hatch.version] path = ".../version.py"
|
|
59
|
+
m = re.search(
|
|
60
|
+
r"\[tool\.hatch\.version\][^\n]*\n\s*path\s*=\s*[\"']([^\"']+)[\"']",
|
|
61
|
+
text,
|
|
62
|
+
re.DOTALL,
|
|
63
|
+
)
|
|
64
|
+
if m:
|
|
65
|
+
version_file = Path(m.group(1).strip())
|
|
66
|
+
if not version_file.exists():
|
|
67
|
+
print(f"Version file not found: {version_file}", file=sys.stderr)
|
|
68
|
+
sys.exit(2)
|
|
69
|
+
ns: dict[str, object] = {}
|
|
70
|
+
exec(version_file.read_text(encoding="utf-8"), ns)
|
|
71
|
+
version = ns.get("__version__")
|
|
72
|
+
if not isinstance(version, str) or not version:
|
|
73
|
+
print(f"__version__ missing or empty in {version_file}", file=sys.stderr)
|
|
74
|
+
sys.exit(2)
|
|
75
|
+
print("Current version:", version)
|
|
76
|
+
sys.exit(0)
|
|
77
|
+
|
|
78
|
+
# 2) Setuptools dynamic inline table (file=...) -> open version file and exec
|
|
79
|
+
m = re.search(
|
|
80
|
+
r'version\s*=\s*\{\s*file\s*=\s*["\']([^"\']+)["\']',
|
|
81
|
+
text,
|
|
82
|
+
re.DOTALL,
|
|
83
|
+
)
|
|
84
|
+
if not m:
|
|
85
|
+
# 2b) Setuptools dynamic table style:
|
|
86
|
+
# [tool.setuptools.dynamic.version]
|
|
87
|
+
# attr = "pkg.module.__version__" OR file = "..."
|
|
88
|
+
m = re.search(
|
|
89
|
+
r"\[tool\.setuptools\.dynamic\.version\][^\n]*\n\s*file\s*=\s*[\"']([^\"']+)[\"']",
|
|
90
|
+
text,
|
|
91
|
+
re.DOTALL,
|
|
92
|
+
)
|
|
93
|
+
if m:
|
|
94
|
+
version_file = Path(m.group(1).strip())
|
|
95
|
+
if not version_file.exists():
|
|
96
|
+
print(f"Version file not found: {version_file}", file=sys.stderr)
|
|
97
|
+
sys.exit(2)
|
|
98
|
+
ns: dict[str, object] = {}
|
|
99
|
+
exec(version_file.read_text(encoding="utf-8"), ns)
|
|
100
|
+
version = ns.get("__version__")
|
|
101
|
+
if not isinstance(version, str) or not version:
|
|
102
|
+
print(f"__version__ missing or empty in {version_file}", file=sys.stderr)
|
|
103
|
+
sys.exit(2)
|
|
104
|
+
print("Current version:", version)
|
|
105
|
+
sys.exit(0)
|
|
106
|
+
|
|
107
|
+
# 3) Setuptools dynamic inline table (attr="pkg.module.__version__")
|
|
108
|
+
m = re.search(
|
|
109
|
+
r'version\s*=\s*\{\s*attr\s*=\s*["\']([^"\']+)["\']',
|
|
110
|
+
text,
|
|
111
|
+
re.DOTALL,
|
|
112
|
+
)
|
|
113
|
+
if not m:
|
|
114
|
+
# 3b) Setuptools dynamic table style:
|
|
115
|
+
# [tool.setuptools.dynamic.version]
|
|
116
|
+
# attr = "pkg.module.__version__"
|
|
117
|
+
m = re.search(
|
|
118
|
+
r"\[tool\.setuptools\.dynamic\.version\][^\n]*\n\s*attr\s*=\s*[\"']([^\"']+)[\"']",
|
|
119
|
+
text,
|
|
120
|
+
re.DOTALL,
|
|
121
|
+
)
|
|
122
|
+
if m:
|
|
123
|
+
attr_path = m.group(1).strip()
|
|
124
|
+
module_name, _, attr = attr_path.rpartition(".")
|
|
125
|
+
if not module_name or not attr:
|
|
126
|
+
sys.exit(2)
|
|
127
|
+
version = _read_attr_from_module_source(Path("."), module_name, attr)
|
|
128
|
+
if version is None:
|
|
129
|
+
# Fallback to import for unusual dynamic cases.
|
|
130
|
+
mod = importlib.import_module(module_name)
|
|
131
|
+
version = getattr(mod, attr, None)
|
|
132
|
+
if not isinstance(version, str) or not version:
|
|
133
|
+
print(
|
|
134
|
+
f"Attribute {attr_path} is missing or empty",
|
|
135
|
+
file=sys.stderr,
|
|
136
|
+
)
|
|
137
|
+
sys.exit(2)
|
|
138
|
+
print("Current version:", version)
|
|
139
|
+
sys.exit(0)
|
|
140
|
+
|
|
141
|
+
# If none of the patterns matched, exit with a non-success status expected by CI.
|
|
142
|
+
sys.exit(2)
|
|
143
|
+
|
|
144
|
+
|
|
145
|
+
if __name__ == "__main__":
|
|
146
|
+
main()
|
|
147
|
+
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
# NOTE: AUTO-GENERATED FILE
|
|
2
|
+
# This workflow was generated by tools/ci/python_scripts/generate_workflows.py.
|
|
3
|
+
# Do NOT edit this file manually - changes will be overwritten.
|
|
4
|
+
|
|
5
|
+
name: Dual PyPI Publish - exonware-xwquery & xwquery
|
|
6
|
+
|
|
7
|
+
on:
|
|
8
|
+
push:
|
|
9
|
+
tags:
|
|
10
|
+
- 'v*' # Triggers on version tags like v0.0.2, v1.0.0, etc.
|
|
11
|
+
workflow_dispatch: # Allows manual trigger of the workflow
|
|
12
|
+
|
|
13
|
+
jobs:
|
|
14
|
+
publish:
|
|
15
|
+
runs-on: ubuntu-latest
|
|
16
|
+
|
|
17
|
+
steps:
|
|
18
|
+
- uses: actions/checkout@v4
|
|
19
|
+
|
|
20
|
+
- name: Set up Python
|
|
21
|
+
uses: actions/setup-python@v4
|
|
22
|
+
with:
|
|
23
|
+
python-version: '3.12'
|
|
24
|
+
|
|
25
|
+
- name: Verify tag matches version.py
|
|
26
|
+
run: |
|
|
27
|
+
python .github/workflows/verify_tag_matches_version.py
|
|
28
|
+
|
|
29
|
+
- name: Install dependencies
|
|
30
|
+
run: |
|
|
31
|
+
python -m pip install --upgrade pip
|
|
32
|
+
pip install build twine
|
|
33
|
+
|
|
34
|
+
- name: Set release date to today
|
|
35
|
+
run: |
|
|
36
|
+
python .github/workflows/update_release_date_from_version_file.py
|
|
37
|
+
|
|
38
|
+
- name: Build exonware-xwquery package
|
|
39
|
+
run: |
|
|
40
|
+
echo "Building exonware-xwquery package..."
|
|
41
|
+
python -m build
|
|
42
|
+
|
|
43
|
+
- name: Build xwquery package
|
|
44
|
+
run: |
|
|
45
|
+
echo "Building xwquery package..."
|
|
46
|
+
cp pyproject.toml pyproject.backup.toml
|
|
47
|
+
cp pyproject.xwquery.toml pyproject.toml
|
|
48
|
+
python -m build
|
|
49
|
+
mv pyproject.backup.toml pyproject.toml
|
|
50
|
+
|
|
51
|
+
- name: List built packages
|
|
52
|
+
run: |
|
|
53
|
+
echo "Built packages:"
|
|
54
|
+
find dist -name "*.whl" -o -name "*.tar.gz" | sort
|
|
55
|
+
|
|
56
|
+
- name: Publish exonware-xwquery to PyPI
|
|
57
|
+
env:
|
|
58
|
+
TWINE_USERNAME: __token__
|
|
59
|
+
TWINE_PASSWORD: ${{ secrets.PYPI_API_TOKEN }}
|
|
60
|
+
run: |
|
|
61
|
+
echo "Publishing exonware-xwquery to PyPI..."
|
|
62
|
+
ls -la dist/
|
|
63
|
+
twine upload dist/exonware_xwquery-*.whl dist/exonware_xwquery-*.tar.gz
|
|
64
|
+
|
|
65
|
+
- name: Publish xwquery to PyPI
|
|
66
|
+
env:
|
|
67
|
+
TWINE_USERNAME: __token__
|
|
68
|
+
TWINE_PASSWORD: ${{ secrets.PYPI_API_TOKEN }}
|
|
69
|
+
run: |
|
|
70
|
+
echo "Publishing xwquery to PyPI..."
|
|
71
|
+
twine upload dist/xwquery-*.whl dist/xwquery-*.tar.gz
|
|
72
|
+
|
|
73
|
+
- name: Success notification
|
|
74
|
+
run: |
|
|
75
|
+
echo "Successfully published both packages:"
|
|
76
|
+
echo " exonware-xwquery v${{ github.ref_name }}"
|
|
77
|
+
echo " xwquery v${{ github.ref_name }}"
|
|
78
|
+
echo ""
|
|
79
|
+
echo "PyPI URLs:"
|
|
80
|
+
echo " https://pypi.org/project/exonware-xwquery/"
|
|
81
|
+
echo " https://pypi.org/project/xwquery/"
|
|
82
|
+
echo ""
|
|
83
|
+
echo "Install with:"
|
|
84
|
+
echo " pip install exonware-xwquery"
|
|
85
|
+
echo " pip install xwquery"
|
|
86
|
+
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
"""
|
|
3
|
+
Update a __date__ literal in the version file referenced from pyproject.toml
|
|
4
|
+
to today's ISO date (YYYY-MM-DD), when present as a string literal.
|
|
5
|
+
|
|
6
|
+
This is extracted from the GitHub Actions publish workflow so it can be reused
|
|
7
|
+
and tested outside of CI.
|
|
8
|
+
"""
|
|
9
|
+
|
|
10
|
+
from __future__ import annotations
|
|
11
|
+
|
|
12
|
+
import re
|
|
13
|
+
import sys
|
|
14
|
+
from datetime import date
|
|
15
|
+
from pathlib import Path
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
def main() -> None:
|
|
19
|
+
pyproject_path = Path("pyproject.toml")
|
|
20
|
+
if not pyproject_path.exists():
|
|
21
|
+
print("No pyproject.toml; skipping __date__ update")
|
|
22
|
+
sys.exit(0)
|
|
23
|
+
|
|
24
|
+
pyproject = pyproject_path.read_text(encoding="utf-8")
|
|
25
|
+
m = re.search(
|
|
26
|
+
r"\[tool\.hatch\.version\][^\n]*\n\s*path\s*=\s*[\"']([^\"']+)[\"']",
|
|
27
|
+
pyproject,
|
|
28
|
+
re.DOTALL,
|
|
29
|
+
)
|
|
30
|
+
if not m:
|
|
31
|
+
print("No [tool.hatch.version] path; skipping __date__ update")
|
|
32
|
+
sys.exit(0)
|
|
33
|
+
|
|
34
|
+
version_file = Path(m.group(1).strip())
|
|
35
|
+
if not version_file.exists():
|
|
36
|
+
print(f"Version file not found: {version_file}; skipping __date__ update")
|
|
37
|
+
sys.exit(0)
|
|
38
|
+
|
|
39
|
+
text = version_file.read_text(encoding="utf-8")
|
|
40
|
+
literal_match = re.search(
|
|
41
|
+
r"__date__\s*=\s*[\"'][^\"']*[\"']",
|
|
42
|
+
text,
|
|
43
|
+
)
|
|
44
|
+
if not literal_match:
|
|
45
|
+
print("__date__ is dynamic or missing; no update needed")
|
|
46
|
+
sys.exit(0)
|
|
47
|
+
|
|
48
|
+
today = date.today().isoformat()
|
|
49
|
+
new_text = re.sub(
|
|
50
|
+
r"(__date__\s*=\s*)[\"'][^\"']*[\"']",
|
|
51
|
+
r'\1"' + today + '"',
|
|
52
|
+
text,
|
|
53
|
+
)
|
|
54
|
+
version_file.write_text(new_text, encoding="utf-8")
|
|
55
|
+
print("Set __date__ to", today, "in", version_file)
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
if __name__ == "__main__":
|
|
59
|
+
main()
|
|
60
|
+
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
"""
|
|
3
|
+
Verify that the current Git reference (tag) matches the library version defined
|
|
4
|
+
in the version file referenced from pyproject.toml.
|
|
5
|
+
|
|
6
|
+
This script is extracted from the GitHub Actions publish workflow so it can be
|
|
7
|
+
reused and tested outside of CI.
|
|
8
|
+
"""
|
|
9
|
+
|
|
10
|
+
from __future__ import annotations
|
|
11
|
+
|
|
12
|
+
import os
|
|
13
|
+
import re
|
|
14
|
+
import sys
|
|
15
|
+
from pathlib import Path
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
def _load_version_from_pyproject() -> str | None:
|
|
19
|
+
pyproject_path = Path("pyproject.toml")
|
|
20
|
+
if not pyproject_path.exists():
|
|
21
|
+
print("No pyproject.toml; skipping", file=sys.stderr)
|
|
22
|
+
return None
|
|
23
|
+
|
|
24
|
+
text = pyproject_path.read_text(encoding="utf-8")
|
|
25
|
+
m = re.search(
|
|
26
|
+
r"\[tool\.hatch\.version\][^\n]*\n\s*path\s*=\s*[\"']([^\"']+)[\"']",
|
|
27
|
+
text,
|
|
28
|
+
re.DOTALL,
|
|
29
|
+
)
|
|
30
|
+
if not m:
|
|
31
|
+
print("No [tool.hatch.version] path; skipping", file=sys.stderr)
|
|
32
|
+
return None
|
|
33
|
+
|
|
34
|
+
version_file = Path(m.group(1).strip())
|
|
35
|
+
if not version_file.exists():
|
|
36
|
+
print(f"Version file not found: {version_file}", file=sys.stderr)
|
|
37
|
+
sys.exit(1)
|
|
38
|
+
|
|
39
|
+
ns: dict[str, object] = {}
|
|
40
|
+
exec(version_file.read_text(encoding="utf-8"), ns)
|
|
41
|
+
version = ns.get("__version__")
|
|
42
|
+
if not isinstance(version, str) or not version:
|
|
43
|
+
print(f"__version__ missing or empty in {version_file}", file=sys.stderr)
|
|
44
|
+
sys.exit(1)
|
|
45
|
+
return version
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
def main() -> None:
|
|
49
|
+
file_ver = _load_version_from_pyproject()
|
|
50
|
+
if not file_ver:
|
|
51
|
+
# Nothing to check; treat as non-fatal.
|
|
52
|
+
sys.exit(0)
|
|
53
|
+
|
|
54
|
+
ref = os.environ.get("GITHUB_REF", "")
|
|
55
|
+
if not ref.startswith("refs/tags/"):
|
|
56
|
+
print(f"Not a tag build; version: {file_ver}")
|
|
57
|
+
sys.exit(0)
|
|
58
|
+
|
|
59
|
+
tag_name = ref.removeprefix("refs/tags/")
|
|
60
|
+
tag_ver = tag_name[1:] if tag_name.startswith("v") else tag_name
|
|
61
|
+
|
|
62
|
+
if tag_ver != file_ver:
|
|
63
|
+
print(f"ERROR: Tag {tag_ver} != version.py {file_ver}", file=sys.stderr)
|
|
64
|
+
sys.exit(1)
|
|
65
|
+
|
|
66
|
+
print("OK: tag and version match:", file_ver)
|
|
67
|
+
sys.exit(0)
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
if __name__ == "__main__":
|
|
71
|
+
main()
|
|
72
|
+
|
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
# Migration/legacy directories (may contain paths too long for Windows)
|
|
2
|
+
MIGRAT/
|
|
3
|
+
MIGRATE/
|
|
4
|
+
|
|
5
|
+
# Byte-compiled / optimized / DLL files
|
|
6
|
+
__pycache__/
|
|
7
|
+
*.py[cod]
|
|
8
|
+
*$py.class
|
|
9
|
+
|
|
10
|
+
# C extensions
|
|
11
|
+
*.so
|
|
12
|
+
|
|
13
|
+
# Distribution / packaging
|
|
14
|
+
.Python
|
|
15
|
+
build/
|
|
16
|
+
develop-eggs/
|
|
17
|
+
dist/
|
|
18
|
+
downloads/
|
|
19
|
+
eggs/
|
|
20
|
+
.eggs/
|
|
21
|
+
lib/
|
|
22
|
+
lib64/
|
|
23
|
+
parts/
|
|
24
|
+
sdist/
|
|
25
|
+
var/
|
|
26
|
+
wheels/
|
|
27
|
+
share/python-wheels/
|
|
28
|
+
*.egg-info/
|
|
29
|
+
.installed.cfg
|
|
30
|
+
*.egg
|
|
31
|
+
MANIFEST
|
|
32
|
+
|
|
33
|
+
# PyInstaller
|
|
34
|
+
*.manifest
|
|
35
|
+
*.spec
|
|
36
|
+
|
|
37
|
+
# Installer logs
|
|
38
|
+
pip-log.txt
|
|
39
|
+
pip-delete-this-directory.txt
|
|
40
|
+
|
|
41
|
+
# Unit test / coverage reports
|
|
42
|
+
htmlcov/
|
|
43
|
+
.tox/
|
|
44
|
+
.nox/
|
|
45
|
+
.coverage
|
|
46
|
+
.coverage.*
|
|
47
|
+
.cache
|
|
48
|
+
nosetests.xml
|
|
49
|
+
coverage.xml
|
|
50
|
+
*.cover
|
|
51
|
+
*.py,cover
|
|
52
|
+
.hypothesis/
|
|
53
|
+
.pytest_cache/
|
|
54
|
+
cover/
|
|
55
|
+
|
|
56
|
+
# Translations
|
|
57
|
+
*.mo
|
|
58
|
+
*.pot
|
|
59
|
+
|
|
60
|
+
# Django stuff:
|
|
61
|
+
*.log
|
|
62
|
+
local_settings.py
|
|
63
|
+
db.sqlite3
|
|
64
|
+
db.sqlite3-journal
|
|
65
|
+
|
|
66
|
+
# Flask stuff:
|
|
67
|
+
instance/
|
|
68
|
+
.webassets-cache
|
|
69
|
+
|
|
70
|
+
# Scrapy stuff:
|
|
71
|
+
.scrapy
|
|
72
|
+
|
|
73
|
+
# Sphinx documentation
|
|
74
|
+
docs/_build/
|
|
75
|
+
|
|
76
|
+
# PyBuilder
|
|
77
|
+
.pybuilder/
|
|
78
|
+
target/
|
|
79
|
+
|
|
80
|
+
# Jupyter Notebook
|
|
81
|
+
.ipynb_checkpoints
|
|
82
|
+
|
|
83
|
+
# IPython
|
|
84
|
+
profile_default/
|
|
85
|
+
ipython_config.py
|
|
86
|
+
|
|
87
|
+
# pyenv
|
|
88
|
+
.python-version
|
|
89
|
+
|
|
90
|
+
# pipenv
|
|
91
|
+
Pipfile.lock
|
|
92
|
+
|
|
93
|
+
# poetry
|
|
94
|
+
poetry.lock
|
|
95
|
+
|
|
96
|
+
# pdm
|
|
97
|
+
.pdm.toml
|
|
98
|
+
|
|
99
|
+
# PEP 582
|
|
100
|
+
__pypackages__/
|
|
101
|
+
|
|
102
|
+
# Celery stuff
|
|
103
|
+
celerybeat-schedule
|
|
104
|
+
celerybeat.pid
|
|
105
|
+
|
|
106
|
+
# SageMath parsed files
|
|
107
|
+
*.sage.py
|
|
108
|
+
|
|
109
|
+
# Environments
|
|
110
|
+
.env
|
|
111
|
+
.venv
|
|
112
|
+
env/
|
|
113
|
+
venv/
|
|
114
|
+
ENV/
|
|
115
|
+
env.bak/
|
|
116
|
+
venv.bak/
|
|
117
|
+
|
|
118
|
+
# Spyder project settings
|
|
119
|
+
.spyderproject
|
|
120
|
+
.spyproject
|
|
121
|
+
|
|
122
|
+
# Rope project settings
|
|
123
|
+
.ropeproject
|
|
124
|
+
|
|
125
|
+
# mkdocs documentation
|
|
126
|
+
/site
|
|
127
|
+
|
|
128
|
+
# mypy
|
|
129
|
+
.mypy_cache/
|
|
130
|
+
.dmypy.json
|
|
131
|
+
dmypy.json
|
|
132
|
+
|
|
133
|
+
# Pyre type checker
|
|
134
|
+
.pyre/
|
|
135
|
+
|
|
136
|
+
# pytype static type analyzer
|
|
137
|
+
.pytype/
|
|
138
|
+
|
|
139
|
+
# Cython debug symbols
|
|
140
|
+
cython_debug/
|
|
141
|
+
|
|
142
|
+
# IDE
|
|
143
|
+
.vscode/
|
|
144
|
+
.idea/
|
|
145
|
+
*.swp
|
|
146
|
+
*.swo
|
|
147
|
+
*~
|
|
148
|
+
|
|
149
|
+
# OS
|
|
150
|
+
.DS_Store
|
|
151
|
+
Thumbs.db
|
|
152
|
+
|
|
153
|
+
# Project specific
|
|
154
|
+
*.pyc
|
|
155
|
+
fix_imports.py
|
|
156
|
+
fix_imports_simple.py
|
|
157
|
+
|
|
158
|
+
# Test runner output files (auto-generated)
|
|
159
|
+
**/runner_out.md
|
|
160
|
+
tests/runner_out.md
|
|
161
|
+
tests/*/runner_out.md
|
|
162
|
+
tests/*/*/runner_out.md
|
|
163
|
+
|
|
164
|
+
# xwlazy generated files (should be in ~/.xwlazy/ but ignore in case of old behavior)
|
|
165
|
+
xwlazy.lock.toml
|
|
166
|
+
xwlazy_sbom.toml
|
|
167
|
+
|
|
168
|
+
# Local secrets and archives
|
|
169
|
+
.secrets
|
|
170
|
+
.archieve/
|
|
171
|
+
|
|
172
|
+
.examples/
|