parameters: (self)
docstring: Read exactly one line from the device
  
          Returns:
              None on no data
docstring_summary: Read exactly one line from the device
docstring_tokens: Read exactly one line from the device
function: def _readline(self):
          """Read exactly one line from the device
  
          Returns:
              None on no data
          """
          logging.info('%s: reading line', self.port)
          if len(self._lines) > 1:
              return self._lines.pop(0)
  
          tail = ''
          if len(self._lines):
              tail = self._lines.pop()
  
          try:
              tail += self._read()
          except socket.error:
              logging.exception('%s: No new data', self.port)
              time.sleep(0.1)
  
          self._lines += LINESEPX.split(tail)
          if len(self._lines) > 1:
              return self._lines.pop(0)
function_tokens: def _readline ( self ) : logging . info ( '%s: reading line' , self . port ) if len ( self . _lines ) > 1 : return self . _lines . pop ( 0 ) tail = '' if len ( self . _lines ) : tail = self . _lines . pop ( ) try : tail += self . _read ( ) except socket . error : logging . exception ( '%s: No new data' , self . port ) time . sleep ( 0.1 ) self . _lines += LINESEPX . split ( tail ) if len ( self . _lines ) > 1 : return self . _lines . pop ( 0 )