docs: def signum(signame):
      """
      Determine the signal from its name.  These forms are supported:
  
          signal object (needed for python >= 3.5)
          integer signal number
          text signal number
          SIGNAME (signal name in upper case)
          signame (signal name in lower case)
          NAME    (name without 'SIG' in upper case)
          name    (name without 'SIG' in lower case)
  
      In python 3.5 and above, "signal" is an object, so in addition
      to mapping signal numbers and stringified numbers, this also
      maps signal objects.
  """
      if signum.namemap is None:
          #  First time through, map evrything likely to its signal number
          #
          signum.namemap = {}
          for num, nam in sigmap.items():
              signum.namemap[num] = num
              signum.namemap[int(num)] = num
              signum.namemap[str(num)] = num
              signum.namemap[str(int(num))] = num
              signum.namemap[nam.upper()] = num
              signum.namemap[nam.lower()] = num
              abbr = nam.replace('SIG', '', 1)
              if abbr != nam:
                  signum.namemap[abbr.upper()] = num
                  signum.namemap[abbr.lower()] = num
      return signum.namemap.get(signame)