execsql2 2.30.0__tar.gz → 2.31.2__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.
- {execsql2-2.30.0 → execsql2-2.31.2}/.github/ISSUE_TEMPLATE/bug_report.yml +1 -1
- {execsql2-2.30.0 → execsql2-2.31.2}/.github/workflows/ci-cd.yml +45 -19
- {execsql2-2.30.0 → execsql2-2.31.2}/.gitignore +1 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/.pre-commit-config.yaml +3 -3
- {execsql2-2.30.0 → execsql2-2.31.2}/.readthedocs.yaml +3 -2
- execsql2-2.31.2/CHANGELOG.md +2996 -0
- execsql2-2.31.2/CONTRIBUTING.md +88 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/PKG-INFO +17 -41
- {execsql2-2.30.0 → execsql2-2.31.2}/README.md +13 -14
- {execsql2-2.30.0 → execsql2-2.31.2}/SECURITY.md +2 -2
- {execsql2-2.30.0 → execsql2-2.31.2}/docs/about/divergence.md +33 -22
- {execsql2-2.30.0 → execsql2-2.31.2}/docs/api/index.md +2 -1
- {execsql2-2.30.0 → execsql2-2.31.2}/docs/dev/releasing.md +64 -28
- {execsql2-2.30.0 → execsql2-2.31.2}/docs/getting-started/syntax.md +4 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/docs/guides/editors.md +6 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/docs/guides/formatter.md +3 -1
- {execsql2-2.30.0 → execsql2-2.31.2}/docs/reference/configuration.md +3 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/docs/reference/lint.md +1 -1
- {execsql2-2.30.0 → execsql2-2.31.2}/docs/reference/metacommands.md +11 -1
- {execsql2-2.30.0 → execsql2-2.31.2}/docs/reference/security.md +16 -1
- execsql2-2.31.2/docs/templates/compare.md +148 -0
- execsql2-2.31.2/docs/templates/glossary.md +162 -0
- execsql2-2.31.2/docs/templates/index.md +62 -0
- execsql2-2.31.2/docs/templates/upsert.md +386 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/extras/vscode-execsql/README.md +4 -4
- {execsql2-2.30.0 → execsql2-2.31.2}/extras/vscode-execsql/extension.js +1 -1
- {execsql2-2.30.0 → execsql2-2.31.2}/extras/vscode-execsql/package-lock.json +2 -2
- {execsql2-2.30.0 → execsql2-2.31.2}/extras/vscode-execsql/package.json +1 -1
- {execsql2-2.30.0 → execsql2-2.31.2}/justfile +59 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/pyproject.toml +39 -13
- execsql2-2.31.2/scripts/release_notes.py +51 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/src/execsql/api.py +1 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/src/execsql/cli/application.py +1 -1
- {execsql2-2.30.0 → execsql2-2.31.2}/src/execsql/cli/commands/lint.py +1 -1
- {execsql2-2.30.0 → execsql2-2.31.2}/src/execsql/cli/dsn.py +35 -1
- {execsql2-2.30.0 → execsql2-2.31.2}/src/execsql/cli/lint.py +10 -1
- {execsql2-2.30.0 → execsql2-2.31.2}/src/execsql/cli/run.py +8 -3
- {execsql2-2.30.0 → execsql2-2.31.2}/src/execsql/config.py +26 -4
- {execsql2-2.30.0 → execsql2-2.31.2}/src/execsql/data/execsql.conf.template +8 -2
- {execsql2-2.30.0 → execsql2-2.31.2}/src/execsql/db/access.py +9 -5
- {execsql2-2.30.0 → execsql2-2.31.2}/src/execsql/db/base.py +18 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/src/execsql/db/dsn.py +3 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/src/execsql/db/factory.py +11 -1
- {execsql2-2.30.0 → execsql2-2.31.2}/src/execsql/db/mysql.py +56 -3
- execsql2-2.31.2/src/execsql/db/odbc.py +62 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/src/execsql/db/postgres.py +1 -1
- {execsql2-2.30.0 → execsql2-2.31.2}/src/execsql/db/sqlserver.py +39 -21
- {execsql2-2.30.0 → execsql2-2.31.2}/src/execsql/exporters/ods.py +146 -41
- execsql2-2.31.2/src/execsql/exporters/values.py +261 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/src/execsql/importers/base.py +1 -1
- {execsql2-2.30.0 → execsql2-2.31.2}/src/execsql/importers/csv.py +1 -1
- {execsql2-2.30.0 → execsql2-2.31.2}/src/execsql/importers/ods.py +2 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/src/execsql/lsp/diagnostics.py +1 -1
- {execsql2-2.30.0 → execsql2-2.31.2}/src/execsql/lsp/document.py +3 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/src/execsql/metacommands/io_fileops.py +11 -5
- {execsql2-2.30.0 → execsql2-2.31.2}/src/execsql/metacommands/reference.py +1 -1
- {execsql2-2.30.0 → execsql2-2.31.2}/src/execsql/metacommands/upsert.py +10 -1
- {execsql2-2.30.0 → execsql2-2.31.2}/src/execsql/utils/auth.py +21 -14
- {execsql2-2.30.0 → execsql2-2.31.2}/src/execsql/utils/errors.py +1 -1
- execsql2-2.31.2/src/execsql/utils/paths.py +31 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/templates/README.md +9 -8
- {execsql2-2.30.0 → execsql2-2.31.2}/templates/md_compare.sql +53 -29
- {execsql2-2.30.0 → execsql2-2.31.2}/templates/md_glossary.sql +20 -20
- {execsql2-2.30.0 → execsql2-2.31.2}/templates/md_upsert.sql +59 -66
- {execsql2-2.30.0 → execsql2-2.31.2}/templates/pg_compare.sql +19 -22
- {execsql2-2.30.0 → execsql2-2.31.2}/templates/pg_glossary.sql +13 -17
- {execsql2-2.30.0 → execsql2-2.31.2}/templates/script_template.sql +302 -299
- {execsql2-2.30.0 → execsql2-2.31.2}/templates/ss_compare.sql +39 -29
- {execsql2-2.30.0 → execsql2-2.31.2}/templates/ss_glossary.sql +13 -17
- {execsql2-2.30.0 → execsql2-2.31.2}/templates/ss_upsert.sql +56 -66
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/cli/test_dispatch.py +1 -1
- execsql2-2.31.2/tests/data/ods/libreoffice.fods +67 -0
- execsql2-2.31.2/tests/data/ods/libreoffice.ods +0 -0
- execsql2-2.31.2/tests/db/conftest.py +42 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/db/test_db_adapters_mocked.py +11 -71
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/db/test_db_adapters_mocked_extra.py +9 -54
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/db/test_dsn.py +4 -20
- execsql2-2.31.2/tests/db/test_mysql_trailing_blank_lines.py +46 -0
- execsql2-2.31.2/tests/db/test_odbc_fresh_sessions.py +54 -0
- execsql2-2.31.2/tests/db/test_replacement_missing_table.py +63 -0
- execsql2-2.31.2/tests/db/test_sqlserver_driver18.py +101 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/db/test_sqlserver_inprocess.py +92 -33
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/exporters/test_exporters.py +3 -3
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/exporters/test_roundtrip_values.py +1 -1
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/exporters/test_values_extended.py +3 -2
- execsql2-2.31.2/tests/exporters/test_values_roundtrip.py +115 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/importers/test_base_extended.py +1 -1
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/importers/test_csv_importer.py +3 -3
- execsql2-2.31.2/tests/importers/test_ods_values.py +210 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/integration/test_mysql.py +43 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/integration/test_postgres.py +61 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/metacommands/test_metacommands_fileops_extra.py +7 -3
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/metacommands/test_pg_upsert.py +41 -13
- execsql2-2.31.2/tests/metacommands/test_serve_output.py +24 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/security/test_env_detection.py +39 -0
- execsql2-2.31.2/tests/security/test_network_paths.py +146 -0
- execsql2-2.31.2/tests/security/test_odbc_connection_strings.py +139 -0
- execsql2-2.31.2/tests/templates/conftest.py +284 -0
- execsql2-2.31.2/tests/templates/test_compare.py +115 -0
- execsql2-2.31.2/tests/templates/test_glossary.py +106 -0
- execsql2-2.31.2/tests/templates/test_static.py +118 -0
- execsql2-2.31.2/tests/templates/test_upsert.py +217 -0
- execsql2-2.31.2/tests/test_release_notes.py +73 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/test_tooling_versions.py +2 -11
- execsql2-2.31.2/tests/utils/__init__.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/utils/test_keyring_rules.py +2 -1
- {execsql2-2.30.0 → execsql2-2.31.2}/uv.lock +107 -108
- {execsql2-2.30.0 → execsql2-2.31.2}/zensical.toml +6 -0
- execsql2-2.30.0/CHANGELOG.md +0 -3012
- execsql2-2.30.0/CONTRIBUTING.md +0 -131
- execsql2-2.30.0/src/execsql/exporters/values.py +0 -104
- execsql2-2.30.0/templates/pg_upsert.sql +0 -2791
- {execsql2-2.30.0 → execsql2-2.31.2}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/.github/dependabot.yml +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/.pre-commit-hooks.yaml +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/.python-version +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/LICENSE.txt +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/NOTICE +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/docs/about/contributors.md +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/docs/about/copyright.md +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/docs/api/cli.md +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/docs/api/db.md +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/docs/api/exporters.md +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/docs/api/importers.md +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/docs/api/metacommands.md +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/docs/dev/adding_db_adapters.md +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/docs/dev/adding_exporters.md +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/docs/dev/adding_importers.md +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/docs/dev/adding_metacommands.md +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/docs/dev/architecture.md +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/docs/getting-started/installation.md +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/docs/getting-started/requirements.md +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/docs/guides/debugging.md +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/docs/guides/documentation.md +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/docs/guides/encoding.md +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/docs/guides/examples.md +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/docs/guides/logging.md +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/docs/guides/sql_syntax.md +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/docs/guides/usage.md +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/docs/guides/using_scripts.md +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/docs/images/Compare_planets.png +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/docs/images/actions.png +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/docs/images/actions2.png +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/docs/images/checkboxes.png +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/docs/images/connect.png +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/docs/images/data_error1_screenshot.jpg +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/docs/images/execsql_logo_01.png +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/docs/images/fatals.png +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/docs/images/pause_terminal_sm.png +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/docs/images/set_build_commands.jpg +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/docs/images/unit_conversions_029.png +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/docs/images/unmatched.png +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/docs/images/vim_execsql_highlight.png +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/docs/index.md +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/docs/reference/substitution_vars.md +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/extras/plugin-template/README.md +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/extras/plugin-template/pyproject.toml +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/extras/plugin-template/src/execsql_plugin_YOURNAME/__init__.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/extras/plugin-template/tests/test_plugin.py.example +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/extras/vscode-execsql/.vscodeignore +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/extras/vscode-execsql/LICENSE.txt +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/extras/vscode-execsql/icon.png +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/extras/vscode-execsql/syntaxes/execsql.tmLanguage.json +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/scripts/benchmarks/README.md +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/scripts/benchmarks/results/.gitignore +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/scripts/benchmarks/run_benchmarks.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/scripts/generate_vscode_grammar.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/src/execsql/__init__.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/src/execsql/__main__.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/src/execsql/cli/__init__.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/src/execsql/cli/commands/__init__.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/src/execsql/cli/commands/config.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/src/execsql/cli/commands/format.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/src/execsql/cli/commands/init.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/src/execsql/cli/commands/listing.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/src/execsql/cli/commands/lsp.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/src/execsql/cli/commands/run.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/src/execsql/cli/dispatch.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/src/execsql/cli/help.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/src/execsql/cli/options.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/src/execsql/config_validation.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/src/execsql/data/__init__.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/src/execsql/data/script_header.sql +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/src/execsql/db/__init__.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/src/execsql/db/duckdb.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/src/execsql/db/firebird.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/src/execsql/db/oracle.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/src/execsql/db/sqlite.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/src/execsql/db/tiers.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/src/execsql/debug/__init__.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/src/execsql/debug/repl.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/src/execsql/exceptions.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/src/execsql/exporters/__init__.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/src/execsql/exporters/base.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/src/execsql/exporters/delimited.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/src/execsql/exporters/duckdb.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/src/execsql/exporters/feather.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/src/execsql/exporters/html.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/src/execsql/exporters/json.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/src/execsql/exporters/latex.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/src/execsql/exporters/markdown.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/src/execsql/exporters/parquet.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/src/execsql/exporters/pretty.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/src/execsql/exporters/protocol.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/src/execsql/exporters/raw.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/src/execsql/exporters/sqlite.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/src/execsql/exporters/templates.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/src/execsql/exporters/xls.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/src/execsql/exporters/xlsx.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/src/execsql/exporters/xml.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/src/execsql/exporters/yaml.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/src/execsql/exporters/zip.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/src/execsql/format.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/src/execsql/gui/__init__.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/src/execsql/gui/base.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/src/execsql/gui/console.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/src/execsql/gui/desktop.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/src/execsql/gui/tui.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/src/execsql/importers/__init__.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/src/execsql/importers/feather.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/src/execsql/importers/json.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/src/execsql/importers/xls.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/src/execsql/interactive.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/src/execsql/lsp/__init__.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/src/execsql/lsp/_util.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/src/execsql/lsp/cache.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/src/execsql/lsp/code_actions.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/src/execsql/lsp/completion.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/src/execsql/lsp/folding.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/src/execsql/lsp/formatting.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/src/execsql/lsp/hover.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/src/execsql/lsp/navigation.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/src/execsql/lsp/rename.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/src/execsql/lsp/server.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/src/execsql/manifest.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/src/execsql/metacommands/__init__.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/src/execsql/metacommands/conditions.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/src/execsql/metacommands/connect.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/src/execsql/metacommands/control.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/src/execsql/metacommands/data.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/src/execsql/metacommands/debug.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/src/execsql/metacommands/dispatch.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/src/execsql/metacommands/effects.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/src/execsql/metacommands/io.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/src/execsql/metacommands/io_export.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/src/execsql/metacommands/io_import.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/src/execsql/metacommands/io_write.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/src/execsql/metacommands/prompt.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/src/execsql/metacommands/script_ext.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/src/execsql/metacommands/system.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/src/execsql/models.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/src/execsql/parser.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/src/execsql/plugins.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/src/execsql/py.typed +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/src/execsql/script/__init__.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/src/execsql/script/ast.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/src/execsql/script/control.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/src/execsql/script/engine.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/src/execsql/script/executor.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/src/execsql/script/parser.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/src/execsql/script/variables.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/src/execsql/state.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/src/execsql/state.pyi +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/src/execsql/types.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/src/execsql/utils/__init__.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/src/execsql/utils/color.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/src/execsql/utils/crypto.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/src/execsql/utils/datetime.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/src/execsql/utils/fileio.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/src/execsql/utils/gui.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/src/execsql/utils/mail.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/src/execsql/utils/numeric.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/src/execsql/utils/regex.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/src/execsql/utils/strings.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/src/execsql/utils/timer.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/templates/config_settings.sqlite +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/templates/example_config_prompt.sql +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/templates/make_config_db.sql +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/__init__.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/cli/__init__.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/cli/test_cli.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/cli/test_cli_e2e.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/cli/test_cli_run.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/cli/test_cli_surface.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/cli/test_commands.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/cli/test_config_validate.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/cli/test_error_location.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/cli/test_init.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/cli/test_lint.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/cli/test_lint_fixtures.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/cli/test_log_exit_record.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/cli/test_manifest.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/cli/test_ping.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/cli/test_profile.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/cli/test_sigterm.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/cli/test_undeclared_imports.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/conftest.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/data/formatter_shapes/comment_anchoring.sql +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/data/formatter_shapes/escapes_and_literals.sql +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/data/formatter_shapes/substitution_and_metacommands.sql +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/data/formatter_shapes/unparsable_sql.sql +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/data/lint/conditions_and_blocks.sql +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/data/lint/does_not_parse.sql +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/data/lint/every_metacommand.sql +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/data/lint/invalid.sql +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/db/__init__.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/db/test_access_windows.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/db/test_base.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/db/test_copy_new.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/db/test_duckdb.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/db/test_factory.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/db/test_factory_postgres_encoding.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/db/test_import_atomic.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/db/test_import_replacement_quoted.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/db/test_import_short_rows.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/db/test_import_timezones.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/db/test_mysql_case_folding.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/db/test_mysql_inprocess.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/db/test_new_table_checks.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/db/test_oracle_driver.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/db/test_postgres.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/db/test_postgres_inprocess.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/db/test_quoted_substitution_roundtrip.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/db/test_roundtrip_adapters.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/db/test_sqlite.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/db/test_sqlite_extra.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/db/test_tiers.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/db/test_transactions.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/exporters/__init__.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/exporters/conftest.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/exporters/test_base.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/exporters/test_db.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/exporters/test_delimited.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/exporters/test_duckdb_exporter.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/exporters/test_feather.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/exporters/test_html_extended.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/exporters/test_html_latex.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/exporters/test_json.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/exporters/test_json_extended.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/exporters/test_latex_extended.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/exporters/test_markdown.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/exporters/test_ods.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/exporters/test_ods_export.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/exporters/test_parquet.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/exporters/test_pretty_extended.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/exporters/test_raw_extended.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/exporters/test_roundtrip_columnar.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/exporters/test_roundtrip_dbfile.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/exporters/test_roundtrip_delimited.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/exporters/test_roundtrip_json.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/exporters/test_roundtrip_latex_xml.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/exporters/test_roundtrip_markup.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/exporters/test_roundtrip_ods.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/exporters/test_roundtrip_pretty_raw.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/exporters/test_roundtrip_template.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/exporters/test_roundtrip_xlsx.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/exporters/test_sqlite_exporter.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/exporters/test_templates.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/exporters/test_templates_extended.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/exporters/test_xls_xlsx.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/exporters/test_xlsx.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/exporters/test_xml.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/exporters/test_yaml.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/exporters/test_zip.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/gui/__init__.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/gui/test_backends.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/gui/test_backends_extended.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/gui/test_compare_stats.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/gui/test_compute_row_diffs.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/gui/test_desktop_dialogs.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/gui/test_format_table.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/gui/test_tui_pilot.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/gui/test_tui_pilot_complex.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/gui/test_utils_gui_extended.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/importers/__init__.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/importers/conftest.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/importers/test_csv_blank_lines.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/importers/test_csv_edge_cases.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/importers/test_feather_importer.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/importers/test_json_importer.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/importers/test_ods_importer.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/importers/test_roundtrip_csv.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/importers/test_xls_importer.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/integration/__init__.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/integration/conftest.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/integration/test_dsn.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/integration/test_duckdb.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/integration/test_sqlite.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/live_db.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/lsp/__init__.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/lsp/test_cache.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/lsp/test_code_actions.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/lsp/test_completion.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/lsp/test_diagnostics.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/lsp/test_document.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/lsp/test_folding.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/lsp/test_formatting.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/lsp/test_hover.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/lsp/test_lsp_command.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/lsp/test_navigation.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/lsp/test_rename.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/lsp/test_server.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/metacommands/__init__.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/metacommands/conftest.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/metacommands/test_assert.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/metacommands/test_breakpoint.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/metacommands/test_conditions_extra.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/metacommands/test_connect.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/metacommands/test_io_export.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/metacommands/test_io_import.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/metacommands/test_metacommands.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/metacommands/test_metacommands_connect.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/metacommands/test_metacommands_data.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/metacommands/test_metacommands_extended.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/metacommands/test_metacommands_io.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/metacommands/test_metacommands_io_write_extra.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/metacommands/test_metacommands_script_ext.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/metacommands/test_metacommands_system.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/metacommands/test_metacommands_system_extra.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/metacommands/test_prompt.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/metacommands/test_row_count.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/metacommands/test_show_scripts.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/scripts/__init__.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/scripts/fixtures/audit_lint_bad.sql +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/scripts/fixtures/audit_smoke/sample.json +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/scripts/fixtures/audit_smoke/sample.jsonl +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/scripts/fixtures/audit_smoke.sql +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/scripts/fixtures/config_runtime.sql +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/scripts/fixtures/control_flow.sql +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/scripts/fixtures/counters_and_locals.sql +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/scripts/fixtures/error_handling.sql +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/scripts/fixtures/import_options/has_comments.csv +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/scripts/fixtures/import_options.sql +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/scripts/fixtures/includes/helper.sql +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/scripts/fixtures/includes.sql +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/scripts/fixtures/io_formats.sql +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/scripts/fixtures/io_roundtrip.sql +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/scripts/fixtures/multi_db.sql +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/scripts/fixtures/parquet_feather_roundtrip.sql +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/scripts/fixtures/parse_only/parse_tree.sql +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/scripts/fixtures/predicates.sql +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/scripts/fixtures/scripts.sql +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/scripts/fixtures/smoke.sql +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/scripts/fixtures/subroutine_loops.sql +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/scripts/fixtures/subvars_advanced.sql +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/scripts/fixtures/template_export/greeting.tmpl +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/scripts/fixtures/template_export.sql +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/scripts/fixtures/timer.sql +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/scripts/fixtures/transactions.sql +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/scripts/fixtures/write_create_table.sql +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/scripts/fixtures/xlsx_ods_roundtrip.sql +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/scripts/test_sql_scripts.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/security/__init__.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/security/test_expansion_bomb.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/security/test_import_regex_hardening.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/security/test_log_redaction.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/security/test_log_secrets.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/security/test_odbc_injection.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/security/test_path_containment.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/security/test_substitution_injection.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/security/test_zip_bomb.py +0 -0
- {execsql2-2.30.0/tests/utils → execsql2-2.31.2/tests/templates}/__init__.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/test_api.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/test_api_errors.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/test_api_extended.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/test_api_filewriter.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/test_api_isolation.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/test_api_subprocess.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/test_ast.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/test_ast_parser.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/test_bundled_templates.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/test_config.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/test_config_data.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/test_config_extended.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/test_date_inference.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/test_debug_repl.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/test_engine.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/test_error_messages.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/test_exceptions.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/test_executor.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/test_executor_inprocess.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/test_format.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/test_interactive.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/test_mail.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/test_models.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/test_package.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/test_parser.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/test_parser_params.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/test_plugins.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/test_reference.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/test_registry.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/test_script.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/test_state.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/test_types.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/utils/test_auth.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/utils/test_auth_extra.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/utils/test_crypto.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/utils/test_datetime.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/utils/test_encodedfile_context.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/utils/test_errors.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/utils/test_errors_extra.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/utils/test_fileio.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/utils/test_fileio_extra.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/utils/test_mail_tls.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/utils/test_numeric.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/utils/test_regex.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/utils/test_strings.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/utils/test_timer.py +0 -0
- {execsql2-2.30.0 → execsql2-2.31.2}/tests/utils/test_timer_extra.py +0 -0
|
@@ -53,5 +53,5 @@ body:
|
|
|
53
53
|
label: Editor and language server (only for a problem in an editor)
|
|
54
54
|
description: |
|
|
55
55
|
The editor and the execsql extension's version, the output of `execsql lsp --check`, and the server's log
|
|
56
|
-
at `info` (VS Code: View → Output → execsql). See https://execsql2.readthedocs.io/en/
|
|
56
|
+
at `info` (VS Code: View → Output → execsql). See https://execsql2.readthedocs.io/en/stable/guides/editors/#troubleshooting
|
|
57
57
|
render: text
|
|
@@ -44,7 +44,7 @@ jobs:
|
|
|
44
44
|
- uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0
|
|
45
45
|
with:
|
|
46
46
|
python-version: "3.13"
|
|
47
|
-
- uses: astral-sh/setup-uv@
|
|
47
|
+
- uses: astral-sh/setup-uv@1c37ad07a6a961277cf70c0d37d6f313000f5884 # v10.3.0
|
|
48
48
|
# The environment `just setup` builds: mypy and the packages it
|
|
49
49
|
# type-checks against come from uv.lock, so CI and local runs agree.
|
|
50
50
|
# --locked also fails the job when uv.lock is out of date.
|
|
@@ -70,7 +70,7 @@ jobs:
|
|
|
70
70
|
- run: |
|
|
71
71
|
floor=$(grep -oP '"typer>=\K[0-9.]+' pyproject.toml)
|
|
72
72
|
echo "Typer floor: $floor"
|
|
73
|
-
python -m pip install ".[
|
|
73
|
+
python -m pip install ".[formats,formatter,lsp]" --group dev "typer==$floor"
|
|
74
74
|
- run: pytest tests/cli --no-cov -q
|
|
75
75
|
|
|
76
76
|
pre-commit:
|
|
@@ -85,7 +85,7 @@ jobs:
|
|
|
85
85
|
python-version: "3.13"
|
|
86
86
|
cache: "pip"
|
|
87
87
|
- run: python -m pip install --upgrade pip
|
|
88
|
-
- run: python -m pip install ".[
|
|
88
|
+
- run: python -m pip install ".[formats,formatter,lsp]" --group dev
|
|
89
89
|
# mypy runs in the dedicated typecheck job; the local hook needs uv
|
|
90
90
|
- run: pre-commit run --all-files
|
|
91
91
|
env:
|
|
@@ -98,7 +98,7 @@ jobs:
|
|
|
98
98
|
contents: read
|
|
99
99
|
steps:
|
|
100
100
|
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
101
|
-
- uses: actions/setup-node@
|
|
101
|
+
- uses: actions/setup-node@949feb2413d6458794dcd2491c4babbbce0c15c1 # v7.1.0
|
|
102
102
|
with:
|
|
103
103
|
node-version: "22"
|
|
104
104
|
# Dependencies come from the committed package-lock.json, and no
|
|
@@ -106,18 +106,23 @@ jobs:
|
|
|
106
106
|
- name: Install dependencies
|
|
107
107
|
working-directory: extras/vscode-execsql
|
|
108
108
|
run: npm ci --ignore-scripts --no-audit --no-fund
|
|
109
|
-
#
|
|
110
|
-
#
|
|
111
|
-
|
|
109
|
+
# bump-my-version writes the release's version into package.json
|
|
110
|
+
# (2.31.0rc1 as 2.31.0-rc.1); a tag on a commit where it differs
|
|
111
|
+
# would attach an extension with another version.
|
|
112
|
+
- name: Check the extension version matches the tag
|
|
112
113
|
if: startsWith(github.ref, 'refs/tags/v')
|
|
113
114
|
working-directory: extras/vscode-execsql
|
|
114
115
|
run: |
|
|
115
|
-
|
|
116
|
-
|
|
116
|
+
expected="$(echo "${GITHUB_REF_NAME#v}" | sed -E 's/^([0-9]+\.[0-9]+\.[0-9]+)(a|b|rc)([0-9]+)$/\1-\2.\3/')"
|
|
117
|
+
actual="$(node -p "require('./package.json').version")"
|
|
118
|
+
if [ "$expected" != "$actual" ]; then
|
|
119
|
+
echo "::error::extras/vscode-execsql/package.json has version $actual; the tag $GITHUB_REF_NAME needs $expected"
|
|
120
|
+
exit 1
|
|
121
|
+
fi
|
|
117
122
|
- name: Package the .vsix
|
|
118
123
|
working-directory: extras/vscode-execsql
|
|
119
124
|
run: ./node_modules/.bin/vsce package --out "../../execsql-syntax.vsix"
|
|
120
|
-
- uses: actions/upload-artifact@
|
|
125
|
+
- uses: actions/upload-artifact@cf430e030ddbb5b0abf93d22962f4752f3646cd9 # v7.0.2
|
|
121
126
|
with:
|
|
122
127
|
name: vscode-extension
|
|
123
128
|
path: execsql-syntax.vsix
|
|
@@ -134,7 +139,7 @@ jobs:
|
|
|
134
139
|
python-version: "3.13"
|
|
135
140
|
cache: "pip"
|
|
136
141
|
- run: python -m pip install --upgrade pip
|
|
137
|
-
- run: python -m pip install ".[
|
|
142
|
+
- run: python -m pip install ".[formats,formatter,lsp]" --group dev
|
|
138
143
|
- run: cp CHANGELOG.md docs/about/change_log.md
|
|
139
144
|
# --strict: a warning, such as a link to an #anchor that does not exist, fails the job.
|
|
140
145
|
- run: zensical build --strict
|
|
@@ -176,7 +181,7 @@ jobs:
|
|
|
176
181
|
run: |
|
|
177
182
|
python -m pip install --upgrade pip
|
|
178
183
|
python -m pip install tox
|
|
179
|
-
python -m pip install ".[
|
|
184
|
+
python -m pip install ".[formats,formatter,lsp]" --group dev
|
|
180
185
|
- name: Install tkinter (Ubuntu)
|
|
181
186
|
if: runner.os == 'Linux'
|
|
182
187
|
run: sudo apt-get install -y python3-tk
|
|
@@ -236,6 +241,17 @@ jobs:
|
|
|
236
241
|
options: >-
|
|
237
242
|
--health-cmd "mysqladmin ping" --health-interval 10s
|
|
238
243
|
--health-timeout 5s --health-retries 5
|
|
244
|
+
mariadb:
|
|
245
|
+
# The md_ templates were written for MariaDB and differ from
|
|
246
|
+
# MySQL 8 in what SQL they accept; tests/templates runs on both.
|
|
247
|
+
image: mariadb:11
|
|
248
|
+
env:
|
|
249
|
+
MARIADB_ROOT_PASSWORD: root
|
|
250
|
+
ports:
|
|
251
|
+
- 3307:3306
|
|
252
|
+
options: >-
|
|
253
|
+
--health-cmd "healthcheck.sh --connect --innodb_initialized"
|
|
254
|
+
--health-interval 10s --health-timeout 5s --health-retries 5
|
|
239
255
|
sqlserver:
|
|
240
256
|
image: mcr.microsoft.com/mssql/server:2022-latest
|
|
241
257
|
env:
|
|
@@ -275,13 +291,16 @@ jobs:
|
|
|
275
291
|
- name: Install dependencies
|
|
276
292
|
run: |
|
|
277
293
|
python -m pip install --upgrade pip
|
|
278
|
-
python -m pip install ".[
|
|
294
|
+
python -m pip install ".[formats,formatter,lsp,postgres,mysql,mssql,upsert]" --group dev
|
|
279
295
|
- name: Run subprocess integration tests
|
|
280
296
|
run: |
|
|
281
297
|
python -m pytest tests/integration/test_postgres.py tests/integration/test_mysql.py -v --override-ini="addopts="
|
|
282
298
|
- name: Run in-process DB adapter tests with 86% coverage floor
|
|
283
299
|
env:
|
|
284
300
|
DISPLAY: ""
|
|
301
|
+
# The SQL Server tests fail here instead of skipping when the
|
|
302
|
+
# adapter cannot connect.
|
|
303
|
+
EXECSQL_MSSQL_REQUIRED: "1"
|
|
285
304
|
run: |
|
|
286
305
|
python -m pytest --cov=execsql --cov-branch --cov-report=xml --cov-fail-under=86
|
|
287
306
|
- name: Upload coverage to Codecov
|
|
@@ -336,7 +355,7 @@ jobs:
|
|
|
336
355
|
if: steps.install_access.outcome == 'success'
|
|
337
356
|
run: |
|
|
338
357
|
python -m pip install --upgrade pip
|
|
339
|
-
python -m pip install ".[
|
|
358
|
+
python -m pip install ".[formats,formatter,lsp,odbc]" --group dev pywin32
|
|
340
359
|
shell: pwsh
|
|
341
360
|
- name: Run Access real-driver tests
|
|
342
361
|
# Gating: a real regression in src/execsql/db/access.py blocks
|
|
@@ -373,6 +392,11 @@ jobs:
|
|
|
373
392
|
echo "::error::Tag $GITHUB_REF_NAME does not match project.version $version in pyproject.toml"
|
|
374
393
|
exit 1
|
|
375
394
|
fi
|
|
395
|
+
- name: Check CHANGELOG.md has the release notes
|
|
396
|
+
# The GitHub Release body is this section; a missing one would
|
|
397
|
+
# only surface after the PyPI upload.
|
|
398
|
+
if: startsWith(github.ref, 'refs/tags/v')
|
|
399
|
+
run: python scripts/release_notes.py "$GITHUB_REF_NAME" > /dev/null
|
|
376
400
|
- name: Build sdist + wheel
|
|
377
401
|
run: |
|
|
378
402
|
python -m pip install --upgrade pip
|
|
@@ -385,7 +409,7 @@ jobs:
|
|
|
385
409
|
python -m build --sdist --wheel --outdir dist/
|
|
386
410
|
python -m twine check dist/*
|
|
387
411
|
- name: Upload dist artifact
|
|
388
|
-
uses: actions/upload-artifact@
|
|
412
|
+
uses: actions/upload-artifact@cf430e030ddbb5b0abf93d22962f4752f3646cd9 # v7.0.2
|
|
389
413
|
with:
|
|
390
414
|
name: ${{ github.event.repository.name }}
|
|
391
415
|
path: dist/
|
|
@@ -403,7 +427,7 @@ jobs:
|
|
|
403
427
|
contents: read
|
|
404
428
|
steps:
|
|
405
429
|
- name: Download dist
|
|
406
|
-
uses: actions/download-artifact@
|
|
430
|
+
uses: actions/download-artifact@9000827ccba6bdab643e8b6fd33ac0654aef8333 # v8.0.2
|
|
407
431
|
with:
|
|
408
432
|
name: ${{ github.event.repository.name }}
|
|
409
433
|
path: dist/
|
|
@@ -425,12 +449,12 @@ jobs:
|
|
|
425
449
|
- name: Checkout
|
|
426
450
|
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
427
451
|
- name: Download dist
|
|
428
|
-
uses: actions/download-artifact@
|
|
452
|
+
uses: actions/download-artifact@9000827ccba6bdab643e8b6fd33ac0654aef8333 # v8.0.2
|
|
429
453
|
with:
|
|
430
454
|
name: ${{ github.event.repository.name }}
|
|
431
455
|
path: dist/
|
|
432
456
|
- name: Download the VS Code extension
|
|
433
|
-
uses: actions/download-artifact@
|
|
457
|
+
uses: actions/download-artifact@9000827ccba6bdab643e8b6fd33ac0654aef8333 # v8.0.2
|
|
434
458
|
with:
|
|
435
459
|
name: vscode-extension
|
|
436
460
|
path: dist/
|
|
@@ -444,11 +468,13 @@ jobs:
|
|
|
444
468
|
else
|
|
445
469
|
echo "prerelease=false" >> "$GITHUB_OUTPUT"
|
|
446
470
|
fi
|
|
471
|
+
- name: Release notes from CHANGELOG.md
|
|
472
|
+
run: python3 scripts/release_notes.py "$GITHUB_REF_NAME" > release-notes.md
|
|
447
473
|
- name: Create release
|
|
448
474
|
uses: softprops/action-gh-release@efb35369e0ad2afab669f228072c1b0d510eae64 # v3.0.3
|
|
449
475
|
with:
|
|
450
476
|
draft: false
|
|
451
477
|
prerelease: ${{ steps.tag.outputs.prerelease }}
|
|
452
|
-
|
|
478
|
+
body_path: release-notes.md
|
|
453
479
|
files: |
|
|
454
480
|
dist/*
|
|
@@ -18,7 +18,7 @@ repos:
|
|
|
18
18
|
- id: gitleaks
|
|
19
19
|
# uv lockfile management
|
|
20
20
|
- repo: https://github.com/astral-sh/uv-pre-commit
|
|
21
|
-
rev: 0.
|
|
21
|
+
rev: 0.13.0
|
|
22
22
|
hooks:
|
|
23
23
|
- id: uv-lock
|
|
24
24
|
# Base hooks
|
|
@@ -64,13 +64,13 @@ repos:
|
|
|
64
64
|
args: [--disable, MD013]
|
|
65
65
|
# Spell check
|
|
66
66
|
- repo: https://github.com/crate-ci/typos
|
|
67
|
-
rev: v1.51.
|
|
67
|
+
rev: v1.51.1
|
|
68
68
|
hooks:
|
|
69
69
|
- id: typos
|
|
70
70
|
args: [--force-exclude]
|
|
71
71
|
# Lint & format with ruff
|
|
72
72
|
- repo: https://github.com/astral-sh/ruff-pre-commit
|
|
73
|
-
rev: v0.
|
|
73
|
+
rev: v0.17.0
|
|
74
74
|
hooks:
|
|
75
75
|
- id: ruff-check
|
|
76
76
|
args: [--config=pyproject.toml, --exit-non-zero-on-fix]
|
|
@@ -9,8 +9,9 @@ build:
|
|
|
9
9
|
python: "3.13"
|
|
10
10
|
jobs:
|
|
11
11
|
install:
|
|
12
|
-
|
|
13
|
-
- pip install
|
|
12
|
+
# The `docs` dependency group in pyproject.toml, the same pins CI builds with.
|
|
13
|
+
- pip install --upgrade pip
|
|
14
|
+
- pip install -e . --group docs
|
|
14
15
|
pre_build:
|
|
15
16
|
- cp CHANGELOG.md docs/about/change_log.md
|
|
16
17
|
build:
|