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
execsql/cli/__init__.py CHANGED
@@ -8,8 +8,7 @@ Submodules:
8
8
  - :mod:`execsql.cli.help` — Rich-formatted help output & console objects
9
9
  - :mod:`execsql.cli.dsn` — Connection-string (DSN URL) parser
10
10
  - :mod:`execsql.cli.run` — Core execution logic (``_run``, ``_connect_initial_db``, ``_ping_db``, ``_print_dry_run``, ``_print_profile``)
11
- - :mod:`execsql.cli.lint_ast` — AST-based ``--lint`` static analyser
12
- - :mod:`execsql.cli.lint` — Lint result printing (``_print_lint_results``); the flat-CommandList ``_lint_cmdlist`` it also contains is legacy and no longer reached from the CLI
11
+ - :mod:`execsql.cli.lint` — AST-based ``--lint`` static analyser and Rich result printer
13
12
  """
14
13
 
15
14
  from __future__ import annotations
@@ -235,6 +234,16 @@ def main(
235
234
  "--no-system-cmd",
236
235
  help="Disable the SYSTEM_CMD (SHELL) metacommand. Scripts that use SHELL will fail with an error.",
237
236
  ),
237
+ no_rm_file: bool = typer.Option(
238
+ False,
239
+ "--no-rm-file",
240
+ help="Disable the RM_FILE metacommand. Scripts that try to delete files will fail with an error.",
241
+ ),
242
+ no_serve: bool = typer.Option(
243
+ False,
244
+ "--no-serve",
245
+ help="Disable the SERVE metacommand. Scripts that try to stream a file to stdout will fail with an error.",
246
+ ),
238
247
  profile: bool = typer.Option(
239
248
  False,
240
249
  "--profile",
@@ -544,8 +553,7 @@ def main(
544
553
  # Lint: AST-based static analysis (no DB connection needed)
545
554
  # ------------------------------------------------------------------
546
555
  if lint:
547
- from execsql.cli.lint import _print_lint_results
548
- from execsql.cli.lint_ast import lint_ast
556
+ from execsql.cli.lint import _print_lint_results, lint as _lint_script
549
557
  from execsql.script.parser import parse_script, parse_string
550
558
 
551
559
  label = script_name or "<inline>"
@@ -566,7 +574,7 @@ def main(
566
574
  exit_code = _print_lint_results(issues, label)
567
575
  raise typer.Exit(code=exit_code) from exc
568
576
 
569
- issues = lint_ast(tree, script_path=script_name)
577
+ issues = _lint_script(tree, script_path=script_name)
570
578
  exit_code = _print_lint_results(issues, label)
571
579
  raise typer.Exit(code=exit_code)
572
580
 
@@ -604,6 +612,8 @@ def main(
604
612
  lint=lint,
605
613
  debug=debug,
606
614
  no_system_cmd=no_system_cmd,
615
+ no_rm_file=no_rm_file,
616
+ no_serve=no_serve,
607
617
  config_file=config_file,
608
618
  )
609
619