Ë .i’z;Cãó~—dZddlZddlmZddlmZddlmZGd„d«Zeej«¬«Z d „Zy) aSA 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')() éN)Úapi_implementation)Údescriptor_pool)Úmessage_factorycóX—eZdZdZiZdd„Zd„Zd„Zd„Zd„Z d„Z d „Z d „Z d „Z d „Zd „Zy)ÚSymbolDatabasez'A database of Python generated symbols.Ncó>—|xstj«|_y)z!Initializes a new SymbolDatabase.N)rÚDescriptorPoolÚpool)Úselfr s úD/usr/lib/python3.12/site-packages/google/protobuf/symbol_database.pyÚ__init__zSymbolDatabase.__init__2s€àÒ8œ×6Ñ6Ó8€D…IócóV—tjd«tj|«S)Nz–SymbolDatabase.GetPrototype() is deprecated. Please use message_factory.GetMessageClass() instead. SymbolDatabase.GetPrototype() will be removed soon.)ÚwarningsÚwarnrÚGetMessageClass©r Ú descriptors r Ú GetPrototypezSymbolDatabase.GetPrototype6s(€Ü ‡M�MðHôIô × *Ñ *¨:Ó 6Ð6rcóV—tjd«tj|«S)Nz–Directly call CreatePrototype() is wrong. Please use message_factory.GetMessageClass() instead. SymbolDatabase.CreatePrototype() will be removed soon.)rrrÚ_InternalCreateMessageClassrs r ÚCreatePrototypezSymbolDatabase.CreatePrototype<s(€Ü ‡M�MðKôLô × 6Ñ 6°zÓ BÐBrcól—tjd«tj||j«S)NzžSymbolDatabase.GetMessages() is deprecated. Please use message_factory.GetMessageClassedForFiles() instead. SymbolDatabase.GetMessages() will be removed soon.)rrrÚGetMessageClassedForFilesr )r Úfiless r Ú GetMessageszSymbolDatabase.GetMessagesBs.€Ü ‡M�MðGôHô × 4Ñ 4°U¸D¿I¹IÓ FÐFrcó^—|j}||j|<|j|«|S)a@Registers the given message type in the local database. Calls to GetSymbol() and GetMessages() will return messages registered here. Args: message: A :class:`google.protobuf.message.Message` subclass (or instance); its descriptor will be registered. Returns: The provided message. )Ú DESCRIPTORÚ_classesÚRegisterMessageDescriptor)r ÚmessageÚdescs r ÚRegisterMessagezSymbolDatabase.RegisterMessageHs0€ð × Ñ €DØ!€D‡M�M�$ÑØ×"Ñ" 4Ô(Ø €Nrcój—tj«dk(r|jj|«yy)z“Registers the given message descriptor in the local database. Args: message_descriptor (Descriptor): the message descriptor to add. ÚpythonN)rÚTyper Ú_AddDescriptor)r Úmessage_descriptors r r z(SymbolDatabase.RegisterMessageDescriptorZs-€ô ×ÑÓ  HÒ,à ‡i�i×ÑÐ1Õ2ð-rcój—tj«dk(r|jj|«|S)zÐRegisters the given enum descriptor in the local database. Args: enum_descriptor (EnumDescriptor): The enum descriptor to register. Returns: EnumDescriptor: The provided descriptor. r%)rr&r Ú_AddEnumDescriptor)r Úenum_descriptors r ÚRegisterEnumDescriptorz%SymbolDatabase.RegisterEnumDescriptords-€ô×ÑÓ  HÒ,à ‡i�i×"Ñ" ?Ô3Ø Ðrcój—tj«dk(r|jj|«yy)z§Registers the given service descriptor in the local database. Args: service_descriptor (ServiceDescriptor): the service descriptor to register. r%N)rr&r Ú_AddServiceDescriptor)r Úservice_descriptors r ÚRegisterServiceDescriptorz(SymbolDatabase.RegisterServiceDescriptorrs-€ô×ÑÓ  HÒ,à ‡i�i×%Ñ%Ð&8Õ9ð-rcój—tj«dk(r|jj|«yy)z“Registers the given file descriptor in the local database. Args: file_descriptor (FileDescriptor): The file descriptor to register. r%N)rr&r Ú_InternalAddFileDescriptor)r Úfile_descriptors r ÚRegisterFileDescriptorz%SymbolDatabase.RegisterFileDescriptor}s,€ô ×ÑÓ  HÒ,à ‡i�i×*Ñ*¨?Õ;ð-rcóR—|j|jj|«S)awTries 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 (str): a protocol buffer symbol. Returns: A Python class corresponding to the symbol. Raises: KeyError: if the symbol could not be found. )rr ÚFindMessageTypeByName)r Úsymbols r Ú GetSymbolzSymbolDatabase.GetSymbol‡s"€ð �=‰=˜Ÿ™×8Ñ8¸Ó@Ñ AÐArcó ‡—ˆfd„Ši}|D]f}|jj|«}|jj«D],}‰|«D]} |j|||j <Œ!Œ.Œh|S#t $rYŒ3wxYw)aGets all registered messages from a specified file. Only messages already created and registered will be returned; (this is the case for imported _pb2 modules) But unlike MessageFactory, this version also returns already defined nested messages, but does not register any message extensions. Args: files (list[str]): The file names to extract messages from. Returns: A dictionary mapping proto names to the message classes. Raises: KeyError: if a file could not be found. c3óZ•K—|–—|jD]}‰|«D]}|–—ŒŒy­w)zCWalk a message Descriptor and recursively yields all message names.N)Ú nested_types)r"Úmsg_descÚ nested_descÚ_GetAllMessagess €r r>z3SymbolDatabase.GetMessages.._GetAllMessages¬s1øèø€à ‚jØ×'Ô'ˆ(Ù*¨8Ö4ˆKØÓ ñ5ñ(ùsƒ(+)r ÚFindFileByNameÚmessage_types_by_nameÚvaluesrÚ full_nameÚKeyError)r rÚresultÚ file_nameÚ file_descr<r"r>s @r rzSymbolDatabase.GetMessages™sŒø€ô&ð€FÛˆ Ø—)‘)×*Ñ*¨9Ó5€iØ×5Ñ5×<Ñ<Ö>ˆ(Ù# HÖ-ˆDð Ø%)§]¡]°4Ñ%8ˆF�4—>‘>Ò "ñ.ñ?ðð €Møôò á ð úsÁA6Á6 B ÂB )N)Ú__name__Ú __module__Ú __qualname__Ú__doc__rr rrrr#r r,r0r4r8©rr rr,sF„Ù/ð€(ó9ò7ò Cò Gò ò$3ò ò :ò<òBó$$rr)r có—tS)z#Returns the default SymbolDatabase.)Ú_DEFAULTrKrr ÚDefaultrNÃs€ä €/r) rJrÚgoogle.protobuf.internalrÚgoogle.protobufrrrrNrMrKrr ÚrQsBðñó:å7Ý+Ý+÷QñQñh Ð6˜×6Ñ6Ó8Ô 9€ór