HEX
Server: LiteSpeed
System: Linux ws4.angoweb.net 5.14.0-611.13.1.el9_7.x86_64 #1 SMP PREEMPT_DYNAMIC Thu Dec 11 04:57:59 EST 2025 x86_64
User: tswangoe (2287)
PHP: 8.1.33
Disabled: show_source, system, shell_exec, passthru, exec, phpinfo, popen, proc_open
Upload Files
File: //usr/lib/python3.9/site-packages/google/protobuf/__pycache__/symbol_database.cpython-39.pyc
a

x��g �@sTdZddlmZddlmZddlmZGdd�dej�Zee��d�Z	dd	�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@sHeZdZdZdd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Z	dd�Z
dS)�SymbolDatabasez'A database of Python generated symbols.cCs|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.
    )Z
DESCRIPTOR�_classes�RegisterMessageDescriptor)�self�message�desc�r�C/usr/lib/python3.9/site-packages/google/protobuf/symbol_database.py�RegisterMessageEs


zSymbolDatabase.RegisterMessagecCst��dkr|j�|�dS)z�Registers the given message descriptor in the local database.

    Args:
      message_descriptor (Descriptor): the message descriptor to add.
    �pythonN)r�Type�poolZ_AddDescriptor)rZmessage_descriptorrrrrWsz(SymbolDatabase.RegisterMessageDescriptorcCst��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)rrrZ_AddEnumDescriptor)rZenum_descriptorrrr�RegisterEnumDescriptoras	z%SymbolDatabase.RegisterEnumDescriptorcCst��dkr|j�|�dS)z�Registers the given service descriptor in the local database.

    Args:
      service_descriptor (ServiceDescriptor): the service descriptor to
        register.
    rN)rrrZ_AddServiceDescriptor)rZservice_descriptorrrr�RegisterServiceDescriptorosz(SymbolDatabase.RegisterServiceDescriptorcCst��dkr|j�|�dS)z�Registers the given file descriptor in the local database.

    Args:
      file_descriptor (FileDescriptor): The file descriptor to register.
    rN)rrrZ_InternalAddFileDescriptor)rZfile_descriptorrrr�RegisterFileDescriptorzsz%SymbolDatabase.RegisterFileDescriptorcCs|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.
    )rrZFindMessageTypeByName)r�symbolrrr�	GetSymbol�szSymbolDatabase.GetSymbolcsp�fdd��i}|D]V}|j�|�}|j��D]:}�|�D],}z|j|||j<Wq:tydYq:0q:q.q|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.
    c3s*|V|jD]}�|�D]
}|VqqdS)zCWalk a message Descriptor and recursively yields all message names.N)Znested_types)r
�msg_descZnested_desc��_GetAllMessagesrrr�s
z3SymbolDatabase.GetMessages.<locals>._GetAllMessages)rZFindFileByNameZmessage_types_by_name�valuesrZ	full_name�KeyError)r�files�result�	file_nameZ	file_descrr
rrr�GetMessages�szSymbolDatabase.GetMessagesN)�__name__�
__module__�__qualname__�__doc__r
rrrrrrrrrrrBs

r)rcCstS)z#Returns the default SymbolDatabase.)�_DEFAULTrrrr�Default�sr$N)
r"Zgoogle.protobuf.internalrZgoogle.protobufrrZMessageFactoryrr$r#rrrr�<module>s{