parameters: (path=None, prefix='', onerror=None)
docstring: Yields (module_loader, name, ispkg) for all modules recursively
      on path, or, if path is None, all accessible modules.
  
      'path' should be either None or a list of paths to look for
      modules in.
  
      'prefix' is a string to output on the front of every module name
      on output.
  
      Note that this function must import all *packages* (NOT all
      modules!) on the given path, in order to access the __path__
      attribute to find submodules.
  
      'onerror' is a function which gets called with one argument (the
      name of the package which was being imported) if any exception
      occurs while trying to import a package.  If no onerror function is
      supplied, ImportErrors are caught and ignored, while all other
      exceptions are propagated, terminating the search.
  
      Examples:
  
      # list all modules python can access
      walk_packages()
  
      # list all submodules of ctypes
      walk_packages(ctypes.__path__, ctypes.__name__+'.')
docstring_summary: Yields (module_loader, name, ispkg) for all modules recursively
      on path, or, if path is None, all accessible modules.
docstring_tokens: Yields ( module_loader name ispkg ) for all modules recursively on path or if path is None all accessible modules .
function: def walk_packages(path=None, prefix='', onerror=None):
      """Yields (module_loader, name, ispkg) for all modules recursively
      on path, or, if path is None, all accessible modules.
  
      'path' should be either None or a list of paths to look for
      modules in.
  
      'prefix' is a string to output on the front of every module name
      on output.
  
      Note that this function must import all *packages* (NOT all
      modules!) on the given path, in order to access the __path__
      attribute to find submodules.
  
      'onerror' is a function which gets called with one argument (the
      name of the package which was being imported) if any exception
      occurs while trying to import a package.  If no onerror function is
      supplied, ImportErrors are caught and ignored, while all other
      exceptions are propagated, terminating the search.
  
      Examples:
  
      # list all modules python can access
      walk_packages()
  
      # list all submodules of ctypes
      walk_packages(ctypes.__path__, ctypes.__name__+'.')
      """
  
      def seen(p, m={}):
          if p in m:
              return True
          m[p] = True
  
      for importer, name, ispkg in iter_modules(path, prefix):
          yield importer, name, ispkg
  
          if ispkg:
              try:
                  __import__(name)
              except ImportError:
                  if onerror is not None:
                      onerror(name)
              except Exception:
                  if onerror is not None:
                      onerror(name)
                  else:
                      raise
              else:
                  path = getattr(sys.modules[name], '__path__', None) or []
  
                  # don't traverse path items we've seen before
                  path = [p for p in path if not seen(p)]
  
                  for item in walk_packages(path, name+'.', onerror):
                      yield item
function_tokens: def walk_packages ( path = None , prefix = '' , onerror = None ) : def seen ( p , m = { } ) : if p in m : return True m [ p ] = True for importer , name , ispkg in iter_modules ( path , prefix ) : yield importer , name , ispkg if ispkg : try : __import__ ( name ) except ImportError : if onerror is not None : onerror ( name ) except Exception : if onerror is not None : onerror ( name ) else : raise else : path = getattr ( sys . modules [ name ] , '__path__' , None ) or [ ] # don't traverse path items we've seen before path = [ p for p in path if not seen ( p ) ] for item in walk_packages ( path , name + '.' , onerror ) : yield item