execsql2 2.19.0__py3-none-any.whl → 2.19.2__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 (22) hide show
  1. execsql/format.py +9 -3
  2. {execsql2-2.19.0.dist-info → execsql2-2.19.2.dist-info}/METADATA +1 -1
  3. {execsql2-2.19.0.dist-info → execsql2-2.19.2.dist-info}/RECORD +22 -22
  4. {execsql2-2.19.0.data → execsql2-2.19.2.data}/data/execsql2_extras/README.md +0 -0
  5. {execsql2-2.19.0.data → execsql2-2.19.2.data}/data/execsql2_extras/config_settings.sqlite +0 -0
  6. {execsql2-2.19.0.data → execsql2-2.19.2.data}/data/execsql2_extras/example_config_prompt.sql +0 -0
  7. {execsql2-2.19.0.data → execsql2-2.19.2.data}/data/execsql2_extras/execsql.conf +0 -0
  8. {execsql2-2.19.0.data → execsql2-2.19.2.data}/data/execsql2_extras/make_config_db.sql +0 -0
  9. {execsql2-2.19.0.data → execsql2-2.19.2.data}/data/execsql2_extras/md_compare.sql +0 -0
  10. {execsql2-2.19.0.data → execsql2-2.19.2.data}/data/execsql2_extras/md_glossary.sql +0 -0
  11. {execsql2-2.19.0.data → execsql2-2.19.2.data}/data/execsql2_extras/md_upsert.sql +0 -0
  12. {execsql2-2.19.0.data → execsql2-2.19.2.data}/data/execsql2_extras/pg_compare.sql +0 -0
  13. {execsql2-2.19.0.data → execsql2-2.19.2.data}/data/execsql2_extras/pg_glossary.sql +0 -0
  14. {execsql2-2.19.0.data → execsql2-2.19.2.data}/data/execsql2_extras/pg_upsert.sql +0 -0
  15. {execsql2-2.19.0.data → execsql2-2.19.2.data}/data/execsql2_extras/script_template.sql +0 -0
  16. {execsql2-2.19.0.data → execsql2-2.19.2.data}/data/execsql2_extras/ss_compare.sql +0 -0
  17. {execsql2-2.19.0.data → execsql2-2.19.2.data}/data/execsql2_extras/ss_glossary.sql +0 -0
  18. {execsql2-2.19.0.data → execsql2-2.19.2.data}/data/execsql2_extras/ss_upsert.sql +0 -0
  19. {execsql2-2.19.0.dist-info → execsql2-2.19.2.dist-info}/WHEEL +0 -0
  20. {execsql2-2.19.0.dist-info → execsql2-2.19.2.dist-info}/entry_points.txt +0 -0
  21. {execsql2-2.19.0.dist-info → execsql2-2.19.2.dist-info}/licenses/LICENSE.txt +0 -0
  22. {execsql2-2.19.0.dist-info → execsql2-2.19.2.dist-info}/licenses/NOTICE +0 -0
execsql/format.py CHANGED
@@ -129,9 +129,15 @@ def parse_keyword(payload: str) -> str:
129
129
  # SQL block formatting helpers
130
130
  # ---------------------------------------------------------------------------
131
131
 
132
- # Matches execsql variable substitutions: !!varname!!, !!#param!!, !!@col!!, etc.
133
- # and deferred substitutions !{varname}!
134
- _EXECSQL_VAR_RE = re.compile(r"!!([^!\s][^!]*)!!|!\{[^}]+\}!")
132
+ # Matches execsql variable substitutions:
133
+ # !!varname!! verbatim
134
+ # !'!varname!'! single-quoted (apostrophes doubled at expansion)
135
+ # !"!varname!"! double-quoted (quotes doubled at expansion)
136
+ # !{varname}! deferred
137
+ # The bare/quoted forms mirror src/execsql/script/variables.py:_TOKEN_RX so
138
+ # every token the executor recognises is hidden from sqlglot — otherwise the
139
+ # `!` in a quoted form is parsed as a NOT operator (e.g. `!'!v!'!` -> `NOT NOT '!v!'`).
140
+ _EXECSQL_VAR_RE = re.compile(r"""!(['"]?)!([^!\s][^!]*)!\1!|!\{[^}]+\}!""")
135
141
 
136
142
 
137
143
  def _protect_variables(sql: str) -> tuple[str, list[tuple[str, str]]]:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: execsql2
3
- Version: 2.19.0
3
+ Version: 2.19.2
4
4
  Summary: Runs a SQL script against a PostgreSQL, SQLite, MariaDB/MySQL, DuckDB, Firebird, MS-Access, MS-SQL-Server, or Oracle database, or an ODBC DSN. Provides metacommands to import and export data, copy data between databases, conditionally execute SQL and metacommands, and dynamically alter SQL and metacommands with substitution variables.
5
5
  Project-URL: Homepage, https://execsql2.readthedocs.io
6
6
  Project-URL: Repository, https://github.com/geocoug/execsql
@@ -3,7 +3,7 @@ execsql/__main__.py,sha256=HdbK-SAhyUmfB6xINY5AzxdMSxGzWSGEG_2dv42Jn64,315
3
3
  execsql/api.py,sha256=ZFTo_XZPhG21w2vxaeS1lS6o5XmF1FUJRIaypgTOjA8,20919
4
4
  execsql/config.py,sha256=OOrCcn9m3CNuXkxVOLp7uMhQikzUS2wh_QVhvIzRqIM,33296
5
5
  execsql/exceptions.py,sha256=EkM5cw2s0D9QCOgS4BU29FEyOnEtCxJ0esPT6l1hT9s,9205
6
- execsql/format.py,sha256=HJlWD4kSOvq7lBv99rRF1Cq1FNaMjG-qA3iwSTZtf8Q,26050
6
+ execsql/format.py,sha256=3EXAnuFYPp595jRLjoou3ATc4WSbYwPhrDmyzjTLMoE,26416
7
7
  execsql/models.py,sha256=kCTUQg9-vReM6WNFfB_ZrEppuOW5u1uMBQThSkfPC0o,13264
8
8
  execsql/parser.py,sha256=P3ea8k7T_XLMrbhpFNZXwytdShrY302MKnhosqza1lo,15493
9
9
  execsql/plugins.py,sha256=2voLwT6eFap6BCBoZYndNNC_bMEJO1f_aP6xQTVXwYI,12815
@@ -100,24 +100,24 @@ execsql/utils/numeric.py,sha256=xh02ANSRk3nUpQ-rtm66ILoMqoi7HtzCoRMIOT9U8QI,1570
100
100
  execsql/utils/regex.py,sha256=diEzTZqU_HHwVMadPAvN1Vgzhl7I03eVaEFGCXyGGL8,3770
101
101
  execsql/utils/strings.py,sha256=UQNjpRCEFa1UO6feU-M-9e24wWAvizs_iu_4fFusLxo,8516
102
102
  execsql/utils/timer.py,sha256=eDYf5VzCNFk7oo90InJucUm3XcBdhYMogjZMqeg9xzc,1899
103
- execsql2-2.19.0.data/data/execsql2_extras/README.md,sha256=sxwVyU0ZahCfANv56LahkyuM505kFjrMhe-1SvWE69E,4845
104
- execsql2-2.19.0.data/data/execsql2_extras/config_settings.sqlite,sha256=aY5cxR7Q7J6zJ4bC9lu5mHUrhy211Cq3MNKPQVCt02E,20480
105
- execsql2-2.19.0.data/data/execsql2_extras/example_config_prompt.sql,sha256=2e8KzzVWhho8KxYVHETSVmZdhW7wodioDsqBLSL6m4s,7487
106
- execsql2-2.19.0.data/data/execsql2_extras/execsql.conf,sha256=Sq1Huwb_Uf_lI7zW7m3h11fqU6zjGpGnCU4OVJ_tCe0,10696
107
- execsql2-2.19.0.data/data/execsql2_extras/make_config_db.sql,sha256=WwyC6dK-Eh5CAVppiBCDHqiI1_wEI9U95Ytpr4lsZkg,8726
108
- execsql2-2.19.0.data/data/execsql2_extras/md_compare.sql,sha256=qYYVAjSeHZzjszxV3Bv6bg8Ckbq2kMHl87_gh4sywMU,24140
109
- execsql2-2.19.0.data/data/execsql2_extras/md_glossary.sql,sha256=hkZ2Onn57LAKKsuXxzhR8tPtcWXkmWEQkwPE58-Tm2k,10796
110
- execsql2-2.19.0.data/data/execsql2_extras/md_upsert.sql,sha256=_CAK4BzEboRXTNy03SJR-oOjcEdSNMuRBPL6noWUptY,112560
111
- execsql2-2.19.0.data/data/execsql2_extras/pg_compare.sql,sha256=1zJd4hVUKHR0tncc2qTBC9B4qVV4Us2ITkJpsjN3tMw,24352
112
- execsql2-2.19.0.data/data/execsql2_extras/pg_glossary.sql,sha256=IKuwna-_8b20ljSkXZruuiQigrCpo7ueQdUqd1MXiuI,9908
113
- execsql2-2.19.0.data/data/execsql2_extras/pg_upsert.sql,sha256=HpPJtTHvpEjQy03j-3iPxDEOHMRkudOg7O4D4YR38UI,108315
114
- execsql2-2.19.0.data/data/execsql2_extras/script_template.sql,sha256=2J35ddZPguJ-vwTsz83wErv0jiWUyJcdW_JM0mNKDXA,11155
115
- execsql2-2.19.0.data/data/execsql2_extras/ss_compare.sql,sha256=j1qVNUPXQsEU7-DoVgDJCGcE0EuIl7whLBT3fgeiMAo,24833
116
- execsql2-2.19.0.data/data/execsql2_extras/ss_glossary.sql,sha256=2gLxv34xzKt0vy7hSzJH7a9JiMC3ETrv9MofxQwAibU,13065
117
- execsql2-2.19.0.data/data/execsql2_extras/ss_upsert.sql,sha256=G_8rQ0VzuKIZHWs24O_WrfzpC5S27R1JsL-bFBR3SUQ,117730
118
- execsql2-2.19.0.dist-info/METADATA,sha256=hafmsG77iDxgwzrG7s4oMg5o97R-fMx_BH513avRy2w,22340
119
- execsql2-2.19.0.dist-info/WHEEL,sha256=mffPy8wBnZQn2VnJUU5jE99KsxaSfiyMHV9Yt0aLVxs,87
120
- execsql2-2.19.0.dist-info/entry_points.txt,sha256=sUOxkM-dN1eBGGpSpDLsAaE0yNXYQKWZAfxPOlMkQyk,90
121
- execsql2-2.19.0.dist-info/licenses/LICENSE.txt,sha256=LBdhuxejF8_bLCHZ2kWfmDXpDGUu914Gbd6_3JjCRe0,676
122
- execsql2-2.19.0.dist-info/licenses/NOTICE,sha256=McYzgxYav3U1OaVsY4Su1sfBrfmplpRdA9b6-gCDQCg,342
123
- execsql2-2.19.0.dist-info/RECORD,,
103
+ execsql2-2.19.2.data/data/execsql2_extras/README.md,sha256=sxwVyU0ZahCfANv56LahkyuM505kFjrMhe-1SvWE69E,4845
104
+ execsql2-2.19.2.data/data/execsql2_extras/config_settings.sqlite,sha256=aY5cxR7Q7J6zJ4bC9lu5mHUrhy211Cq3MNKPQVCt02E,20480
105
+ execsql2-2.19.2.data/data/execsql2_extras/example_config_prompt.sql,sha256=2e8KzzVWhho8KxYVHETSVmZdhW7wodioDsqBLSL6m4s,7487
106
+ execsql2-2.19.2.data/data/execsql2_extras/execsql.conf,sha256=Sq1Huwb_Uf_lI7zW7m3h11fqU6zjGpGnCU4OVJ_tCe0,10696
107
+ execsql2-2.19.2.data/data/execsql2_extras/make_config_db.sql,sha256=WwyC6dK-Eh5CAVppiBCDHqiI1_wEI9U95Ytpr4lsZkg,8726
108
+ execsql2-2.19.2.data/data/execsql2_extras/md_compare.sql,sha256=qYYVAjSeHZzjszxV3Bv6bg8Ckbq2kMHl87_gh4sywMU,24140
109
+ execsql2-2.19.2.data/data/execsql2_extras/md_glossary.sql,sha256=hkZ2Onn57LAKKsuXxzhR8tPtcWXkmWEQkwPE58-Tm2k,10796
110
+ execsql2-2.19.2.data/data/execsql2_extras/md_upsert.sql,sha256=_CAK4BzEboRXTNy03SJR-oOjcEdSNMuRBPL6noWUptY,112560
111
+ execsql2-2.19.2.data/data/execsql2_extras/pg_compare.sql,sha256=1zJd4hVUKHR0tncc2qTBC9B4qVV4Us2ITkJpsjN3tMw,24352
112
+ execsql2-2.19.2.data/data/execsql2_extras/pg_glossary.sql,sha256=IKuwna-_8b20ljSkXZruuiQigrCpo7ueQdUqd1MXiuI,9908
113
+ execsql2-2.19.2.data/data/execsql2_extras/pg_upsert.sql,sha256=HpPJtTHvpEjQy03j-3iPxDEOHMRkudOg7O4D4YR38UI,108315
114
+ execsql2-2.19.2.data/data/execsql2_extras/script_template.sql,sha256=2J35ddZPguJ-vwTsz83wErv0jiWUyJcdW_JM0mNKDXA,11155
115
+ execsql2-2.19.2.data/data/execsql2_extras/ss_compare.sql,sha256=j1qVNUPXQsEU7-DoVgDJCGcE0EuIl7whLBT3fgeiMAo,24833
116
+ execsql2-2.19.2.data/data/execsql2_extras/ss_glossary.sql,sha256=2gLxv34xzKt0vy7hSzJH7a9JiMC3ETrv9MofxQwAibU,13065
117
+ execsql2-2.19.2.data/data/execsql2_extras/ss_upsert.sql,sha256=G_8rQ0VzuKIZHWs24O_WrfzpC5S27R1JsL-bFBR3SUQ,117730
118
+ execsql2-2.19.2.dist-info/METADATA,sha256=MM_IlZJUBFm8AmOYmEx3sydmztTSX89EZcJ3aSJtcm4,22340
119
+ execsql2-2.19.2.dist-info/WHEEL,sha256=mffPy8wBnZQn2VnJUU5jE99KsxaSfiyMHV9Yt0aLVxs,87
120
+ execsql2-2.19.2.dist-info/entry_points.txt,sha256=sUOxkM-dN1eBGGpSpDLsAaE0yNXYQKWZAfxPOlMkQyk,90
121
+ execsql2-2.19.2.dist-info/licenses/LICENSE.txt,sha256=LBdhuxejF8_bLCHZ2kWfmDXpDGUu914Gbd6_3JjCRe0,676
122
+ execsql2-2.19.2.dist-info/licenses/NOTICE,sha256=McYzgxYav3U1OaVsY4Su1sfBrfmplpRdA9b6-gCDQCg,342
123
+ execsql2-2.19.2.dist-info/RECORD,,