ó
    Ñ]jx  ã                   óx   • S r SSKrSSKJr  SSKJr  SSKJr   " S S5      r\" \R                  " 5       S9r	S	 rg)
aS  A 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                   óP   • \ rS rSrSr0 rSS jrS rS rS r	S r
S	 rS
 rS rSrg)ÚSymbolDatabaseé,   z'A database of Python generated symbols.Nc                 óJ   • U=(       d    [         R                  " 5       U l        g)z!Initializes a new SymbolDatabase.N)r   ÚDescriptorPoolÚpool)Úselfr   s     Ú\/home/mande/repo/quber/.venv/lib/python3.13/site-packages/google/protobuf/symbol_database.pyÚ__init__ÚSymbolDatabase.__init__2   s   € à×8œ×6Ò6Ó8€D…Ió    c                 ó\   • UR                   nXR                  U'   U R                  U5        U$ )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   ÚRegisterMessageÚSymbolDatabase.RegisterMessage6   s.   € ð ×Ñ€DØ!‡M�M�$ÑØ×"Ñ" 4Ô(Ø€Nr   c                 ón   • [         R                  " 5       S:X  a  U R                  R                  U5        gg)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   Ú(SymbolDatabase.RegisterMessageDescriptorH   s-   € ô ×ÒÓ  HÓ,à
‡i�i×ÑÐ1Õ2ð -r   c                 ón   • [         R                  " 5       S:X  a  U R                  R                  U5        U$ )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   )r   r   r   Ú_AddEnumDescriptor)r   Úenum_descriptors     r   ÚRegisterEnumDescriptorÚ%SymbolDatabase.RegisterEnumDescriptorR   s-   € ô ×ÒÓ  HÓ,à
‡i�i×"Ñ" ?Ô3ØÐr   c                 ón   • [         R                  " 5       S:X  a  U R                  R                  U5        gg)z—Registers the given service descriptor in the local database.

Args:
  service_descriptor (ServiceDescriptor): the service descriptor to
    register.
r   N)r   r   r   Ú_AddServiceDescriptor)r   Úservice_descriptors     r   ÚRegisterServiceDescriptorÚ(SymbolDatabase.RegisterServiceDescriptor`   s-   € ô ×ÒÓ  HÓ,à
‡i�i×%Ñ%Ð&8Õ9ð -r   c                 ón   • [         R                  " 5       S:X  a  U R                  R                  U5        gg)z‡Registers the given file descriptor in the local database.

Args:
  file_descriptor (FileDescriptor): The file descriptor to register.
r   N)r   r   r   Ú_InternalAddFileDescriptor)r   Úfile_descriptors     r   ÚRegisterFileDescriptorÚ%SymbolDatabase.RegisterFileDescriptork   s,   € ô ×ÒÓ  HÓ,à
‡i�i×*Ñ*¨?Õ;ð -r   c                 óR   • U R                   U R                  R                  U5         $ )aS  Tries 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.
)r   r   ÚFindMessageTypeByName)r   Úsymbols     r   Ú	GetSymbolÚSymbolDatabase.GetSymbolu   s"   € ð  �=‰=˜Ÿ™×8Ñ8¸Ó@ÑAÐAr   c                 ó  ^• U4S jm0 nU Hj  nU R                   R                  U5      nUR                  R                  5        H.  nT" U5       H  n U R                  U   X&R
                  '   M!     M0     Ml     U$ ! [         a     M:  f = f)aâ  Gets 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.
c              3   ób   >#   • U v •  U R                    H  nT" U5       H  nUv •  M	     M     g7f)zCWalk a message Descriptor and recursively yields all message names.N)Únested_types)r   Úmsg_descÚnested_descÚ_GetAllMessagess      €r   r8   Ú3SymbolDatabase.GetMessages.<locals>._GetAllMessagesš   s0   øé € à‚jØ×'Ô'ˆ(Ù*¨8Ö4ˆKØÔ
ó 5ò (ùs   ƒ,/)r   ÚFindFileByNameÚmessage_types_by_nameÚvaluesr   Ú	full_nameÚKeyError)r   ÚfilesÚresultÚ	file_nameÚ	file_descr6   r   r8   s          @r   ÚGetMessagesÚSymbolDatabase.GetMessages‡   sŠ   ø€ õ&ð €FÛˆ	Ø—)‘)×*Ñ*¨9Ó5€iØ×5Ñ5×<Ñ<Ö>ˆ(Ù# HÖ-ˆDðØ%)§]¡]°4Ñ%8ˆF—>‘>Ó"ó .ó ?ñ ð €Møô ó âðús   ÁA<Á<
B
	Â	B
	©r   )N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r   r   r   r   r"   r'   r,   r1   rC   Ú__static_attributes__© r   r   r   r   ,   s5   † Ù/ð €(ô9òò$3òò	:ò<òBõ$$r   r   rE   c                  ó   • [         $ )z#Returns the default SymbolDatabase.)Ú_DEFAULTrL   r   r   ÚDefaultrO   ±   s   € ä	€/r   )
rJ   ÚwarningsÚgoogle.protobuf.internalr   Úgoogle.protobufr   r   r   rO   rN   rL   r   r   Ú<module>rS      s?   ðñó: å 7Ý +Ý +÷ñ ñD ˜×6Ò6Ó8Ñ9€ór   