parameters: (module_to_name, exclude=())
return_statement: return members
docstring: Collect all symbols from a list of modules.
  
    Args:
      module_to_name: Dictionary mapping modules to short names.
      exclude: Set of fully qualified names to exclude.
  
    Returns:
      Dictionary mapping name to (fullname, member) pairs.
  
    Raises:
      RuntimeError: if we can not resolve a name collision.
docstring_summary: Collect all symbols from a list of modules.
docstring_tokens: Collect all symbols from a list of modules .
function: def collect_members(module_to_name, exclude=()):
    """Collect all symbols from a list of modules.
  
    Args:
      module_to_name: Dictionary mapping modules to short names.
      exclude: Set of fully qualified names to exclude.
  
    Returns:
      Dictionary mapping name to (fullname, member) pairs.
  
    Raises:
      RuntimeError: if we can not resolve a name collision.
    """
    members = {}
    for module, module_name in module_to_name.items():
      all_names = getattr(module, "__all__", None)
      for name, member in inspect.getmembers(module):
        if ((inspect.isfunction(member) or inspect.isclass(member)) and
            not _always_drop_symbol_re.match(name) and
            (all_names is None or name in all_names)):
          fullname = "%s.%s" % (module_name, name)
          if fullname in exclude:
            continue
          if name in members:
            other_fullname, other_member = members[name]
            if member is not other_member:
              raise RuntimeError("Short name collision between %s and %s" %
                                 (fullname, other_fullname))
            if len(fullname) == len(other_fullname):
              raise RuntimeError("Can't decide whether to use %s or %s for %s: "
                                 "both full names have length %d" %
                                 (fullname, other_fullname, name, len(fullname)))
            if len(fullname) > len(other_fullname):
              continue  # Use the shorter full name
          members[name] = fullname, member
    return members
function_tokens: def collect_members ( module_to_name , exclude = ( ) ) : members = { } for module , module_name in module_to_name . items ( ) : all_names = getattr ( module , "__all__" , None ) for name , member in inspect . getmembers ( module ) : if ( ( inspect . isfunction ( member ) or inspect . isclass ( member ) ) and not _always_drop_symbol_re . match ( name ) and ( all_names is None or name in all_names ) ) : fullname = "%s.%s" % ( module_name , name ) if fullname in exclude : continue if name in members : other_fullname , other_member = members [ name ] if member is not other_member : raise RuntimeError ( "Short name collision between %s and %s" % ( fullname , other_fullname ) ) if len ( fullname ) == len ( other_fullname ) : raise RuntimeError ( "Can't decide whether to use %s or %s for %s: " "both full names have length %d" % ( fullname , other_fullname , name , len ( fullname ) ) ) if len ( fullname ) > len ( other_fullname ) : continue # Use the shorter full name members [ name ] = fullname , member return members