text: # Licensed under the GPL: https://www.gnu.org/licenses/old-licenses/gpl-2.0.html
  # For details: https://github.com/PyCQA/pylint/blob/main/LICENSE
  
  import optparse  # pylint: disable=deprecated-module
  import sys
  import time
  
  
  # pylint: disable=abstract-method; by design?
  class _ManHelpFormatter(optparse.HelpFormatter):
      def __init__(
          self, indent_increment=0, max_help_position=24, width=79, short_first=0
      ):
          optparse.HelpFormatter.__init__(
              self, indent_increment, max_help_position, width, short_first
          )
  
      def format_heading(self, heading):
          return ".SH %s\n" % heading.upper()
  
      def format_description(self, description):
          return description
  
      def format_option(self, option):
          try:
              optstring = option.option_strings
          except AttributeError:
              optstring = self.format_option_strings(option)
          if option.help:
              help_text = self.expand_default(option)
              help_string = " ".join(line.strip() for line in help_text.splitlines())
              help_string = help_string.replace("\\", "\\\\")
              help_string = help_string.replace("[current:", "[default:")
          else:
              help_string = ""
          return f""".IP "{optstring}"
  {help_string}
  """
  
      def format_head(self, optparser, pkginfo, section=1):
          long_desc = ""
          try:
              pgm = optparser._get_prog_name()
          except AttributeError:
              # py >= 2.4.X (dunno which X exactly, at least 2)
              pgm = optparser.get_prog_name()
          short_desc = self.format_short_description(pgm, pkginfo.description)
          if hasattr(pkginfo, "long_desc"):
              long_desc = self.format_long_description(pgm, pkginfo.long_desc)
          return f"""{self.format_title(pgm, section)}
  {short_desc}
  {self.format_synopsis(pgm)}
  {long_desc}"""
  
      @staticmethod
      def format_title(pgm, section):
          date = "%d-%02d-%02d" % time.localtime()[:3]
          return f'.TH {pgm} {section} "{date}" {pgm}'
  
      @staticmethod
      def format_short_description(pgm, short_desc):
          return f""".SH NAME
  .B {pgm}
  \\- {short_desc.strip()}
  """
  
      @staticmethod
      def format_synopsis(pgm):
          return f""".SH SYNOPSIS
  .B  {pgm}
  [
  .I OPTIONS
  ] [
  .I <arguments>
  ]
  """
  
      @staticmethod
      def format_long_description(pgm, long_desc):
          long_desc = "\n".join(line.lstrip() for line in long_desc.splitlines())
          long_desc = long_desc.replace("\n.\n", "\n\n")
          if long_desc.lower().startswith(pgm):
              long_desc = long_desc[len(pgm) :]
          return f""".SH DESCRIPTION
  .B {pgm}
  {long_desc.strip()}
  """
  
      @staticmethod
      def format_tail(pkginfo):
          tail = f""".SH SEE ALSO
  /usr/share/doc/pythonX.Y-{getattr(pkginfo, "debian_name", "pylint")}/
  
  .SH BUGS
  Please report bugs on the project\'s mailing list:
  {pkginfo.mailinglist}
  
  .SH AUTHOR
  {pkginfo.author} <{pkginfo.author_email}>
  """
          if hasattr(pkginfo, "copyright"):
              tail += f"""
  .SH COPYRIGHT
  {pkginfo.copyright}
  """
          return tail
  
  
  def _generate_manpage(optparser, pkginfo, section=1, stream=sys.stdout, level=0):
      formatter = _ManHelpFormatter()
      formatter.output_level = level
      formatter.parser = optparser
      print(formatter.format_head(optparser, pkginfo, section), file=stream)
      print(optparser.format_option_help(formatter), file=stream)
      print(formatter.format_tail(pkginfo), file=stream)
  