parameters: (self, list, timeout=None)
return_statement: return (-1, None, text)
docstring: Read until one from a list of a regular expressions matches.
  
          The first argument is a list of regular expressions, either
          compiled (re.Pattern instances) or uncompiled (strings).
          The optional second argument is a timeout, in seconds; default
          is no timeout.
  
          Return a tuple of three items: the index in the list of the
          first regular expression that matches; the re.Match object
          returned; and the text read up till and including the match.
  
          If EOF is read and no text was read, raise EOFError.
          Otherwise, when nothing matches, return (-1, None, text) where
          text is the text received so far (may be the empty string if a
          timeout happened).
  
          If a regular expression ends with a greedy match (e.g. '.*')
          or if more than one expression can match the same input, the
          results are undeterministic, and may depend on the I/O timing.
docstring_summary: Read until one from a list of a regular expressions matches.
docstring_tokens: Read until one from a list of a regular expressions matches .
function: def expect(self, list, timeout=None):
          """Read until one from a list of a regular expressions matches.
  
          The first argument is a list of regular expressions, either
          compiled (re.Pattern instances) or uncompiled (strings).
          The optional second argument is a timeout, in seconds; default
          is no timeout.
  
          Return a tuple of three items: the index in the list of the
          first regular expression that matches; the re.Match object
          returned; and the text read up till and including the match.
  
          If EOF is read and no text was read, raise EOFError.
          Otherwise, when nothing matches, return (-1, None, text) where
          text is the text received so far (may be the empty string if a
          timeout happened).
  
          If a regular expression ends with a greedy match (e.g. '.*')
          or if more than one expression can match the same input, the
          results are undeterministic, and may depend on the I/O timing.
  
          """
          re = None
          list = list[:]
          indices = range(len(list))
          for i in indices:
              if not hasattr(list[i], "search"):
                  if not re: import re
                  list[i] = re.compile(list[i])
          if timeout is not None:
              deadline = _time() + timeout
          with _TelnetSelector() as selector:
              selector.register(self, selectors.EVENT_READ)
              while not self.eof:
                  self.process_rawq()
                  for i in indices:
                      m = list[i].search(self.cookedq)
                      if m:
                          e = m.end()
                          text = self.cookedq[:e]
                          self.cookedq = self.cookedq[e:]
                          return (i, m, text)
                  if timeout is not None:
                      ready = selector.select(timeout)
                      timeout = deadline - _time()
                      if not ready:
                          if timeout < 0:
                              break
                          else:
                              continue
                  self.fill_rawq()
          text = self.read_very_lazy()
          if not text and self.eof:
              raise EOFError
          return (-1, None, text)
function_tokens: def expect ( self , list , timeout = None ) : re = None list = list [ : ] indices = range ( len ( list ) ) for i in indices : if not hasattr ( list [ i ] , "search" ) : if not re : import re list [ i ] = re . compile ( list [ i ] ) if timeout is not None : deadline = _time ( ) + timeout with _TelnetSelector ( ) as selector : selector . register ( self , selectors . EVENT_READ ) while not self . eof : self . process_rawq ( ) for i in indices : m = list [ i ] . search ( self . cookedq ) if m : e = m . end ( ) text = self . cookedq [ : e ] self . cookedq = self . cookedq [ e : ] return ( i , m , text ) if timeout is not None : ready = selector . select ( timeout ) timeout = deadline - _time ( ) if not ready : if timeout < 0 : break else : continue self . fill_rawq ( ) text = self . read_very_lazy ( ) if not text and self . eof : raise EOFError return ( - 1 , None , text )