parameters: (self, desc_protos, package)
docstring: Pulls out all the symbols from descriptor protos.
  
      Args:
        desc_protos: The protos to extract symbols from.
        package: The package containing the descriptor type.
      Yields:
        A two element tuple of the type name and descriptor object.
docstring_summary: Pulls out all the symbols from descriptor protos.
docstring_tokens: Pulls out all the symbols from descriptor protos .
function: def _ExtractSymbols(self, desc_protos, package):
      """Pulls out all the symbols from descriptor protos.
  
      Args:
        desc_protos: The protos to extract symbols from.
        package: The package containing the descriptor type.
      Yields:
        A two element tuple of the type name and descriptor object.
      """
  
      for desc_proto in desc_protos:
        if package:
          message_name = '.'.join((package, desc_proto.name))
        else:
          message_name = desc_proto.name
        message_desc = self.FindMessageTypeByName(message_name)
        yield (message_name, message_desc)
        for symbol in self._ExtractSymbols(desc_proto.nested_type, message_name):
          yield symbol
        for symbol in self._ExtractEnums(desc_proto.enum_type, message_name):
          yield symbol
function_tokens: def _ExtractSymbols ( self , desc_protos , package ) : for desc_proto in desc_protos : if package : message_name = '.' . join ( ( package , desc_proto . name ) ) else : message_name = desc_proto . name message_desc = self . FindMessageTypeByName ( message_name ) yield ( message_name , message_desc ) for symbol in self . _ExtractSymbols ( desc_proto . nested_type , message_name ) : yield symbol for symbol in self . _ExtractEnums ( desc_proto . enum_type , message_name ) : yield symbol