
    @R<i                     \    d Z ddlmZ ddlZddlZddlmZ ddlmZ ddlmZ d Z	d
dZ
d	 Zy)zDynamic Protobuf class creator.    )OrderedDictN)descriptor_pb2)
descriptor)message_factoryc                 ^    | j                   j                  |      }| j                  |      }|S )a8  Get a proto class from the MessageFactory by name.

  Args:
    factory: a MessageFactory instance.
    full_name: str, the fully qualified name of the proto type.
  Returns:
    A class, for the type identified by full_name.
  Raises:
    KeyError, if the proto is not found in the factory's descriptor pool.
  )poolFindMessageTypeByNameGetPrototype)factory	full_nameproto_descriptor	proto_clss       ^/var/www/html/delta-backend/venv/lib/python3.12/site-packages/google/protobuf/proto_builder.py_GetMessageFromFactoryr   *   s0     \\77	B""#34)	    c                    t        j                  |      }|	 t        ||      }|S | j	                         }t        | t              st        |      }t        j                         }|D ]N  \  }}|j                  |j                  d             |j                  t        |      j                  d             P |j                         dz   }	|"d|j                         z   }	 t        ||      }|S |j                  j                  t!        |	||             t        ||      S # t        $ r Y w xY w# t        $ r Y Mw xY w)a  Create a Protobuf class whose fields are basic types.

  Note: this doesn't validate field names!

  Args:
    fields: dict of {name: field_type} mappings for each field in the proto. If
        this is an OrderedDict the order will be maintained, otherwise the
        fields will be sorted by name.
    full_name: optional str, the fully-qualified name of the proto type.
    pool: optional DescriptorPool instance.
  Returns:
    a class, the new protobuf class with a FileDescriptor.
  )r   zutf-8z.protoz6net.proto2.python.public.proto_builder.AnonymousProto_)r   MessageFactoryr   KeyErroritems
isinstancer   sortedhashlibsha1updateencodestr	hexdigestr   Add_MakeFileDescriptorProto)
fieldsr   r   r   r   field_itemsfields_hashf_namef_typeproto_file_names
             r   MakeSimpleProtoClassr&   :   sF    **5'()<i +	FK	(%K +# 4nffv}}W-.s6{))'234  ))+h6/ I&&()I()<i 
,,	;GI		33C  
4  
s#   D# #D3 #	D0/D03	D?>D?c                    |j                  dd      \  }}t        j                         }t        j                  j                  |j                  dd      |       |_        ||_        |j                  j                         }||_        t        |d      D ]  \  }\  }}	|j                  j                         }
||
_        |t        j                  j                  k\  r;|t        j                  j                   t        j                  j                  z
  dz   z  }||
_        t        j$                  j&                  |
_        |	|
_         |S )zAPopulate FileDescriptorProto for MessageFactory's DescriptorPool..   /)rsplitr   FileDescriptorProtoospathjoinreplacenamepackagemessage_typeadd	enumeratefieldr   FieldDescriptorFIRST_RESERVED_FIELD_NUMBERLAST_RESERVED_FIELD_NUMBERnumberFieldDescriptorProtoLABEL_OPTIONALlabeltype)r%   r   r!   r2   r1   
file_proto
desc_protof_numberr#   r$   field_protos              r   r   r   r   s"   ""3*-'4113*GGLLc!:OL*/*&&**,**/$-k1$=  h ""&&(KK :--III

$
$
?
?

$
$
@
@ACDEFh "K&;;JJKK 
r   )NN)__doc__collectionsr   r   r-   google.protobufr   r   r   r   r&   r    r   r   <module>rG      s,   > & #  	 * & + 54pr   