execsql2 2.17.2__tar.gz → 2.17.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.
Files changed (338) hide show
  1. {execsql2-2.17.2 → execsql2-2.17.3}/.gitignore +1 -0
  2. {execsql2-2.17.2 → execsql2-2.17.3}/CHANGELOG.md +8 -0
  3. {execsql2-2.17.2 → execsql2-2.17.3}/PKG-INFO +3 -3
  4. {execsql2-2.17.2 → execsql2-2.17.3}/pyproject.toml +3 -3
  5. {execsql2-2.17.2 → execsql2-2.17.3}/uv.lock +5 -5
  6. execsql2-2.17.2/examples/prompt_map_demo.sql +0 -68
  7. {execsql2-2.17.2 → execsql2-2.17.3}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  8. {execsql2-2.17.2 → execsql2-2.17.3}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
  9. {execsql2-2.17.2 → execsql2-2.17.3}/.github/workflows/ci-cd.yml +0 -0
  10. {execsql2-2.17.2 → execsql2-2.17.3}/.pre-commit-config.yaml +0 -0
  11. {execsql2-2.17.2 → execsql2-2.17.3}/.pre-commit-hooks.yaml +0 -0
  12. {execsql2-2.17.2 → execsql2-2.17.3}/.python-version +0 -0
  13. {execsql2-2.17.2 → execsql2-2.17.3}/.readthedocs.yaml +0 -0
  14. {execsql2-2.17.2 → execsql2-2.17.3}/CONTRIBUTING.md +0 -0
  15. {execsql2-2.17.2 → execsql2-2.17.3}/LICENSE.txt +0 -0
  16. {execsql2-2.17.2 → execsql2-2.17.3}/NOTICE +0 -0
  17. {execsql2-2.17.2 → execsql2-2.17.3}/README.md +0 -0
  18. {execsql2-2.17.2 → execsql2-2.17.3}/SECURITY.md +0 -0
  19. {execsql2-2.17.2 → execsql2-2.17.3}/docs/about/contributors.md +0 -0
  20. {execsql2-2.17.2 → execsql2-2.17.3}/docs/about/copyright.md +0 -0
  21. {execsql2-2.17.2 → execsql2-2.17.3}/docs/about/divergence.md +0 -0
  22. {execsql2-2.17.2 → execsql2-2.17.3}/docs/api/cli.md +0 -0
  23. {execsql2-2.17.2 → execsql2-2.17.3}/docs/api/db.md +0 -0
  24. {execsql2-2.17.2 → execsql2-2.17.3}/docs/api/exporters.md +0 -0
  25. {execsql2-2.17.2 → execsql2-2.17.3}/docs/api/importers.md +0 -0
  26. {execsql2-2.17.2 → execsql2-2.17.3}/docs/api/index.md +0 -0
  27. {execsql2-2.17.2 → execsql2-2.17.3}/docs/api/metacommands.md +0 -0
  28. {execsql2-2.17.2 → execsql2-2.17.3}/docs/dev/adding_db_adapters.md +0 -0
  29. {execsql2-2.17.2 → execsql2-2.17.3}/docs/dev/adding_exporters.md +0 -0
  30. {execsql2-2.17.2 → execsql2-2.17.3}/docs/dev/adding_importers.md +0 -0
  31. {execsql2-2.17.2 → execsql2-2.17.3}/docs/dev/adding_metacommands.md +0 -0
  32. {execsql2-2.17.2 → execsql2-2.17.3}/docs/dev/architecture.md +0 -0
  33. {execsql2-2.17.2 → execsql2-2.17.3}/docs/getting-started/installation.md +0 -0
  34. {execsql2-2.17.2 → execsql2-2.17.3}/docs/getting-started/requirements.md +0 -0
  35. {execsql2-2.17.2 → execsql2-2.17.3}/docs/getting-started/syntax.md +0 -0
  36. {execsql2-2.17.2 → execsql2-2.17.3}/docs/guides/debugging.md +0 -0
  37. {execsql2-2.17.2 → execsql2-2.17.3}/docs/guides/documentation.md +0 -0
  38. {execsql2-2.17.2 → execsql2-2.17.3}/docs/guides/encoding.md +0 -0
  39. {execsql2-2.17.2 → execsql2-2.17.3}/docs/guides/examples.md +0 -0
  40. {execsql2-2.17.2 → execsql2-2.17.3}/docs/guides/formatter.md +0 -0
  41. {execsql2-2.17.2 → execsql2-2.17.3}/docs/guides/logging.md +0 -0
  42. {execsql2-2.17.2 → execsql2-2.17.3}/docs/guides/sql_syntax.md +0 -0
  43. {execsql2-2.17.2 → execsql2-2.17.3}/docs/guides/usage.md +0 -0
  44. {execsql2-2.17.2 → execsql2-2.17.3}/docs/guides/using_scripts.md +0 -0
  45. {execsql2-2.17.2 → execsql2-2.17.3}/docs/images/Compare_planets.png +0 -0
  46. {execsql2-2.17.2 → execsql2-2.17.3}/docs/images/actions.png +0 -0
  47. {execsql2-2.17.2 → execsql2-2.17.3}/docs/images/actions2.png +0 -0
  48. {execsql2-2.17.2 → execsql2-2.17.3}/docs/images/checkboxes.png +0 -0
  49. {execsql2-2.17.2 → execsql2-2.17.3}/docs/images/connect.b64 +0 -0
  50. {execsql2-2.17.2 → execsql2-2.17.3}/docs/images/connect.png +0 -0
  51. {execsql2-2.17.2 → execsql2-2.17.3}/docs/images/create_conf.png +0 -0
  52. {execsql2-2.17.2 → execsql2-2.17.3}/docs/images/data_error1_screenshot.jpg +0 -0
  53. {execsql2-2.17.2 → execsql2-2.17.3}/docs/images/entry_form.png +0 -0
  54. {execsql2-2.17.2 → execsql2-2.17.3}/docs/images/execsql_console.png +0 -0
  55. {execsql2-2.17.2 → execsql2-2.17.3}/docs/images/execsql_logo_01.png +0 -0
  56. {execsql2-2.17.2 → execsql2-2.17.3}/docs/images/fatals.png +0 -0
  57. {execsql2-2.17.2 → execsql2-2.17.3}/docs/images/logo_small.png +0 -0
  58. {execsql2-2.17.2 → execsql2-2.17.3}/docs/images/pause_terminal.png +0 -0
  59. {execsql2-2.17.2 → execsql2-2.17.3}/docs/images/pause_terminal_sm.b64 +0 -0
  60. {execsql2-2.17.2 → execsql2-2.17.3}/docs/images/pause_terminal_sm.png +0 -0
  61. {execsql2-2.17.2 → execsql2-2.17.3}/docs/images/prompt_compare.png +0 -0
  62. {execsql2-2.17.2 → execsql2-2.17.3}/docs/images/set_build_commands.jpg +0 -0
  63. {execsql2-2.17.2 → execsql2-2.17.3}/docs/images/unit_conversions.b64 +0 -0
  64. {execsql2-2.17.2 → execsql2-2.17.3}/docs/images/unit_conversions_029.png +0 -0
  65. {execsql2-2.17.2 → execsql2-2.17.3}/docs/images/unmatched.png +0 -0
  66. {execsql2-2.17.2 → execsql2-2.17.3}/docs/images/vim_execsql_highlight.png +0 -0
  67. {execsql2-2.17.2 → execsql2-2.17.3}/docs/index.md +0 -0
  68. {execsql2-2.17.2 → execsql2-2.17.3}/docs/reference/configuration.md +0 -0
  69. {execsql2-2.17.2 → execsql2-2.17.3}/docs/reference/metacommands.md +0 -0
  70. {execsql2-2.17.2 → execsql2-2.17.3}/docs/reference/security.md +0 -0
  71. {execsql2-2.17.2 → execsql2-2.17.3}/docs/reference/substitution_vars.md +0 -0
  72. {execsql2-2.17.2 → execsql2-2.17.3}/extras/plugin-template/README.md +0 -0
  73. {execsql2-2.17.2 → execsql2-2.17.3}/extras/plugin-template/pyproject.toml +0 -0
  74. {execsql2-2.17.2 → execsql2-2.17.3}/extras/plugin-template/src/execsql_plugin_YOURNAME/__init__.py +0 -0
  75. {execsql2-2.17.2 → execsql2-2.17.3}/extras/plugin-template/tests/test_plugin.py.example +0 -0
  76. {execsql2-2.17.2 → execsql2-2.17.3}/extras/vscode-execsql/README.md +0 -0
  77. {execsql2-2.17.2 → execsql2-2.17.3}/extras/vscode-execsql/package.json +0 -0
  78. {execsql2-2.17.2 → execsql2-2.17.3}/extras/vscode-execsql/syntaxes/execsql.tmLanguage.json +0 -0
  79. {execsql2-2.17.2 → execsql2-2.17.3}/justfile +0 -0
  80. {execsql2-2.17.2 → execsql2-2.17.3}/scripts/generate_vscode_grammar.py +0 -0
  81. {execsql2-2.17.2 → execsql2-2.17.3}/src/execsql/__init__.py +0 -0
  82. {execsql2-2.17.2 → execsql2-2.17.3}/src/execsql/__main__.py +0 -0
  83. {execsql2-2.17.2 → execsql2-2.17.3}/src/execsql/api.py +0 -0
  84. {execsql2-2.17.2 → execsql2-2.17.3}/src/execsql/cli/__init__.py +0 -0
  85. {execsql2-2.17.2 → execsql2-2.17.3}/src/execsql/cli/dsn.py +0 -0
  86. {execsql2-2.17.2 → execsql2-2.17.3}/src/execsql/cli/help.py +0 -0
  87. {execsql2-2.17.2 → execsql2-2.17.3}/src/execsql/cli/lint.py +0 -0
  88. {execsql2-2.17.2 → execsql2-2.17.3}/src/execsql/cli/lint_ast.py +0 -0
  89. {execsql2-2.17.2 → execsql2-2.17.3}/src/execsql/cli/run.py +0 -0
  90. {execsql2-2.17.2 → execsql2-2.17.3}/src/execsql/config.py +0 -0
  91. {execsql2-2.17.2 → execsql2-2.17.3}/src/execsql/data/__init__.py +0 -0
  92. {execsql2-2.17.2 → execsql2-2.17.3}/src/execsql/data/execsql.conf.template +0 -0
  93. {execsql2-2.17.2 → execsql2-2.17.3}/src/execsql/db/__init__.py +0 -0
  94. {execsql2-2.17.2 → execsql2-2.17.3}/src/execsql/db/access.py +0 -0
  95. {execsql2-2.17.2 → execsql2-2.17.3}/src/execsql/db/base.py +0 -0
  96. {execsql2-2.17.2 → execsql2-2.17.3}/src/execsql/db/dsn.py +0 -0
  97. {execsql2-2.17.2 → execsql2-2.17.3}/src/execsql/db/duckdb.py +0 -0
  98. {execsql2-2.17.2 → execsql2-2.17.3}/src/execsql/db/factory.py +0 -0
  99. {execsql2-2.17.2 → execsql2-2.17.3}/src/execsql/db/firebird.py +0 -0
  100. {execsql2-2.17.2 → execsql2-2.17.3}/src/execsql/db/mysql.py +0 -0
  101. {execsql2-2.17.2 → execsql2-2.17.3}/src/execsql/db/oracle.py +0 -0
  102. {execsql2-2.17.2 → execsql2-2.17.3}/src/execsql/db/postgres.py +0 -0
  103. {execsql2-2.17.2 → execsql2-2.17.3}/src/execsql/db/sqlite.py +0 -0
  104. {execsql2-2.17.2 → execsql2-2.17.3}/src/execsql/db/sqlserver.py +0 -0
  105. {execsql2-2.17.2 → execsql2-2.17.3}/src/execsql/debug/__init__.py +0 -0
  106. {execsql2-2.17.2 → execsql2-2.17.3}/src/execsql/debug/repl.py +0 -0
  107. {execsql2-2.17.2 → execsql2-2.17.3}/src/execsql/exceptions.py +0 -0
  108. {execsql2-2.17.2 → execsql2-2.17.3}/src/execsql/exporters/__init__.py +0 -0
  109. {execsql2-2.17.2 → execsql2-2.17.3}/src/execsql/exporters/base.py +0 -0
  110. {execsql2-2.17.2 → execsql2-2.17.3}/src/execsql/exporters/delimited.py +0 -0
  111. {execsql2-2.17.2 → execsql2-2.17.3}/src/execsql/exporters/duckdb.py +0 -0
  112. {execsql2-2.17.2 → execsql2-2.17.3}/src/execsql/exporters/feather.py +0 -0
  113. {execsql2-2.17.2 → execsql2-2.17.3}/src/execsql/exporters/html.py +0 -0
  114. {execsql2-2.17.2 → execsql2-2.17.3}/src/execsql/exporters/json.py +0 -0
  115. {execsql2-2.17.2 → execsql2-2.17.3}/src/execsql/exporters/latex.py +0 -0
  116. {execsql2-2.17.2 → execsql2-2.17.3}/src/execsql/exporters/markdown.py +0 -0
  117. {execsql2-2.17.2 → execsql2-2.17.3}/src/execsql/exporters/ods.py +0 -0
  118. {execsql2-2.17.2 → execsql2-2.17.3}/src/execsql/exporters/parquet.py +0 -0
  119. {execsql2-2.17.2 → execsql2-2.17.3}/src/execsql/exporters/pretty.py +0 -0
  120. {execsql2-2.17.2 → execsql2-2.17.3}/src/execsql/exporters/protocol.py +0 -0
  121. {execsql2-2.17.2 → execsql2-2.17.3}/src/execsql/exporters/raw.py +0 -0
  122. {execsql2-2.17.2 → execsql2-2.17.3}/src/execsql/exporters/sqlite.py +0 -0
  123. {execsql2-2.17.2 → execsql2-2.17.3}/src/execsql/exporters/templates.py +0 -0
  124. {execsql2-2.17.2 → execsql2-2.17.3}/src/execsql/exporters/values.py +0 -0
  125. {execsql2-2.17.2 → execsql2-2.17.3}/src/execsql/exporters/xls.py +0 -0
  126. {execsql2-2.17.2 → execsql2-2.17.3}/src/execsql/exporters/xlsx.py +0 -0
  127. {execsql2-2.17.2 → execsql2-2.17.3}/src/execsql/exporters/xml.py +0 -0
  128. {execsql2-2.17.2 → execsql2-2.17.3}/src/execsql/exporters/yaml.py +0 -0
  129. {execsql2-2.17.2 → execsql2-2.17.3}/src/execsql/exporters/zip.py +0 -0
  130. {execsql2-2.17.2 → execsql2-2.17.3}/src/execsql/format.py +0 -0
  131. {execsql2-2.17.2 → execsql2-2.17.3}/src/execsql/gui/__init__.py +0 -0
  132. {execsql2-2.17.2 → execsql2-2.17.3}/src/execsql/gui/base.py +0 -0
  133. {execsql2-2.17.2 → execsql2-2.17.3}/src/execsql/gui/console.py +0 -0
  134. {execsql2-2.17.2 → execsql2-2.17.3}/src/execsql/gui/desktop.py +0 -0
  135. {execsql2-2.17.2 → execsql2-2.17.3}/src/execsql/gui/tui.py +0 -0
  136. {execsql2-2.17.2 → execsql2-2.17.3}/src/execsql/importers/__init__.py +0 -0
  137. {execsql2-2.17.2 → execsql2-2.17.3}/src/execsql/importers/base.py +0 -0
  138. {execsql2-2.17.2 → execsql2-2.17.3}/src/execsql/importers/csv.py +0 -0
  139. {execsql2-2.17.2 → execsql2-2.17.3}/src/execsql/importers/feather.py +0 -0
  140. {execsql2-2.17.2 → execsql2-2.17.3}/src/execsql/importers/json.py +0 -0
  141. {execsql2-2.17.2 → execsql2-2.17.3}/src/execsql/importers/ods.py +0 -0
  142. {execsql2-2.17.2 → execsql2-2.17.3}/src/execsql/importers/xls.py +0 -0
  143. {execsql2-2.17.2 → execsql2-2.17.3}/src/execsql/metacommands/__init__.py +0 -0
  144. {execsql2-2.17.2 → execsql2-2.17.3}/src/execsql/metacommands/conditions.py +0 -0
  145. {execsql2-2.17.2 → execsql2-2.17.3}/src/execsql/metacommands/connect.py +0 -0
  146. {execsql2-2.17.2 → execsql2-2.17.3}/src/execsql/metacommands/control.py +0 -0
  147. {execsql2-2.17.2 → execsql2-2.17.3}/src/execsql/metacommands/data.py +0 -0
  148. {execsql2-2.17.2 → execsql2-2.17.3}/src/execsql/metacommands/debug.py +0 -0
  149. {execsql2-2.17.2 → execsql2-2.17.3}/src/execsql/metacommands/dispatch.py +0 -0
  150. {execsql2-2.17.2 → execsql2-2.17.3}/src/execsql/metacommands/io.py +0 -0
  151. {execsql2-2.17.2 → execsql2-2.17.3}/src/execsql/metacommands/io_export.py +0 -0
  152. {execsql2-2.17.2 → execsql2-2.17.3}/src/execsql/metacommands/io_fileops.py +0 -0
  153. {execsql2-2.17.2 → execsql2-2.17.3}/src/execsql/metacommands/io_import.py +0 -0
  154. {execsql2-2.17.2 → execsql2-2.17.3}/src/execsql/metacommands/io_write.py +0 -0
  155. {execsql2-2.17.2 → execsql2-2.17.3}/src/execsql/metacommands/prompt.py +0 -0
  156. {execsql2-2.17.2 → execsql2-2.17.3}/src/execsql/metacommands/script_ext.py +0 -0
  157. {execsql2-2.17.2 → execsql2-2.17.3}/src/execsql/metacommands/system.py +0 -0
  158. {execsql2-2.17.2 → execsql2-2.17.3}/src/execsql/metacommands/upsert.py +0 -0
  159. {execsql2-2.17.2 → execsql2-2.17.3}/src/execsql/models.py +0 -0
  160. {execsql2-2.17.2 → execsql2-2.17.3}/src/execsql/parser.py +0 -0
  161. {execsql2-2.17.2 → execsql2-2.17.3}/src/execsql/plugins.py +0 -0
  162. {execsql2-2.17.2 → execsql2-2.17.3}/src/execsql/py.typed +0 -0
  163. {execsql2-2.17.2 → execsql2-2.17.3}/src/execsql/script/__init__.py +0 -0
  164. {execsql2-2.17.2 → execsql2-2.17.3}/src/execsql/script/ast.py +0 -0
  165. {execsql2-2.17.2 → execsql2-2.17.3}/src/execsql/script/control.py +0 -0
  166. {execsql2-2.17.2 → execsql2-2.17.3}/src/execsql/script/engine.py +0 -0
  167. {execsql2-2.17.2 → execsql2-2.17.3}/src/execsql/script/executor.py +0 -0
  168. {execsql2-2.17.2 → execsql2-2.17.3}/src/execsql/script/parser.py +0 -0
  169. {execsql2-2.17.2 → execsql2-2.17.3}/src/execsql/script/variables.py +0 -0
  170. {execsql2-2.17.2 → execsql2-2.17.3}/src/execsql/state.py +0 -0
  171. {execsql2-2.17.2 → execsql2-2.17.3}/src/execsql/types.py +0 -0
  172. {execsql2-2.17.2 → execsql2-2.17.3}/src/execsql/utils/__init__.py +0 -0
  173. {execsql2-2.17.2 → execsql2-2.17.3}/src/execsql/utils/auth.py +0 -0
  174. {execsql2-2.17.2 → execsql2-2.17.3}/src/execsql/utils/crypto.py +0 -0
  175. {execsql2-2.17.2 → execsql2-2.17.3}/src/execsql/utils/datetime.py +0 -0
  176. {execsql2-2.17.2 → execsql2-2.17.3}/src/execsql/utils/errors.py +0 -0
  177. {execsql2-2.17.2 → execsql2-2.17.3}/src/execsql/utils/fileio.py +0 -0
  178. {execsql2-2.17.2 → execsql2-2.17.3}/src/execsql/utils/gui.py +0 -0
  179. {execsql2-2.17.2 → execsql2-2.17.3}/src/execsql/utils/mail.py +0 -0
  180. {execsql2-2.17.2 → execsql2-2.17.3}/src/execsql/utils/numeric.py +0 -0
  181. {execsql2-2.17.2 → execsql2-2.17.3}/src/execsql/utils/regex.py +0 -0
  182. {execsql2-2.17.2 → execsql2-2.17.3}/src/execsql/utils/strings.py +0 -0
  183. {execsql2-2.17.2 → execsql2-2.17.3}/src/execsql/utils/timer.py +0 -0
  184. {execsql2-2.17.2 → execsql2-2.17.3}/templates/README.md +0 -0
  185. {execsql2-2.17.2 → execsql2-2.17.3}/templates/config_settings.sqlite +0 -0
  186. {execsql2-2.17.2 → execsql2-2.17.3}/templates/example_config_prompt.sql +0 -0
  187. {execsql2-2.17.2 → execsql2-2.17.3}/templates/execsql.conf +0 -0
  188. {execsql2-2.17.2 → execsql2-2.17.3}/templates/make_config_db.sql +0 -0
  189. {execsql2-2.17.2 → execsql2-2.17.3}/templates/md_compare.sql +0 -0
  190. {execsql2-2.17.2 → execsql2-2.17.3}/templates/md_glossary.sql +0 -0
  191. {execsql2-2.17.2 → execsql2-2.17.3}/templates/md_upsert.sql +0 -0
  192. {execsql2-2.17.2 → execsql2-2.17.3}/templates/pg_compare.sql +0 -0
  193. {execsql2-2.17.2 → execsql2-2.17.3}/templates/pg_glossary.sql +0 -0
  194. {execsql2-2.17.2 → execsql2-2.17.3}/templates/pg_upsert.sql +0 -0
  195. {execsql2-2.17.2 → execsql2-2.17.3}/templates/script_template.sql +0 -0
  196. {execsql2-2.17.2 → execsql2-2.17.3}/templates/ss_compare.sql +0 -0
  197. {execsql2-2.17.2 → execsql2-2.17.3}/templates/ss_glossary.sql +0 -0
  198. {execsql2-2.17.2 → execsql2-2.17.3}/templates/ss_upsert.sql +0 -0
  199. {execsql2-2.17.2 → execsql2-2.17.3}/tests/__init__.py +0 -0
  200. {execsql2-2.17.2 → execsql2-2.17.3}/tests/cli/__init__.py +0 -0
  201. {execsql2-2.17.2 → execsql2-2.17.3}/tests/cli/test_cli.py +0 -0
  202. {execsql2-2.17.2 → execsql2-2.17.3}/tests/cli/test_cli_e2e.py +0 -0
  203. {execsql2-2.17.2 → execsql2-2.17.3}/tests/cli/test_cli_run.py +0 -0
  204. {execsql2-2.17.2 → execsql2-2.17.3}/tests/cli/test_lint.py +0 -0
  205. {execsql2-2.17.2 → execsql2-2.17.3}/tests/cli/test_ping.py +0 -0
  206. {execsql2-2.17.2 → execsql2-2.17.3}/tests/cli/test_profile.py +0 -0
  207. {execsql2-2.17.2 → execsql2-2.17.3}/tests/conftest.py +0 -0
  208. {execsql2-2.17.2 → execsql2-2.17.3}/tests/db/__init__.py +0 -0
  209. {execsql2-2.17.2 → execsql2-2.17.3}/tests/db/test_access_windows.py +0 -0
  210. {execsql2-2.17.2 → execsql2-2.17.3}/tests/db/test_base.py +0 -0
  211. {execsql2-2.17.2 → execsql2-2.17.3}/tests/db/test_db_adapters_mocked.py +0 -0
  212. {execsql2-2.17.2 → execsql2-2.17.3}/tests/db/test_db_adapters_mocked_extra.py +0 -0
  213. {execsql2-2.17.2 → execsql2-2.17.3}/tests/db/test_dsn.py +0 -0
  214. {execsql2-2.17.2 → execsql2-2.17.3}/tests/db/test_duckdb.py +0 -0
  215. {execsql2-2.17.2 → execsql2-2.17.3}/tests/db/test_factory.py +0 -0
  216. {execsql2-2.17.2 → execsql2-2.17.3}/tests/db/test_mysql_inprocess.py +0 -0
  217. {execsql2-2.17.2 → execsql2-2.17.3}/tests/db/test_postgres.py +0 -0
  218. {execsql2-2.17.2 → execsql2-2.17.3}/tests/db/test_postgres_inprocess.py +0 -0
  219. {execsql2-2.17.2 → execsql2-2.17.3}/tests/db/test_sqlite.py +0 -0
  220. {execsql2-2.17.2 → execsql2-2.17.3}/tests/db/test_sqlite_extra.py +0 -0
  221. {execsql2-2.17.2 → execsql2-2.17.3}/tests/db/test_sqlserver_inprocess.py +0 -0
  222. {execsql2-2.17.2 → execsql2-2.17.3}/tests/exporters/__init__.py +0 -0
  223. {execsql2-2.17.2 → execsql2-2.17.3}/tests/exporters/test_base.py +0 -0
  224. {execsql2-2.17.2 → execsql2-2.17.3}/tests/exporters/test_db.py +0 -0
  225. {execsql2-2.17.2 → execsql2-2.17.3}/tests/exporters/test_delimited.py +0 -0
  226. {execsql2-2.17.2 → execsql2-2.17.3}/tests/exporters/test_duckdb_exporter.py +0 -0
  227. {execsql2-2.17.2 → execsql2-2.17.3}/tests/exporters/test_exporters.py +0 -0
  228. {execsql2-2.17.2 → execsql2-2.17.3}/tests/exporters/test_feather.py +0 -0
  229. {execsql2-2.17.2 → execsql2-2.17.3}/tests/exporters/test_html_extended.py +0 -0
  230. {execsql2-2.17.2 → execsql2-2.17.3}/tests/exporters/test_html_latex.py +0 -0
  231. {execsql2-2.17.2 → execsql2-2.17.3}/tests/exporters/test_json.py +0 -0
  232. {execsql2-2.17.2 → execsql2-2.17.3}/tests/exporters/test_json_extended.py +0 -0
  233. {execsql2-2.17.2 → execsql2-2.17.3}/tests/exporters/test_latex_extended.py +0 -0
  234. {execsql2-2.17.2 → execsql2-2.17.3}/tests/exporters/test_markdown.py +0 -0
  235. {execsql2-2.17.2 → execsql2-2.17.3}/tests/exporters/test_ods.py +0 -0
  236. {execsql2-2.17.2 → execsql2-2.17.3}/tests/exporters/test_ods_export.py +0 -0
  237. {execsql2-2.17.2 → execsql2-2.17.3}/tests/exporters/test_parquet.py +0 -0
  238. {execsql2-2.17.2 → execsql2-2.17.3}/tests/exporters/test_pretty_extended.py +0 -0
  239. {execsql2-2.17.2 → execsql2-2.17.3}/tests/exporters/test_raw_extended.py +0 -0
  240. {execsql2-2.17.2 → execsql2-2.17.3}/tests/exporters/test_sqlite_exporter.py +0 -0
  241. {execsql2-2.17.2 → execsql2-2.17.3}/tests/exporters/test_templates.py +0 -0
  242. {execsql2-2.17.2 → execsql2-2.17.3}/tests/exporters/test_templates_extended.py +0 -0
  243. {execsql2-2.17.2 → execsql2-2.17.3}/tests/exporters/test_values_extended.py +0 -0
  244. {execsql2-2.17.2 → execsql2-2.17.3}/tests/exporters/test_xls_xlsx.py +0 -0
  245. {execsql2-2.17.2 → execsql2-2.17.3}/tests/exporters/test_xlsx.py +0 -0
  246. {execsql2-2.17.2 → execsql2-2.17.3}/tests/exporters/test_xml.py +0 -0
  247. {execsql2-2.17.2 → execsql2-2.17.3}/tests/exporters/test_yaml.py +0 -0
  248. {execsql2-2.17.2 → execsql2-2.17.3}/tests/exporters/test_zip.py +0 -0
  249. {execsql2-2.17.2 → execsql2-2.17.3}/tests/gui/__init__.py +0 -0
  250. {execsql2-2.17.2 → execsql2-2.17.3}/tests/gui/test_backends.py +0 -0
  251. {execsql2-2.17.2 → execsql2-2.17.3}/tests/gui/test_backends_extended.py +0 -0
  252. {execsql2-2.17.2 → execsql2-2.17.3}/tests/gui/test_compare_stats.py +0 -0
  253. {execsql2-2.17.2 → execsql2-2.17.3}/tests/gui/test_compute_row_diffs.py +0 -0
  254. {execsql2-2.17.2 → execsql2-2.17.3}/tests/gui/test_desktop_dialogs.py +0 -0
  255. {execsql2-2.17.2 → execsql2-2.17.3}/tests/gui/test_tui_pilot.py +0 -0
  256. {execsql2-2.17.2 → execsql2-2.17.3}/tests/gui/test_tui_pilot_complex.py +0 -0
  257. {execsql2-2.17.2 → execsql2-2.17.3}/tests/gui/test_utils_gui_extended.py +0 -0
  258. {execsql2-2.17.2 → execsql2-2.17.3}/tests/importers/__init__.py +0 -0
  259. {execsql2-2.17.2 → execsql2-2.17.3}/tests/importers/test_base_extended.py +0 -0
  260. {execsql2-2.17.2 → execsql2-2.17.3}/tests/importers/test_csv_edge_cases.py +0 -0
  261. {execsql2-2.17.2 → execsql2-2.17.3}/tests/importers/test_csv_importer.py +0 -0
  262. {execsql2-2.17.2 → execsql2-2.17.3}/tests/importers/test_feather_importer.py +0 -0
  263. {execsql2-2.17.2 → execsql2-2.17.3}/tests/importers/test_json_importer.py +0 -0
  264. {execsql2-2.17.2 → execsql2-2.17.3}/tests/importers/test_ods_importer.py +0 -0
  265. {execsql2-2.17.2 → execsql2-2.17.3}/tests/importers/test_xls_importer.py +0 -0
  266. {execsql2-2.17.2 → execsql2-2.17.3}/tests/integration/__init__.py +0 -0
  267. {execsql2-2.17.2 → execsql2-2.17.3}/tests/integration/conftest.py +0 -0
  268. {execsql2-2.17.2 → execsql2-2.17.3}/tests/integration/test_dsn.py +0 -0
  269. {execsql2-2.17.2 → execsql2-2.17.3}/tests/integration/test_duckdb.py +0 -0
  270. {execsql2-2.17.2 → execsql2-2.17.3}/tests/integration/test_mysql.py +0 -0
  271. {execsql2-2.17.2 → execsql2-2.17.3}/tests/integration/test_postgres.py +0 -0
  272. {execsql2-2.17.2 → execsql2-2.17.3}/tests/integration/test_sqlite.py +0 -0
  273. {execsql2-2.17.2 → execsql2-2.17.3}/tests/metacommands/__init__.py +0 -0
  274. {execsql2-2.17.2 → execsql2-2.17.3}/tests/metacommands/test_assert.py +0 -0
  275. {execsql2-2.17.2 → execsql2-2.17.3}/tests/metacommands/test_breakpoint.py +0 -0
  276. {execsql2-2.17.2 → execsql2-2.17.3}/tests/metacommands/test_conditions_extra.py +0 -0
  277. {execsql2-2.17.2 → execsql2-2.17.3}/tests/metacommands/test_connect.py +0 -0
  278. {execsql2-2.17.2 → execsql2-2.17.3}/tests/metacommands/test_io_export.py +0 -0
  279. {execsql2-2.17.2 → execsql2-2.17.3}/tests/metacommands/test_io_import.py +0 -0
  280. {execsql2-2.17.2 → execsql2-2.17.3}/tests/metacommands/test_metacommands.py +0 -0
  281. {execsql2-2.17.2 → execsql2-2.17.3}/tests/metacommands/test_metacommands_connect.py +0 -0
  282. {execsql2-2.17.2 → execsql2-2.17.3}/tests/metacommands/test_metacommands_data.py +0 -0
  283. {execsql2-2.17.2 → execsql2-2.17.3}/tests/metacommands/test_metacommands_extended.py +0 -0
  284. {execsql2-2.17.2 → execsql2-2.17.3}/tests/metacommands/test_metacommands_fileops_extra.py +0 -0
  285. {execsql2-2.17.2 → execsql2-2.17.3}/tests/metacommands/test_metacommands_io.py +0 -0
  286. {execsql2-2.17.2 → execsql2-2.17.3}/tests/metacommands/test_metacommands_io_write_extra.py +0 -0
  287. {execsql2-2.17.2 → execsql2-2.17.3}/tests/metacommands/test_metacommands_script_ext.py +0 -0
  288. {execsql2-2.17.2 → execsql2-2.17.3}/tests/metacommands/test_metacommands_system.py +0 -0
  289. {execsql2-2.17.2 → execsql2-2.17.3}/tests/metacommands/test_metacommands_system_extra.py +0 -0
  290. {execsql2-2.17.2 → execsql2-2.17.3}/tests/metacommands/test_pg_upsert.py +0 -0
  291. {execsql2-2.17.2 → execsql2-2.17.3}/tests/metacommands/test_prompt.py +0 -0
  292. {execsql2-2.17.2 → execsql2-2.17.3}/tests/metacommands/test_row_count.py +0 -0
  293. {execsql2-2.17.2 → execsql2-2.17.3}/tests/metacommands/test_show_scripts.py +0 -0
  294. {execsql2-2.17.2 → execsql2-2.17.3}/tests/scripts/__init__.py +0 -0
  295. {execsql2-2.17.2 → execsql2-2.17.3}/tests/scripts/fixtures/control_flow.sql +0 -0
  296. {execsql2-2.17.2 → execsql2-2.17.3}/tests/scripts/fixtures/io_roundtrip.sql +0 -0
  297. {execsql2-2.17.2 → execsql2-2.17.3}/tests/scripts/fixtures/parse_only/parse_tree.sql +0 -0
  298. {execsql2-2.17.2 → execsql2-2.17.3}/tests/scripts/fixtures/smoke.sql +0 -0
  299. {execsql2-2.17.2 → execsql2-2.17.3}/tests/scripts/test_sql_scripts.py +0 -0
  300. {execsql2-2.17.2 → execsql2-2.17.3}/tests/test_api.py +0 -0
  301. {execsql2-2.17.2 → execsql2-2.17.3}/tests/test_api_extended.py +0 -0
  302. {execsql2-2.17.2 → execsql2-2.17.3}/tests/test_ast.py +0 -0
  303. {execsql2-2.17.2 → execsql2-2.17.3}/tests/test_ast_parser.py +0 -0
  304. {execsql2-2.17.2 → execsql2-2.17.3}/tests/test_config.py +0 -0
  305. {execsql2-2.17.2 → execsql2-2.17.3}/tests/test_config_data.py +0 -0
  306. {execsql2-2.17.2 → execsql2-2.17.3}/tests/test_config_extended.py +0 -0
  307. {execsql2-2.17.2 → execsql2-2.17.3}/tests/test_debug_repl.py +0 -0
  308. {execsql2-2.17.2 → execsql2-2.17.3}/tests/test_engine.py +0 -0
  309. {execsql2-2.17.2 → execsql2-2.17.3}/tests/test_error_messages.py +0 -0
  310. {execsql2-2.17.2 → execsql2-2.17.3}/tests/test_exceptions.py +0 -0
  311. {execsql2-2.17.2 → execsql2-2.17.3}/tests/test_executor.py +0 -0
  312. {execsql2-2.17.2 → execsql2-2.17.3}/tests/test_executor_inprocess.py +0 -0
  313. {execsql2-2.17.2 → execsql2-2.17.3}/tests/test_format.py +0 -0
  314. {execsql2-2.17.2 → execsql2-2.17.3}/tests/test_mail.py +0 -0
  315. {execsql2-2.17.2 → execsql2-2.17.3}/tests/test_models.py +0 -0
  316. {execsql2-2.17.2 → execsql2-2.17.3}/tests/test_package.py +0 -0
  317. {execsql2-2.17.2 → execsql2-2.17.3}/tests/test_parser.py +0 -0
  318. {execsql2-2.17.2 → execsql2-2.17.3}/tests/test_parser_params.py +0 -0
  319. {execsql2-2.17.2 → execsql2-2.17.3}/tests/test_plugins.py +0 -0
  320. {execsql2-2.17.2 → execsql2-2.17.3}/tests/test_registry.py +0 -0
  321. {execsql2-2.17.2 → execsql2-2.17.3}/tests/test_script.py +0 -0
  322. {execsql2-2.17.2 → execsql2-2.17.3}/tests/test_state.py +0 -0
  323. {execsql2-2.17.2 → execsql2-2.17.3}/tests/test_types.py +0 -0
  324. {execsql2-2.17.2 → execsql2-2.17.3}/tests/utils/__init__.py +0 -0
  325. {execsql2-2.17.2 → execsql2-2.17.3}/tests/utils/test_auth.py +0 -0
  326. {execsql2-2.17.2 → execsql2-2.17.3}/tests/utils/test_auth_extra.py +0 -0
  327. {execsql2-2.17.2 → execsql2-2.17.3}/tests/utils/test_crypto.py +0 -0
  328. {execsql2-2.17.2 → execsql2-2.17.3}/tests/utils/test_datetime.py +0 -0
  329. {execsql2-2.17.2 → execsql2-2.17.3}/tests/utils/test_errors.py +0 -0
  330. {execsql2-2.17.2 → execsql2-2.17.3}/tests/utils/test_errors_extra.py +0 -0
  331. {execsql2-2.17.2 → execsql2-2.17.3}/tests/utils/test_fileio.py +0 -0
  332. {execsql2-2.17.2 → execsql2-2.17.3}/tests/utils/test_fileio_extra.py +0 -0
  333. {execsql2-2.17.2 → execsql2-2.17.3}/tests/utils/test_numeric.py +0 -0
  334. {execsql2-2.17.2 → execsql2-2.17.3}/tests/utils/test_regex.py +0 -0
  335. {execsql2-2.17.2 → execsql2-2.17.3}/tests/utils/test_strings.py +0 -0
  336. {execsql2-2.17.2 → execsql2-2.17.3}/tests/utils/test_timer.py +0 -0
  337. {execsql2-2.17.2 → execsql2-2.17.3}/tests/utils/test_timer_extra.py +0 -0
  338. {execsql2-2.17.2 → execsql2-2.17.3}/zensical.toml +0 -0
@@ -7,6 +7,7 @@ dist/
7
7
  build/
8
8
  .eggs/
9
9
  .ruff_cache/
10
+ .mypy_cache/
10
11
 
11
12
  # uv / venv
12
13
  .venv/
@@ -13,6 +13,14 @@ ______________________________________________________________________
13
13
 
14
14
  ______________________________________________________________________
15
15
 
16
+ ## [2.17.3] - 2026-05-26
17
+
18
+ ### Changed
19
+
20
+ - Optional `[upsert]` extra now requires `pg-upsert>=1.22.1` (was `>=1.22.0`). 1.22.1 removed upper bounds on its `typer` and `pyyaml` dependencies, so installing `execsql2[upsert]` alongside the latest Typer/PyYAML no longer triggers a resolver conflict.
21
+
22
+ ______________________________________________________________________
23
+
16
24
  ## [2.17.2] - 2026-05-26
17
25
 
18
26
  ### Fixed
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: execsql2
3
- Version: 2.17.2
3
+ Version: 2.17.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
@@ -52,7 +52,7 @@ Requires-Dist: keyring; extra == 'all'
52
52
  Requires-Dist: odfpy; extra == 'all'
53
53
  Requires-Dist: openpyxl; extra == 'all'
54
54
  Requires-Dist: oracledb; extra == 'all'
55
- Requires-Dist: pg-upsert>=1.22.0; extra == 'all'
55
+ Requires-Dist: pg-upsert>=1.22.1; extra == 'all'
56
56
  Requires-Dist: polars; extra == 'all'
57
57
  Requires-Dist: psycopg2-binary; extra == 'all'
58
58
  Requires-Dist: pymysql; extra == 'all'
@@ -120,7 +120,7 @@ Requires-Dist: oracledb; extra == 'oracle'
120
120
  Provides-Extra: postgres
121
121
  Requires-Dist: psycopg2-binary; extra == 'postgres'
122
122
  Provides-Extra: upsert
123
- Requires-Dist: pg-upsert>=1.22.0; extra == 'upsert'
123
+ Requires-Dist: pg-upsert>=1.22.1; extra == 'upsert'
124
124
  Description-Content-Type: text/markdown
125
125
 
126
126
  > [!NOTE]
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "execsql2"
7
- version = "2.17.2"
7
+ version = "2.17.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" }
@@ -61,7 +61,7 @@ formats = ["odfpy", "xlrd", "openpyxl", "Jinja2", "polars", "tables", "PyYAML"]
61
61
  auth = ["keyring"]
62
62
  auth-plaintext = ["keyring", "keyrings.alt"]
63
63
  auth-encrypted = ["keyring", "keyrings.alt", "pycryptodome"]
64
- upsert = ["pg-upsert>=1.22.0"]
64
+ upsert = ["pg-upsert>=1.22.1"]
65
65
  map = ["tkintermapview>=1.29"]
66
66
  # Convenience groups
67
67
  all-db = [
@@ -167,7 +167,7 @@ skip-magic-trailing-comma = false
167
167
  line-ending = "auto"
168
168
 
169
169
  [tool.bumpversion]
170
- current_version = "2.17.2"
170
+ current_version = "2.17.3"
171
171
  commit = true
172
172
  tag = true
173
173
  tag_name = "v{new_version}"
@@ -679,7 +679,7 @@ wheels = [
679
679
 
680
680
  [[package]]
681
681
  name = "execsql2"
682
- version = "2.17.2"
682
+ version = "2.17.3"
683
683
  source = { editable = "." }
684
684
  dependencies = [
685
685
  { name = "python-dateutil" },
@@ -816,7 +816,7 @@ requires-dist = [
816
816
  { name = "openpyxl", marker = "extra == 'formats'" },
817
817
  { name = "oracledb", marker = "extra == 'all-db'" },
818
818
  { name = "oracledb", marker = "extra == 'oracle'" },
819
- { name = "pg-upsert", marker = "extra == 'upsert'", specifier = ">=1.22.0" },
819
+ { name = "pg-upsert", marker = "extra == 'upsert'", specifier = ">=1.22.1" },
820
820
  { name = "polars", marker = "extra == 'formats'" },
821
821
  { name = "pre-commit", marker = "extra == 'dev'", specifier = ">=3.5.0" },
822
822
  { name = "psycopg2-binary", marker = "extra == 'all-db'" },
@@ -1871,7 +1871,7 @@ wheels = [
1871
1871
 
1872
1872
  [[package]]
1873
1873
  name = "pg-upsert"
1874
- version = "1.22.0"
1874
+ version = "1.22.1"
1875
1875
  source = { registry = "https://pypi.org/simple" }
1876
1876
  dependencies = [
1877
1877
  { name = "psycopg2-binary" },
@@ -1879,9 +1879,9 @@ dependencies = [
1879
1879
  { name = "rich" },
1880
1880
  { name = "typer" },
1881
1881
  ]
1882
- sdist = { url = "https://files.pythonhosted.org/packages/1a/f8/68b0b02d2e76561cfa580bee320eaf1884666d0d8faa2f2873650e907eef/pg_upsert-1.22.0.tar.gz", hash = "sha256:6ba63d3990689685464695c897be081e9d774c375228cc0bf1ee44340e6a6a6f", size = 1558932, upload-time = "2026-04-20T15:54:46.946Z" }
1882
+ sdist = { url = "https://files.pythonhosted.org/packages/f1/ba/10a1994fa328299b455bf5b382c85cf36b9256709e884028821f7c2e3626/pg_upsert-1.22.1.tar.gz", hash = "sha256:bf9fee3ef91bf3e3023f3f7722283c43c5375e6b263a10f05d002920c65dbb6c", size = 1559351, upload-time = "2026-05-26T19:03:56.479Z" }
1883
1883
  wheels = [
1884
- { url = "https://files.pythonhosted.org/packages/c3/f3/965c57af3bc89103d2f04435277c2c5e7e9b2bb9ce0653f434c55a570e4a/pg_upsert-1.22.0-py3-none-any.whl", hash = "sha256:c823af17c996ba5cb3ed8a2393882ea4a830a14d04965c090b73164b806f2309", size = 98581, upload-time = "2026-04-20T15:54:44.816Z" },
1884
+ { url = "https://files.pythonhosted.org/packages/c5/11/c57e1d22e50994238ca4116eb2c1b20cf8a27b18a359a867951ae885457b/pg_upsert-1.22.1-py3-none-any.whl", hash = "sha256:de8bf80c806af8f92307315cfd437807176253ac477880337ff1d92b539ad5cc", size = 98575, upload-time = "2026-05-26T19:03:54.358Z" },
1885
1885
  ]
1886
1886
 
1887
1887
  [[package]]
@@ -1,68 +0,0 @@
1
- -- prompt_map_demo.sql
2
- -- Demonstrates PROMPT MAP with SQLite.
3
- -- Creates a table of US cities with lat/lon/label/color/symbol columns,
4
- -- inserts a few rows, then opens an interactive map dialog with markers.
5
- --
6
- -- Run:
7
- -- execsql -t l prompt_map_demo.sql cities.sqlite
8
- --
9
- -- The script creates cities.sqlite in the current directory (or reuses it).
10
- -- Requires a GUI environment (Tkinter desktop or Textual TUI). The map
11
- -- markers are colored/symboled per row.
12
-
13
- CREATE TABLE IF NOT EXISTS cities (
14
- name TEXT PRIMARY KEY,
15
- lat REAL NOT NULL,
16
- lon REAL NOT NULL,
17
- color TEXT,
18
- symbol TEXT
19
- );
20
-
21
- DELETE FROM cities;
22
-
23
- INSERT INTO cities (name, lat, lon, color, symbol) VALUES
24
- ('Seattle', 47.6062, -122.3321, 'blue', 'circle'),
25
- ('Portland', 45.5152, -122.6784, 'blue', 'circle'),
26
- ('San Francisco', 37.7749, -122.4194, 'green', 'square'),
27
- ('Los Angeles', 34.0522, -118.2437, 'green', 'square'),
28
- ('Denver', 39.7392, -104.9903, 'orange', 'triangle'),
29
- ('Chicago', 41.8781, -87.6298, 'red', 'star'),
30
- ('New York', 40.7128, -74.0060, 'red', 'star'),
31
- ('Miami', 25.7617, -80.1918, 'purple', 'diamond');
32
-
33
- -- PROMPT MESSAGE "<text>" MAP <table>
34
- -- LAT <lat_col> LON <lon_col>
35
- -- [LABEL <label_col>] [COLOR <color_col>] [SYMBOL <symbol_col>]
36
- --
37
- ---- !x! PROMPT MESSAGE "US cities — click a marker for details, then Continue to exit." MAP cities LAT lat LON lon LABEL name COLOR color SYMBOL symbol
38
-
39
- -- !x! write "!!heythere!!"
40
-
41
- -- !x! sub yesno yes
42
- -- !x! if(!!yesno!!)
43
- -- !x! write "level1"
44
- -- !x! debug write iflevels
45
- -- !x! if(true)
46
- -- !x! write "level2"
47
- -- !x! debug write iflevels
48
- -- !x! breakpoint
49
- -- !x! endif
50
- -- !x! endif
51
-
52
-
53
- -- !x! debug write COMMANDLISTSTACK
54
-
55
- /*
56
- -- !x! debug write subvars
57
- -- !x! debug write user subvars
58
- -- !x! debug write local subvars
59
-
60
- -- !x! debug write ODBC_DRIVERS
61
-
62
- -- !x! export cities to cities.csv as csv
63
- -- !x! export cities to cities.json as json
64
- -- !x! export_metadata all to stdout as txt
65
- */
66
-
67
-
68
- -- Add jsonl as an input/output format with the .jsonl extension
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