HEX
Server: Microsoft-IIS/10.0
System: Windows NT ITPWINWEBSVR22 10.0 build 20348 (Windows Server 2022) AMD64
User: www.conferencesearch.co.uk (0)
PHP: 8.3.30
Disabled: NONE
Upload Files
File: D:/Python311/Lib/site-packages/google/protobuf/__pycache__/symbol_database.cpython-311.pyc
�

�nc ���dZddlmZddlmZddlmZGd�dej��Zeej�����Z	d�Zd	S)
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')()
�)�api_implementation)�descriptor_pool)�message_factoryc�<�eZdZdZd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	S)
�SymbolDatabasez'A database of Python generated symbols.c�R�|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)�self�message�descs   �AD:\Python311\Lib\site-packages\google/protobuf/symbol_database.py�RegisterMessagezSymbolDatabase.RegisterMessageEs1����D�!�D�M�$���"�"�4�(�(�(��N�c�l�tj��dkr|j�|��dSdS)z�Registers the given message descriptor in the local database.

    Args:
      message_descriptor (Descriptor): the message descriptor to add.
    �pythonN)r�Type�pool�_AddDescriptor)r�message_descriptors  rrz(SymbolDatabase.RegisterMessageDescriptorWsA���� � �H�,�3�
�i���1�2�2�2�2�2�3�3rc�h�tj��dkr|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)rrr�_AddEnumDescriptor)r�enum_descriptors  r�RegisterEnumDescriptorz%SymbolDatabase.RegisterEnumDescriptoras6���� � �H�,�4�
�i�"�"�?�3�3�3��rc�l�tj��dkr|j�|��dSdS)z�Registers the given service descriptor in the local database.

    Args:
      service_descriptor (ServiceDescriptor): the service descriptor to
        register.
    rN)rrr�_AddServiceDescriptor)r�service_descriptors  r�RegisterServiceDescriptorz(SymbolDatabase.RegisterServiceDescriptorosA���� � �H�,�:�
�i�%�%�&8�9�9�9�9�9�:�:rc�l�tj��dkr|j�|��dSdS)z�Registers the given file descriptor in the local database.

    Args:
      file_descriptor (FileDescriptor): The file descriptor to register.
    rN)rrr�_InternalAddFileDescriptor)r�file_descriptors  r�RegisterFileDescriptorz%SymbolDatabase.RegisterFileDescriptorzs@���� � �H�,�<�
�i�*�*�?�;�;�;�;�;�<�<rc�L�|j|j�|��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.
    )r
r�FindMessageTypeByName)r�symbols  r�	GetSymbolzSymbolDatabase.GetSymbol�s!�� �=���8�8��@�@�A�Arc�����fd��i}|D]l}|j�|��}|j���D]6}�|��D](}	|j|||j<�#t$rY�%wxYw�7�m|S)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�L�K�|V�|jD]}�|��D]}|V���dS)zCWalk a message Descriptor and recursively yields all message names.N)�nested_types)r�msg_desc�nested_desc�_GetAllMessagess   �rr-z3SymbolDatabase.GetMessages.<locals>._GetAllMessages�sY������j�j�j��'���(�*�?�8�4�4�	�	�K��
�
�
�
�	��r)r�FindFileByName�message_types_by_name�valuesr
�	full_name�KeyError)r�files�result�	file_name�	file_descr+rr-s       @r�GetMessageszSymbolDatabase.GetMessages�s����&������F����	��)�*�*�9�5�5�i��5�<�<�>�>���(�#�O�H�-�-�	�	�D��%)�]�4�%8�F�4�>�"�"�������D�����	���Ms�A&�&
A3	�2A3	N)�__name__�
__module__�__qualname__�__doc__rrrrr#r'r7�rrrrBs�������/�/����$3�3�3����	:�	:�	:�<�<�<�B�B�B�$$�$�$�$�$rr)rc��tS)z#Returns the default SymbolDatabase.)�_DEFAULTr<rr�Defaultr?�s��	�/rN)
r;�google.protobuf.internalr�google.protobufrr�MessageFactoryrr?r>r<rr�<module>rCs���>��<8�7�7�7�7�7�+�+�+�+�+�+�+�+�+�+�+�+�x�x�x�x�x�_�3�x�x�x�v�>�6��6�8�8�9�9�9������r