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.
- wiz_central_toolkit/__init__.py +2 -0
- wiz_central_toolkit/bannerwiz/__main__.py +6 -0
- wiz_central_toolkit/bannerwiz/cli.py +79 -0
- wiz_central_toolkit/bannerwiz/lib/__init__.py +1 -0
- wiz_central_toolkit/bannerwiz/lib/banner_wizard.py +999 -0
- wiz_central_toolkit/bannerwiz/lib/banner_wrapper.py +199 -0
- wiz_central_toolkit/bannerwiz/lib/cli.py +79 -0
- wiz_central_toolkit/codeguardwiz/__init__.py +1 -0
- wiz_central_toolkit/codeguardwiz/__main__.py +19 -0
- wiz_central_toolkit/codeguardwiz/cli.py +971 -0
- wiz_central_toolkit/codeguardwiz/codeguard_wizard.py +269 -0
- wiz_central_toolkit/codeguardwiz/rust_engine.py +348 -0
- wiz_central_toolkit/codeguardwiz/static_engine.py +307 -0
- wiz_central_toolkit/common/__init__.py +1 -0
- wiz_central_toolkit/debugwiz/__init__.py +1 -0
- wiz_central_toolkit/debugwiz/__main__.py +360 -0
- wiz_central_toolkit/debugwiz/debug_wizard.py +364 -0
- wiz_central_toolkit/diffwiz/__init__.py +0 -0
- wiz_central_toolkit/diffwiz/__main__.py +21 -0
- wiz_central_toolkit/diffwiz/cli.py +134 -0
- wiz_central_toolkit/diffwiz/lib/__init__.py +1 -0
- wiz_central_toolkit/diffwiz/lib/cli.py +144 -0
- wiz_central_toolkit/diffwiz/lib/diff_wizard.py +89 -0
- wiz_central_toolkit/godfatherwiz/__init__.py +0 -0
- wiz_central_toolkit/godfatherwiz/__main__.py +18 -0
- wiz_central_toolkit/godfatherwiz/ai.py +136 -0
- wiz_central_toolkit/godfatherwiz/lib/__init__.py +1 -0
- wiz_central_toolkit/godfatherwiz/lib/cli.py +925 -0
- wiz_central_toolkit/godfatherwiz/lib/godfather_wizard.py +1552 -0
- wiz_central_toolkit/jsonwiz/__init__.py +0 -0
- wiz_central_toolkit/jsonwiz/__main__.py +21 -0
- wiz_central_toolkit/jsonwiz/cli.py +4 -0
- wiz_central_toolkit/jsonwiz/lib/__init__.py +1 -0
- wiz_central_toolkit/jsonwiz/lib/cli.py +138 -0
- wiz_central_toolkit/jsonwiz/lib/json_wizard.py +133 -0
- wiz_central_toolkit/pythonwiz/__init__.py +0 -0
- wiz_central_toolkit/pythonwiz/__main__.py +21 -0
- wiz_central_toolkit/pythonwiz/lib/__init__.py +1 -0
- wiz_central_toolkit/pythonwiz/lib/cli.py +247 -0
- wiz_central_toolkit/pythonwiz/lib/python_wizard.py +353 -0
- wiz_central_toolkit/readwiz/__init__.py +5 -0
- wiz_central_toolkit/readwiz/__main__.py +15 -0
- wiz_central_toolkit/readwiz/cli.py +46 -0
- wiz_central_toolkit/readwiz/lib/__init__.py +1 -0
- wiz_central_toolkit/readwiz/lib/cli.py +47 -0
- wiz_central_toolkit/readwiz/lib/read_wizard.py +121 -0
- wiz_central_toolkit/rustwiz/__init__.py +5 -0
- wiz_central_toolkit/rustwiz/__main__.py +7 -0
- wiz_central_toolkit/rustwiz/cli.py +4 -0
- wiz_central_toolkit/rustwiz/lib/__init__.py +1 -0
- wiz_central_toolkit/rustwiz/lib/cli.py +53 -0
- wiz_central_toolkit/rustwiz/lib/rust_wizard.py +128 -0
- wiz_central_toolkit/tmuxwiz/__init__.py +0 -0
- wiz_central_toolkit/tmuxwiz/__main__.py +15 -0
- wiz_central_toolkit/tmuxwiz/cli.py +7 -0
- wiz_central_toolkit/tmuxwiz/lib/__init__.py +1 -0
- wiz_central_toolkit/tmuxwiz/lib/cli.py +10 -0
- wiz_central_toolkit/tmuxwiz/lib/tmux_wizard.py +229 -0
- wiz_central_toolkit/todowiz/__init__.py +0 -0
- wiz_central_toolkit/todowiz/__main__.py +22 -0
- wiz_central_toolkit/todowiz/cli.py +4 -0
- wiz_central_toolkit/todowiz/lib/__init__.py +1 -0
- wiz_central_toolkit/todowiz/lib/cli.py +82 -0
- wiz_central_toolkit/todowiz/lib/todo_wizard.py +134 -0
- wiz_central_toolkit/tools_registry.py +62 -0
- wiz_central_toolkit/wiz/__init__.py +0 -0
- wiz_central_toolkit/wiz/__main__.py +141 -0
- wiz_central_toolkit/writewiz/__init__.py +1 -0
- wiz_central_toolkit/writewiz/__main__.py +9 -0
- wiz_central_toolkit/writewiz/cli.py +264 -0
- wiz_central_toolkit/writewiz/write_wizard.py +384 -0
- wizard_central_toolkit-0.2.0.dist-info/METADATA +203 -0
- wizard_central_toolkit-0.2.0.dist-info/RECORD +77 -0
- wizard_central_toolkit-0.2.0.dist-info/WHEEL +5 -0
- wizard_central_toolkit-0.2.0.dist-info/entry_points.txt +50 -0
- wizard_central_toolkit-0.2.0.dist-info/licenses/LICENSE +201 -0
- 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())
|