HEX
Server: LiteSpeed
System: Linux server334.web-hosting.com 4.18.0-553.124.4.lve.el8.x86_64 #1 SMP Fri May 15 13:02:13 UTC 2026 x86_64
User: richfield (1256)
PHP: 8.2.31
Disabled: NONE
Upload Files
File: //lib/python3.6/site-packages/google/protobuf/__pycache__/reflection.cpython-36.pyc
3

���h��@sddZdZddlmZddlmZej�dkr:ddlmZ	nddlm
Z	e	jZiZdd	�Z
d
d�ZdS)
a
Contains a metaclass and helper functions used to create
protocol message classes from Descriptor objects at runtime.

Recall that a metaclass is the "type" of a class.
(A class is to a metaclass what an instance is to a class.)

In this case, we use the GeneratedProtocolMessageType metaclass
to inject all the useful functionality into the classes
output by the protocol compiler at compile-time.

The upshot of all this is that the real implementation
details for ALL pure-Python protocol buffers are *here in
this file*.
z#robinson@google.com (Will Robinson)�)�api_implementation)�messageZcpp)�cpp_message)�python_messagecCst|�}|�}|j|�|S)z�Generate a new Message instance from this Descriptor and a byte string.

  Args:
    descriptor: Protobuf Descriptor object
    byte_str: Serialized protocol buffer byte string

  Returns:
    Newly created protobuf Message object.
  )�	MakeClassZParseFromString)�
descriptorZbyte_strZresult_classZnew_msg�r� /usr/lib/python3.6/reflection.py�ParseMessageCs

r
cCsh|tkrt|Si}x&t|jj��D]\}}t|�||<q$W||tj<tt|j�t	j
f|�}|t|<|S)a�Construct a class object for a protobuf described by descriptor.

  Composite descriptors are handled by defining the new class as a member of the
  parent class, recursing as deep as necessary.
  This is the dynamic equivalent to:

  class Parent(message.Message):
    __metaclass__ = GeneratedProtocolMessageType
    DESCRIPTOR = descriptor
    class Child(message.Message):
      __metaclass__ = GeneratedProtocolMessageType
      DESCRIPTOR = descriptor.nested_types[0]

  Sample usage:
    file_descriptor = descriptor_pb2.FileDescriptorProto()
    file_descriptor.ParseFromString(proto2_string)
    msg_descriptor = descriptor.MakeDescriptor(file_descriptor.message_type[0])
    msg_class = reflection.MakeClass(msg_descriptor)
    msg = msg_class()

  Args:
    descriptor: A descriptor.Descriptor object describing the protobuf.
  Returns:
    The Message class object described by the descriptor.
  )�MESSAGE_CLASS_CACHE�listZnested_types_by_name�itemsr�GeneratedProtocolMessageTypeZ_DESCRIPTOR_KEY�str�namerZMessage)rZ
attributesrZnested_type�resultrrr	rSs
rN)�__doc__�
__author__Zgoogle.protobuf.internalrZgoogle.protobufrZTypeZgoogle.protobuf.pyextrZmessage_implrrrr
rrrrr	�<module>.s