execsql2 2.16.2__tar.gz → 2.16.3__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.16.2 → execsql2-2.16.3}/CHANGELOG.md +8 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/PKG-INFO +1 -1
- {execsql2-2.16.2 → execsql2-2.16.3}/docs/about/divergence.md +1 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/pyproject.toml +2 -2
- {execsql2-2.16.2 → execsql2-2.16.3}/src/execsql/script/parser.py +1 -1
- {execsql2-2.16.2 → execsql2-2.16.3}/uv.lock +1 -1
- {execsql2-2.16.2 → execsql2-2.16.3}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/.github/workflows/ci-cd.yml +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/.gitignore +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/.pre-commit-config.yaml +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/.pre-commit-hooks.yaml +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/.python-version +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/.readthedocs.yaml +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/CONTRIBUTING.md +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/LICENSE.txt +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/NOTICE +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/README.md +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/SECURITY.md +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/docs/about/contributors.md +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/docs/about/copyright.md +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/docs/api/cli.md +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/docs/api/db.md +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/docs/api/exporters.md +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/docs/api/importers.md +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/docs/api/index.md +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/docs/api/metacommands.md +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/docs/dev/adding_db_adapters.md +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/docs/dev/adding_exporters.md +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/docs/dev/adding_importers.md +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/docs/dev/adding_metacommands.md +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/docs/dev/architecture.md +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/docs/getting-started/installation.md +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/docs/getting-started/requirements.md +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/docs/getting-started/syntax.md +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/docs/guides/debugging.md +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/docs/guides/documentation.md +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/docs/guides/encoding.md +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/docs/guides/examples.md +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/docs/guides/formatter.md +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/docs/guides/logging.md +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/docs/guides/sql_syntax.md +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/docs/guides/usage.md +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/docs/guides/using_scripts.md +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/docs/images/Compare_planets.png +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/docs/images/actions.png +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/docs/images/actions2.png +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/docs/images/checkboxes.png +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/docs/images/connect.b64 +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/docs/images/connect.png +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/docs/images/create_conf.png +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/docs/images/data_error1_screenshot.jpg +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/docs/images/entry_form.png +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/docs/images/execsql_console.png +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/docs/images/execsql_logo_01.png +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/docs/images/fatals.png +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/docs/images/logo_small.png +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/docs/images/pause_terminal.png +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/docs/images/pause_terminal_sm.b64 +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/docs/images/pause_terminal_sm.png +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/docs/images/prompt_compare.png +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/docs/images/set_build_commands.jpg +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/docs/images/unit_conversions.b64 +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/docs/images/unit_conversions_029.png +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/docs/images/unmatched.png +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/docs/images/vim_execsql_highlight.png +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/docs/index.md +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/docs/reference/configuration.md +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/docs/reference/metacommands.md +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/docs/reference/security.md +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/docs/reference/substitution_vars.md +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/extras/plugin-template/README.md +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/extras/plugin-template/pyproject.toml +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/extras/plugin-template/src/execsql_plugin_YOURNAME/__init__.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/extras/plugin-template/tests/test_plugin.py.example +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/extras/vscode-execsql/README.md +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/extras/vscode-execsql/package.json +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/extras/vscode-execsql/syntaxes/execsql.tmLanguage.json +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/justfile +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/scripts/generate_vscode_grammar.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/src/execsql/__init__.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/src/execsql/__main__.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/src/execsql/api.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/src/execsql/cli/__init__.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/src/execsql/cli/dsn.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/src/execsql/cli/help.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/src/execsql/cli/lint.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/src/execsql/cli/lint_ast.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/src/execsql/cli/run.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/src/execsql/config.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/src/execsql/db/__init__.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/src/execsql/db/access.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/src/execsql/db/base.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/src/execsql/db/dsn.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/src/execsql/db/duckdb.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/src/execsql/db/factory.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/src/execsql/db/firebird.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/src/execsql/db/mysql.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/src/execsql/db/oracle.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/src/execsql/db/postgres.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/src/execsql/db/sqlite.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/src/execsql/db/sqlserver.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/src/execsql/debug/__init__.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/src/execsql/debug/repl.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/src/execsql/exceptions.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/src/execsql/exporters/__init__.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/src/execsql/exporters/base.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/src/execsql/exporters/delimited.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/src/execsql/exporters/duckdb.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/src/execsql/exporters/feather.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/src/execsql/exporters/html.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/src/execsql/exporters/json.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/src/execsql/exporters/latex.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/src/execsql/exporters/markdown.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/src/execsql/exporters/ods.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/src/execsql/exporters/parquet.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/src/execsql/exporters/pretty.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/src/execsql/exporters/protocol.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/src/execsql/exporters/raw.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/src/execsql/exporters/sqlite.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/src/execsql/exporters/templates.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/src/execsql/exporters/values.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/src/execsql/exporters/xls.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/src/execsql/exporters/xlsx.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/src/execsql/exporters/xml.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/src/execsql/exporters/yaml.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/src/execsql/exporters/zip.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/src/execsql/format.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/src/execsql/gui/__init__.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/src/execsql/gui/base.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/src/execsql/gui/console.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/src/execsql/gui/desktop.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/src/execsql/gui/tui.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/src/execsql/importers/__init__.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/src/execsql/importers/base.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/src/execsql/importers/csv.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/src/execsql/importers/feather.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/src/execsql/importers/json.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/src/execsql/importers/ods.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/src/execsql/importers/xls.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/src/execsql/metacommands/__init__.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/src/execsql/metacommands/conditions.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/src/execsql/metacommands/connect.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/src/execsql/metacommands/control.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/src/execsql/metacommands/data.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/src/execsql/metacommands/debug.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/src/execsql/metacommands/dispatch.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/src/execsql/metacommands/io.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/src/execsql/metacommands/io_export.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/src/execsql/metacommands/io_fileops.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/src/execsql/metacommands/io_import.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/src/execsql/metacommands/io_write.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/src/execsql/metacommands/prompt.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/src/execsql/metacommands/script_ext.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/src/execsql/metacommands/system.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/src/execsql/metacommands/upsert.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/src/execsql/models.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/src/execsql/parser.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/src/execsql/plugins.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/src/execsql/py.typed +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/src/execsql/script/__init__.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/src/execsql/script/ast.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/src/execsql/script/control.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/src/execsql/script/engine.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/src/execsql/script/executor.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/src/execsql/script/variables.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/src/execsql/state.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/src/execsql/types.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/src/execsql/utils/__init__.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/src/execsql/utils/auth.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/src/execsql/utils/crypto.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/src/execsql/utils/datetime.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/src/execsql/utils/errors.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/src/execsql/utils/fileio.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/src/execsql/utils/gui.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/src/execsql/utils/mail.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/src/execsql/utils/numeric.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/src/execsql/utils/regex.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/src/execsql/utils/strings.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/src/execsql/utils/timer.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/templates/README.md +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/templates/config_settings.sqlite +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/templates/example_config_prompt.sql +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/templates/execsql.conf +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/templates/make_config_db.sql +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/templates/md_compare.sql +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/templates/md_glossary.sql +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/templates/md_upsert.sql +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/templates/pg_compare.sql +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/templates/pg_glossary.sql +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/templates/pg_upsert.sql +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/templates/script_template.sql +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/templates/ss_compare.sql +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/templates/ss_glossary.sql +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/templates/ss_upsert.sql +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/tests/__init__.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/tests/cli/__init__.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/tests/cli/test_cli.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/tests/cli/test_cli_e2e.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/tests/cli/test_cli_run.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/tests/cli/test_lint.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/tests/cli/test_ping.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/tests/cli/test_profile.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/tests/conftest.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/tests/db/__init__.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/tests/db/test_base.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/tests/db/test_db_adapters_mocked.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/tests/db/test_dsn.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/tests/db/test_duckdb.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/tests/db/test_factory.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/tests/db/test_postgres.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/tests/db/test_sqlite.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/tests/db/test_sqlite_extra.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/tests/exporters/__init__.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/tests/exporters/test_base.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/tests/exporters/test_db.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/tests/exporters/test_delimited.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/tests/exporters/test_duckdb_exporter.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/tests/exporters/test_exporters.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/tests/exporters/test_feather.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/tests/exporters/test_html_extended.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/tests/exporters/test_html_latex.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/tests/exporters/test_json.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/tests/exporters/test_json_extended.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/tests/exporters/test_latex_extended.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/tests/exporters/test_markdown.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/tests/exporters/test_ods.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/tests/exporters/test_parquet.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/tests/exporters/test_pretty_extended.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/tests/exporters/test_raw_extended.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/tests/exporters/test_sqlite_exporter.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/tests/exporters/test_templates.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/tests/exporters/test_templates_extended.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/tests/exporters/test_values_extended.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/tests/exporters/test_xls_xlsx.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/tests/exporters/test_xlsx.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/tests/exporters/test_xml.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/tests/exporters/test_yaml.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/tests/exporters/test_zip.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/tests/gui/__init__.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/tests/gui/test_backends.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/tests/gui/test_compare_stats.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/tests/gui/test_compute_row_diffs.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/tests/importers/__init__.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/tests/importers/test_base_extended.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/tests/importers/test_csv_edge_cases.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/tests/importers/test_csv_importer.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/tests/importers/test_feather_importer.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/tests/importers/test_json_importer.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/tests/importers/test_ods_importer.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/tests/importers/test_xls_importer.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/tests/integration/__init__.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/tests/integration/conftest.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/tests/integration/test_dsn.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/tests/integration/test_duckdb.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/tests/integration/test_mysql.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/tests/integration/test_postgres.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/tests/integration/test_sqlite.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/tests/metacommands/__init__.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/tests/metacommands/test_assert.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/tests/metacommands/test_breakpoint.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/tests/metacommands/test_connect.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/tests/metacommands/test_io_export.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/tests/metacommands/test_io_import.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/tests/metacommands/test_metacommands.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/tests/metacommands/test_metacommands_connect.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/tests/metacommands/test_metacommands_data.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/tests/metacommands/test_metacommands_extended.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/tests/metacommands/test_metacommands_fileops_extra.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/tests/metacommands/test_metacommands_io.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/tests/metacommands/test_metacommands_io_write_extra.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/tests/metacommands/test_metacommands_script_ext.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/tests/metacommands/test_metacommands_system.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/tests/metacommands/test_metacommands_system_extra.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/tests/metacommands/test_pg_upsert.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/tests/metacommands/test_row_count.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/tests/scripts/__init__.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/tests/scripts/fixtures/control_flow.sql +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/tests/scripts/fixtures/io_roundtrip.sql +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/tests/scripts/fixtures/parse_only/parse_tree.sql +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/tests/scripts/fixtures/smoke.sql +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/tests/scripts/test_sql_scripts.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/tests/test_api.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/tests/test_ast.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/tests/test_ast_parser.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/tests/test_config.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/tests/test_config_data.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/tests/test_config_extended.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/tests/test_debug_repl.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/tests/test_engine.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/tests/test_error_messages.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/tests/test_exceptions.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/tests/test_executor.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/tests/test_format.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/tests/test_mail.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/tests/test_models.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/tests/test_package.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/tests/test_parser.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/tests/test_plugins.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/tests/test_registry.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/tests/test_script.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/tests/test_state.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/tests/test_types.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/tests/utils/__init__.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/tests/utils/test_auth.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/tests/utils/test_auth_extra.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/tests/utils/test_crypto.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/tests/utils/test_datetime.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/tests/utils/test_errors.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/tests/utils/test_errors_extra.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/tests/utils/test_fileio.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/tests/utils/test_fileio_extra.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/tests/utils/test_numeric.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/tests/utils/test_regex.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/tests/utils/test_strings.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/tests/utils/test_timer.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/tests/utils/test_timer_extra.py +0 -0
- {execsql2-2.16.2 → execsql2-2.16.3}/zensical.toml +0 -0
|
@@ -13,6 +13,14 @@ ______________________________________________________________________
|
|
|
13
13
|
|
|
14
14
|
______________________________________________________________________
|
|
15
15
|
|
|
16
|
+
## [2.16.3] - 2026-04-30
|
|
17
|
+
|
|
18
|
+
### Fixed
|
|
19
|
+
|
|
20
|
+
- `BEGIN SCRIPT name(params)` without a space before the opening parenthesis now parses correctly. The AST parser regex required whitespace between the script name and parameter list, causing `BEGIN SCRIPT` to be silently ignored and the matching `END SCRIPT` to fail with "Unmatched END SCRIPT metacommand."
|
|
21
|
+
|
|
22
|
+
______________________________________________________________________
|
|
23
|
+
|
|
16
24
|
## [2.16.2] - 2026-04-30
|
|
17
25
|
|
|
18
26
|
### Fixed
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: execsql2
|
|
3
|
-
Version: 2.16.
|
|
3
|
+
Version: 2.16.3
|
|
4
4
|
Summary: Runs a SQL script against a PostgreSQL, SQLite, MariaDB/MySQL, DuckDB, Firebird, MS-Access, MS-SQL-Server, or Oracle database, or an ODBC DSN. Provides metacommands to import and export data, copy data between databases, conditionally execute SQL and metacommands, and dynamically alter SQL and metacommands with substitution variables.
|
|
5
5
|
Project-URL: Homepage, https://execsql2.readthedocs.io
|
|
6
6
|
Project-URL: Repository, https://github.com/geocoug/execsql
|
|
@@ -313,6 +313,7 @@ These are behavioral changes driven by security or correctness issues in the ups
|
|
|
313
313
|
| `shlex.split` on Windows incorrect mode | Called without `posix=False` on Windows, mishandling backslash-heavy paths in SHELL commands. Inherited from upstream. |
|
|
314
314
|
| AST executor `~`/`+` variable scoping broken | The AST executor passed `localvars` through function parameters but never pushed `CommandList` frames onto `commandliststack`. Legacy metacommand handlers (`x_sub`, `x_rm_sub`, `xf_sub_defined`, `SUB_LOCAL`, prompt handlers, REPL) access `commandliststack[-1]` for `~` local and `+` outer-scope variables. This caused `~` vars to be invisible to SQL, `SUB_DEFINED(~var)` to always return false, and the REPL `.vars`/`.stack` to show empty state. Fixed by pushing/popping `CommandList` frames in `execute()` and `_execute_script_native()`. |
|
|
315
315
|
| AST parser INCLUDE quoted paths broken | The AST parser captured the full INCLUDE target including surrounding quotes (`"path"`), but the legacy dispatch regex stripped them. Quoted INCLUDE paths failed with "File does not exist" even when the file was present. Fixed by stripping matched quote pairs in the parser. |
|
|
316
|
+
| AST parser `BEGIN SCRIPT name(params)` rejected | The regex required whitespace between the script name and parameter list. `BEGIN SCRIPT foo(a,b)` (no space before `(`) silently failed to match, causing the matching `END SCRIPT` to raise "Unmatched END SCRIPT metacommand." Fixed by allowing optional whitespace before the parameter expression. |
|
|
316
317
|
|
|
317
318
|
______________________________________________________________________
|
|
318
319
|
|
|
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "execsql2"
|
|
7
|
-
version = "2.16.
|
|
7
|
+
version = "2.16.3"
|
|
8
8
|
description = "Runs a SQL script against a PostgreSQL, SQLite, MariaDB/MySQL, DuckDB, Firebird, MS-Access, MS-SQL-Server, or Oracle database, or an ODBC DSN. Provides metacommands to import and export data, copy data between databases, conditionally execute SQL and metacommands, and dynamically alter SQL and metacommands with substitution variables."
|
|
9
9
|
readme = { file = "README.md", content-type = "text/markdown" }
|
|
10
10
|
license = { file = "LICENSE.txt" }
|
|
@@ -165,7 +165,7 @@ skip-magic-trailing-comma = false
|
|
|
165
165
|
line-ending = "auto"
|
|
166
166
|
|
|
167
167
|
[tool.bumpversion]
|
|
168
|
-
current_version = "2.16.
|
|
168
|
+
current_version = "2.16.3"
|
|
169
169
|
commit = true
|
|
170
170
|
tag = true
|
|
171
171
|
tag_name = "v{new_version}"
|
|
@@ -60,7 +60,7 @@ __all__ = [
|
|
|
60
60
|
# ---------------------------------------------------------------------------
|
|
61
61
|
|
|
62
62
|
_BEGIN_SCRIPT_RX = re.compile(
|
|
63
|
-
r"^\s*(?:BEGIN|CREATE)\s+SCRIPT\s+(?P<name>\w+)(?P<paramexpr>\s
|
|
63
|
+
r"^\s*(?:BEGIN|CREATE)\s+SCRIPT\s+(?P<name>\w+)(?P<paramexpr>\s*.+)?$",
|
|
64
64
|
re.I,
|
|
65
65
|
)
|
|
66
66
|
_END_SCRIPT_RX = re.compile(
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{execsql2-2.16.2 → execsql2-2.16.3}/extras/plugin-template/src/execsql_plugin_YOURNAME/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|