����JFIF��H�H����Exif��MM�*���� ��3����V�����3������3�(��������������������3�����
Server IP : 74.208.127.88 / Your IP : 3.16.161.16 Web Server : Apache/2.4.41 (Ubuntu) System : Linux ubuntu 5.4.0-163-generic #180-Ubuntu SMP Tue Sep 5 13:21:23 UTC 2023 x86_64 User : www-data ( 33) PHP Version : 7.4.3-4ubuntu2.29 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare, MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : ON Directory : /lib/python3/dist-packages/uaclient/cli/ |
Upload File : |
import argparse from typing import Callable, Iterable, Optional, Union from uaclient import messages from uaclient.cli.parser import HelpCategory class ProArgument: def __init__( self, long_name: str, help: str, short_name: Optional[str] = None, **kwargs ): self.names = ( (long_name,) if short_name is None else (short_name, long_name) ) self.help = help self.additional_args = kwargs def register( self, target: Union[argparse.ArgumentParser, argparse._ArgumentGroup] ): target.add_argument( *self.names, help=self.help, **self.additional_args ) class ProArgumentMutuallyExclusiveGroup: def __init__( self, required: bool = False, arguments: Iterable[ProArgument] = (), ): self.required = required self.arguments = arguments class ProArgumentGroup: def __init__( self, title: Optional[str] = None, description: Optional[str] = None, arguments: Iterable[ProArgument] = (), mutually_exclusive_groups: Iterable[ ProArgumentMutuallyExclusiveGroup ] = (), ): self.title = title self.description = description self.arguments = arguments self.mutually_exclusive_groups = mutually_exclusive_groups def register(self, parser: argparse.ArgumentParser): target = ( parser ) # type: Union[argparse.ArgumentParser, argparse._ArgumentGroup] if self.title: target = parser.add_argument_group(self.title, self.description) for argument in self.arguments: argument.register(target) for group in self.mutually_exclusive_groups: new_group = target.add_mutually_exclusive_group( required=group.required ) for argument in group.arguments: argument.register(new_group) class ProCommand: def __init__( self, name: str, help: str, description: str, action: Callable = lambda *args, **kwargs: None, preserve_description: bool = False, argument_groups: Iterable[ProArgumentGroup] = (), subcommands: Iterable["ProCommand"] = (), help_category: Optional[HelpCategory] = None, help_position: int = 0, ): self.name = name self.help = help self.description = description self.action = action self.preserve_description = preserve_description self.argument_groups = argument_groups self.subcommands = subcommands self.help_category = help_category self.help_position = help_position def register(self, subparsers: argparse._SubParsersAction): self.parser = subparsers.add_parser( self.name, help=self.help, description=self.description, ) if self.preserve_description: self.parser.formatter_class = argparse.RawDescriptionHelpFormatter if self.help_category: self.parser.add_help_entry( category=self.help_category, name=self.name, help_string=self.help, position=self.help_position, ) for argument_group in self.argument_groups: argument_group.register(self.parser) self.parser.set_defaults(action=self.action) if self.subcommands: subparsers = self.parser.add_subparsers( title=messages.CLI_AVAILABLE_COMMANDS, dest="command", ) for command in self.subcommands: command.register(subparsers)