Ë
    ímxi5  ã                   ó~   — d Z ddlZddlmZ ddlmZ ddlmZ  G d„ d«      Z e ej                  «       ¬«      Z	d	„ Zy)
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                   óX   — e Zd ZdZi Zdd„Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zd
„ Zd„ Zd„ Zd„ Zy)ÚSymbolDatabasez'A database of Python generated symbols.Nc                 ó>   — |xs t        j                  «       | _        y)z!Initializes a new SymbolDatabase.N)r   ÚDescriptorPoolÚpool)Úselfr
   s     úV/home/htdocs/ttos/venv/lib/python3.12/site-packages/google/protobuf/symbol_database.pyÚ__init__zSymbolDatabase.__init__2   s   € àÒ8œ×6Ñ6Ó8€D…Ió    c                 óV   — t        j                  d«       t        j                  |«      S )Nz–SymbolDatabase.GetPrototype() is deprecated. Please use message_factory.GetMessageClass() instead. SymbolDatabase.GetPrototype() will be removed soon.)ÚwarningsÚwarnr   ÚGetMessageClass©r   Ú
descriptors     r   ÚGetPrototypezSymbolDatabase.GetPrototype6   s(   € Ü‡M�Mð Hô Iô ×*Ñ*¨:Ó6Ð6r   c                 óV   — t        j                  d«       t        j                  |«      S )Nz–Directly call CreatePrototype() is wrong. Please use message_factory.GetMessageClass() instead. SymbolDatabase.CreatePrototype() will be removed soon.)r   r   r   Ú_InternalCreateMessageClassr   s     r   ÚCreatePrototypezSymbolDatabase.CreatePrototype<   s(   € Ü‡M�Mð Kô Lô ×6Ñ6°zÓBÐBr   c                 ól   — t        j                  d«       t        j                  || j                  «      S )NzžSymbolDatabase.GetMessages() is deprecated. Please use message_factory.GetMessageClassedForFiles() instead. SymbolDatabase.GetMessages() will be removed soon.)r   r   r   ÚGetMessageClassedForFilesr
   )r   Úfiless     r   ÚGetMessageszSymbolDatabase.GetMessagesB   s.   € Ü‡M�Mð Gô Hô ×4Ñ4°U¸D¿I¹IÓFÐFr   c                 ó^   — |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   ÚRegisterMessagezSymbolDatabase.RegisterMessageH   s0   € ð ×Ñ€DØ!€D‡M�M�$ÑØ×"Ñ" 4Ô(Ø€Nr   c                 ój   — t        j                  «       dk(  r| j                  j                  |«       yy)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.RegisterMessageDescriptorZ   s-   € ô ×ÑÓ  HÒ,à
‡i�i×ÑÐ1Õ2ð -r   c                 ój   — t        j                  «       dk(  r| j                  j                  |«       |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%   )r   r&   r
   Ú_AddEnumDescriptor)r   Úenum_descriptors     r   ÚRegisterEnumDescriptorz%SymbolDatabase.RegisterEnumDescriptord   s-   € ô ×ÑÓ  HÒ,à
‡i�i×"Ñ" ?Ô3ØÐr   c                 ój   — t        j                  «       dk(  r| j                  j                  |«       yy)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   ÚRegisterServiceDescriptorz(SymbolDatabase.RegisterServiceDescriptorr   s-   € ô ×ÑÓ  HÒ,à
‡i�i×%Ñ%Ð&8Õ9ð -r   c                 ój   — t        j                  «       dk(  r| j                  j                  |«       yy)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   ÚRegisterFileDescriptorz%SymbolDatabase.RegisterFileDescriptor}   s,   € ô ×ÑÓ  HÒ,à
‡i�i×*Ñ*¨?Õ;ð -r   c                 óR   — | j                   | j                  j                  |«         S )aw  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   Ú	GetSymbolzSymbolDatabase.GetSymbol‡   s"   € ð  �=‰=˜Ÿ™×8Ñ8¸Ó@ÑAÐAr   c                 ó
  ‡— ˆfd„Ši }|D ]f  }| j                   j                  |«      }|j                  j                  «       D ],  } ‰|«      D ]  }	 | j                  |   ||j
                  <   Œ! Œ. Œh |S # t        $ r Y Œ3w xY w)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   óZ   •K  — | –— | j                   D ]  } ‰|«      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.<locals>._GetAllMessages¬   s;   øè ø€ à‚jØ×'Ñ'ò ˆ(Ù*¨8Ó4ò 	ˆKØÓ
ñ	ñùs   ƒ(+)r
   ÚFindFileByNameÚmessage_types_by_nameÚvaluesr   Ú	full_nameÚKeyError)r   r   ÚresultÚ	file_nameÚ	file_descr<   r"   r>   s          @r   r   zSymbolDatabase.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__r   r   r   r   r   r#   r    r,   r0   r4   r8   © r   r   r   r   ,   sF   „ Ù/ð €(ó9ò7òCòGòò$3òò	:ò<òBó$$r   r   )r
   c                  ó   — t         S )z#Returns the default SymbolDatabase.)Ú_DEFAULTrK   r   r   ÚDefaultrN   Ã   s   € ä	€/r   )
rJ   r   Úgoogle.protobuf.internalr   Úgoogle.protobufr   r   r   rN   rM   rK   r   r   ú<module>rQ      sB   ðñó: å 7Ý +Ý +÷Qñ Qñh Ð6˜×6Ñ6Ó8Ô9€ór   