execsql2 2.1.1__tar.gz → 2.1.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.
Files changed (232) hide show
  1. {execsql2-2.1.1 → execsql2-2.1.2}/.pre-commit-config.yaml +2 -1
  2. {execsql2-2.1.1 → execsql2-2.1.2}/.readthedocs.yaml +2 -1
  3. {execsql2-2.1.1 → execsql2-2.1.2}/CHANGELOG.md +16 -0
  4. {execsql2-2.1.1 → execsql2-2.1.2}/PKG-INFO +7 -2
  5. {execsql2-2.1.1 → execsql2-2.1.2}/README.md +6 -1
  6. {execsql2-2.1.1 → execsql2-2.1.2}/docs/api/cli.md +1 -1
  7. {execsql2-2.1.1 → execsql2-2.1.2}/docs/index.md +11 -11
  8. {execsql2-2.1.1 → execsql2-2.1.2}/pyproject.toml +2 -2
  9. {execsql2-2.1.1 → execsql2-2.1.2}/uv.lock +1 -1
  10. {execsql2-2.1.1 → execsql2-2.1.2}/.claude/agents/changelog-manager.md +0 -0
  11. {execsql2-2.1.1 → execsql2-2.1.2}/.claude/agents/code-oracle.md +0 -0
  12. {execsql2-2.1.1 → execsql2-2.1.2}/.claude/agents/code-reviewer.md +0 -0
  13. {execsql2-2.1.1 → execsql2-2.1.2}/.claude/agents/docs-author.md +0 -0
  14. {execsql2-2.1.1 → execsql2-2.1.2}/.claude/agents/migration-coder.md +0 -0
  15. {execsql2-2.1.1 → execsql2-2.1.2}/.claude/agents/monolith-navigator.md +0 -0
  16. {execsql2-2.1.1 → execsql2-2.1.2}/.claude/agents/test-engineer.md +0 -0
  17. {execsql2-2.1.1 → execsql2-2.1.2}/.claude/commands/code-oracle.md +0 -0
  18. {execsql2-2.1.1 → execsql2-2.1.2}/.claude/commands/migrate.md +0 -0
  19. {execsql2-2.1.1 → execsql2-2.1.2}/.claude/commands/review-changes.md +0 -0
  20. {execsql2-2.1.1 → execsql2-2.1.2}/.claude/commands/test-module.md +0 -0
  21. {execsql2-2.1.1 → execsql2-2.1.2}/.claude/commands/update-changelog.md +0 -0
  22. {execsql2-2.1.1 → execsql2-2.1.2}/.claude/commands/where-is.md +0 -0
  23. {execsql2-2.1.1 → execsql2-2.1.2}/.claude/project_context.md +0 -0
  24. {execsql2-2.1.1 → execsql2-2.1.2}/.github/workflows/ci-cd.yml +0 -0
  25. {execsql2-2.1.1 → execsql2-2.1.2}/.gitignore +0 -0
  26. {execsql2-2.1.1 → execsql2-2.1.2}/.python-version +0 -0
  27. {execsql2-2.1.1 → execsql2-2.1.2}/CONTRIBUTING.md +0 -0
  28. {execsql2-2.1.1 → execsql2-2.1.2}/LICENSE.txt +0 -0
  29. {execsql2-2.1.1 → execsql2-2.1.2}/NOTICE +0 -0
  30. {execsql2-2.1.1 → execsql2-2.1.2}/docs/api/db.md +0 -0
  31. {execsql2-2.1.1 → execsql2-2.1.2}/docs/api/exporters.md +0 -0
  32. {execsql2-2.1.1 → execsql2-2.1.2}/docs/api/importers.md +0 -0
  33. {execsql2-2.1.1 → execsql2-2.1.2}/docs/api/index.md +0 -0
  34. {execsql2-2.1.1 → execsql2-2.1.2}/docs/api/metacommands.md +0 -0
  35. {execsql2-2.1.1 → execsql2-2.1.2}/docs/change_log.md +0 -0
  36. {execsql2-2.1.1 → execsql2-2.1.2}/docs/configuration.md +0 -0
  37. {execsql2-2.1.1 → execsql2-2.1.2}/docs/contributors.md +0 -0
  38. {execsql2-2.1.1 → execsql2-2.1.2}/docs/copyright.md +0 -0
  39. {execsql2-2.1.1 → execsql2-2.1.2}/docs/debugging.md +0 -0
  40. {execsql2-2.1.1 → execsql2-2.1.2}/docs/dev/adding_db_adapters.md +0 -0
  41. {execsql2-2.1.1 → execsql2-2.1.2}/docs/dev/adding_exporters.md +0 -0
  42. {execsql2-2.1.1 → execsql2-2.1.2}/docs/dev/adding_importers.md +0 -0
  43. {execsql2-2.1.1 → execsql2-2.1.2}/docs/dev/adding_metacommands.md +0 -0
  44. {execsql2-2.1.1 → execsql2-2.1.2}/docs/documentation.md +0 -0
  45. {execsql2-2.1.1 → execsql2-2.1.2}/docs/encoding.md +0 -0
  46. {execsql2-2.1.1 → execsql2-2.1.2}/docs/examples.md +0 -0
  47. {execsql2-2.1.1 → execsql2-2.1.2}/docs/formatter.md +0 -0
  48. {execsql2-2.1.1 → execsql2-2.1.2}/docs/images/Compare_planets.png +0 -0
  49. {execsql2-2.1.1 → execsql2-2.1.2}/docs/images/actions.png +0 -0
  50. {execsql2-2.1.1 → execsql2-2.1.2}/docs/images/actions2.png +0 -0
  51. {execsql2-2.1.1 → execsql2-2.1.2}/docs/images/checkboxes.png +0 -0
  52. {execsql2-2.1.1 → execsql2-2.1.2}/docs/images/connect.b64 +0 -0
  53. {execsql2-2.1.1 → execsql2-2.1.2}/docs/images/connect.png +0 -0
  54. {execsql2-2.1.1 → execsql2-2.1.2}/docs/images/create_conf.png +0 -0
  55. {execsql2-2.1.1 → execsql2-2.1.2}/docs/images/data_error1_screenshot.jpg +0 -0
  56. {execsql2-2.1.1 → execsql2-2.1.2}/docs/images/entry_form.png +0 -0
  57. {execsql2-2.1.1 → execsql2-2.1.2}/docs/images/execsql_console.png +0 -0
  58. {execsql2-2.1.1 → execsql2-2.1.2}/docs/images/execsql_logo_01.png +0 -0
  59. {execsql2-2.1.1 → execsql2-2.1.2}/docs/images/fatals.png +0 -0
  60. {execsql2-2.1.1 → execsql2-2.1.2}/docs/images/logo_small.png +0 -0
  61. {execsql2-2.1.1 → execsql2-2.1.2}/docs/images/pause_terminal.png +0 -0
  62. {execsql2-2.1.1 → execsql2-2.1.2}/docs/images/pause_terminal_sm.b64 +0 -0
  63. {execsql2-2.1.1 → execsql2-2.1.2}/docs/images/pause_terminal_sm.png +0 -0
  64. {execsql2-2.1.1 → execsql2-2.1.2}/docs/images/prompt_compare.png +0 -0
  65. {execsql2-2.1.1 → execsql2-2.1.2}/docs/images/set_build_commands.jpg +0 -0
  66. {execsql2-2.1.1 → execsql2-2.1.2}/docs/images/unit_conversions.b64 +0 -0
  67. {execsql2-2.1.1 → execsql2-2.1.2}/docs/images/unit_conversions_029.png +0 -0
  68. {execsql2-2.1.1 → execsql2-2.1.2}/docs/images/unmatched.png +0 -0
  69. {execsql2-2.1.1 → execsql2-2.1.2}/docs/images/vim_execsql_highlight.png +0 -0
  70. {execsql2-2.1.1 → execsql2-2.1.2}/docs/installation.md +0 -0
  71. {execsql2-2.1.1 → execsql2-2.1.2}/docs/logging.md +0 -0
  72. {execsql2-2.1.1 → execsql2-2.1.2}/docs/metacommands.md +0 -0
  73. {execsql2-2.1.1 → execsql2-2.1.2}/docs/requirements.md +0 -0
  74. {execsql2-2.1.1 → execsql2-2.1.2}/docs/sql_syntax.md +0 -0
  75. {execsql2-2.1.1 → execsql2-2.1.2}/docs/substitution_vars.md +0 -0
  76. {execsql2-2.1.1 → execsql2-2.1.2}/docs/syntax.md +0 -0
  77. {execsql2-2.1.1 → execsql2-2.1.2}/docs/usage.md +0 -0
  78. {execsql2-2.1.1 → execsql2-2.1.2}/docs/using_scripts.md +0 -0
  79. {execsql2-2.1.1 → execsql2-2.1.2}/justfile +0 -0
  80. {execsql2-2.1.1 → execsql2-2.1.2}/src/execsql/__init__.py +0 -0
  81. {execsql2-2.1.1 → execsql2-2.1.2}/src/execsql/__main__.py +0 -0
  82. {execsql2-2.1.1 → execsql2-2.1.2}/src/execsql/cli.py +0 -0
  83. {execsql2-2.1.1 → execsql2-2.1.2}/src/execsql/config.py +0 -0
  84. {execsql2-2.1.1 → execsql2-2.1.2}/src/execsql/constants.py +0 -0
  85. {execsql2-2.1.1 → execsql2-2.1.2}/src/execsql/db/__init__.py +0 -0
  86. {execsql2-2.1.1 → execsql2-2.1.2}/src/execsql/db/access.py +0 -0
  87. {execsql2-2.1.1 → execsql2-2.1.2}/src/execsql/db/base.py +0 -0
  88. {execsql2-2.1.1 → execsql2-2.1.2}/src/execsql/db/dsn.py +0 -0
  89. {execsql2-2.1.1 → execsql2-2.1.2}/src/execsql/db/duckdb.py +0 -0
  90. {execsql2-2.1.1 → execsql2-2.1.2}/src/execsql/db/factory.py +0 -0
  91. {execsql2-2.1.1 → execsql2-2.1.2}/src/execsql/db/firebird.py +0 -0
  92. {execsql2-2.1.1 → execsql2-2.1.2}/src/execsql/db/mysql.py +0 -0
  93. {execsql2-2.1.1 → execsql2-2.1.2}/src/execsql/db/oracle.py +0 -0
  94. {execsql2-2.1.1 → execsql2-2.1.2}/src/execsql/db/postgres.py +0 -0
  95. {execsql2-2.1.1 → execsql2-2.1.2}/src/execsql/db/sqlite.py +0 -0
  96. {execsql2-2.1.1 → execsql2-2.1.2}/src/execsql/db/sqlserver.py +0 -0
  97. {execsql2-2.1.1 → execsql2-2.1.2}/src/execsql/exceptions.py +0 -0
  98. {execsql2-2.1.1 → execsql2-2.1.2}/src/execsql/exporters/__init__.py +0 -0
  99. {execsql2-2.1.1 → execsql2-2.1.2}/src/execsql/exporters/base.py +0 -0
  100. {execsql2-2.1.1 → execsql2-2.1.2}/src/execsql/exporters/delimited.py +0 -0
  101. {execsql2-2.1.1 → execsql2-2.1.2}/src/execsql/exporters/duckdb.py +0 -0
  102. {execsql2-2.1.1 → execsql2-2.1.2}/src/execsql/exporters/feather.py +0 -0
  103. {execsql2-2.1.1 → execsql2-2.1.2}/src/execsql/exporters/html.py +0 -0
  104. {execsql2-2.1.1 → execsql2-2.1.2}/src/execsql/exporters/json.py +0 -0
  105. {execsql2-2.1.1 → execsql2-2.1.2}/src/execsql/exporters/latex.py +0 -0
  106. {execsql2-2.1.1 → execsql2-2.1.2}/src/execsql/exporters/ods.py +0 -0
  107. {execsql2-2.1.1 → execsql2-2.1.2}/src/execsql/exporters/parquet.py +0 -0
  108. {execsql2-2.1.1 → execsql2-2.1.2}/src/execsql/exporters/pretty.py +0 -0
  109. {execsql2-2.1.1 → execsql2-2.1.2}/src/execsql/exporters/raw.py +0 -0
  110. {execsql2-2.1.1 → execsql2-2.1.2}/src/execsql/exporters/sqlite.py +0 -0
  111. {execsql2-2.1.1 → execsql2-2.1.2}/src/execsql/exporters/templates.py +0 -0
  112. {execsql2-2.1.1 → execsql2-2.1.2}/src/execsql/exporters/values.py +0 -0
  113. {execsql2-2.1.1 → execsql2-2.1.2}/src/execsql/exporters/xls.py +0 -0
  114. {execsql2-2.1.1 → execsql2-2.1.2}/src/execsql/exporters/xml.py +0 -0
  115. {execsql2-2.1.1 → execsql2-2.1.2}/src/execsql/exporters/zip.py +0 -0
  116. {execsql2-2.1.1 → execsql2-2.1.2}/src/execsql/format.py +0 -0
  117. {execsql2-2.1.1 → execsql2-2.1.2}/src/execsql/gui/__init__.py +0 -0
  118. {execsql2-2.1.1 → execsql2-2.1.2}/src/execsql/gui/base.py +0 -0
  119. {execsql2-2.1.1 → execsql2-2.1.2}/src/execsql/gui/console.py +0 -0
  120. {execsql2-2.1.1 → execsql2-2.1.2}/src/execsql/gui/desktop.py +0 -0
  121. {execsql2-2.1.1 → execsql2-2.1.2}/src/execsql/gui/tui.py +0 -0
  122. {execsql2-2.1.1 → execsql2-2.1.2}/src/execsql/importers/__init__.py +0 -0
  123. {execsql2-2.1.1 → execsql2-2.1.2}/src/execsql/importers/base.py +0 -0
  124. {execsql2-2.1.1 → execsql2-2.1.2}/src/execsql/importers/csv.py +0 -0
  125. {execsql2-2.1.1 → execsql2-2.1.2}/src/execsql/importers/feather.py +0 -0
  126. {execsql2-2.1.1 → execsql2-2.1.2}/src/execsql/importers/ods.py +0 -0
  127. {execsql2-2.1.1 → execsql2-2.1.2}/src/execsql/importers/xls.py +0 -0
  128. {execsql2-2.1.1 → execsql2-2.1.2}/src/execsql/metacommands/__init__.py +0 -0
  129. {execsql2-2.1.1 → execsql2-2.1.2}/src/execsql/metacommands/conditions.py +0 -0
  130. {execsql2-2.1.1 → execsql2-2.1.2}/src/execsql/metacommands/connect.py +0 -0
  131. {execsql2-2.1.1 → execsql2-2.1.2}/src/execsql/metacommands/control.py +0 -0
  132. {execsql2-2.1.1 → execsql2-2.1.2}/src/execsql/metacommands/data.py +0 -0
  133. {execsql2-2.1.1 → execsql2-2.1.2}/src/execsql/metacommands/debug.py +0 -0
  134. {execsql2-2.1.1 → execsql2-2.1.2}/src/execsql/metacommands/io.py +0 -0
  135. {execsql2-2.1.1 → execsql2-2.1.2}/src/execsql/metacommands/prompt.py +0 -0
  136. {execsql2-2.1.1 → execsql2-2.1.2}/src/execsql/metacommands/script_ext.py +0 -0
  137. {execsql2-2.1.1 → execsql2-2.1.2}/src/execsql/metacommands/system.py +0 -0
  138. {execsql2-2.1.1 → execsql2-2.1.2}/src/execsql/models.py +0 -0
  139. {execsql2-2.1.1 → execsql2-2.1.2}/src/execsql/parser.py +0 -0
  140. {execsql2-2.1.1 → execsql2-2.1.2}/src/execsql/script.py +0 -0
  141. {execsql2-2.1.1 → execsql2-2.1.2}/src/execsql/state.py +0 -0
  142. {execsql2-2.1.1 → execsql2-2.1.2}/src/execsql/types.py +0 -0
  143. {execsql2-2.1.1 → execsql2-2.1.2}/src/execsql/utils/__init__.py +0 -0
  144. {execsql2-2.1.1 → execsql2-2.1.2}/src/execsql/utils/auth.py +0 -0
  145. {execsql2-2.1.1 → execsql2-2.1.2}/src/execsql/utils/crypto.py +0 -0
  146. {execsql2-2.1.1 → execsql2-2.1.2}/src/execsql/utils/datetime.py +0 -0
  147. {execsql2-2.1.1 → execsql2-2.1.2}/src/execsql/utils/errors.py +0 -0
  148. {execsql2-2.1.1 → execsql2-2.1.2}/src/execsql/utils/fileio.py +0 -0
  149. {execsql2-2.1.1 → execsql2-2.1.2}/src/execsql/utils/gui.py +0 -0
  150. {execsql2-2.1.1 → execsql2-2.1.2}/src/execsql/utils/mail.py +0 -0
  151. {execsql2-2.1.1 → execsql2-2.1.2}/src/execsql/utils/numeric.py +0 -0
  152. {execsql2-2.1.1 → execsql2-2.1.2}/src/execsql/utils/regex.py +0 -0
  153. {execsql2-2.1.1 → execsql2-2.1.2}/src/execsql/utils/strings.py +0 -0
  154. {execsql2-2.1.1 → execsql2-2.1.2}/src/execsql/utils/timer.py +0 -0
  155. {execsql2-2.1.1 → execsql2-2.1.2}/templates/READ_ME.rst +0 -0
  156. {execsql2-2.1.1 → execsql2-2.1.2}/templates/config_settings.sqlite +0 -0
  157. {execsql2-2.1.1 → execsql2-2.1.2}/templates/example_config_prompt.sql +0 -0
  158. {execsql2-2.1.1 → execsql2-2.1.2}/templates/execsql.conf +0 -0
  159. {execsql2-2.1.1 → execsql2-2.1.2}/templates/make_config_db.sql +0 -0
  160. {execsql2-2.1.1 → execsql2-2.1.2}/templates/md_compare.sql +0 -0
  161. {execsql2-2.1.1 → execsql2-2.1.2}/templates/md_glossary.sql +0 -0
  162. {execsql2-2.1.1 → execsql2-2.1.2}/templates/md_upsert.sql +0 -0
  163. {execsql2-2.1.1 → execsql2-2.1.2}/templates/pg_compare.sql +0 -0
  164. {execsql2-2.1.1 → execsql2-2.1.2}/templates/pg_glossary.sql +0 -0
  165. {execsql2-2.1.1 → execsql2-2.1.2}/templates/pg_upsert.sql +0 -0
  166. {execsql2-2.1.1 → execsql2-2.1.2}/templates/script_template.sql +0 -0
  167. {execsql2-2.1.1 → execsql2-2.1.2}/templates/ss_compare.sql +0 -0
  168. {execsql2-2.1.1 → execsql2-2.1.2}/templates/ss_glossary.sql +0 -0
  169. {execsql2-2.1.1 → execsql2-2.1.2}/templates/ss_upsert.sql +0 -0
  170. {execsql2-2.1.1 → execsql2-2.1.2}/tests/__init__.py +0 -0
  171. {execsql2-2.1.1 → execsql2-2.1.2}/tests/conftest.py +0 -0
  172. {execsql2-2.1.1 → execsql2-2.1.2}/tests/db/__init__.py +0 -0
  173. {execsql2-2.1.1 → execsql2-2.1.2}/tests/db/test_base.py +0 -0
  174. {execsql2-2.1.1 → execsql2-2.1.2}/tests/db/test_duckdb.py +0 -0
  175. {execsql2-2.1.1 → execsql2-2.1.2}/tests/db/test_factory.py +0 -0
  176. {execsql2-2.1.1 → execsql2-2.1.2}/tests/db/test_postgres.py +0 -0
  177. {execsql2-2.1.1 → execsql2-2.1.2}/tests/db/test_sqlite.py +0 -0
  178. {execsql2-2.1.1 → execsql2-2.1.2}/tests/exporters/__init__.py +0 -0
  179. {execsql2-2.1.1 → execsql2-2.1.2}/tests/exporters/test_base.py +0 -0
  180. {execsql2-2.1.1 → execsql2-2.1.2}/tests/exporters/test_db.py +0 -0
  181. {execsql2-2.1.1 → execsql2-2.1.2}/tests/exporters/test_delimited.py +0 -0
  182. {execsql2-2.1.1 → execsql2-2.1.2}/tests/exporters/test_duckdb_exporter.py +0 -0
  183. {execsql2-2.1.1 → execsql2-2.1.2}/tests/exporters/test_exporters.py +0 -0
  184. {execsql2-2.1.1 → execsql2-2.1.2}/tests/exporters/test_feather.py +0 -0
  185. {execsql2-2.1.1 → execsql2-2.1.2}/tests/exporters/test_html_latex.py +0 -0
  186. {execsql2-2.1.1 → execsql2-2.1.2}/tests/exporters/test_json.py +0 -0
  187. {execsql2-2.1.1 → execsql2-2.1.2}/tests/exporters/test_ods.py +0 -0
  188. {execsql2-2.1.1 → execsql2-2.1.2}/tests/exporters/test_parquet.py +0 -0
  189. {execsql2-2.1.1 → execsql2-2.1.2}/tests/exporters/test_sqlite_exporter.py +0 -0
  190. {execsql2-2.1.1 → execsql2-2.1.2}/tests/exporters/test_templates.py +0 -0
  191. {execsql2-2.1.1 → execsql2-2.1.2}/tests/exporters/test_xls_xlsx.py +0 -0
  192. {execsql2-2.1.1 → execsql2-2.1.2}/tests/exporters/test_xml.py +0 -0
  193. {execsql2-2.1.1 → execsql2-2.1.2}/tests/exporters/test_zip.py +0 -0
  194. {execsql2-2.1.1 → execsql2-2.1.2}/tests/gui/__init__.py +0 -0
  195. {execsql2-2.1.1 → execsql2-2.1.2}/tests/gui/test_backends.py +0 -0
  196. {execsql2-2.1.1 → execsql2-2.1.2}/tests/importers/__init__.py +0 -0
  197. {execsql2-2.1.1 → execsql2-2.1.2}/tests/importers/test_csv_importer.py +0 -0
  198. {execsql2-2.1.1 → execsql2-2.1.2}/tests/importers/test_feather_importer.py +0 -0
  199. {execsql2-2.1.1 → execsql2-2.1.2}/tests/importers/test_ods_importer.py +0 -0
  200. {execsql2-2.1.1 → execsql2-2.1.2}/tests/importers/test_xls_importer.py +0 -0
  201. {execsql2-2.1.1 → execsql2-2.1.2}/tests/metacommands/__init__.py +0 -0
  202. {execsql2-2.1.1 → execsql2-2.1.2}/tests/metacommands/test_metacommands.py +0 -0
  203. {execsql2-2.1.1 → execsql2-2.1.2}/tests/metacommands/test_metacommands_connect.py +0 -0
  204. {execsql2-2.1.1 → execsql2-2.1.2}/tests/metacommands/test_metacommands_extended.py +0 -0
  205. {execsql2-2.1.1 → execsql2-2.1.2}/tests/metacommands/test_metacommands_io.py +0 -0
  206. {execsql2-2.1.1 → execsql2-2.1.2}/tests/metacommands/test_metacommands_script_ext.py +0 -0
  207. {execsql2-2.1.1 → execsql2-2.1.2}/tests/metacommands/test_metacommands_system.py +0 -0
  208. {execsql2-2.1.1 → execsql2-2.1.2}/tests/test_cli.py +0 -0
  209. {execsql2-2.1.1 → execsql2-2.1.2}/tests/test_config.py +0 -0
  210. {execsql2-2.1.1 → execsql2-2.1.2}/tests/test_config_data.py +0 -0
  211. {execsql2-2.1.1 → execsql2-2.1.2}/tests/test_constants.py +0 -0
  212. {execsql2-2.1.1 → execsql2-2.1.2}/tests/test_exceptions.py +0 -0
  213. {execsql2-2.1.1 → execsql2-2.1.2}/tests/test_format.py +0 -0
  214. {execsql2-2.1.1 → execsql2-2.1.2}/tests/test_integration.py +0 -0
  215. {execsql2-2.1.1 → execsql2-2.1.2}/tests/test_mail.py +0 -0
  216. {execsql2-2.1.1 → execsql2-2.1.2}/tests/test_models.py +0 -0
  217. {execsql2-2.1.1 → execsql2-2.1.2}/tests/test_package.py +0 -0
  218. {execsql2-2.1.1 → execsql2-2.1.2}/tests/test_parser.py +0 -0
  219. {execsql2-2.1.1 → execsql2-2.1.2}/tests/test_script.py +0 -0
  220. {execsql2-2.1.1 → execsql2-2.1.2}/tests/test_state.py +0 -0
  221. {execsql2-2.1.1 → execsql2-2.1.2}/tests/test_types.py +0 -0
  222. {execsql2-2.1.1 → execsql2-2.1.2}/tests/utils/__init__.py +0 -0
  223. {execsql2-2.1.1 → execsql2-2.1.2}/tests/utils/test_auth.py +0 -0
  224. {execsql2-2.1.1 → execsql2-2.1.2}/tests/utils/test_crypto.py +0 -0
  225. {execsql2-2.1.1 → execsql2-2.1.2}/tests/utils/test_datetime.py +0 -0
  226. {execsql2-2.1.1 → execsql2-2.1.2}/tests/utils/test_errors.py +0 -0
  227. {execsql2-2.1.1 → execsql2-2.1.2}/tests/utils/test_fileio.py +0 -0
  228. {execsql2-2.1.1 → execsql2-2.1.2}/tests/utils/test_numeric.py +0 -0
  229. {execsql2-2.1.1 → execsql2-2.1.2}/tests/utils/test_regex.py +0 -0
  230. {execsql2-2.1.1 → execsql2-2.1.2}/tests/utils/test_strings.py +0 -0
  231. {execsql2-2.1.1 → execsql2-2.1.2}/tests/utils/test_timer.py +0 -0
  232. {execsql2-2.1.1 → execsql2-2.1.2}/zensical.toml +0 -0
@@ -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.10.12
21
+ rev: 0.11.1
22
22
  hooks:
23
23
  - id: uv-lock
24
24
  # Base hooks
@@ -47,6 +47,7 @@ repos:
47
47
  - mdformat-mkdocs==5.1.1
48
48
  exclude: |
49
49
  (?x)^(
50
+ docs/api/.*|
50
51
  docs/metacommands\.md|
51
52
  docs/documentation\.md|
52
53
  docs/examples\.md
@@ -9,7 +9,8 @@ build:
9
9
  python: "3.13"
10
10
  jobs:
11
11
  install:
12
- - pip install zensical
12
+ - pip install zensical mkdocstrings-python
13
+ - pip install -e .
13
14
  pre_build:
14
15
  - cp CHANGELOG.md docs/change_log.md
15
16
  build:
@@ -13,6 +13,22 @@ ______________________________________________________________________
13
13
 
14
14
  ______________________________________________________________________
15
15
 
16
+ ## [2.1.2] - 2026-03-25
17
+
18
+ ### Changed
19
+
20
+ - Added PyPI version, Python versions, license, and Read the Docs badges to `README.md`.
21
+
22
+ ### Fixed
23
+
24
+ - Read the Docs build: added `mkdocstrings-python` and editable project install to `.readthedocs.yaml` so `mkdocstrings` can resolve API references.
25
+
26
+ - Fixed escaped underscore in `docs/api/cli.md` (`\_run` → `_run`) that caused `mkdocstrings` to fail resolving `execsql.cli._run`.
27
+
28
+ - Excluded `docs/api/` from `mdformat` pre-commit hook to prevent it from re-escaping underscores in `mkdocstrings` `:::` directives.
29
+
30
+ ______________________________________________________________________
31
+
16
32
  ## [2.1.1] - 2026-03-25
17
33
 
18
34
  ### Added
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: execsql2
3
- Version: 2.1.1
3
+ Version: 2.1.2
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: Repository, https://github.com/geocoug/execsql
6
6
  Project-URL: Issues, https://github.com/geocoug/execsql/issues
@@ -105,7 +105,8 @@ Description-Content-Type: text/markdown
105
105
  > Not recommended for production use. For the stable upstream release, see [execsql](https://execsql.readthedocs.io/).
106
106
 
107
107
  <div align="center">
108
- ![execsql logo](https://execsql2.readthedocs.io/en/latest/images/execsql_logo_01.png)
108
+
109
+ <img src="https://execsql2.readthedocs.io/en/latest/images/execsql_logo_01.png" alt="execsql logo">
109
110
 
110
111
  *Multi-DBMS SQL script processor.*
111
112
 
@@ -115,6 +116,10 @@ Description-Content-Type: text/markdown
115
116
 
116
117
  [![CI/CD](https://github.com/geocoug/execsql/actions/workflows/ci-cd.yml/badge.svg)](https://github.com/geocoug/execsql/actions/workflows/ci-cd.yml)
117
118
  [![codecov](https://codecov.io/gh/geocoug/execsql/graph/badge.svg)](https://codecov.io/gh/geocoug/execsql)
119
+ [![Docs](https://readthedocs.org/projects/execsql2/badge/)](https://execsql2.readthedocs.io/)
120
+ [![PyPI](https://img.shields.io/pypi/v/execsql2)](https://pypi.org/project/execsql2/)
121
+ [![Python](https://img.shields.io/pypi/pyversions/execsql2)](https://pypi.org/project/execsql2/)
122
+ [![License](https://img.shields.io/pypi/l/execsql2)](https://pypi.org/project/execsql2/)
118
123
  [![Downloads](https://pepy.tech/badge/execsql2/month)](https://pepy.tech/project/execsql2)
119
124
 
120
125
  </div>
@@ -5,7 +5,8 @@
5
5
  > Not recommended for production use. For the stable upstream release, see [execsql](https://execsql.readthedocs.io/).
6
6
 
7
7
  <div align="center">
8
- ![execsql logo](https://execsql2.readthedocs.io/en/latest/images/execsql_logo_01.png)
8
+
9
+ <img src="https://execsql2.readthedocs.io/en/latest/images/execsql_logo_01.png" alt="execsql logo">
9
10
 
10
11
  *Multi-DBMS SQL script processor.*
11
12
 
@@ -15,6 +16,10 @@
15
16
 
16
17
  [![CI/CD](https://github.com/geocoug/execsql/actions/workflows/ci-cd.yml/badge.svg)](https://github.com/geocoug/execsql/actions/workflows/ci-cd.yml)
17
18
  [![codecov](https://codecov.io/gh/geocoug/execsql/graph/badge.svg)](https://codecov.io/gh/geocoug/execsql)
19
+ [![Docs](https://readthedocs.org/projects/execsql2/badge/)](https://execsql2.readthedocs.io/)
20
+ [![PyPI](https://img.shields.io/pypi/v/execsql2)](https://pypi.org/project/execsql2/)
21
+ [![Python](https://img.shields.io/pypi/pyversions/execsql2)](https://pypi.org/project/execsql2/)
22
+ [![License](https://img.shields.io/pypi/l/execsql2)](https://pypi.org/project/execsql2/)
18
23
  [![Downloads](https://pepy.tech/badge/execsql2/month)](https://pepy.tech/project/execsql2)
19
24
 
20
25
  </div>
@@ -16,6 +16,6 @@ members: false
16
16
 
17
17
  ## Core execution
18
18
 
19
- ::: execsql.cli.\_run
19
+ ::: execsql.cli._run
20
20
  options:
21
21
  show_signature_annotations: false
@@ -8,17 +8,17 @@
8
8
 
9
9
  You can use *execsql* to:
10
10
 
11
- > - Import data from text files and spreadsheets into a database.
12
- > - Export tables and views to text files, OpenDocument spreadsheets, HTML, JSON, LaTeΧ, XML, or 17 other data formats.
13
- > - Copy data between different databases, even databases using different DBMSs.
14
- > - Display tables or views on the terminal or in a GUI dialog window.
15
- > - Export data using template processors to produce non-tabular output with customized format and contents.
16
- > - Conditionally execute different SQL commands and metacommands based on the DBMS in use, the database in use, data values, user input, and other conditions.
17
- > - Execute blocks of SQL statements and metacommands repeatedly, using any of three different looping methods.
18
- > - Prompt the user to select files or directories, answer questions, or enter data values.
19
- > - Allow the user to visually compare two tables or views.
20
- > - Serve data tables to a web application when used as a CGI script.
21
- > - Write messages to the console or to a file during the processing of a SQL script. These messages can be used to display the progress of the script or create a custom log of the operations that have been carried out or results obtained. Status messages and data exported in text format can be combined in a single text file. Data tables can be exported in a text format that is compatible with Markdown pipe tables, so that script output can be converted into a variety of document formats (see [Example 8](examples.md#example8) and [Example 11](examples.md#example11)).
11
+ - Import data from text files and spreadsheets into a database.
12
+ - Export tables and views to text files, OpenDocument spreadsheets, HTML, JSON, LaTeΧ, XML, or 17 other data formats.
13
+ - Copy data between different databases, even databases using different DBMSs.
14
+ - Display tables or views on the terminal or in a GUI dialog window.
15
+ - Export data using template processors to produce non-tabular output with customized format and contents.
16
+ - Conditionally execute different SQL commands and metacommands based on the DBMS in use, the database in use, data values, user input, and other conditions.
17
+ - Execute blocks of SQL statements and metacommands repeatedly, using any of three different looping methods.
18
+ - Prompt the user to select files or directories, answer questions, or enter data values.
19
+ - Allow the user to visually compare two tables or views.
20
+ - Serve data tables to a web application when used as a CGI script.
21
+ - Write messages to the console or to a file during the processing of a SQL script. These messages can be used to display the progress of the script or create a custom log of the operations that have been carried out or results obtained. Status messages and data exported in text format can be combined in a single text file. Data tables can be exported in a text format that is compatible with Markdown pipe tables, so that script output can be converted into a variety of document formats (see [Example 8](examples.md#example8) and [Example 11](examples.md#example11)).
22
22
 
23
23
  Different DBMSs and DBMS-specific client programs provide different and incompatible extensions to SQL, ordinarily to allow interactions with the file system and to allow conditional tests and looping. Some DBMSs do not have any native extensions of this sort. *execsql* provides these features, as well as features for user interaction, in an identical fashion for all supported DBMSs. This allows standardization of the SQL scripting language used for different types of database management systems.
24
24
 
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "execsql2"
7
- version = "2.1.1"
7
+ version = "2.1.2"
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" }
@@ -153,7 +153,7 @@ skip-magic-trailing-comma = false
153
153
  line-ending = "auto"
154
154
 
155
155
  [tool.bumpversion]
156
- current_version = "2.1.1"
156
+ current_version = "2.1.2"
157
157
  commit = true
158
158
  commit_args = "--no-verify"
159
159
  tag = true
@@ -657,7 +657,7 @@ wheels = [
657
657
 
658
658
  [[package]]
659
659
  name = "execsql2"
660
- version = "2.1.1"
660
+ version = "2.1.2"
661
661
  source = { editable = "." }
662
662
  dependencies = [
663
663
  { name = "rich" },
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