+
    JV-jx  ã                   ó€   € R t ^ RIt^ RIHt ^ RIHt ^ RIHt  ! R R4      t]! ]P                  ! 4       R7      t	R tR# )	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                   ó\   a € ] tR t^,t o Rt/ tRR ltR tR tR t	R t
R tR	 tR
 tRtV tR# )ÚSymbolDatabasez'A database of Python generated symbols.Nc                óN   € T;'       g    \         P                  ! 4       V n        R# )z!Initializes a new SymbolDatabase.N)r   ÚDescriptorPoolÚpool)Úselfr	   s   &&Úp/Volumes/fast/ai/experiments/ui-tars-smoke/.venv/lib/python3.14/site-packages/google/protobuf/symbol_database.pyÚ__init__ÚSymbolDatabase.__init__2   s   € à×8Ð8œ×6Ò6Ó8€D†Ió    c                ó\   € VP                   pWP                  V&   V P                  V4       V# )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                ót   € \         P                  ! 4       R8X  d   V P                  P                  V4       R# R# )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                óp   € \         P                  ! 4       R8X  d   V P                  P                  V4       V# )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                ót   € \         P                  ! 4       R8X  d   V P                  P                  V4       R# R# )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                ót   € \         P                  ! 4       R8X  d   V P                  P                  V4       R# R# )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                óZ   € V P                   V P                  P                  V4      ,          # )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                ó$  a€ V3R lo/ pV Fn  pV P                   P                  V4      pVP                  P                  4        F2  pS! V4       F#  p V P                  V,          W&P
                  &   K%  	  K4  	  Kp  	  V#   \         d     K?  i ; i)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  ód   <"  € V x € V P                    F  pS! V4       F  pVx € K	  	  K  	  R# 5i)zCWalk a message Descriptor and recursively yields all message names.N)Únested_types)r   Úmsg_descÚnested_descÚ_GetAllMessagess   &  €r   r6   Ú3SymbolDatabase.GetMessages.<locals>._GetAllMessagesš   s0   øé € à‚jØ×'Ô'ˆ(Ù*¨8Ö4ˆKØÔ
ó 5ó (ùs   ƒ-0)r	   ÚFindFileByNameÚmessage_types_by_nameÚvaluesr   Ú	full_nameÚKeyError)r
   ÚfilesÚresultÚ	file_nameÚ	file_descr4   r   r6   s   &&     @r   ÚGetMessagesÚSymbolDatabase.GetMessages‡   sŠ   ø€ õ&ð €FÛˆ	Ø—)‘)×*Ñ*¨9Ó5€iØ×5Ñ5×<Ñ<Ö>ˆ(Ù# HÖ-ˆDðØ%)§]¡]°4Õ%8ˆF—>‘>Ó"ó .ó ?ñ ð €Møô ô âðús   ÁB Â B	ÂB	©r	   )N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r   r   r   r   r    r%   r*   r/   rA   Ú__static_attributes__Ú__classdictcell__)Ú__classdict__s   @r   r   r   ,   s=   ø‡ € Ù/ð €(ô9òò$3òò	:ò<òB÷$$ð $r   r   rC   c                 ó   € \         # )z#Returns the default SymbolDatabase.)Ú_DEFAULT© r   r   ÚDefaultrO   ±   s   € ä	€/r   )
rH   ÚwarningsÚgoogle.protobuf.internalr   Úgoogle.protobufr   r   r   rO   rM   rN   r   r   Ú<module>rS      s?   ðñó: å 7Ý +Ý +÷ñ ñD ˜×6Ò6Ó8Ô9€ôr   