docs: def _key(self, ch):
          """Return the integer key for ch. It is the key for the first
          value found in chnames and chnames_0, that matches ch. Or if
          ch is an int, ch is returned if it is a key in self.D"""
  
          if ch in self.D:
              return ch
  
          if isinstance(ch, int):
              raise KeyError(ch)  # dont accept integers as custom names
  
          if self.chnames:
              for item in self.chnames.items():
                  if item[1] == ch:
                      return item[0]
          for item in self.chnames_0.items():
              if item[1] == ch:
                  return item[0]
  
          # If we got here, ch can be an int represented by a string if it comes
          # from a condition string:
          try:
              chint = int(ch)
              if chint in self.D:
                  return chint
          except ValueError:
              pass
  
          raise KeyError(ch)