  
  
  class FullHelpArgumentParser(argparse.ArgumentParser):
      """ Extends :class:`argparse.ArgumentParser` to output full help on bad arguments. """
      def error(self, message):
          self.print_help(sys.stderr)
          self.exit(2, "{}: error: {}\n".format(self.prog, message))
  
  
  class SmartFormatter(argparse.HelpFormatter):
 
</s> remove         self.exit(2, "{}: error: {}\n".format(self.prog, message))
 </s> add         self.exit(2, f"{self.prog}: error: {message}\n") </s> remove     def get_argument_list():
 </s> add     def get_argument_list() -> List[Dict[str, Any]]: </s> remove         return argparse.HelpFormatter._split_lines(self, text, width)
 </s> add         return argparse.HelpFormatter._split_lines(self,  # pylint: disable=protected-access
                                                   text,
                                                   width) </s> remove     def get_info():
 </s> add     def get_info() -> str:
    def error(self, message: str) -> NoReturn:
  
  
  class FullHelpArgumentParser(argparse.ArgumentParser):
      """ Extends :class:`argparse.ArgumentParser` to output full help on bad arguments. """
    def error(self, message: str) -> NoReturn:
          self.print_help(sys.stderr)
          self.exit(2, "{}: error: {}\n".format(self.prog, message))
  
  
  class SmartFormatter(argparse.HelpFormatter):
keep keep keep keep replace keep keep keep keep keep
 Live Preview - Replace cv2 with matplotlib viewer 
lib/cli/args.py