ÿØÿàJFIFÿþ ÿÛC       ÿÛC ÿÀÿÄÿÄ"#QrÿÄÿÄ&1!A"2qQaáÿÚ ?Øy,æ/3JæÝ¹È߲؋5êXw²±ÉyˆR”¾I0ó2—PI¾IÌÚiMö¯–þrìN&"KgX:Šíµ•nTJnLK„…@!‰-ý ùúmë;ºgµŒ&ó±hw’¯Õ@”Ü— 9ñ-ë.²1<yà‚¹ïQÐU„ہ?.’¦èûbß±©Ö«Âw*VŒ) `$‰bØÔŸ’ëXÖ-ËTÜíGÚ3ð«g Ÿ§¯—Jx„–’U/ÂÅv_s(Hÿ@TñJÑãõçn­‚!ÈgfbÓc­:él[ðQe 9ÀPLbÃãCµm[5¿ç'ªjglå‡Ûí_§Úõl-;"PkÞÞÁQâ¼_Ñ^¢SŸx?"¸¦ùY騐ÒOÈ q’`~~ÚtËU¹CڒêV  I1Áß_ÿÙ hc@sadZddlmZddlmZdejfdYZedejZdZdS( sRA database of Python protocol buffer generated symbols. SymbolDatabase is the MessageFactory for messages generated at compile time, and makes it easy to create new instances of a registered type, given only the type's protocol buffer symbol name. Example usage: db = symbol_database.SymbolDatabase() # Register symbols of interest, from one or multiple files. db.RegisterFileDescriptor(my_proto_pb2.DESCRIPTOR) db.RegisterMessage(my_proto_pb2.MyMessage) db.RegisterEnumDescriptor(my_proto_pb2.MyEnum.DESCRIPTOR) # The database can be used as a MessageFactory, to generate types based on # their name: types = db.GetMessages(['my_proto.proto']) my_message_instance = types['MyMessage']() # The database's underlying descriptor pool can be queried, so it's not # necessary to know a type's filename to be able to generate it: filename = db.pool.FindFileContainingSymbol('MyMessage') my_message_instance = db.GetMessages([filename])['MyMessage']() # This functionality is also provided directly via a convenience method: my_message_instance = db.GetSymbol('MyMessage')() i(tdescriptor_pool(tmessage_factorytSymbolDatabasecBsMeZdZdZdZdZdZdZdZdZ RS(s'A database of Python generated symbols.cCs'|j}||j|<|j||S(sRegisters the given message type in the local database. Calls to GetSymbol() and GetMessages() will return messages registered here. Args: message: a message.Message, to be registered. Returns: The provided message. (t DESCRIPTORt_classestRegisterMessageDescriptor(tselftmessagetdesc((sC/usr/lib/python2.7/site-packages/google/protobuf/symbol_database.pytRegisterMessageDs   cCs|jj|dS(sRegisters the given message descriptor in the local database. Args: message_descriptor: a descriptor.MessageDescriptor. N(tpoolt AddDescriptor(Rtmessage_descriptor((sC/usr/lib/python2.7/site-packages/google/protobuf/symbol_database.pyRUscCs|jj||S(sRegisters the given enum descriptor in the local database. Args: enum_descriptor: a descriptor.EnumDescriptor. Returns: The provided descriptor. (R tAddEnumDescriptor(Rtenum_descriptor((sC/usr/lib/python2.7/site-packages/google/protobuf/symbol_database.pytRegisterEnumDescriptor]s cCs|jj|dS(sRegisters the given service descriptor in the local database. Args: service_descriptor: a descriptor.ServiceDescriptor. Returns: The provided descriptor. N(R tAddServiceDescriptor(Rtservice_descriptor((sC/usr/lib/python2.7/site-packages/google/protobuf/symbol_database.pytRegisterServiceDescriptoris cCs|jj|dS(sRegisters the given file descriptor in the local database. Args: file_descriptor: a descriptor.FileDescriptor. Returns: The provided descriptor. N(R tAddFileDescriptor(Rtfile_descriptor((sC/usr/lib/python2.7/site-packages/google/protobuf/symbol_database.pytRegisterFileDescriptorts cCs|j|jj|S(sxTries to find a symbol in the local database. Currently, this method only returns message.Message instances, however, if may be extended in future to support other symbol types. Args: symbol: A str, a protocol buffer symbol. Returns: A Python class corresponding to the symbol. Raises: KeyError: if the symbol could not be found. (RR tFindMessageTypeByName(Rtsymbol((sC/usr/lib/python2.7/site-packages/google/protobuf/symbol_database.pyt GetSymbolscsfdi}x}|D]u}|jj|}xZ|jjD]I}x@|D]2}y|j|||j:s w