wizard-central-toolkit 0.2.0__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 (77) hide show
  1. wiz_central_toolkit/__init__.py +2 -0
  2. wiz_central_toolkit/bannerwiz/__main__.py +6 -0
  3. wiz_central_toolkit/bannerwiz/cli.py +79 -0
  4. wiz_central_toolkit/bannerwiz/lib/__init__.py +1 -0
  5. wiz_central_toolkit/bannerwiz/lib/banner_wizard.py +999 -0
  6. wiz_central_toolkit/bannerwiz/lib/banner_wrapper.py +199 -0
  7. wiz_central_toolkit/bannerwiz/lib/cli.py +79 -0
  8. wiz_central_toolkit/codeguardwiz/__init__.py +1 -0
  9. wiz_central_toolkit/codeguardwiz/__main__.py +19 -0
  10. wiz_central_toolkit/codeguardwiz/cli.py +971 -0
  11. wiz_central_toolkit/codeguardwiz/codeguard_wizard.py +269 -0
  12. wiz_central_toolkit/codeguardwiz/rust_engine.py +348 -0
  13. wiz_central_toolkit/codeguardwiz/static_engine.py +307 -0
  14. wiz_central_toolkit/common/__init__.py +1 -0
  15. wiz_central_toolkit/debugwiz/__init__.py +1 -0
  16. wiz_central_toolkit/debugwiz/__main__.py +360 -0
  17. wiz_central_toolkit/debugwiz/debug_wizard.py +364 -0
  18. wiz_central_toolkit/diffwiz/__init__.py +0 -0
  19. wiz_central_toolkit/diffwiz/__main__.py +21 -0
  20. wiz_central_toolkit/diffwiz/cli.py +134 -0
  21. wiz_central_toolkit/diffwiz/lib/__init__.py +1 -0
  22. wiz_central_toolkit/diffwiz/lib/cli.py +144 -0
  23. wiz_central_toolkit/diffwiz/lib/diff_wizard.py +89 -0
  24. wiz_central_toolkit/godfatherwiz/__init__.py +0 -0
  25. wiz_central_toolkit/godfatherwiz/__main__.py +18 -0
  26. wiz_central_toolkit/godfatherwiz/ai.py +136 -0
  27. wiz_central_toolkit/godfatherwiz/lib/__init__.py +1 -0
  28. wiz_central_toolkit/godfatherwiz/lib/cli.py +925 -0
  29. wiz_central_toolkit/godfatherwiz/lib/godfather_wizard.py +1552 -0
  30. wiz_central_toolkit/jsonwiz/__init__.py +0 -0
  31. wiz_central_toolkit/jsonwiz/__main__.py +21 -0
  32. wiz_central_toolkit/jsonwiz/cli.py +4 -0
  33. wiz_central_toolkit/jsonwiz/lib/__init__.py +1 -0
  34. wiz_central_toolkit/jsonwiz/lib/cli.py +138 -0
  35. wiz_central_toolkit/jsonwiz/lib/json_wizard.py +133 -0
  36. wiz_central_toolkit/pythonwiz/__init__.py +0 -0
  37. wiz_central_toolkit/pythonwiz/__main__.py +21 -0
  38. wiz_central_toolkit/pythonwiz/lib/__init__.py +1 -0
  39. wiz_central_toolkit/pythonwiz/lib/cli.py +247 -0
  40. wiz_central_toolkit/pythonwiz/lib/python_wizard.py +353 -0
  41. wiz_central_toolkit/readwiz/__init__.py +5 -0
  42. wiz_central_toolkit/readwiz/__main__.py +15 -0
  43. wiz_central_toolkit/readwiz/cli.py +46 -0
  44. wiz_central_toolkit/readwiz/lib/__init__.py +1 -0
  45. wiz_central_toolkit/readwiz/lib/cli.py +47 -0
  46. wiz_central_toolkit/readwiz/lib/read_wizard.py +121 -0
  47. wiz_central_toolkit/rustwiz/__init__.py +5 -0
  48. wiz_central_toolkit/rustwiz/__main__.py +7 -0
  49. wiz_central_toolkit/rustwiz/cli.py +4 -0
  50. wiz_central_toolkit/rustwiz/lib/__init__.py +1 -0
  51. wiz_central_toolkit/rustwiz/lib/cli.py +53 -0
  52. wiz_central_toolkit/rustwiz/lib/rust_wizard.py +128 -0
  53. wiz_central_toolkit/tmuxwiz/__init__.py +0 -0
  54. wiz_central_toolkit/tmuxwiz/__main__.py +15 -0
  55. wiz_central_toolkit/tmuxwiz/cli.py +7 -0
  56. wiz_central_toolkit/tmuxwiz/lib/__init__.py +1 -0
  57. wiz_central_toolkit/tmuxwiz/lib/cli.py +10 -0
  58. wiz_central_toolkit/tmuxwiz/lib/tmux_wizard.py +229 -0
  59. wiz_central_toolkit/todowiz/__init__.py +0 -0
  60. wiz_central_toolkit/todowiz/__main__.py +22 -0
  61. wiz_central_toolkit/todowiz/cli.py +4 -0
  62. wiz_central_toolkit/todowiz/lib/__init__.py +1 -0
  63. wiz_central_toolkit/todowiz/lib/cli.py +82 -0
  64. wiz_central_toolkit/todowiz/lib/todo_wizard.py +134 -0
  65. wiz_central_toolkit/tools_registry.py +62 -0
  66. wiz_central_toolkit/wiz/__init__.py +0 -0
  67. wiz_central_toolkit/wiz/__main__.py +141 -0
  68. wiz_central_toolkit/writewiz/__init__.py +1 -0
  69. wiz_central_toolkit/writewiz/__main__.py +9 -0
  70. wiz_central_toolkit/writewiz/cli.py +264 -0
  71. wiz_central_toolkit/writewiz/write_wizard.py +384 -0
  72. wizard_central_toolkit-0.2.0.dist-info/METADATA +203 -0
  73. wizard_central_toolkit-0.2.0.dist-info/RECORD +77 -0
  74. wizard_central_toolkit-0.2.0.dist-info/WHEEL +5 -0
  75. wizard_central_toolkit-0.2.0.dist-info/entry_points.txt +50 -0
  76. wizard_central_toolkit-0.2.0.dist-info/licenses/LICENSE +201 -0
  77. wizard_central_toolkit-0.2.0.dist-info/top_level.txt +1 -0
@@ -0,0 +1,199 @@
1
+ """
2
+ Banner Wrapper — Drop-in utility for any Python project.
3
+ Place this file next to banner_engine.py, then:
4
+
5
+ from banner_wrapper import banner, status, title
6
+
7
+ That's it. No modifications to banner_engine.py needed.
8
+ """
9
+
10
+ import sys
11
+ import os
12
+
13
+ # Add banner_engine.py's directory to path
14
+ sys.path.insert(0, os.path.dirname(os.path.abspath(__file__)))
15
+
16
+ try:
17
+ from banner_engine import ASCIIBannerEngine, StyleManager
18
+ from rich.console import Console
19
+ except ImportError as e:
20
+ print(f"Missing dependency: {e}")
21
+ print("Run: pip install pyfiglet rich")
22
+ sys.exit(1)
23
+
24
+ _engine = ASCIIBannerEngine()
25
+ _console = Console()
26
+
27
+
28
+ def banner(text: str, font: str = "standard", style: str = "clean",
29
+ auto_fit: bool = True, align: str | None = None) -> None:
30
+ """Print a styled ASCII banner.
31
+
32
+ Args:
33
+ text: Text to render
34
+ font: FIGlet font name (use 'fonts' command to list)
35
+ style: Style preset name or any Rich color
36
+ auto_fit: Auto-select smaller font if banner overflows
37
+ align: Override alignment (left/center/right)
38
+ """
39
+ _engine.display_banner(text, font=font, style=style,
40
+ auto_fit=auto_fit, align=align)
41
+
42
+
43
+ def title(text: str) -> None:
44
+ """Small, minimal section title."""
45
+ _engine.display_banner(text, font="small", style="minimal",
46
+ auto_fit=True, align="left")
47
+
48
+
49
+ def subtitle(text: str) -> None:
50
+ """Prints plain text subtitle (no ASCII art)."""
51
+ _console.print(f"\n[bold dim]── {text} ──[/bold dim]")
52
+
53
+
54
+ def success(text: str = "SUCCESS") -> None:
55
+ """Green neon success banner."""
56
+ _engine.display_banner(text, font="standard", style="neon-green",
57
+ auto_fit=True, align="center")
58
+
59
+
60
+ def error(text: str = "ERROR") -> None:
61
+ """Red heavy error banner."""
62
+ _engine.display_banner(text, font="standard", style="heavy",
63
+ auto_fit=True, align="left")
64
+
65
+
66
+ def warning(text: str = "WARNING") -> None:
67
+ """Yellow comic warning banner."""
68
+ _engine.display_banner(text, font="standard", style="comic",
69
+ auto_fit=True, align="center")
70
+
71
+
72
+ def info(text: str = "INFO") -> None:
73
+ """Blue clean info banner."""
74
+ _engine.display_banner(text, font="standard", style="clean",
75
+ auto_fit=True, align="left")
76
+
77
+
78
+ def splash(app_name: str, version: str = "", style: str = "neon-blue",
79
+ font: str = "big") -> None:
80
+ """Full startup splash screen with app name + version.
81
+
82
+ Example:
83
+ splash("MY APP", "v1.0")
84
+ """
85
+ _engine.display_banner(app_name, font=font, style=style,
86
+ auto_fit=True, align="center")
87
+ if version:
88
+ _console.print(f"[dim] {version}[/dim]")
89
+ _console.print(f"[dim] {_engine.sizer.report()}[/dim]")
90
+ _console.print(f"[dim] {len(_engine.FONTS)} fonts available[/dim]\n")
91
+
92
+
93
+ def separator(char: str = "─", width: int | None = None) -> None:
94
+ """Print a horizontal separator line."""
95
+ w = width or _engine.sizer.usable_width
96
+ _console.print(f"[dim]{char * w}[/dim]")
97
+
98
+
99
+ def list_styles() -> None:
100
+ """Show all available style presets."""
101
+ StyleManager.list_presets_table()
102
+
103
+
104
+ def list_fonts() -> None:
105
+ """Show all available fonts."""
106
+ _engine.list_fonts()
107
+
108
+
109
+ def generate_raw(text: str, font: str = "standard",
110
+ auto_fit: bool = False) -> str | None:
111
+ """Return raw ASCII art string (no console output).
112
+
113
+ Useful for embedding in logs, files, or other displays.
114
+
115
+ Example:
116
+ art = generate_raw("HELLO", "big")
117
+ with open("logo.txt", "w") as f:
118
+ f.write(art)
119
+ """
120
+ return _engine.generate(text, font=font, auto_fit=auto_fit)
121
+
122
+
123
+ def export_all(text: str, output_dir: str = "./banner_output") -> None:
124
+ """Export text rendered in every available font."""
125
+ _engine.render_all_fonts(text, output_dir)
126
+
127
+
128
+ def compare_fonts(text: str) -> None:
129
+ """Side-by-side font comparison."""
130
+ _engine.compare_fonts(text)
131
+
132
+
133
+ def compare_styles(text: str) -> None:
134
+ """Side-by-side style comparison."""
135
+ _engine.compare_styles(text)
136
+
137
+
138
+ def report() -> str:
139
+ """Return terminal/engine size info string."""
140
+ return _engine.sizer.report()
141
+
142
+
143
+ # ── CLI mode ──────────────────────────────────────────────────────
144
+
145
+ if __name__ == "__main__":
146
+ import argparse
147
+
148
+ parser = argparse.ArgumentParser(
149
+ description="Banner Wrapper — Quick banner utilities")
150
+ parser.add_argument("text", nargs="?", default="HELLO",
151
+ help="Text to render")
152
+ parser.add_argument("-f", "--font", default="standard",
153
+ help="FIGlet font name")
154
+ parser.add_argument("-s", "--style", default="clean",
155
+ help="Style preset or Rich color")
156
+ parser.add_argument("-a", "--align", default=None,
157
+ choices=["left", "center", "right"],
158
+ help="Alignment override")
159
+ parser.add_argument("--splash", metavar="VERSION",
160
+ help="Show splash screen with version")
161
+ parser.add_argument("--success", action="store_true",
162
+ help="Print success banner")
163
+ parser.add_argument("--error", action="store_true",
164
+ help="Print error banner")
165
+ parser.add_argument("--warning", action="store_true",
166
+ help="Print warning banner")
167
+ parser.add_argument("--info", action="store_true",
168
+ help="Print info banner")
169
+ parser.add_argument("--separator", action="store_true",
170
+ help="Print separator line")
171
+ parser.add_argument("--list-styles", action="store_true",
172
+ help="List style presets")
173
+ parser.add_argument("--list-fonts", action="store_true",
174
+ help="List fonts")
175
+ parser.add_argument("--report", action="store_true",
176
+ help="Show terminal info")
177
+
178
+ args = parser.parse_args()
179
+
180
+ if args.splash is not None:
181
+ splash(args.text, args.splash)
182
+ elif args.success:
183
+ success(args.text)
184
+ elif args.error:
185
+ error(args.text)
186
+ elif args.warning:
187
+ warning(args.text)
188
+ elif args.info:
189
+ info(args.text)
190
+ elif args.separator:
191
+ separator()
192
+ elif args.list_styles:
193
+ list_styles()
194
+ elif args.list_fonts:
195
+ list_fonts()
196
+ elif args.report:
197
+ print(report())
198
+ else:
199
+ banner(args.text, font=args.font, style=args.style, align=args.align)
@@ -0,0 +1,79 @@
1
+ import sys
2
+ from pathlib import Path
3
+ sys.path.insert(0, str(Path(__file__).resolve().parent))
4
+
5
+
6
+ def _render_dependencies():
7
+ from rich.console import Console
8
+ from rich.text import Text
9
+ from pyfiglet import figlet_format
10
+ return Console(), Text, figlet_format
11
+
12
+ BANNER_FONT = "ansi_regular"
13
+
14
+ USAGE = """Banner Wizard — ASCII banner wizard
15
+ alias: bannerwiz
16
+ usage: banner_wizard <words...> [--subtitle TEXT] | --demo | --themes | --styles | --sizes | --fonts | --interactive
17
+ banner_wizard --help | --version"""
18
+
19
+ def _version():
20
+ try:
21
+ from importlib import metadata
22
+ for _n in ("wizard-central-toolkit", "wiz-central-toolkit"):
23
+ try:
24
+ return metadata.version(_n)
25
+ except metadata.PackageNotFoundError:
26
+ continue
27
+ except Exception:
28
+ pass
29
+ try:
30
+ from wiz_central_toolkit import __version__
31
+ return __version__
32
+ except Exception:
33
+ return "unknown"
34
+
35
+ def render_sovereign(words, subtitle=None):
36
+ """The Sovereign mural: stacked block words, purple crest / blue base per word."""
37
+ console, Text, figlet_format = _render_dependencies()
38
+ for word in words:
39
+ lines = [l for l in figlet_format(word.upper(), font=BANNER_FONT, width=999).splitlines() if l.strip()]
40
+ half = len(lines) // 2
41
+ for i, line in enumerate(lines):
42
+ color = "bright_magenta" if i < half else "bright_blue"
43
+ console.print(Text(line.rstrip(), style=f"bold {color}"))
44
+ if subtitle:
45
+ console.print(Text(" ".join(subtitle.upper()), style="bold bright_yellow"))
46
+
47
+ def main(argv=None):
48
+ argv = list(sys.argv[1:] if argv is None else argv)
49
+ if argv and argv[0] in ("-h", "--help", "help"):
50
+ print(USAGE)
51
+ return 0
52
+ if argv and argv[0] == "--version":
53
+ print(f"banner_wizard {_version()}")
54
+ return 0
55
+ if not argv:
56
+ print(USAGE)
57
+ return 0
58
+ if argv[0] in ("--demo", "--themes", "--styles", "--sizes", "--interactive", "--fonts"):
59
+ import runpy
60
+ import os
61
+ eng = Path(__file__).resolve().parent / "banner_wizard.py"
62
+ os.environ["_BANNERWIZ_SUBCMD"] = argv[0]
63
+ # delegate to the engine's mature surface
64
+ sys.argv = [str(eng)] + argv
65
+ runpy.run_path(str(eng), run_name="__main__")
66
+ return 0
67
+ subtitle = None
68
+ if "--subtitle" in argv:
69
+ i = argv.index("--subtitle")
70
+ subtitle = argv[i + 1] if i + 1 < len(argv) else None
71
+ argv = argv[:i] + ([] if subtitle is None else []) + argv[i + 2:]
72
+ if not argv:
73
+ print("out of scope - no words given")
74
+ return 2
75
+ render_sovereign(argv, subtitle=subtitle)
76
+ return 0
77
+
78
+ if __name__ == "__main__":
79
+ sys.exit(main())
@@ -0,0 +1 @@
1
+ # wizard package init
@@ -0,0 +1,19 @@
1
+ """codeguardwiz — Ollama-backed code audit and repair (consent-gated writes)."""
2
+ import sys
3
+
4
+ from .cli import main as _main
5
+
6
+
7
+ def main(argv=None) -> int:
8
+ if argv is None:
9
+ return _main()
10
+ saved = sys.argv
11
+ sys.argv = [saved[0] if saved else "codeguardwiz", *argv]
12
+ try:
13
+ return _main()
14
+ finally:
15
+ sys.argv = saved
16
+
17
+
18
+ if __name__ == "__main__":
19
+ sys.exit(main())