""" Package command group for TinyTorch CLI: nbdev integration and package management. """ from argparse import ArgumentParser, Namespace from rich.panel import Panel from .base import BaseCommand from .reset import ResetCommand from .nbdev import NbdevCommand class PackageCommand(BaseCommand): @property def name(self) -> str: return "package" @property def description(self) -> str: return "Package management and nbdev integration commands" def add_arguments(self, parser: ArgumentParser) -> None: subparsers = parser.add_subparsers( dest='package_command', help='Package subcommands', metavar='SUBCOMMAND' ) # Reset subcommand reset_parser = subparsers.add_parser( 'reset', help='Reset tinytorch package to clean state' ) reset_cmd = ResetCommand(self.config) reset_cmd.add_arguments(reset_parser) # Nbdev subcommand nbdev_parser = subparsers.add_parser( 'nbdev', help='nbdev notebook development commands' ) nbdev_cmd = NbdevCommand(self.config) nbdev_cmd.add_arguments(nbdev_parser) def run(self, args: Namespace) -> int: console = self.console if not hasattr(args, 'package_command') or not args.package_command: console.print(Panel( "[bold cyan]Package Commands[/bold cyan]\n\n" "Available subcommands:\n" " • [bold]reset[/bold] - Reset tinytorch package to clean state\n" " • [bold]nbdev[/bold] - nbdev notebook development commands\n\n" "[dim]Examples:[/dim]\n" "[dim] tito package reset --force[/dim]\n" "[dim] tito package nbdev --export[/dim]\n\n" "[dim]Note: Use 'tito module export' for exporting modules[/dim]", title="Package Command Group", border_style="bright_cyan" )) return 0 # Execute the appropriate subcommand if args.package_command == 'reset': cmd = ResetCommand(self.config) return cmd.execute(args) elif args.package_command == 'nbdev': cmd = NbdevCommand(self.config) return cmd.execute(args) else: console.print(Panel( f"[red]Unknown package subcommand: {args.package_command}[/red]", title="Error", border_style="red" )) return 1