execsql2 2.22.1__py3-none-any.whl → 2.22.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 (21) hide show
  1. execsql/utils/gui.py +15 -6
  2. {execsql2-2.22.1.dist-info → execsql2-2.22.2.dist-info}/METADATA +2 -2
  3. {execsql2-2.22.1.dist-info → execsql2-2.22.2.dist-info}/RECORD +21 -21
  4. {execsql2-2.22.1.dist-info → execsql2-2.22.2.dist-info}/WHEEL +1 -1
  5. {execsql2-2.22.1.data → execsql2-2.22.2.data}/data/execsql2_extras/README.md +0 -0
  6. {execsql2-2.22.1.data → execsql2-2.22.2.data}/data/execsql2_extras/config_settings.sqlite +0 -0
  7. {execsql2-2.22.1.data → execsql2-2.22.2.data}/data/execsql2_extras/example_config_prompt.sql +0 -0
  8. {execsql2-2.22.1.data → execsql2-2.22.2.data}/data/execsql2_extras/make_config_db.sql +0 -0
  9. {execsql2-2.22.1.data → execsql2-2.22.2.data}/data/execsql2_extras/md_compare.sql +0 -0
  10. {execsql2-2.22.1.data → execsql2-2.22.2.data}/data/execsql2_extras/md_glossary.sql +0 -0
  11. {execsql2-2.22.1.data → execsql2-2.22.2.data}/data/execsql2_extras/md_upsert.sql +0 -0
  12. {execsql2-2.22.1.data → execsql2-2.22.2.data}/data/execsql2_extras/pg_compare.sql +0 -0
  13. {execsql2-2.22.1.data → execsql2-2.22.2.data}/data/execsql2_extras/pg_glossary.sql +0 -0
  14. {execsql2-2.22.1.data → execsql2-2.22.2.data}/data/execsql2_extras/pg_upsert.sql +0 -0
  15. {execsql2-2.22.1.data → execsql2-2.22.2.data}/data/execsql2_extras/script_template.sql +0 -0
  16. {execsql2-2.22.1.data → execsql2-2.22.2.data}/data/execsql2_extras/ss_compare.sql +0 -0
  17. {execsql2-2.22.1.data → execsql2-2.22.2.data}/data/execsql2_extras/ss_glossary.sql +0 -0
  18. {execsql2-2.22.1.data → execsql2-2.22.2.data}/data/execsql2_extras/ss_upsert.sql +0 -0
  19. {execsql2-2.22.1.dist-info → execsql2-2.22.2.dist-info}/entry_points.txt +0 -0
  20. {execsql2-2.22.1.dist-info → execsql2-2.22.2.dist-info}/licenses/LICENSE.txt +0 -0
  21. {execsql2-2.22.1.dist-info → execsql2-2.22.2.dist-info}/licenses/NOTICE +0 -0
execsql/utils/gui.py CHANGED
@@ -540,18 +540,27 @@ def gui_credentials(
540
540
  # ---------------------------------------------------------------------------
541
541
 
542
542
 
543
- def get_yn(prompt: str) -> bool:
544
- """Prompt for a yes/no answer on the terminal."""
543
+ def get_yn(prompt: str) -> str:
544
+ """Prompt for a yes/no answer on the terminal.
545
+
546
+ Returns:
547
+ ``"y"`` or ``"n"``, or ``chr(27)`` (ESC) if the user aborts via EOF
548
+ (Ctrl-D / piped stdin closed). Matches the upstream v1.130.1
549
+ ``get_yn`` character contract expected by callers such as ``x_ask``.
550
+ """
545
551
  while True:
546
- answer = input(f"{prompt} [y/n]: ").strip().lower()
552
+ try:
553
+ answer = input(f"{prompt} [y/n]: ").strip().lower()
554
+ except EOFError:
555
+ return chr(27)
547
556
  if answer in ("y", "yes"):
548
- return True
557
+ return "y"
549
558
  if answer in ("n", "no"):
550
- return False
559
+ return "n"
551
560
  print("Please enter y or n.", file=sys.stderr)
552
561
 
553
562
 
554
- def get_yn_win(prompt: str) -> bool:
563
+ def get_yn_win(prompt: str) -> str:
555
564
  """GUI yes/no dialog — falls back to terminal in headless mode."""
556
565
  return get_yn(prompt)
557
566
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: execsql2
3
- Version: 2.22.1
3
+ Version: 2.22.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
@@ -384,7 +384,7 @@ execsql-format --no-sql --in-place scripts/
384
384
  ```yaml
385
385
  repos:
386
386
  - repo: https://github.com/geocoug/execsql
387
- rev: v2.22.1
387
+ rev: v2.22.2
388
388
  hooks:
389
389
  - id: execsql-format
390
390
  ```
@@ -95,29 +95,29 @@ execsql/utils/crypto.py,sha256=KlT6lPk-v0-qQQfAMfWvT9Q6kRdCD3_5JVaLajNocKM,3051
95
95
  execsql/utils/datetime.py,sha256=8BrD24KWeMoouJZiFaXK4HF7plc-O_xrzIw12qOEyp8,3629
96
96
  execsql/utils/errors.py,sha256=bDWooUmGdN8xqUt6csq466wPqKPLHHSi7U4hsmrFZxA,8577
97
97
  execsql/utils/fileio.py,sha256=_15UIdcRZxZn2R6YP4xQn-6C9CVK2yxj1oEfxULo2_c,33329
98
- execsql/utils/gui.py,sha256=T22ThhkedzQz9kBidxZwIArt1umIvrgrSUwsPWAwvug,23548
98
+ execsql/utils/gui.py,sha256=X5aw6LVoeaAdHaQkymm4ba176jga0cS2GrqxSFWTWTg,23853
99
99
  execsql/utils/mail.py,sha256=SXpTBDx0WIPl2NSjkjmnoChHYVEMyZhIKU4QiJFFZNY,6011
100
100
  execsql/utils/numeric.py,sha256=_7bi5R6pHjMCkOPne_Sh5nUj-B8e9g6WFmjptFHaunA,1573
101
101
  execsql/utils/regex.py,sha256=B3mSBhRRx_DpUnX_t9IoYd05KvWAebiLMCZqQAmEwcw,3885
102
102
  execsql/utils/strings.py,sha256=UQNjpRCEFa1UO6feU-M-9e24wWAvizs_iu_4fFusLxo,8516
103
103
  execsql/utils/timer.py,sha256=eDYf5VzCNFk7oo90InJucUm3XcBdhYMogjZMqeg9xzc,1899
104
- execsql2-2.22.1.data/data/execsql2_extras/README.md,sha256=vX4NTL095dUoA_hesyRMGYBorEZ_Y_tJ9qrd-MVV09I,5032
105
- execsql2-2.22.1.data/data/execsql2_extras/config_settings.sqlite,sha256=aY5cxR7Q7J6zJ4bC9lu5mHUrhy211Cq3MNKPQVCt02E,20480
106
- execsql2-2.22.1.data/data/execsql2_extras/example_config_prompt.sql,sha256=2e8KzzVWhho8KxYVHETSVmZdhW7wodioDsqBLSL6m4s,7487
107
- execsql2-2.22.1.data/data/execsql2_extras/make_config_db.sql,sha256=WwyC6dK-Eh5CAVppiBCDHqiI1_wEI9U95Ytpr4lsZkg,8726
108
- execsql2-2.22.1.data/data/execsql2_extras/md_compare.sql,sha256=qYYVAjSeHZzjszxV3Bv6bg8Ckbq2kMHl87_gh4sywMU,24140
109
- execsql2-2.22.1.data/data/execsql2_extras/md_glossary.sql,sha256=hkZ2Onn57LAKKsuXxzhR8tPtcWXkmWEQkwPE58-Tm2k,10796
110
- execsql2-2.22.1.data/data/execsql2_extras/md_upsert.sql,sha256=_CAK4BzEboRXTNy03SJR-oOjcEdSNMuRBPL6noWUptY,112560
111
- execsql2-2.22.1.data/data/execsql2_extras/pg_compare.sql,sha256=1zJd4hVUKHR0tncc2qTBC9B4qVV4Us2ITkJpsjN3tMw,24352
112
- execsql2-2.22.1.data/data/execsql2_extras/pg_glossary.sql,sha256=IKuwna-_8b20ljSkXZruuiQigrCpo7ueQdUqd1MXiuI,9908
113
- execsql2-2.22.1.data/data/execsql2_extras/pg_upsert.sql,sha256=HpPJtTHvpEjQy03j-3iPxDEOHMRkudOg7O4D4YR38UI,108315
114
- execsql2-2.22.1.data/data/execsql2_extras/script_template.sql,sha256=2J35ddZPguJ-vwTsz83wErv0jiWUyJcdW_JM0mNKDXA,11155
115
- execsql2-2.22.1.data/data/execsql2_extras/ss_compare.sql,sha256=j1qVNUPXQsEU7-DoVgDJCGcE0EuIl7whLBT3fgeiMAo,24833
116
- execsql2-2.22.1.data/data/execsql2_extras/ss_glossary.sql,sha256=2gLxv34xzKt0vy7hSzJH7a9JiMC3ETrv9MofxQwAibU,13065
117
- execsql2-2.22.1.data/data/execsql2_extras/ss_upsert.sql,sha256=G_8rQ0VzuKIZHWs24O_WrfzpC5S27R1JsL-bFBR3SUQ,117730
118
- execsql2-2.22.1.dist-info/METADATA,sha256=z76Sqoh_SVHX3ygG4-PohP8X4SJL97UlO8LpmIu2tQ8,20382
119
- execsql2-2.22.1.dist-info/WHEEL,sha256=mffPy8wBnZQn2VnJUU5jE99KsxaSfiyMHV9Yt0aLVxs,87
120
- execsql2-2.22.1.dist-info/entry_points.txt,sha256=sUOxkM-dN1eBGGpSpDLsAaE0yNXYQKWZAfxPOlMkQyk,90
121
- execsql2-2.22.1.dist-info/licenses/LICENSE.txt,sha256=LBdhuxejF8_bLCHZ2kWfmDXpDGUu914Gbd6_3JjCRe0,676
122
- execsql2-2.22.1.dist-info/licenses/NOTICE,sha256=McYzgxYav3U1OaVsY4Su1sfBrfmplpRdA9b6-gCDQCg,342
123
- execsql2-2.22.1.dist-info/RECORD,,
104
+ execsql2-2.22.2.data/data/execsql2_extras/README.md,sha256=vX4NTL095dUoA_hesyRMGYBorEZ_Y_tJ9qrd-MVV09I,5032
105
+ execsql2-2.22.2.data/data/execsql2_extras/config_settings.sqlite,sha256=aY5cxR7Q7J6zJ4bC9lu5mHUrhy211Cq3MNKPQVCt02E,20480
106
+ execsql2-2.22.2.data/data/execsql2_extras/example_config_prompt.sql,sha256=2e8KzzVWhho8KxYVHETSVmZdhW7wodioDsqBLSL6m4s,7487
107
+ execsql2-2.22.2.data/data/execsql2_extras/make_config_db.sql,sha256=WwyC6dK-Eh5CAVppiBCDHqiI1_wEI9U95Ytpr4lsZkg,8726
108
+ execsql2-2.22.2.data/data/execsql2_extras/md_compare.sql,sha256=qYYVAjSeHZzjszxV3Bv6bg8Ckbq2kMHl87_gh4sywMU,24140
109
+ execsql2-2.22.2.data/data/execsql2_extras/md_glossary.sql,sha256=hkZ2Onn57LAKKsuXxzhR8tPtcWXkmWEQkwPE58-Tm2k,10796
110
+ execsql2-2.22.2.data/data/execsql2_extras/md_upsert.sql,sha256=_CAK4BzEboRXTNy03SJR-oOjcEdSNMuRBPL6noWUptY,112560
111
+ execsql2-2.22.2.data/data/execsql2_extras/pg_compare.sql,sha256=1zJd4hVUKHR0tncc2qTBC9B4qVV4Us2ITkJpsjN3tMw,24352
112
+ execsql2-2.22.2.data/data/execsql2_extras/pg_glossary.sql,sha256=IKuwna-_8b20ljSkXZruuiQigrCpo7ueQdUqd1MXiuI,9908
113
+ execsql2-2.22.2.data/data/execsql2_extras/pg_upsert.sql,sha256=HpPJtTHvpEjQy03j-3iPxDEOHMRkudOg7O4D4YR38UI,108315
114
+ execsql2-2.22.2.data/data/execsql2_extras/script_template.sql,sha256=2J35ddZPguJ-vwTsz83wErv0jiWUyJcdW_JM0mNKDXA,11155
115
+ execsql2-2.22.2.data/data/execsql2_extras/ss_compare.sql,sha256=j1qVNUPXQsEU7-DoVgDJCGcE0EuIl7whLBT3fgeiMAo,24833
116
+ execsql2-2.22.2.data/data/execsql2_extras/ss_glossary.sql,sha256=2gLxv34xzKt0vy7hSzJH7a9JiMC3ETrv9MofxQwAibU,13065
117
+ execsql2-2.22.2.data/data/execsql2_extras/ss_upsert.sql,sha256=G_8rQ0VzuKIZHWs24O_WrfzpC5S27R1JsL-bFBR3SUQ,117730
118
+ execsql2-2.22.2.dist-info/METADATA,sha256=qL8AZS7bCoWljac0GuIdc5uHHJCUtBKegwm_sayfAlQ,20382
119
+ execsql2-2.22.2.dist-info/WHEEL,sha256=lCkmxWfQsSc9CfIClYeavTdQeEX2toPqufh9gI35EQA,87
120
+ execsql2-2.22.2.dist-info/entry_points.txt,sha256=sUOxkM-dN1eBGGpSpDLsAaE0yNXYQKWZAfxPOlMkQyk,90
121
+ execsql2-2.22.2.dist-info/licenses/LICENSE.txt,sha256=LBdhuxejF8_bLCHZ2kWfmDXpDGUu914Gbd6_3JjCRe0,676
122
+ execsql2-2.22.2.dist-info/licenses/NOTICE,sha256=McYzgxYav3U1OaVsY4Su1sfBrfmplpRdA9b6-gCDQCg,342
123
+ execsql2-2.22.2.dist-info/RECORD,,
@@ -1,4 +1,4 @@
1
1
  Wheel-Version: 1.0
2
- Generator: hatchling 1.30.1
2
+ Generator: hatchling 1.31.0
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any