code: def read_pipette_id(self, mount) -> Optional[str]:
          '''
          Reads in an attached pipette's ID
          The ID is unique to this pipette, and is a string of unknown length
  
          :param mount: string with value 'left' or 'right'
          :return id string, or None
          '''
          res: Optional[str] = None
          if self.simulating:
              res = '1234567890'
          else:
              try:
                  res = self._read_from_pipette(
                      GCODES['READ_INSTRUMENT_ID'], mount)
              except UnicodeDecodeError:
                  log.exception("Failed to decode pipette ID string:")
                  res = None
          return ref read_pipette_id(self, mount) -> Optional[str]:
          '''
          Reads in an attached pipette's ID
          The ID is unique to this pipette, and is a string of unknown length
  
          :param mount: string with value 'left' or 'right'
          :return id string, or None
          '''
          res: Optional[str] = None
          if self.simulating:
              res = '1234567890'
          else:
              try:
                  res = self._read_from_pipette(
                      GCODES['READ_INSTRUMENT_ID'], mount)
              except UnicodeDecodeError:
                  log.exception("Failed to decode pipette ID string:")
                  res = None
          return res
docs: Reads in an attached pipette's ID
          The ID is unique to this pipette, and is a string of unknown length
  
          :param mount: string with value 'left' or 'right'
          :return id string, or None