execsql2 2.17.3__py3-none-any.whl → 2.18.1__py3-none-any.whl

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 (55) hide show
  1. execsql/cli/__init__.py +15 -5
  2. execsql/cli/lint.py +296 -430
  3. execsql/cli/run.py +29 -2
  4. execsql/config.py +20 -0
  5. execsql/db/access.py +6 -0
  6. execsql/db/base.py +57 -1
  7. execsql/db/dsn.py +19 -9
  8. execsql/db/firebird.py +6 -0
  9. execsql/db/mysql.py +81 -0
  10. execsql/db/oracle.py +6 -0
  11. execsql/db/sqlite.py +37 -18
  12. execsql/db/sqlserver.py +31 -6
  13. execsql/exporters/base.py +1 -1
  14. execsql/exporters/duckdb.py +8 -4
  15. execsql/exporters/ods.py +11 -0
  16. execsql/exporters/sqlite.py +10 -3
  17. execsql/exporters/templates.py +10 -0
  18. execsql/exporters/xls.py +4 -0
  19. execsql/exporters/xlsx.py +9 -0
  20. execsql/importers/json.py +49 -32
  21. execsql/metacommands/conditions.py +7 -2
  22. execsql/metacommands/dispatch.py +5 -10
  23. execsql/metacommands/io_export.py +21 -26
  24. execsql/metacommands/io_fileops.py +21 -3
  25. execsql/metacommands/io_import.py +23 -3
  26. execsql/metacommands/script_ext.py +8 -7
  27. execsql/script/ast.py +8 -0
  28. execsql/script/engine.py +33 -12
  29. execsql/script/executor.py +12 -0
  30. execsql/script/variables.py +41 -15
  31. execsql/utils/auth.py +49 -1
  32. execsql/utils/fileio.py +120 -0
  33. execsql/utils/gui.py +11 -1
  34. {execsql2-2.17.3.data → execsql2-2.18.1.data}/data/execsql2_extras/md_compare.sql +12 -12
  35. {execsql2-2.17.3.data → execsql2-2.18.1.data}/data/execsql2_extras/md_glossary.sql +5 -5
  36. {execsql2-2.17.3.data → execsql2-2.18.1.data}/data/execsql2_extras/md_upsert.sql +13 -13
  37. {execsql2-2.17.3.data → execsql2-2.18.1.data}/data/execsql2_extras/pg_compare.sql +24 -24
  38. {execsql2-2.17.3.data → execsql2-2.18.1.data}/data/execsql2_extras/pg_glossary.sql +5 -5
  39. {execsql2-2.17.3.data → execsql2-2.18.1.data}/data/execsql2_extras/pg_upsert.sql +29 -29
  40. {execsql2-2.17.3.data → execsql2-2.18.1.data}/data/execsql2_extras/script_template.sql +2 -2
  41. {execsql2-2.17.3.data → execsql2-2.18.1.data}/data/execsql2_extras/ss_compare.sql +24 -24
  42. {execsql2-2.17.3.data → execsql2-2.18.1.data}/data/execsql2_extras/ss_glossary.sql +6 -6
  43. {execsql2-2.17.3.data → execsql2-2.18.1.data}/data/execsql2_extras/ss_upsert.sql +2917 -2917
  44. {execsql2-2.17.3.dist-info → execsql2-2.18.1.dist-info}/METADATA +47 -40
  45. {execsql2-2.17.3.dist-info → execsql2-2.18.1.dist-info}/RECORD +54 -55
  46. execsql/cli/lint_ast.py +0 -439
  47. {execsql2-2.17.3.data → execsql2-2.18.1.data}/data/execsql2_extras/README.md +0 -0
  48. {execsql2-2.17.3.data → execsql2-2.18.1.data}/data/execsql2_extras/config_settings.sqlite +0 -0
  49. {execsql2-2.17.3.data → execsql2-2.18.1.data}/data/execsql2_extras/example_config_prompt.sql +0 -0
  50. {execsql2-2.17.3.data → execsql2-2.18.1.data}/data/execsql2_extras/execsql.conf +0 -0
  51. {execsql2-2.17.3.data → execsql2-2.18.1.data}/data/execsql2_extras/make_config_db.sql +0 -0
  52. {execsql2-2.17.3.dist-info → execsql2-2.18.1.dist-info}/WHEEL +0 -0
  53. {execsql2-2.17.3.dist-info → execsql2-2.18.1.dist-info}/entry_points.txt +0 -0
  54. {execsql2-2.17.3.dist-info → execsql2-2.18.1.dist-info}/licenses/LICENSE.txt +0 -0
  55. {execsql2-2.17.3.dist-info → execsql2-2.18.1.dist-info}/licenses/NOTICE +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: execsql2
3
- Version: 2.17.3
3
+ Version: 2.18.1
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
@@ -45,6 +45,7 @@ Requires-Dist: sqlglot>=25.0
45
45
  Requires-Dist: textual>=0.47.0
46
46
  Requires-Dist: typer>=0.12
47
47
  Provides-Extra: all
48
+ Requires-Dist: defusedxml; extra == 'all'
48
49
  Requires-Dist: duckdb; extra == 'all'
49
50
  Requires-Dist: firebird-driver; extra == 'all'
50
51
  Requires-Dist: jinja2; extra == 'all'
@@ -80,9 +81,11 @@ Requires-Dist: keyrings-alt; extra == 'auth-plaintext'
80
81
  Provides-Extra: dev
81
82
  Requires-Dist: build>=1.2.2.post1; extra == 'dev'
82
83
  Requires-Dist: bump-my-version>=1.2.7; extra == 'dev'
84
+ Requires-Dist: defusedxml; extra == 'dev'
83
85
  Requires-Dist: jinja2; extra == 'dev'
84
86
  Requires-Dist: markdown-include>=0.8; extra == 'dev'
85
87
  Requires-Dist: mkdocstrings-python>=2.0.3; extra == 'dev'
88
+ Requires-Dist: mypy>=1.10; extra == 'dev'
86
89
  Requires-Dist: odfpy; extra == 'dev'
87
90
  Requires-Dist: openpyxl; extra == 'dev'
88
91
  Requires-Dist: polars; extra == 'dev'
@@ -100,6 +103,7 @@ Requires-Dist: duckdb; extra == 'duckdb'
100
103
  Provides-Extra: firebird
101
104
  Requires-Dist: firebird-driver; extra == 'firebird'
102
105
  Provides-Extra: formats
106
+ Requires-Dist: defusedxml; extra == 'formats'
103
107
  Requires-Dist: jinja2; extra == 'formats'
104
108
  Requires-Dist: odfpy; extra == 'formats'
105
109
  Requires-Dist: openpyxl; extra == 'formats'
@@ -181,6 +185,7 @@ pip install execsql2[upsert] # pg-upsert for PostgreSQL upsert operatio
181
185
  pip install execsql2[auth] # OS keyring integration
182
186
  pip install execsql2[auth-plaintext] # Keyring + plaintext file backend (headless Linux)
183
187
  pip install execsql2[auth-encrypted] # Keyring + encrypted file backend (headless Linux)
188
+ pip install execsql2[map] # tkintermapview for PROMPT MAP
184
189
 
185
190
  # Convenience
186
191
  pip install execsql2[all-db] # All database drivers
@@ -223,44 +228,46 @@ execsql script.sql # read connection from config file
223
228
 
224
229
  ## Options
225
230
 
226
- | Flag | Description |
227
- | ------------------------------------- | ----------------------------------------------------------------- |
228
- | `-t {p,m,s,l,k,a,f,o,d}` | Database type |
229
- | `-u USER` | Database username |
230
- | `-p PORT` | Server port |
231
- | `-a VALUE` | Set substitution variable `$ARG_x` |
232
- | `-b` / `--boolean-int` | Treat integers 0 and 1 as boolean values |
233
- | `-c SCRIPT` | Execute inline SQL or metacommand string |
234
- | `-d` | Auto-create export directories |
235
- | `-e ENCODING` / `--database-encoding` | Character encoding used in the database |
236
- | `-f ENCODING` | Script file encoding (default: UTF-8) |
237
- | `-g ENCODING` / `--output-encoding` | Encoding for WRITE and EXPORT output |
238
- | `-i ENCODING` / `--import-encoding` | Encoding for data files used with IMPORT |
239
- | `-l` | Write run log to `~/execsql.log` |
240
- | `-m` | List metacommands and exit |
241
- | `-n` | Create a new SQLite or PostgreSQL database if it does not exist |
242
- | `-o` / `--online-help` | Open the online documentation in the default browser |
243
- | `-s N` / `--scan-lines` | Lines to scan for IMPORT format detection (0 = scan entire file) |
244
- | `-v {0,1,2,3}` | GUI level (0=none, 1=password, 2=selection, 3=full) |
245
- | `-w` | Skip password prompt when a username is supplied |
246
- | `-y` / `--encodings` | List available encoding names and exit |
247
- | `-z KB` / `--import-buffer` | Import buffer size in KB (default: 32) |
248
- | `--dsn URL` | Connection string (e.g. `postgresql://user:pass@host/db`) |
249
- | `--output-dir DIR` | Default base directory for EXPORT output files |
250
- | `--dry-run` | Parse the script and report commands without executing |
251
- | `--lint` | Static analysis: check structure and warn on issues (no DB) |
252
- | `--parse-tree` | Print the script's AST structure and exit (no DB) |
253
- | `--list-plugins` | List discovered plugins and exit |
254
- | `--ping` | Test database connectivity and exit |
255
- | `--profile` | Show per-statement timing summary after execution |
256
- | `--profile-limit N` | Top N statements to display in `--profile` summary (default: 20) |
257
- | `--progress` | Show a progress bar for long-running IMPORT operations |
258
- | `--config FILE` | Load an explicit config file (highest priority after CLI args) |
259
- | `--no-system-cmd` | Disable the `SYSTEM_CMD` metacommand (safer for CI / shared envs) |
260
- | `--init-config` | Print a default `execsql.conf` template to stdout and exit |
261
- | `--debug` | Start in step-through debug mode (REPL pauses before each stmt) |
262
- | `--dump-keywords` | Print metacommand keywords as JSON and exit |
263
- | `--gui-framework {tkinter,textual}` | GUI framework for interactive prompts |
231
+ | Flag | Description |
232
+ | ------------------------------------- | ------------------------------------------------------------------ |
233
+ | `-t {p,m,s,l,k,a,f,o,d}` | Database type |
234
+ | `-u USER` | Database username |
235
+ | `-p PORT` | Server port |
236
+ | `-a VALUE` | Set substitution variable `$ARG_x` |
237
+ | `-b` / `--boolean-int` | Treat integers 0 and 1 as boolean values |
238
+ | `-c SCRIPT` | Execute inline SQL or metacommand string |
239
+ | `-d` | Auto-create export directories |
240
+ | `-e ENCODING` / `--database-encoding` | Character encoding used in the database |
241
+ | `-f ENCODING` | Script file encoding (default: UTF-8) |
242
+ | `-g ENCODING` / `--output-encoding` | Encoding for WRITE and EXPORT output |
243
+ | `-i ENCODING` / `--import-encoding` | Encoding for data files used with IMPORT |
244
+ | `-l` | Write run log to `~/execsql.log` |
245
+ | `-m` | List metacommands and exit |
246
+ | `-n` | Create a new SQLite or PostgreSQL database if it does not exist |
247
+ | `-o` / `--online-help` | Open the online documentation in the default browser |
248
+ | `-s N` / `--scan-lines` | Lines to scan for IMPORT format detection (0 = scan entire file) |
249
+ | `-v {0,1,2,3}` | GUI level (0=none, 1=password, 2=selection, 3=full) |
250
+ | `-w` | Skip password prompt when a username is supplied |
251
+ | `-y` / `--encodings` | List available encoding names and exit |
252
+ | `-z KB` / `--import-buffer` | Import buffer size in KB (default: 32) |
253
+ | `--dsn URL` | Connection string (e.g. `postgresql://user:pass@host/db`) |
254
+ | `--output-dir DIR` | Default base directory for EXPORT output files |
255
+ | `--dry-run` | Parse the script and report commands without executing |
256
+ | `--lint` | Static analysis: check structure and warn on issues (no DB) |
257
+ | `--parse-tree` | Print the script's AST structure and exit (no DB) |
258
+ | `--list-plugins` | List discovered plugins and exit |
259
+ | `--ping` | Test database connectivity and exit |
260
+ | `--profile` | Show per-statement timing summary after execution |
261
+ | `--profile-limit N` | Top N statements to display in `--profile` summary (default: 20) |
262
+ | `--progress` | Show a progress bar for long-running IMPORT operations |
263
+ | `--config FILE` | Load an explicit config file (highest priority after CLI args) |
264
+ | `--no-system-cmd` | Disable the `SYSTEM_CMD` metacommand (safer for CI / shared envs) |
265
+ | `--no-rm-file` | Disable the `RM_FILE` metacommand (no script-driven file deletion) |
266
+ | `--no-serve` | Disable the `SERVE` metacommand (no script-driven file streaming) |
267
+ | `--init-config` | Print a default `execsql.conf` template to stdout and exit |
268
+ | `--debug` | Start in step-through debug mode (REPL pauses before each stmt) |
269
+ | `--dump-keywords` | Print metacommand keywords as JSON and exit |
270
+ | `--gui-framework {tkinter,textual}` | GUI framework for interactive prompts |
264
271
 
265
272
  Run `execsql --help` for the full option list, or `execsql -m` to list all metacommands.
266
273
 
@@ -388,7 +395,7 @@ execsql-format --check scripts/
388
395
  ```yaml
389
396
  repos:
390
397
  - repo: https://github.com/geocoug/execsql
391
- rev: v2.11.0
398
+ rev: v2.18.0
392
399
  hooks:
393
400
  - id: execsql-format
394
401
  args: [--in-place]
@@ -1,7 +1,7 @@
1
1
  execsql/__init__.py,sha256=ZeVnpEWu8M2bn3qLmVM72NhWRueUGNbsX8UAPTermo0,901
2
2
  execsql/__main__.py,sha256=HdbK-SAhyUmfB6xINY5AzxdMSxGzWSGEG_2dv42Jn64,315
3
3
  execsql/api.py,sha256=ZFTo_XZPhG21w2vxaeS1lS6o5XmF1FUJRIaypgTOjA8,20919
4
- execsql/config.py,sha256=9T-Fz_NyKiAVVwpHLQa4rdo1_5Iz6nNMPPZyBMrK4yE,32022
4
+ execsql/config.py,sha256=OOrCcn9m3CNuXkxVOLp7uMhQikzUS2wh_QVhvIzRqIM,33296
5
5
  execsql/exceptions.py,sha256=EkM5cw2s0D9QCOgS4BU29FEyOnEtCxJ0esPT6l1hT9s,9205
6
6
  execsql/format.py,sha256=el_gQyMbj4VllToGEcU_61PtxUFotD1hXjrVzEhackM,25507
7
7
  execsql/models.py,sha256=kCTUQg9-vReM6WNFfB_ZrEppuOW5u1uMBQThSkfPC0o,13264
@@ -10,47 +10,46 @@ execsql/plugins.py,sha256=2voLwT6eFap6BCBoZYndNNC_bMEJO1f_aP6xQTVXwYI,12815
10
10
  execsql/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
11
11
  execsql/state.py,sha256=T6UoXXxAkUP-4KKQpfFAlI3WMzm2xUi3LSplJDuRLY0,21965
12
12
  execsql/types.py,sha256=5K3aTuWQZHftz5slFODwqxlcvvt6lROISUnvUtRUazs,31799
13
- execsql/cli/__init__.py,sha256=UDOT_vRXoVM2XQwcvczo_uk4YJ5bgT_2jrmug3vw1nM,22855
13
+ execsql/cli/__init__.py,sha256=aJknKKIGxYCXpny0cyHXfqJsJ95dBtlEXXhPASFG8GQ,23114
14
14
  execsql/cli/dsn.py,sha256=svaZtrUXFRL2W5G6FRRiKtR6kehOp7urrVhIx_642Z8,2820
15
15
  execsql/cli/help.py,sha256=ThwdZuMIfLPxLAPpGWwXFY_UfyWvYOCjdlBNK20Vzd8,5718
16
- execsql/cli/lint.py,sha256=kXv-B0fOXI05ht7bWLd4ZPG8Fe1x6Y_owf2ue_Rmcjk,23663
17
- execsql/cli/lint_ast.py,sha256=c9UEFsZ7PZlFdrK0zJCe-WXfCqvS3WlOUWEycZozqB8,14688
18
- execsql/cli/run.py,sha256=WJNi4KsEQYHicMWl0FHs3ZnduK4W_8IwtwqxeClxf1k,35152
16
+ execsql/cli/lint.py,sha256=YqKzFNUhyb_Th69hYgKk1ZZVjCsZfJMIiUGqp06JwNs,17236
17
+ execsql/cli/run.py,sha256=QoSHVBfg20n2knPrqf7RFJmcfFpC5aq7NkwX5o6qRnA,36326
19
18
  execsql/data/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
20
19
  execsql/data/execsql.conf.template,sha256=1a2g2Vga7s128wcu3ftIFRkHlKKtuvkuOHSD1XuNT7o,9404
21
20
  execsql/db/__init__.py,sha256=jTbuafuKOqYtXFR1wvCOoKK5Lr3l1uErfaIbIr6UywI,1063
22
- execsql/db/access.py,sha256=GcY5Pq_vXdp8Thzm6aSLg9vfp5koovGiYKXipQtRt50,19167
23
- execsql/db/base.py,sha256=BOfQFcs_cUpPZhLKRxQIeyHPKLtYAAvqDGnistC8dp0,32804
24
- execsql/db/dsn.py,sha256=ZkKQrRgNr8VilOhE7jzLIZKVhrmEL0Bt3BppegQ03KM,5486
21
+ execsql/db/access.py,sha256=pqxFzxF5yXBv_UzJEtp5YHNJy3yHqxLYCRzVLV4qolo,19404
22
+ execsql/db/base.py,sha256=m0xOGU-GAUU6SR1kF6LUnybaeX3fUgXqsofbzemyM28,35295
23
+ execsql/db/dsn.py,sha256=59OzMAuCIfHcdOZNarK9TlDzaBJjhZ1SFFMvyXlH6u8,6086
25
24
  execsql/db/duckdb.py,sha256=79lRzKRhw1Pjfqcrba27S4Oq8a8AbDO_d0XkaNKKPQo,3197
26
25
  execsql/db/factory.py,sha256=YHdgyqQYy16548O3fGyElLC5C7DdIgva4Z29OsDxXjs,5367
27
- execsql/db/firebird.py,sha256=l6oAx76CKggQPbXWNqpF-xftnAzfgQxU7cL44Jc4D4g,8983
28
- execsql/db/mysql.py,sha256=TEEZsYErBx8o2uw6HLymUpLx5TQupxdIHjuKIBwOytY,14504
29
- execsql/db/oracle.py,sha256=1_odb5xmlm8vjdJdQXz7SHm9dzIbZ5sxP_IxTklH3kA,12018
26
+ execsql/db/firebird.py,sha256=p_7RFWhFI7y5ukKCMXeDPE0wjeQ6dpO4IK6uz2dYjrc,9224
27
+ execsql/db/mysql.py,sha256=HOFziabEN-ZD97LIfTrfhQB_yXwcCi9ZsqPqt6LFDHk,17964
28
+ execsql/db/oracle.py,sha256=vYs1Oqym0LdAV5WQFdJFDesHlsx7RjsOaDyX0UTegPQ,12286
30
29
  execsql/db/postgres.py,sha256=UNzrXzMniEyT3Z7qjCA_HLEUY0PVr1cJShuhAxtl5l0,21241
31
- execsql/db/sqlite.py,sha256=Hy_ocodNY_MHvaRnr5fPsQ6bTcsyC1mi4afryaiKSqk,10890
32
- execsql/db/sqlserver.py,sha256=MxS2sVu83ILxZRkZWy2AbmUKsJorsE9z-xJ9PgA9Bss,7819
30
+ execsql/db/sqlite.py,sha256=xooU6bvD9Y3frRpnbyesE63r6E1fwEHkkcN1YD_UIUE,11519
31
+ execsql/db/sqlserver.py,sha256=6HtjLa__SlVyqbM7S80Wsipe-IFIDnzmYNg8BLvuQJM,9006
33
32
  execsql/debug/__init__.py,sha256=j6EGUR0dHzUhWN1mHHtf1-Lhjq3Sb1V-vmnq2Ztgj1M,178
34
33
  execsql/debug/repl.py,sha256=d-Pq4wBQU0rcvjXWqDkq_FOxL29vJ7VCP3xoG6TtXpE,22309
35
34
  execsql/exporters/__init__.py,sha256=-Cnji-OgodJV8ftcDcOyTof0kQMy9J5kKVC8GVFpc3o,670
36
- execsql/exporters/base.py,sha256=zHmvcIJ0Y7DP4Q2a-5msOoLzqiGW_8R98UX4XLYjoa0,6408
35
+ execsql/exporters/base.py,sha256=XTPenHl5TbmbZ3cfPYLVFirGNiVps3Kt3AQKFVKy6ss,6408
37
36
  execsql/exporters/delimited.py,sha256=GIEeennL_elvcZgq5oSvgxAKAgwr8ea3o5_M_pLmc4g,32341
38
- execsql/exporters/duckdb.py,sha256=Wc9I5uiV4MzmVQzCX-vgVHQUL7U3ZWdOkFVFWBv5SXM,2911
37
+ execsql/exporters/duckdb.py,sha256=R4WbvzBEIK1ptnIc8w6c7jcinG-cuuFYC85_NYCumH0,3146
39
38
  execsql/exporters/feather.py,sha256=Ie7DCheyAj5y3ktpaMN76Mu3rnTQ0biKcxmaJdcIWvg,4184
40
39
  execsql/exporters/html.py,sha256=BPTGYODiC5_5zaQsVkZ9QVAl67yfCWFTsjK0D-QOJkM,9717
41
40
  execsql/exporters/json.py,sha256=G9lyJcjgmMvymu_MoVrkSqx2H6JRN7qwA5UEomnPkVQ,4343
42
41
  execsql/exporters/latex.py,sha256=w_B83_5vKPe8uYxCWGdqvxwJeq0mw5zzKYDiAb7dbN0,4503
43
42
  execsql/exporters/markdown.py,sha256=_ZX3dikbtAb6qZxYeWxDZAPF0-cNKTPR7or5kTbD2ZU,4436
44
- execsql/exporters/ods.py,sha256=XnRc6unxVRYWSKhQThDsc6c5YvDZ4OX8xJovXK6qRY4,18880
43
+ execsql/exporters/ods.py,sha256=G9dotsua8V6LcEl-rxs3KZOr-U_Dw8KPyJ8i-BQRDpc,19358
45
44
  execsql/exporters/parquet.py,sha256=186vUTH1oVAQ0s_qayLzEQVsKKu3ijAkhYEI6tysXkg,1095
46
45
  execsql/exporters/pretty.py,sha256=tG7Yr4lwFMs3a0Jrsq6qsNNkE8Q7sMePr61SS5QMaTs,3447
47
46
  execsql/exporters/protocol.py,sha256=BxATgz0xKHbB2FpZBeNg7wZfIiCohhD1awlr3JCec0c,4372
48
47
  execsql/exporters/raw.py,sha256=hqO5XEv_Ab9KiphPvZ9sZEdxWTg-kyn8PH9V3qFksyo,2488
49
- execsql/exporters/sqlite.py,sha256=XA0ALLvy-r6Pz1lpOFkWWbvpSP9Hm1tHHiuo_BvPVDk,2686
50
- execsql/exporters/templates.py,sha256=T9nk7vJrlxiPGfOWGc79xqqDxK3TCYu0wXq48U02npw,5564
48
+ execsql/exporters/sqlite.py,sha256=WpiR6I42dWUzw6_BmN9Ihrx6TEfr_lKpnrrwLA9Aq7E,3074
49
+ execsql/exporters/templates.py,sha256=XlWwOVSVItexaQUkmTsWB_mff0t8cdaZ5ocgSU2HsAA,6014
51
50
  execsql/exporters/values.py,sha256=HIyud31aux_dbCphfKHEGeZB9fkIPE5PoGXQz817XIE,2520
52
- execsql/exporters/xls.py,sha256=OR0yni_OK-lmAUEa6vCd_tTzF61UFcmEvX6tgOduJCk,10886
53
- execsql/exporters/xlsx.py,sha256=PlQkpzckiNn4Dl_nUfnNv4PgHyrubyuroNPsIFngMCY,11489
51
+ execsql/exporters/xls.py,sha256=9H4Nf8VNwXPxc7Koq_pq-Izxi6zt2MxbsJ6Yxjao4u0,11094
52
+ execsql/exporters/xlsx.py,sha256=0f-Gdp8DyB3muUdH6tyiGFKGx9UymZ4fL3ja6H0sBjI,11853
54
53
  execsql/exporters/xml.py,sha256=lqcOM8uKDoCayU42BPSLNH1_2DIHU5D3LtQItREU90c,2564
55
54
  execsql/exporters/yaml.py,sha256=1Vuc6uMDuLTkCuXCfXWKz4gLkkAVdEXkLs4gEB_67Xo,3110
56
55
  execsql/exporters/zip.py,sha256=kr0X6VLE_ULGVQtMzfqZZSUmc1Qupxg9HbMOAvnTQvI,4890
@@ -63,62 +62,62 @@ execsql/importers/__init__.py,sha256=zZwdQxMaValCNqUrVdvaA7XPU3J8NmqVJ4uolNWY2iU
63
62
  execsql/importers/base.py,sha256=FGVz3ntN6xHL99rQixlQj3tAf570K_oU83UtbYE1lJg,4124
64
63
  execsql/importers/csv.py,sha256=GUVRP294vHlOlF8XNecPEzatUBOOFIqnrEV9cBQkiv0,4849
65
64
  execsql/importers/feather.py,sha256=g2B69d2uv9vmnXcmjFyTVsMP40LYEzFYkhk3gD26mGw,1900
66
- execsql/importers/json.py,sha256=Z7QJZQ9fyqaxFxjfqcfZoaoW2GSZt-DMqW5LZiEfyNs,4684
65
+ execsql/importers/json.py,sha256=fL47h09Zzx4Qw3TTQRQJbdPdD3qVMiU-kK9C7j1IQzg,5534
67
66
  execsql/importers/ods.py,sha256=VsxIkr7opBamB0PbSFmMWt7G11w8lLUH1k_kRwz28zw,2847
68
67
  execsql/importers/xls.py,sha256=IB-ShXw2zHJUWPUtMCDbkjxYue-hACyR66tKNOZqzSw,3685
69
68
  execsql/metacommands/__init__.py,sha256=6PE1rXfJzIpHCxIgbeokh6fY2cAe82KR04J6pzawVlE,12993
70
- execsql/metacommands/conditions.py,sha256=g1Ch8BZIHLK7L3pdMDtxIiPCnE2x1hdgAANGraIcfH8,29761
69
+ execsql/metacommands/conditions.py,sha256=5njexsBqSN_MNQdnw9Ra51BcS7ekACHNvBI2MXZF6_g,29995
71
70
  execsql/metacommands/connect.py,sha256=W24gYGmYDXNQyzBTsqWtl9-qbX2FS0v_c4s_OHj97mY,15327
72
71
  execsql/metacommands/control.py,sha256=btF9hP_jzTuTIODPK72CYF0v_oKYpwXpKLATt-Ti2kc,7988
73
72
  execsql/metacommands/data.py,sha256=u9D6F3ambIqXhEHVmFOI6RDrbmdXQ-FUiqw7aMGo5bQ,12135
74
73
  execsql/metacommands/debug.py,sha256=MeVXAob8ItEg2QzuSUkKDaQCEABnH6u0XcAwJzw36CE,13015
75
- execsql/metacommands/dispatch.py,sha256=DvpgpkX1yMWnJrVW8ir_o1xKgfZgXzlTt6IwP0Lwoek,87441
74
+ execsql/metacommands/dispatch.py,sha256=t7x0xWHJA0PeCrYf7jYeSMJgf0yxcZ_xh-_YAtBPHLw,87192
76
75
  execsql/metacommands/io.py,sha256=vlGBje5sgnqeilooMdhJDgSRIhysHy5_7LrKtik9Xjs,3011
77
- execsql/metacommands/io_export.py,sha256=L8XH36xusK7j5rS45Bf6AwvgiHyGCec4nRz3ukEUnfQ,13978
78
- execsql/metacommands/io_fileops.py,sha256=K7eHMAuCUEVpNITYnJhWaSmXtAnnx1ZaNIFnOwKtXzc,9456
79
- execsql/metacommands/io_import.py,sha256=faYpHpHFieOe66QqtfFSHOIFaG39lzpSnTpr17UUzuk,14775
76
+ execsql/metacommands/io_export.py,sha256=-7VDtUUQegwGRantw-NpdkI_9hwIKU-36ZvReIYC2QA,14285
77
+ execsql/metacommands/io_fileops.py,sha256=6yED22UlVNXcRHNxZTgna8HmwFcR8s4nt6epMGLMtHY,10139
78
+ execsql/metacommands/io_import.py,sha256=kUHIiI16WMuxXpqDMIRBc06KvI-_sYuYfJVNMTKOoAo,15706
80
79
  execsql/metacommands/io_write.py,sha256=RqOklmeGifu3lQgi_0glOoBWTY9FFIDlWIpOpb_hc3o,12789
81
80
  execsql/metacommands/prompt.py,sha256=LUl7doqKx8fLR0qt2lXbhdgNpdF1s6KZ6Ruitt10YnM,37483
82
- execsql/metacommands/script_ext.py,sha256=NShl29U9eI75_aL9WTSx8m4GjhCvMgJehzlES5M36cY,3693
81
+ execsql/metacommands/script_ext.py,sha256=CsUbyq8QFPnnvfX_k7fPlYNvvRw1xLmAWER4Exo5pwc,3658
83
82
  execsql/metacommands/system.py,sha256=5ETiWbkVDGsdwTldDaMM4rwY_Smd02wCWUROtf6XH_M,7385
84
83
  execsql/metacommands/upsert.py,sha256=wzoMpM8g49pEvU9GkHZ62fPvqV3w1UIUfxVA7HAsS_o,20317
85
84
  execsql/script/__init__.py,sha256=eGJPBDWj42aaId2lX_quSrqoKrvGwGElIrGDNCyoV1Y,3547
86
- execsql/script/ast.py,sha256=eJPDHdokPtq9RrUGipyU-S6cB-YcJOmVuTDBs--NgYI,20200
85
+ execsql/script/ast.py,sha256=TQ4_7Lfw1F8_k6ycdvMZdzwNafrZiljSrthVRWUsuIk,20585
87
86
  execsql/script/control.py,sha256=WqLy-HLPqHG3vEzYpKMiIJsD7LpORjyQuUWzFzcGz4w,2327
88
- execsql/script/engine.py,sha256=m2RBNtqTD4idhtSWF6eh1owM5Y6b80HUISVs1woNi90,19622
89
- execsql/script/executor.py,sha256=6O3KZsqcF83MLMma6AaEQfJmFVU6LeXLSSBuP92f1tE,35516
87
+ execsql/script/engine.py,sha256=52RmtQJGk4KWqXpZY7jfKeiPojAoULHWaigOcm1azm4,20979
88
+ execsql/script/executor.py,sha256=UTQ4k8EjxH5CdKYZ0E_l-0WyQ-i769mUJw6cJmMvSxI,36018
90
89
  execsql/script/parser.py,sha256=K-mgwuQ729KdmimOpEmb0OBzMyOvX3gxhBKLgr5P4VA,33697
91
- execsql/script/variables.py,sha256=7JhXNcW_2UfEofhTtDdFLyULxP67gt6q6IzE2ER_VHQ,14668
90
+ execsql/script/variables.py,sha256=t0BwrRuA8m1LYHGLkDPNbqW6QmudXroOFYsO0fwK2N0,16302
92
91
  execsql/utils/__init__.py,sha256=0uR6JwVJQRX3vceByNBduCAf5dd5assKjeqJUWvpZoA,278
93
- execsql/utils/auth.py,sha256=onXzNkNZQZxGC5w7eey06sjvAIAX_Lf9g7nUJtcsel0,7009
92
+ execsql/utils/auth.py,sha256=dnLie8jFxN_l7ZrrRufVuxGw92iG62DIVatIjlEb4pM,8717
94
93
  execsql/utils/crypto.py,sha256=KlT6lPk-v0-qQQfAMfWvT9Q6kRdCD3_5JVaLajNocKM,3051
95
94
  execsql/utils/datetime.py,sha256=rMCXAbvj6bxKCYzC97vrludO6PU5DYQ39buZ0smDC5A,3573
96
95
  execsql/utils/errors.py,sha256=C-9hlpJ7GM5gpDBdTsT4xFhK0OHNjonHgbq7fMl-Vvc,8577
97
- execsql/utils/fileio.py,sha256=1FQuYuSkVEgJHOc504oRH3owiSBjjB_tbfUzPmzGLZ8,25924
98
- execsql/utils/gui.py,sha256=h_7V2zYfp0l6C3Ft8QtUJAPgxCUrFkgIqwimz5s1bbQ,22821
96
+ execsql/utils/fileio.py,sha256=38Z0WBvfaMa624aw3jo9ZOSlUCsacIeJWOhQKYe9YlU,31012
97
+ execsql/utils/gui.py,sha256=kpJkvi8zblXFdO4PgsF8yE_gkOJrsDwWoQWmaDpjJEQ,23402
99
98
  execsql/utils/mail.py,sha256=MeSYjG9Qr8zdrEvkvg0C3YcLKaA5Op9xqeKbfvj-RLs,5500
100
99
  execsql/utils/numeric.py,sha256=xh02ANSRk3nUpQ-rtm66ILoMqoi7HtzCoRMIOT9U8QI,1570
101
100
  execsql/utils/regex.py,sha256=diEzTZqU_HHwVMadPAvN1Vgzhl7I03eVaEFGCXyGGL8,3770
102
101
  execsql/utils/strings.py,sha256=UQNjpRCEFa1UO6feU-M-9e24wWAvizs_iu_4fFusLxo,8516
103
102
  execsql/utils/timer.py,sha256=eDYf5VzCNFk7oo90InJucUm3XcBdhYMogjZMqeg9xzc,1899
104
- execsql2-2.17.3.data/data/execsql2_extras/README.md,sha256=sxwVyU0ZahCfANv56LahkyuM505kFjrMhe-1SvWE69E,4845
105
- execsql2-2.17.3.data/data/execsql2_extras/config_settings.sqlite,sha256=aY5cxR7Q7J6zJ4bC9lu5mHUrhy211Cq3MNKPQVCt02E,20480
106
- execsql2-2.17.3.data/data/execsql2_extras/example_config_prompt.sql,sha256=SY3Jxn1qcVm4kPW9xmmTfknHfvURXmeEYTbRjYrjGSw,7487
107
- execsql2-2.17.3.data/data/execsql2_extras/execsql.conf,sha256=1a2g2Vga7s128wcu3ftIFRkHlKKtuvkuOHSD1XuNT7o,9404
108
- execsql2-2.17.3.data/data/execsql2_extras/make_config_db.sql,sha256=WwyC6dK-Eh5CAVppiBCDHqiI1_wEI9U95Ytpr4lsZkg,8726
109
- execsql2-2.17.3.data/data/execsql2_extras/md_compare.sql,sha256=B8Wd7LZ0vnMY2qvA139JIEBkPObgRH2i5xj6PejTQt8,24092
110
- execsql2-2.17.3.data/data/execsql2_extras/md_glossary.sql,sha256=DJRHcU5NbFpxTTX-IwH3yRlsboj1q6BBGrUAHKn4Cuo,10796
111
- execsql2-2.17.3.data/data/execsql2_extras/md_upsert.sql,sha256=v_7GbWh_N1mBTmw3gvTrkagOVp2q0KmXvM8hE-DlFxY,112524
112
- execsql2-2.17.3.data/data/execsql2_extras/pg_compare.sql,sha256=9dWa8hnfy5dVJI-z2iGpd9JzQmI4j2ziMlEdpnr66ro,24352
113
- execsql2-2.17.3.data/data/execsql2_extras/pg_glossary.sql,sha256=pKjIIDsROAgJq2H-1qNEcRMAWManivcZ_AEVHzUUlic,9908
114
- execsql2-2.17.3.data/data/execsql2_extras/pg_upsert.sql,sha256=k7AFiGTLBy3nf-qO5QIaZrEYTAKvdxxU3JDLx9jqkzs,108315
115
- execsql2-2.17.3.data/data/execsql2_extras/script_template.sql,sha256=1Estacb_vm1FgK41k_G9nuduP1yiA-fQ1Kn4Z4mv5Ao,11153
116
- execsql2-2.17.3.data/data/execsql2_extras/ss_compare.sql,sha256=TsVxWm3cEpR5-EiMYXNhtaY0arSNeKZhsJdHdLA7xeI,24833
117
- execsql2-2.17.3.data/data/execsql2_extras/ss_glossary.sql,sha256=cLM7nN8JOIu9ZVP9oY9qdSK3hrnWJiDcX6nZmQQbQWI,13065
118
- execsql2-2.17.3.data/data/execsql2_extras/ss_upsert.sql,sha256=BCqmBykXBF-BpCgOFeG1qhf2XfScKsxPD17wd1hYfHw,120647
119
- execsql2-2.17.3.dist-info/METADATA,sha256=UWhhW9jJVLNkTsWgtLEEqq6SG5RzxjJzcF8K71vCuaA,21409
120
- execsql2-2.17.3.dist-info/WHEEL,sha256=QccIxa26bgl1E6uMy58deGWi-0aeIkkangHcxk2kWfw,87
121
- execsql2-2.17.3.dist-info/entry_points.txt,sha256=sUOxkM-dN1eBGGpSpDLsAaE0yNXYQKWZAfxPOlMkQyk,90
122
- execsql2-2.17.3.dist-info/licenses/LICENSE.txt,sha256=LBdhuxejF8_bLCHZ2kWfmDXpDGUu914Gbd6_3JjCRe0,676
123
- execsql2-2.17.3.dist-info/licenses/NOTICE,sha256=McYzgxYav3U1OaVsY4Su1sfBrfmplpRdA9b6-gCDQCg,342
124
- execsql2-2.17.3.dist-info/RECORD,,
103
+ execsql2-2.18.1.data/data/execsql2_extras/README.md,sha256=sxwVyU0ZahCfANv56LahkyuM505kFjrMhe-1SvWE69E,4845
104
+ execsql2-2.18.1.data/data/execsql2_extras/config_settings.sqlite,sha256=aY5cxR7Q7J6zJ4bC9lu5mHUrhy211Cq3MNKPQVCt02E,20480
105
+ execsql2-2.18.1.data/data/execsql2_extras/example_config_prompt.sql,sha256=SY3Jxn1qcVm4kPW9xmmTfknHfvURXmeEYTbRjYrjGSw,7487
106
+ execsql2-2.18.1.data/data/execsql2_extras/execsql.conf,sha256=1a2g2Vga7s128wcu3ftIFRkHlKKtuvkuOHSD1XuNT7o,9404
107
+ execsql2-2.18.1.data/data/execsql2_extras/make_config_db.sql,sha256=WwyC6dK-Eh5CAVppiBCDHqiI1_wEI9U95Ytpr4lsZkg,8726
108
+ execsql2-2.18.1.data/data/execsql2_extras/md_compare.sql,sha256=qYYVAjSeHZzjszxV3Bv6bg8Ckbq2kMHl87_gh4sywMU,24140
109
+ execsql2-2.18.1.data/data/execsql2_extras/md_glossary.sql,sha256=hkZ2Onn57LAKKsuXxzhR8tPtcWXkmWEQkwPE58-Tm2k,10796
110
+ execsql2-2.18.1.data/data/execsql2_extras/md_upsert.sql,sha256=_CAK4BzEboRXTNy03SJR-oOjcEdSNMuRBPL6noWUptY,112560
111
+ execsql2-2.18.1.data/data/execsql2_extras/pg_compare.sql,sha256=1zJd4hVUKHR0tncc2qTBC9B4qVV4Us2ITkJpsjN3tMw,24352
112
+ execsql2-2.18.1.data/data/execsql2_extras/pg_glossary.sql,sha256=IKuwna-_8b20ljSkXZruuiQigrCpo7ueQdUqd1MXiuI,9908
113
+ execsql2-2.18.1.data/data/execsql2_extras/pg_upsert.sql,sha256=HpPJtTHvpEjQy03j-3iPxDEOHMRkudOg7O4D4YR38UI,108315
114
+ execsql2-2.18.1.data/data/execsql2_extras/script_template.sql,sha256=2J35ddZPguJ-vwTsz83wErv0jiWUyJcdW_JM0mNKDXA,11155
115
+ execsql2-2.18.1.data/data/execsql2_extras/ss_compare.sql,sha256=j1qVNUPXQsEU7-DoVgDJCGcE0EuIl7whLBT3fgeiMAo,24833
116
+ execsql2-2.18.1.data/data/execsql2_extras/ss_glossary.sql,sha256=2gLxv34xzKt0vy7hSzJH7a9JiMC3ETrv9MofxQwAibU,13065
117
+ execsql2-2.18.1.data/data/execsql2_extras/ss_upsert.sql,sha256=G_8rQ0VzuKIZHWs24O_WrfzpC5S27R1JsL-bFBR3SUQ,117730
118
+ execsql2-2.18.1.dist-info/METADATA,sha256=czc8snw8MBbrf19X5tlYXFe5cCcpSFQmE6_pi0ezAYk,21911
119
+ execsql2-2.18.1.dist-info/WHEEL,sha256=QccIxa26bgl1E6uMy58deGWi-0aeIkkangHcxk2kWfw,87
120
+ execsql2-2.18.1.dist-info/entry_points.txt,sha256=sUOxkM-dN1eBGGpSpDLsAaE0yNXYQKWZAfxPOlMkQyk,90
121
+ execsql2-2.18.1.dist-info/licenses/LICENSE.txt,sha256=LBdhuxejF8_bLCHZ2kWfmDXpDGUu914Gbd6_3JjCRe0,676
122
+ execsql2-2.18.1.dist-info/licenses/NOTICE,sha256=McYzgxYav3U1OaVsY4Su1sfBrfmplpRdA9b6-gCDQCg,342
123
+ execsql2-2.18.1.dist-info/RECORD,,