parameters: (self, text)
return_statement: return [u"%s.%s" % (expr, w) for w in words if w[:n] == attr ]
docstring: Compute matches when text contains a dot.
  
          Assuming the text is of the form NAME.NAME....[NAME], and is
          evaluatable in self.namespace or self.global_namespace, it will be
          evaluated and its attributes (as revealed by dir()) are used as
          possible completions.  (For class instances, class members are are
          also considered.)
  
          WARNING: this can still invoke arbitrary C code, if an object
          with a __getattr__ hook is evaluated.
docstring_summary: Compute matches when text contains a dot.
docstring_tokens: Compute matches when text contains a dot .
function: def attr_matches(self, text):
          """Compute matches when text contains a dot.
  
          Assuming the text is of the form NAME.NAME....[NAME], and is
          evaluatable in self.namespace or self.global_namespace, it will be
          evaluated and its attributes (as revealed by dir()) are used as
          possible completions.  (For class instances, class members are are
          also considered.)
  
          WARNING: this can still invoke arbitrary C code, if an object
          with a __getattr__ hook is evaluated.
  
          """
  
          # Another option, seems to work great. Catches things like ''.<tab>
          m = re.match(r"(\S+(\.\w+)*)\.(\w*)$", text)
      
          if m:
              expr, attr = m.group(1, 3)
          elif self.greedy:
              m2 = re.match(r"(.+)\.(\w*)$", self.line_buffer)
              if not m2:
                  return []
              expr, attr = m2.group(1,2)
          else:
              return []
      
          try:
              obj = eval(expr, self.namespace)
          except:
              try:
                  obj = eval(expr, self.global_namespace)
              except:
                  return []
  
          if self.limit_to__all__ and hasattr(obj, '__all__'):
              words = get__all__entries(obj)
          else: 
              words = dir2(obj)
  
          try:
              words = generics.complete_object(obj, words)
          except TryNext:
              pass
          except Exception:
              # Silence errors from completion function
              #raise # dbg
              pass
          # Build match list to return
          n = len(attr)
          return [u"%s.%s" % (expr, w) for w in words if w[:n] == attr ]
function_tokens: def attr_matches ( self , text ) : # Another option, seems to work great. Catches things like ''.<tab> m = re . match ( r"(\S+(\.\w+)*)\.(\w*)$" , text ) if m : expr , attr = m . group ( 1 , 3 ) elif self . greedy : m2 = re . match ( r"(.+)\.(\w*)$" , self . line_buffer ) if not m2 : return [ ] expr , attr = m2 . group ( 1 , 2 ) else : return [ ] try : obj = eval ( expr , self . namespace ) except : try : obj = eval ( expr , self . global_namespace ) except : return [ ] if self . limit_to__all__ and hasattr ( obj , '__all__' ) : words = get__all__entries ( obj ) else : words = dir2 ( obj ) try : words = generics . complete_object ( obj , words ) except TryNext : pass except Exception : # Silence errors from completion function #raise # dbg pass # Build match list to return n = len ( attr ) return [ u"%s.%s" % ( expr , w ) for w in words if w [ : n ] == attr ]