Spaces:
Paused
Paused
File size: 633 Bytes
5716801 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | from abc import ABC, abstractmethod
from argparse import ArgumentParser, _SubParsersAction, Namespace
class Subcommand(ABC):
COMMAND: str
HELP: str | None = None
@classmethod
def add(cls, subparsers: _SubParsersAction, parents) -> ArgumentParser:
parser = subparsers.add_parser(cls.COMMAND, help=cls.HELP, parents=parents)
cls.add_args(parser).set_defaults(func=cls.func)
return parser
@classmethod
@abstractmethod
def add_args(cls, parser: ArgumentParser) -> ArgumentParser:
pass
@classmethod
@abstractmethod
def func(cls, args: Namespace):
pass
|