execsql2 2.29.0__py3-none-any.whl → 2.31.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.
- execsql/__main__.py +4 -5
- execsql/api.py +6 -0
- execsql/cli/__init__.py +3 -14
- execsql/cli/application.py +6 -4
- execsql/cli/commands/lint.py +5 -2
- execsql/cli/commands/lsp.py +42 -0
- execsql/cli/dsn.py +38 -2
- execsql/cli/lint.py +24 -7
- execsql/cli/run.py +22 -9
- execsql/config.py +58 -10
- execsql/data/execsql.conf.template +8 -2
- execsql/db/access.py +7 -5
- execsql/db/base.py +18 -0
- execsql/db/duckdb.py +96 -14
- execsql/db/factory.py +11 -1
- execsql/db/mysql.py +56 -3
- execsql/db/odbc.py +45 -0
- execsql/db/postgres.py +1 -1
- execsql/db/sqlserver.py +37 -21
- execsql/exporters/ods.py +146 -41
- execsql/exporters/values.py +166 -9
- execsql/gui/__init__.py +3 -31
- execsql/importers/base.py +1 -1
- execsql/importers/csv.py +1 -1
- execsql/importers/ods.py +2 -0
- execsql/lsp/_util.py +21 -0
- execsql/lsp/cache.py +73 -0
- execsql/lsp/code_actions.py +10 -14
- execsql/lsp/completion.py +8 -15
- execsql/lsp/diagnostics.py +15 -3
- execsql/lsp/document.py +142 -41
- execsql/lsp/hover.py +5 -13
- execsql/lsp/navigation.py +7 -10
- execsql/lsp/server.py +111 -29
- execsql/manifest.py +29 -9
- execsql/metacommands/__init__.py +0 -2
- execsql/metacommands/io_fileops.py +16 -5
- execsql/metacommands/reference.py +1 -1
- execsql/metacommands/upsert.py +10 -1
- execsql/script/executor.py +2 -21
- execsql/state.py +6 -3
- execsql/state.pyi +2 -0
- execsql/utils/auth.py +21 -14
- execsql/utils/errors.py +20 -37
- execsql/utils/fileio.py +44 -48
- execsql/utils/paths.py +31 -0
- execsql/utils/regex.py +0 -5
- {execsql2-2.29.0.data → execsql2-2.31.1.data}/data/execsql2_extras/README.md +9 -8
- {execsql2-2.29.0.data → execsql2-2.31.1.data}/data/execsql2_extras/md_compare.sql +53 -29
- {execsql2-2.29.0.data → execsql2-2.31.1.data}/data/execsql2_extras/md_glossary.sql +20 -20
- {execsql2-2.29.0.data → execsql2-2.31.1.data}/data/execsql2_extras/md_upsert.sql +59 -66
- {execsql2-2.29.0.data → execsql2-2.31.1.data}/data/execsql2_extras/pg_compare.sql +19 -22
- {execsql2-2.29.0.data → execsql2-2.31.1.data}/data/execsql2_extras/pg_glossary.sql +13 -17
- {execsql2-2.29.0.data → execsql2-2.31.1.data}/data/execsql2_extras/script_template.sql +302 -299
- {execsql2-2.29.0.data → execsql2-2.31.1.data}/data/execsql2_extras/ss_compare.sql +39 -29
- {execsql2-2.29.0.data → execsql2-2.31.1.data}/data/execsql2_extras/ss_glossary.sql +13 -17
- {execsql2-2.29.0.data → execsql2-2.31.1.data}/data/execsql2_extras/ss_upsert.sql +56 -66
- {execsql2-2.29.0.dist-info → execsql2-2.31.1.dist-info}/METADATA +17 -43
- {execsql2-2.29.0.dist-info → execsql2-2.31.1.dist-info}/RECORD +66 -63
- execsql2-2.29.0.data/data/execsql2_extras/pg_upsert.sql +0 -2791
- {execsql2-2.29.0.data → execsql2-2.31.1.data}/data/execsql2_extras/config_settings.sqlite +0 -0
- {execsql2-2.29.0.data → execsql2-2.31.1.data}/data/execsql2_extras/example_config_prompt.sql +0 -0
- {execsql2-2.29.0.data → execsql2-2.31.1.data}/data/execsql2_extras/make_config_db.sql +0 -0
- {execsql2-2.29.0.dist-info → execsql2-2.31.1.dist-info}/WHEEL +0 -0
- {execsql2-2.29.0.dist-info → execsql2-2.31.1.dist-info}/entry_points.txt +0 -0
- {execsql2-2.29.0.dist-info → execsql2-2.31.1.dist-info}/licenses/LICENSE.txt +0 -0
- {execsql2-2.29.0.dist-info → execsql2-2.31.1.dist-info}/licenses/NOTICE +0 -0
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: execsql2
|
|
3
|
-
Version: 2.
|
|
3
|
+
Version: 2.31.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
|
-
Project-URL: Homepage, https://execsql2.readthedocs.io
|
|
5
|
+
Project-URL: Homepage, https://execsql2.readthedocs.io/en/stable/
|
|
6
6
|
Project-URL: Repository, https://github.com/geocoug/execsql
|
|
7
7
|
Project-URL: Issues, https://github.com/geocoug/execsql/issues
|
|
8
8
|
Author-email: Dreas Nielsen <cortice@tutanota.com>
|
|
@@ -53,7 +53,7 @@ Requires-Dist: lsprotocol>=2025.0.0; extra == 'all'
|
|
|
53
53
|
Requires-Dist: odfpy>=1.4; extra == 'all'
|
|
54
54
|
Requires-Dist: openpyxl>=3.1; extra == 'all'
|
|
55
55
|
Requires-Dist: oracledb>=3.0; extra == 'all'
|
|
56
|
-
Requires-Dist: pg-upsert>=1.
|
|
56
|
+
Requires-Dist: pg-upsert>=1.26.0; extra == 'all'
|
|
57
57
|
Requires-Dist: polars>=1.0; extra == 'all'
|
|
58
58
|
Requires-Dist: psycopg[binary]<4,>=3.1; extra == 'all'
|
|
59
59
|
Requires-Dist: pygls<3,>=2.1; extra == 'all'
|
|
@@ -82,31 +82,6 @@ Requires-Dist: pycryptodome>=3.20; extra == 'auth-encrypted'
|
|
|
82
82
|
Provides-Extra: auth-plaintext
|
|
83
83
|
Requires-Dist: keyring>=25.0; extra == 'auth-plaintext'
|
|
84
84
|
Requires-Dist: keyrings-alt>=5.0; extra == 'auth-plaintext'
|
|
85
|
-
Provides-Extra: dev
|
|
86
|
-
Requires-Dist: build>=1.2.2.post1; extra == 'dev'
|
|
87
|
-
Requires-Dist: bump-my-version>=1.2.7; extra == 'dev'
|
|
88
|
-
Requires-Dist: defusedxml>=0.7; extra == 'dev'
|
|
89
|
-
Requires-Dist: jinja2>=3.1; extra == 'dev'
|
|
90
|
-
Requires-Dist: lsprotocol>=2025.0.0; extra == 'dev'
|
|
91
|
-
Requires-Dist: mkdocstrings-python>=2.0.3; extra == 'dev'
|
|
92
|
-
Requires-Dist: mypy>=1.10; extra == 'dev'
|
|
93
|
-
Requires-Dist: odfpy>=1.4; extra == 'dev'
|
|
94
|
-
Requires-Dist: openpyxl>=3.1; extra == 'dev'
|
|
95
|
-
Requires-Dist: polars>=1.0; extra == 'dev'
|
|
96
|
-
Requires-Dist: pre-commit>=3.5.0; extra == 'dev'
|
|
97
|
-
Requires-Dist: pygls<3,>=2.1; extra == 'dev'
|
|
98
|
-
Requires-Dist: pytest-asyncio>=1.0; extra == 'dev'
|
|
99
|
-
Requires-Dist: pytest-cov>=5.0.0; extra == 'dev'
|
|
100
|
-
Requires-Dist: pytest-lsp>=1.0; extra == 'dev'
|
|
101
|
-
Requires-Dist: pytest>=8; extra == 'dev'
|
|
102
|
-
Requires-Dist: pyyaml>=6.0; extra == 'dev'
|
|
103
|
-
Requires-Dist: ruff>=0.4; extra == 'dev'
|
|
104
|
-
Requires-Dist: sqlglot<30.22,>=30.21.0; extra == 'dev'
|
|
105
|
-
Requires-Dist: tables>=3.10; extra == 'dev'
|
|
106
|
-
Requires-Dist: tox-uv>=1.13.1; extra == 'dev'
|
|
107
|
-
Requires-Dist: twine>=6.1.0; extra == 'dev'
|
|
108
|
-
Requires-Dist: xlrd>=2.0; extra == 'dev'
|
|
109
|
-
Requires-Dist: zensical==0.0.67; extra == 'dev'
|
|
110
85
|
Provides-Extra: duckdb
|
|
111
86
|
Requires-Dist: duckdb>=1.0; extra == 'duckdb'
|
|
112
87
|
Requires-Dist: pytz; extra == 'duckdb'
|
|
@@ -140,7 +115,7 @@ Requires-Dist: oracledb>=3.0; extra == 'oracle'
|
|
|
140
115
|
Provides-Extra: postgres
|
|
141
116
|
Requires-Dist: psycopg[binary]<4,>=3.1; extra == 'postgres'
|
|
142
117
|
Provides-Extra: upsert
|
|
143
|
-
Requires-Dist: pg-upsert>=1.
|
|
118
|
+
Requires-Dist: pg-upsert>=1.26.0; extra == 'upsert'
|
|
144
119
|
Description-Content-Type: text/markdown
|
|
145
120
|
|
|
146
121
|
> [!NOTE]
|
|
@@ -148,7 +123,7 @@ Description-Content-Type: text/markdown
|
|
|
148
123
|
|
|
149
124
|
<div align="center">
|
|
150
125
|
|
|
151
|
-
<img src="https://execsql2.readthedocs.io/en/
|
|
126
|
+
<img src="https://execsql2.readthedocs.io/en/stable/images/execsql_logo_01.png" alt="execsql logo">
|
|
152
127
|
|
|
153
128
|
*Multi-DBMS SQL script processor.*
|
|
154
129
|
|
|
@@ -180,7 +155,7 @@ Scripts are ordinary SQL plus metacommands embedded in comments (`-- !x!`), whic
|
|
|
180
155
|
| `execsql config` | Show every config option, its value, and the file that set it | No |
|
|
181
156
|
| `execsql list` | Metacommands, encodings, plugins, or the keyword vocabulary | No |
|
|
182
157
|
| `execsql init` | Set up a project: config file, a script with a header, pre-commit hooks | No |
|
|
183
|
-
| `execsql lsp` | [Language server](https://execsql2.readthedocs.io/en/
|
|
158
|
+
| `execsql lsp` | [Language server](https://execsql2.readthedocs.io/en/stable/guides/editors/): lint findings, completion, hover, navigation, quick fixes and formatting in your editor | No |
|
|
184
159
|
| [VS Code extension](extras/vscode-execsql) | Highlighting plus everything `execsql lsp` provides | No |
|
|
185
160
|
|
|
186
161
|
`format` and `lint` take files or directories.
|
|
@@ -214,7 +189,7 @@ load_data.sql
|
|
|
214
189
|
Found 3 issues in 1 file: 3 warnings (1 file checked)
|
|
215
190
|
```
|
|
216
191
|
|
|
217
|
-
`V002` and `V001` together point at a typo: `site_cd` is defined and `site_code` is used. Every issue has a rule code for `--select` and `--ignore`; `--output-format concise` prints one `path:line` line per issue and `json` feeds CI tools. The [lint rules](https://execsql2.readthedocs.io/en/
|
|
192
|
+
`V002` and `V001` together point at a typo: `site_cd` is defined and `site_code` is used. Every issue has a rule code for `--select` and `--ignore`; `--output-format concise` prints one `path:line` line per issue and `json` feeds CI tools. The [lint rules](https://execsql2.readthedocs.io/en/stable/reference/lint/) page explains each one.
|
|
218
193
|
|
|
219
194
|
`execsql format` also runs as a [pre-commit hook](#formatting-scripts), so formatting is enforced without anyone remembering to run it.
|
|
220
195
|
|
|
@@ -254,7 +229,7 @@ drop table if exists staging.errorlog cascade;
|
|
|
254
229
|
|
|
255
230
|
The `PROMPT` metacommand produces a GUI display of the data:
|
|
256
231
|
|
|
257
|
-

|
|
258
233
|
|
|
259
234
|
## Installation
|
|
260
235
|
|
|
@@ -269,7 +244,7 @@ uv tool install "execsql2[all]" # everything: all drivers plus all fea
|
|
|
269
244
|
add it to that project instead: `uv add "execsql2[postgres]"` or
|
|
270
245
|
`pip install "execsql2[postgres]"` in its virtual environment.
|
|
271
246
|
|
|
272
|
-
Feature extras cover spreadsheet and Parquet/Feather formats, keyring authentication, PostgreSQL upsert, and more. See the [installation guide](https://execsql2.readthedocs.io/en/
|
|
247
|
+
Feature extras cover spreadsheet and Parquet/Feather formats, keyring authentication, PostgreSQL upsert, and more. See the [installation guide](https://execsql2.readthedocs.io/en/stable/getting-started/installation/) for the full list.
|
|
273
248
|
|
|
274
249
|
## Usage
|
|
275
250
|
|
|
@@ -336,7 +311,7 @@ silences.
|
|
|
336
311
|
| `--debug` | Start in step-through debug mode (REPL pauses before each stmt) |
|
|
337
312
|
| `--no-system-cmd` / `--no-rm-file` / `--no-serve` | Disable the `SYSTEM_CMD` / `RM_FILE` / `SERVE` metacommands |
|
|
338
313
|
|
|
339
|
-
See the [full options reference](https://execsql2.readthedocs.io/en/
|
|
314
|
+
See the [full options reference](https://execsql2.readthedocs.io/en/stable/getting-started/syntax/#options) or run `execsql run --help` for the complete list, `execsql run --ping` to test a connection, `execsql config` to see which config files set what, and `execsql list metacommands` for all metacommands.
|
|
340
315
|
|
|
341
316
|
## Features
|
|
342
317
|
|
|
@@ -439,7 +414,7 @@ result = run(sql="SELECT 1;", connection=conn)
|
|
|
439
414
|
conn.close()
|
|
440
415
|
```
|
|
441
416
|
|
|
442
|
-
Factory functions exist for every supported backend (`db_Postgres`, `db_MySQL`, `db_SQLite`, `db_DuckDB`, `db_SqlServer`, `db_Oracle`, `db_Firebird`, `db_Access`, `db_Dsn`). See [`execsql.db.factory`](https://execsql2.readthedocs.io/en/
|
|
417
|
+
Factory functions exist for every supported backend (`db_Postgres`, `db_MySQL`, `db_SQLite`, `db_DuckDB`, `db_SqlServer`, `db_Oracle`, `db_Firebird`, `db_Access`, `db_Dsn`). See [`execsql.db.factory`](https://execsql2.readthedocs.io/en/stable/api/db/).
|
|
443
418
|
|
|
444
419
|
Each call to `run()` uses an isolated `RuntimeContext`, so multiple calls do not share state.
|
|
445
420
|
|
|
@@ -466,13 +441,13 @@ execsql format --no-sql --in-place scripts/
|
|
|
466
441
|
```yaml
|
|
467
442
|
repos:
|
|
468
443
|
- repo: https://github.com/geocoug/execsql
|
|
469
|
-
rev: v2.
|
|
444
|
+
rev: v2.31.1
|
|
470
445
|
hooks:
|
|
471
446
|
- id: execsql-format
|
|
472
447
|
- id: execsql-lint
|
|
473
448
|
```
|
|
474
449
|
|
|
475
|
-
The format hook rewrites `*.sql` files in place by default; the lint hook fails the commit when a script has a lint error. See the [formatter documentation](https://execsql2.readthedocs.io/en/
|
|
450
|
+
The format hook rewrites `*.sql` files in place by default; the lint hook fails the commit when a script has a lint error. See the [formatter documentation](https://execsql2.readthedocs.io/en/stable/guides/formatter/) for `--check`, `--indent`, and other options.
|
|
476
451
|
|
|
477
452
|
## VS Code
|
|
478
453
|
|
|
@@ -483,19 +458,18 @@ uv tool install "execsql2[lsp]" # the language server
|
|
|
483
458
|
code --install-extension execsql-syntax.vsix # the extension, from the release
|
|
484
459
|
```
|
|
485
460
|
|
|
486
|
-
If execsql is already installed with other extras, name them too, e.g. `uv tool install "execsql2[postgres,lsp]"` or `pipx install --force "execsql2[postgres,lsp]"`: the new list replaces the old one (see [Adding an extra later](https://execsql2.readthedocs.io/en/
|
|
461
|
+
If execsql is already installed with other extras, name them too, e.g. `uv tool install "execsql2[postgres,lsp]"` or `pipx install --force "execsql2[postgres,lsp]"`: the new list replaces the old one (see [Adding an extra later](https://execsql2.readthedocs.io/en/stable/getting-started/installation/#adding-an-extra-later)).
|
|
487
462
|
|
|
488
|
-
Other editors use the language server directly: see [Editor Support](https://execsql2.readthedocs.io/en/
|
|
463
|
+
Other editors use the language server directly: see [Editor Support](https://execsql2.readthedocs.io/en/stable/guides/editors/). The [extension README](extras/vscode-execsql/README.md) covers settings, installing from a clone, color customization, and troubleshooting.
|
|
489
464
|
|
|
490
465
|
## Templates
|
|
491
466
|
|
|
492
|
-
The `templates/` directory in this repository includes ready-to-use execsql scripts
|
|
467
|
+
The `templates/` directory in this repository includes ready-to-use execsql scripts, tested against live databases in CI; see the [Templates documentation](https://execsql2.readthedocs.io/en/stable/templates/). (`execsql config --init` writes an annotated configuration file.)
|
|
493
468
|
|
|
494
|
-
- **Upsert scripts** (`
|
|
469
|
+
- **Upsert scripts** (`md_upsert.sql`, `ss_upsert.sql`): Perform merge/upsert operations on multiple tables simultaneously, respecting foreign key order, for MySQL/MariaDB and SQL Server. On PostgreSQL, use the [`PG_UPSERT`](https://execsql2.readthedocs.io/en/stable/reference/metacommands/#pg_upsert) metacommand.
|
|
495
470
|
- **Comparison scripts** (`pg_compare.sql`, `md_compare.sql`, `ss_compare.sql`): Compare staging and base tables across multiple dimensions.
|
|
496
471
|
- **Glossary scripts** (`pg_glossary.sql`, `md_glossary.sql`, `ss_glossary.sql`): Produce a glossary of column names and definitions to accompany a database export.
|
|
497
472
|
- **`script_template.sql`**: A framework for new scripts with sections for configuration, logging, and error reporting.
|
|
498
|
-
- **`execsql.conf`**: An annotated configuration file covering all available settings.
|
|
499
473
|
|
|
500
474
|
## Documentation
|
|
501
475
|
|
|
@@ -1,50 +1,51 @@
|
|
|
1
1
|
execsql/__init__.py,sha256=ZeVnpEWu8M2bn3qLmVM72NhWRueUGNbsX8UAPTermo0,901
|
|
2
|
-
execsql/__main__.py,sha256=
|
|
3
|
-
execsql/api.py,sha256=
|
|
4
|
-
execsql/config.py,sha256=
|
|
2
|
+
execsql/__main__.py,sha256=Nnh7_QgjYTTzd1Kog2thl7wzNpoxfnZ3YaurSOMzE_U,270
|
|
3
|
+
execsql/api.py,sha256=jJa9P8T0lWR7hXF1WZKgfK7QHbU5qns4x6YNFbFH_eo,26795
|
|
4
|
+
execsql/config.py,sha256=PoIU1dr6uwTCHVmnNhA4zzPT1BsZBPcX0Q7KC1ItvqI,40408
|
|
5
5
|
execsql/config_validation.py,sha256=a4ZszyJFGTNgs1jkvXE3yMCaYFtF1Uqih2ojMDVh1v8,10556
|
|
6
6
|
execsql/exceptions.py,sha256=aHavdblmP7m5ZLxyyKKmPSwwbdmP962j4ShP1Gd9r64,9651
|
|
7
7
|
execsql/format.py,sha256=z-KZ8VY1muz8S6iaErZX9E_7wE_VtjEcUB7e_KyhfyI,59565
|
|
8
8
|
execsql/interactive.py,sha256=7vm7NAlcarBJJOIffcLOcJqH9ZCInvHB_CmC2sQsXf8,8241
|
|
9
|
-
execsql/manifest.py,sha256=
|
|
9
|
+
execsql/manifest.py,sha256=eJp39R8bYuFuJiGaBbDsk_lua13uJHXPOdwWdUfE-CQ,9027
|
|
10
10
|
execsql/models.py,sha256=caUGQ3C9hvFaj6c6-GwBzZc8FAGTD1ZSJYd8bFyRh5I,16410
|
|
11
11
|
execsql/parser.py,sha256=bw26e1lD-PZscV11VtBdqSLkjpcYfNLQC2EYfYD5UwU,16012
|
|
12
12
|
execsql/plugins.py,sha256=RykMlIjTyWcnQc9ygjLErS3wdcsZSsG9QTIvg4DwfAI,13626
|
|
13
13
|
execsql/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
14
|
-
execsql/state.py,sha256=
|
|
15
|
-
execsql/state.pyi,sha256=
|
|
14
|
+
execsql/state.py,sha256=rXhxx58dVFjhG58HGOXm3ewloVlvpcaYnW1rij4qjkM,23478
|
|
15
|
+
execsql/state.pyi,sha256=ZDHZ1DPKYu4Qs4bcJT31XNv4GOt6O4s_zH4UHCowovw,4344
|
|
16
16
|
execsql/types.py,sha256=zey_bc2AzbUduLoK-nps16qX2zazDYf_iapWkG_cbmA,33130
|
|
17
|
-
execsql/cli/__init__.py,sha256=
|
|
18
|
-
execsql/cli/application.py,sha256=
|
|
17
|
+
execsql/cli/__init__.py,sha256=FHg2lm2gt4L-XBnlVORn3qWHZ4739Ao-uwBIURfVIjg,2798
|
|
18
|
+
execsql/cli/application.py,sha256=tsSYE8cerJxY6y73GM_Xr1WBwc6A0_al8y969B6lPP8,12542
|
|
19
19
|
execsql/cli/dispatch.py,sha256=deyN2QQYvdzMSqGGa3CSMpaqdLNeMgc5Uke0mUbl764,2704
|
|
20
|
-
execsql/cli/dsn.py,sha256=
|
|
20
|
+
execsql/cli/dsn.py,sha256=Jqr0CBtj6L3BY25Ej-U13xHV85phX1TFTVpjB7A-KIs,4815
|
|
21
21
|
execsql/cli/help.py,sha256=bEy6ssVjyIw73JD_UPLXnCtnCifdVCKJr_cydAAVxhk,8220
|
|
22
|
-
execsql/cli/lint.py,sha256=
|
|
22
|
+
execsql/cli/lint.py,sha256=kQ5zOayLTOY1jib_6jME2mzSGKCsZ6FI_qr4fysLlRs,48433
|
|
23
23
|
execsql/cli/options.py,sha256=Srhf1gEOB5yy_7PxkTKBv07xK8Qzw8H-z7PUUnItpwE,2916
|
|
24
|
-
execsql/cli/run.py,sha256=
|
|
24
|
+
execsql/cli/run.py,sha256=bMLvStRSX9svzb8GmbLJ9QS5bsPPoxBUhBbIwi1aX_g,42960
|
|
25
25
|
execsql/cli/commands/__init__.py,sha256=FVe_xF7w98krP-USxqf-BIcflA1ctMYVsV8p0i6cChA,572
|
|
26
26
|
execsql/cli/commands/config.py,sha256=V7CGGkhSCqeJIlAXxAYyG_xNhnsORiwqth2XWEVPzss,8213
|
|
27
27
|
execsql/cli/commands/format.py,sha256=3awfNmCc6kImeyXKZo1Jt1qXbEuWk86ZllqEOY5vxzw,4456
|
|
28
28
|
execsql/cli/commands/init.py,sha256=kmuFgGz8sv_1KfiNh190E3A23evqkgYZeBRTU6vdjbs,5465
|
|
29
|
-
execsql/cli/commands/lint.py,sha256=
|
|
29
|
+
execsql/cli/commands/lint.py,sha256=K_4eeU4JcQh6vNV5Thcta9Kuqek_cNiKFOHskgOtDzI,8435
|
|
30
30
|
execsql/cli/commands/listing.py,sha256=thtkJ-ILGd0SPs57oVIMkkCGpXsfS0hQxueMc2ccRVw,3514
|
|
31
|
-
execsql/cli/commands/lsp.py,sha256=
|
|
31
|
+
execsql/cli/commands/lsp.py,sha256=8xIrqA4dnapdlLqbGGb53YtFTnsX2YqpLYvrrl-Z6pE,4051
|
|
32
32
|
execsql/cli/commands/run.py,sha256=sGFDku66CazJrorr0mmrhUI3QDvQVSMEYlU8G1Pd5fQ,16492
|
|
33
33
|
execsql/data/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
34
|
-
execsql/data/execsql.conf.template,sha256=
|
|
34
|
+
execsql/data/execsql.conf.template,sha256=Mz8wZxu0U2bfL-fsDpRHvdLkwNpfuZrl4QUMjp7SXyk,12770
|
|
35
35
|
execsql/data/script_header.sql,sha256=a7WKScekNgJoxVEmMRTkWv8NsAzW1jJ4vJfGy9HVy0g,349
|
|
36
36
|
execsql/db/__init__.py,sha256=jTbuafuKOqYtXFR1wvCOoKK5Lr3l1uErfaIbIr6UywI,1063
|
|
37
|
-
execsql/db/access.py,sha256=
|
|
38
|
-
execsql/db/base.py,sha256=
|
|
37
|
+
execsql/db/access.py,sha256=tNhBuLW5QwMOc8REnu2Qt1Ge86ozMEk4MhHlUvYrJ-I,21379
|
|
38
|
+
execsql/db/base.py,sha256=tBAcNRiYE7VZo98S75mu6Y2ySdBNoh8LzzTn7TgLOBs,43684
|
|
39
39
|
execsql/db/dsn.py,sha256=CaISffisqO5IjSE-elEpwK9vXLaArp3ItpV8lvRTu-I,6920
|
|
40
|
-
execsql/db/duckdb.py,sha256=
|
|
41
|
-
execsql/db/factory.py,sha256=
|
|
40
|
+
execsql/db/duckdb.py,sha256=KC8Tqbnemg3wsYH_efnFmxtybPbMXElFDsoeq_FeVus,11143
|
|
41
|
+
execsql/db/factory.py,sha256=Uz7Xcbff6ZZbtLM55FhHCwGdo4KKfqU_1kyjvOHn-HY,5691
|
|
42
42
|
execsql/db/firebird.py,sha256=CoNnzFtOFAkp8OJByXXXclitCPAAjM23eFJGfy3C7IE,10171
|
|
43
|
-
execsql/db/mysql.py,sha256=
|
|
43
|
+
execsql/db/mysql.py,sha256=FVId78NifBmNfEI8zmqjRMJ3FUy7hskv411LqABAAOQ,24198
|
|
44
|
+
execsql/db/odbc.py,sha256=uus6J0kbLyvAvvARA_X5n10hbx49Wba258Sm7ZYSnoA,1760
|
|
44
45
|
execsql/db/oracle.py,sha256=i5qPahsy_z1AuZT7l54Hzixknkvbzd-SCQgiVcTN94w,13796
|
|
45
|
-
execsql/db/postgres.py,sha256=
|
|
46
|
+
execsql/db/postgres.py,sha256=sX2azdSt9N6jm_I47Zg8fukdYExGHRq_7XwVRZcfgAo,23647
|
|
46
47
|
execsql/db/sqlite.py,sha256=fEpNPkfJGnqm1Wx_rZK5SEqaWsBqLy85Jxk_5NsnqgM,12109
|
|
47
|
-
execsql/db/sqlserver.py,sha256=
|
|
48
|
+
execsql/db/sqlserver.py,sha256=5WUU67rFN28iiNriIWvgT2Dj7z0F0zKOJFWTsSBd0dg,10480
|
|
48
49
|
execsql/db/tiers.py,sha256=PH2sUYwlYqcANGVKXprWQKVIlM6fpWU9q74djn8oFwc,2924
|
|
49
50
|
execsql/debug/__init__.py,sha256=j6EGUR0dHzUhWN1mHHtf1-Lhjq3Sb1V-vmnq2Ztgj1M,178
|
|
50
51
|
execsql/debug/repl.py,sha256=jnwrqRac4krc1pES7Ni-j1Dyw3mJIcWl5LQQIX1GkRw,20753
|
|
@@ -57,43 +58,45 @@ execsql/exporters/html.py,sha256=hwf9UHs7EZ7xiP3p9ilBIsAukXcDu-KO2dcQHVh2z30,101
|
|
|
57
58
|
execsql/exporters/json.py,sha256=wWGT6zjvIdWlO5FmXbaEw1xOhy23f1YY6bm5uQD_NS0,4393
|
|
58
59
|
execsql/exporters/latex.py,sha256=bdUN3GwfENUZHgpw6bvjsjfivDgzyf-HRkYTP-eH-pM,5480
|
|
59
60
|
execsql/exporters/markdown.py,sha256=FuMGFxm9uZUOrdEuXT2ZZLCqmVDly7SMrFlrjP6kVEI,4827
|
|
60
|
-
execsql/exporters/ods.py,sha256=
|
|
61
|
+
execsql/exporters/ods.py,sha256=hMKhUwLTKVf28JY1x7pdCGBl-WAE75oO9Oa7oUITS60,24916
|
|
61
62
|
execsql/exporters/parquet.py,sha256=mbCo2Wlit1lkXmyo5EyLd_ATIHSICS49bouiBT2kdAs,1121
|
|
62
63
|
execsql/exporters/pretty.py,sha256=SiJHBXIjoFsOHegXcdrtxYa6xSIPga1U0DQEy7pK4QY,4145
|
|
63
64
|
execsql/exporters/protocol.py,sha256=BxATgz0xKHbB2FpZBeNg7wZfIiCohhD1awlr3JCec0c,4372
|
|
64
65
|
execsql/exporters/raw.py,sha256=9o3BMt7UYmnjbP8OEzmM2kNKfwwERi2yDcuNfUoEfuQ,2530
|
|
65
66
|
execsql/exporters/sqlite.py,sha256=QjP_W90S-hecNqp2A-Vy58DD8MZitME1sTq4lqIS43w,3401
|
|
66
67
|
execsql/exporters/templates.py,sha256=N9PRFet0mYuDQFu7PNbq5c6qGu2You2qfHpqnxg17NA,7065
|
|
67
|
-
execsql/exporters/values.py,sha256=
|
|
68
|
+
execsql/exporters/values.py,sha256=IzdpjeIwI_wukzo5wrVYCOwW-Ag_70SjPU-cPLEUV7k,8450
|
|
68
69
|
execsql/exporters/xls.py,sha256=bdGDTnePkXY3MtPJi4D47sTFSqfZteg9lftbi-7nB24,11361
|
|
69
70
|
execsql/exporters/xlsx.py,sha256=7sm-3KniYlB2K-n6xQmIoHbAvl2ryJhFWU95SEkR7e4,12702
|
|
70
71
|
execsql/exporters/xml.py,sha256=t1PSr3i8xvTCWzd9jaxxAy5NcRpl6sqjnZALafKCqpM,2575
|
|
71
72
|
execsql/exporters/yaml.py,sha256=ex2h91E12wItvh84AarjrDTcZ4SDx9uq0c9wtr-NuQM,3084
|
|
72
73
|
execsql/exporters/zip.py,sha256=0vDkXB19WzLzgCACBVNnGJYxacgBwEehQDL7Inl-rgw,5002
|
|
73
|
-
execsql/gui/__init__.py,sha256=
|
|
74
|
+
execsql/gui/__init__.py,sha256=5qsg3aWsaC0HfTDrGeh_2x40QRuivGgzT7cKvaM7jS0,1269
|
|
74
75
|
execsql/gui/base.py,sha256=DMTqHLlpZlGCsNKyrLlJPbaxvukC0n1YmR4aHEN3jPY,14983
|
|
75
76
|
execsql/gui/console.py,sha256=dzdSl4NJNvRd9VvlwRCXHvfnXjQPimyTx7NcibcUZC8,18305
|
|
76
77
|
execsql/gui/desktop.py,sha256=y-T317NzSs9kcA4-NZW-Dx2cZ4Bv1mPoCr7hwQCJYoo,59467
|
|
77
78
|
execsql/gui/tui.py,sha256=VoUtjSMopYtbtc8_-qV7YQAFvc-bS7zrZ5J2hl1cPxM,66853
|
|
78
79
|
execsql/importers/__init__.py,sha256=zZwdQxMaValCNqUrVdvaA7XPU3J8NmqVJ4uolNWY2iU,299
|
|
79
|
-
execsql/importers/base.py,sha256=
|
|
80
|
-
execsql/importers/csv.py,sha256=
|
|
80
|
+
execsql/importers/base.py,sha256=_RkCCP8cgqXfNioFVhuo8DAmrbZ-YBdW3rdpKntv-BY,5608
|
|
81
|
+
execsql/importers/csv.py,sha256=IANjZhAhKUXJo_W1RAR-6smVCLSO7_CVHAHdzhtzAck,5005
|
|
81
82
|
execsql/importers/feather.py,sha256=g2B69d2uv9vmnXcmjFyTVsMP40LYEzFYkhk3gD26mGw,1900
|
|
82
83
|
execsql/importers/json.py,sha256=fL47h09Zzx4Qw3TTQRQJbdPdD3qVMiU-kK9C7j1IQzg,5534
|
|
83
|
-
execsql/importers/ods.py,sha256=
|
|
84
|
+
execsql/importers/ods.py,sha256=scSId1sQpvWxtyPsp6QWTmuXn-h34gbbC4FM2fmhvFA,2980
|
|
84
85
|
execsql/importers/xls.py,sha256=D7Ul42gIRYZZC5QxD35ft_wmqQv2f1jNMSbnqlzV0ZA,3851
|
|
85
86
|
execsql/lsp/__init__.py,sha256=KXpbN_CfnfMcvHmE0xPz9ddpp9CAaQH_O7mzBi4O4X8,259
|
|
86
|
-
execsql/lsp/
|
|
87
|
-
execsql/lsp/
|
|
88
|
-
execsql/lsp/
|
|
89
|
-
execsql/lsp/
|
|
87
|
+
execsql/lsp/_util.py,sha256=8CypObGywKZP1aRetq0ytNBqlMelIdJWduR1JnEuW1E,729
|
|
88
|
+
execsql/lsp/cache.py,sha256=wAiZAzNdVseqRDJQ4aiKJF6WVHBV20tt9lQ7kvwlMeo,3149
|
|
89
|
+
execsql/lsp/code_actions.py,sha256=5UH_W22MY00PMXCc_IV0xv4v1WnvUvKMu3QWnk7qf-w,8579
|
|
90
|
+
execsql/lsp/completion.py,sha256=podEPbgDwGbvGdOWPQRuxsYpQ4f1mybuVgAkwwd7MGQ,7875
|
|
91
|
+
execsql/lsp/diagnostics.py,sha256=wZuCYGkYqyqTRBQ5s-s4UwdMoive8M9_O74T318HzAA,3076
|
|
92
|
+
execsql/lsp/document.py,sha256=psqVjh46kw71qpPYifM59ku0dEBGgEmlTh_dejbe5QI,12458
|
|
90
93
|
execsql/lsp/folding.py,sha256=PgwehzXnPcR68myldo2SYrqbfGla4f6gb_UrhKmaqyQ,2752
|
|
91
94
|
execsql/lsp/formatting.py,sha256=9YpCfLsi09M1PZovB2HJN-Tp9Jqgk-2xxit5g5NrTqU,1217
|
|
92
|
-
execsql/lsp/hover.py,sha256=
|
|
93
|
-
execsql/lsp/navigation.py,sha256=
|
|
95
|
+
execsql/lsp/hover.py,sha256=JemZqJ8d7FHouMhW92jkfek14fL9rl6JBQU7JIXJHos,5038
|
|
96
|
+
execsql/lsp/navigation.py,sha256=_f-zW82P4Wkelbsdedz_5l_ztFt-CFD8VSiVE5JaSAM,6436
|
|
94
97
|
execsql/lsp/rename.py,sha256=fYk1gDSWWhqyoIGZO5hVIHPYYdGKNjgZS0mijFDFpac,3756
|
|
95
|
-
execsql/lsp/server.py,sha256=
|
|
96
|
-
execsql/metacommands/__init__.py,sha256=
|
|
98
|
+
execsql/lsp/server.py,sha256=gTjk1agZbygdbcowa3jkL45WJ37sxhJ58oiLB7BM6Bw,19893
|
|
99
|
+
execsql/metacommands/__init__.py,sha256=MO5cF84jHakrgYDR8C4-YzeMTLU6oCDeB7x-kUpoVws,12970
|
|
97
100
|
execsql/metacommands/conditions.py,sha256=4DsMXr6vnfbtcKqgnxYV4UK4NmAfE_hpfgkFjlH0bjo,29844
|
|
98
101
|
execsql/metacommands/connect.py,sha256=SPk4h9yiUgTD3w1gNOT_oYx8VShggsO357by5Hoy6OI,15344
|
|
99
102
|
execsql/metacommands/control.py,sha256=9swW6X8jXDUpu5cHiAnQVx1ahFyWxlx7mjg4dqYfX5Y,9355
|
|
@@ -103,51 +106,51 @@ execsql/metacommands/dispatch.py,sha256=so0ebcnv66NhVDtA1Bt4GelD0hsC5w7gy7rItz2M
|
|
|
103
106
|
execsql/metacommands/effects.py,sha256=cRSo48R4nRJzkRR3OGHLhJzofcdAaNIobaxmn1N9TGw,3813
|
|
104
107
|
execsql/metacommands/io.py,sha256=vlGBje5sgnqeilooMdhJDgSRIhysHy5_7LrKtik9Xjs,3011
|
|
105
108
|
execsql/metacommands/io_export.py,sha256=YamxQwURRjZRpCG2z8W3QurncCmEmAyLFqDkxtHo5dY,14434
|
|
106
|
-
execsql/metacommands/io_fileops.py,sha256=
|
|
109
|
+
execsql/metacommands/io_fileops.py,sha256=CmdgfgTHFWlzsA5XzsHeu6B9OTncb0K8n9uEgS68dkQ,13306
|
|
107
110
|
execsql/metacommands/io_import.py,sha256=gJICeK1MOfG6D73I7m8zBCalvr_ZJzD-QBKOpKYeYXo,15684
|
|
108
111
|
execsql/metacommands/io_write.py,sha256=yXDkMbQ3haDARVATVUYZprakyJHSyk1NywdKkFLpQ14,12783
|
|
109
112
|
execsql/metacommands/prompt.py,sha256=PlXhtBYCembG_1SSCrwpQR10mGF3_jXodu4aCSHlSCM,37950
|
|
110
|
-
execsql/metacommands/reference.py,sha256=
|
|
113
|
+
execsql/metacommands/reference.py,sha256=yiv_qNp-MPI2UNBOzfwT11JU-xvWM9lw8yBZjP_VlsY,53953
|
|
111
114
|
execsql/metacommands/script_ext.py,sha256=CsUbyq8QFPnnvfX_k7fPlYNvvRw1xLmAWER4Exo5pwc,3658
|
|
112
115
|
execsql/metacommands/system.py,sha256=6X2qmMpGUHDzyEluEotXt0Ks9jKQTpc2x0eoYNgN12M,7997
|
|
113
|
-
execsql/metacommands/upsert.py,sha256=
|
|
116
|
+
execsql/metacommands/upsert.py,sha256=Dl7NfaAH8ziGBqcLCgcat3Hcw9vSewK1eo7-nzToI4g,20725
|
|
114
117
|
execsql/script/__init__.py,sha256=I7hVO6wm3iOocxRRGEcFHhjdtL1moKbUYLB-wKbjPdk,3267
|
|
115
118
|
execsql/script/ast.py,sha256=WqCpFxhxrT2IIGvbArTp3QS0BZryRZAb7IL4ri3I6xg,20591
|
|
116
119
|
execsql/script/control.py,sha256=WqLy-HLPqHG3vEzYpKMiIJsD7LpORjyQuUWzFzcGz4w,2327
|
|
117
120
|
execsql/script/engine.py,sha256=wjXKwPIis-T2Y8rLnRXQ_ymUFdXff1MlI2IIYmxihKo,18448
|
|
118
|
-
execsql/script/executor.py,sha256=
|
|
121
|
+
execsql/script/executor.py,sha256=p3Aj7Ab8HwZRnmYds_e6h6yhRzCCa9XXbdVDkpg6NaQ,40855
|
|
119
122
|
execsql/script/parser.py,sha256=z73v6t6ZbPUKkRu-UOIL6q1cCRDeoRvG2aXXC8NpMvE,37162
|
|
120
123
|
execsql/script/variables.py,sha256=Tb01aHqOdWZbkgj-oW0ky3KWNy5N34XLD-Fm2eShYZM,17462
|
|
121
124
|
execsql/utils/__init__.py,sha256=0uR6JwVJQRX3vceByNBduCAf5dd5assKjeqJUWvpZoA,278
|
|
122
|
-
execsql/utils/auth.py,sha256=
|
|
125
|
+
execsql/utils/auth.py,sha256=0LYKdNMhodq9R0B8WyKp69a-xlP9wOR6Ua9Lgo2aJnQ,14868
|
|
123
126
|
execsql/utils/color.py,sha256=goQqhnLg8yERpFolQikA9zYSVcuAm0unKTJiWTbQm-U,634
|
|
124
127
|
execsql/utils/crypto.py,sha256=KlT6lPk-v0-qQQfAMfWvT9Q6kRdCD3_5JVaLajNocKM,3051
|
|
125
128
|
execsql/utils/datetime.py,sha256=rqtGrc0t37V00mvirJ8wJKHmDtDSYzTg_UgCyIBzv9E,5583
|
|
126
|
-
execsql/utils/errors.py,sha256=
|
|
127
|
-
execsql/utils/fileio.py,sha256=
|
|
129
|
+
execsql/utils/errors.py,sha256=WKojSMjNecL9riRo9TnZ4fXofZr2uDo2_4B6n-zP31M,11693
|
|
130
|
+
execsql/utils/fileio.py,sha256=IqIEhun9aOnr1oBCWK2z2VAPVo95bZ54cVglLW4rV9M,48208
|
|
128
131
|
execsql/utils/gui.py,sha256=1iiupP9AsLdR6ST0gcLE143o6y6YGUFlNv_pdVPxfCE,23943
|
|
129
132
|
execsql/utils/mail.py,sha256=4RiKtXa_sqij_YGdYmjQ3PG0u3G9qjs-9caQwBErtBw,7278
|
|
130
133
|
execsql/utils/numeric.py,sha256=_7bi5R6pHjMCkOPne_Sh5nUj-B8e9g6WFmjptFHaunA,1573
|
|
131
|
-
execsql/utils/
|
|
134
|
+
execsql/utils/paths.py,sha256=7IIHT6vqXTfs6Ltfrzm_I2ZV4pU8IuedOLkHo6a1_K8,1175
|
|
135
|
+
execsql/utils/regex.py,sha256=DGzPBl0Kt4--RbwPhoZI6Bm6N_CBUvI0DbqE4EF6qp8,3718
|
|
132
136
|
execsql/utils/strings.py,sha256=UQNjpRCEFa1UO6feU-M-9e24wWAvizs_iu_4fFusLxo,8516
|
|
133
137
|
execsql/utils/timer.py,sha256=eDYf5VzCNFk7oo90InJucUm3XcBdhYMogjZMqeg9xzc,1899
|
|
134
|
-
execsql2-2.
|
|
135
|
-
execsql2-2.
|
|
136
|
-
execsql2-2.
|
|
137
|
-
execsql2-2.
|
|
138
|
-
execsql2-2.
|
|
139
|
-
execsql2-2.
|
|
140
|
-
execsql2-2.
|
|
141
|
-
execsql2-2.
|
|
142
|
-
execsql2-2.
|
|
143
|
-
execsql2-2.
|
|
144
|
-
execsql2-2.
|
|
145
|
-
execsql2-2.
|
|
146
|
-
execsql2-2.
|
|
147
|
-
execsql2-2.
|
|
148
|
-
execsql2-2.
|
|
149
|
-
execsql2-2.
|
|
150
|
-
execsql2-2.
|
|
151
|
-
execsql2-2.
|
|
152
|
-
execsql2-2.
|
|
153
|
-
execsql2-2.29.0.dist-info/RECORD,,
|
|
138
|
+
execsql2-2.31.1.data/data/execsql2_extras/README.md,sha256=6f5bWiBlKRn8s6GVrU423-HFrU1Jwbk2AabxraLu3AY,5398
|
|
139
|
+
execsql2-2.31.1.data/data/execsql2_extras/config_settings.sqlite,sha256=aY5cxR7Q7J6zJ4bC9lu5mHUrhy211Cq3MNKPQVCt02E,20480
|
|
140
|
+
execsql2-2.31.1.data/data/execsql2_extras/example_config_prompt.sql,sha256=2e8KzzVWhho8KxYVHETSVmZdhW7wodioDsqBLSL6m4s,7487
|
|
141
|
+
execsql2-2.31.1.data/data/execsql2_extras/make_config_db.sql,sha256=WwyC6dK-Eh5CAVppiBCDHqiI1_wEI9U95Ytpr4lsZkg,8726
|
|
142
|
+
execsql2-2.31.1.data/data/execsql2_extras/md_compare.sql,sha256=ARYEcOlxWLxfw-KCKDeJRdCqnuCb9PVwGaHtITR2sYU,26535
|
|
143
|
+
execsql2-2.31.1.data/data/execsql2_extras/md_glossary.sql,sha256=gu2PDTm295YvxR7cDp25Mf-xXHly0BvlMudoNOrep5Q,10931
|
|
144
|
+
execsql2-2.31.1.data/data/execsql2_extras/md_upsert.sql,sha256=YNUTFS6yB4bZXs-wRDn6dN8jL5wIumzZyE2uo5arIos,113407
|
|
145
|
+
execsql2-2.31.1.data/data/execsql2_extras/pg_compare.sql,sha256=WcupGxQoWtMwHVPuy42xCpP4gAV4Ttb1W-_hwh-3xb4,24529
|
|
146
|
+
execsql2-2.31.1.data/data/execsql2_extras/pg_glossary.sql,sha256=CfQz2HZj2nMvJfYfQrAmNYdx0uRrOIWsCXwVo5gKv_k,9953
|
|
147
|
+
execsql2-2.31.1.data/data/execsql2_extras/script_template.sql,sha256=s5i0HULxp49N2Cpd24iALleM_dBq5oLuN3Arx_4Z7-o,11140
|
|
148
|
+
execsql2-2.31.1.data/data/execsql2_extras/ss_compare.sql,sha256=PpU-vPyqqC1faBoo5zwVZlZHYKkT79QZisWVlk4o-ss,26415
|
|
149
|
+
execsql2-2.31.1.data/data/execsql2_extras/ss_glossary.sql,sha256=_oTiZHpadPXWrNs8VoRe9PZgX9XdK490NMVWVTVtjl4,13110
|
|
150
|
+
execsql2-2.31.1.data/data/execsql2_extras/ss_upsert.sql,sha256=Dvst877h4KHn8ayYF9EXI_OxqLQ89wyfcnGYYT4szro,118304
|
|
151
|
+
execsql2-2.31.1.dist-info/METADATA,sha256=_zRvNxl03raboxUe3f_1vjBqiNUyT_k5vF9RJhZI9Tk,26927
|
|
152
|
+
execsql2-2.31.1.dist-info/WHEEL,sha256=W3fkpkm7-wf9vBI5Z-7s0eWkeM-spu78I8Neb98DeEg,87
|
|
153
|
+
execsql2-2.31.1.dist-info/entry_points.txt,sha256=jOf53-4IVGjEZeNYUOF1GGaiPNfVZcNKxP3vDFKEyMA,58
|
|
154
|
+
execsql2-2.31.1.dist-info/licenses/LICENSE.txt,sha256=LBdhuxejF8_bLCHZ2kWfmDXpDGUu914Gbd6_3JjCRe0,676
|
|
155
|
+
execsql2-2.31.1.dist-info/licenses/NOTICE,sha256=McYzgxYav3U1OaVsY4Su1sfBrfmplpRdA9b6-gCDQCg,342
|
|
156
|
+
execsql2-2.31.1.dist-info/RECORD,,
|