def testgetprototype(self):
   db = descriptor_database.descriptordatabase()
   pool = descriptor_pool.descriptorpool(db)
   db.add(self.factory_test1_fd)
   db.add(self.factory_test2_fd)
   factory = message_factory.messagefactory()
   cls = factory.getprototype(pool.findmessagetypebyname(
       'net.proto2.python.internal.factory2message'))
   self.assertisnot(cls, factory_test2_pb2.factory2message)
   self._exercisedynamicclass(cls)
   cls2 = factory.getprototype(pool.findmessagetypebyname(
       'net.proto2.python.internal.factory2message'))
   self.assertis(cls, cls2)
  def testadd(self):
    db = descriptor_database.descriptordatabase()
    file_desc_proto = descriptor_pb2.filedescriptorproto.fromstring(
        factory_test2_pb2.descriptor.serialized_pb)
    db.add(file_desc_proto)

    self.assertequals(file_desc_proto, db.findfilebyname(
        'net/proto2/python/internal/factory_test2.proto'))
    self.assertequals(file_desc_proto, db.findfilecontainingsymbol(
        'net.proto2.python.internal.factory2message'))
    self.assertequals(file_desc_proto, db.findfilecontainingsymbol(
        'net.proto2.python.internal.factory2message.nestedfactory2message'))
    self.assertequals(file_desc_proto, db.findfilecontainingsymbol(
        'net.proto2.python.internal.factory2enum'))
    self.assertequals(file_desc_proto, db.findfilecontainingsymbol(
        'net.proto2.python.internal.factory2message.nestedfactory2enum'))
Exemplo n.º 3
0
  def __init__(self, descriptor_db=none):
    """initializes a pool of proto buffs.

    the descriptor_db argument to the constructor is provided to allow
    specialized file descriptor proto lookup code to be triggered on demand. an
    example would be an implementation which will read and compile a file
    specified in a call to findfilebyname() and not require the call to add()
    at all. results from this database will be cached internally here as well.

    args:
      descriptor_db: a secondary source of file descriptors.
    """

    self._internal_db = descriptor_database.descriptordatabase()
    self._descriptor_db = descriptor_db
    self._descriptors = {}
    self._enum_descriptors = {}
    self._file_descriptors = {}
Exemplo n.º 4
0
      a class describing the passed in descriptor.
    """

    if descriptor.full_name not in self._classes:
      result_class = reflection.generatedprotocolmessagetype(
          descriptor.name.encode('ascii', 'ignore'),
          (message.message,),
          {'descriptor': descriptor})
      self._classes[descriptor.full_name] = result_class
      for field in descriptor.fields:
        if field.message_type:
          self.getprototype(field.message_type)
    return self._classes[descriptor.full_name]


_db = descriptor_database.descriptordatabase()
_pool = descriptor_pool.descriptorpool(_db)
_factory = messagefactory()


def getmessages(file_protos):
  """builds a dictionary of all the messages available in a set of files.

  args:
    file_protos: a sequence of file protos to build messages out of.

  returns:
    a dictionary containing all the message types in the files mapping the
    fully qualified name to a message subclass for the descriptor.
  """