o
    ë6Wj?  ã                   @   s€   d Z dZddlmZ ddlmZ ddlmZ ddlmZ	 ddlm
Z e ¡ Zdd	„ Zd
d„ Zdd„ Zdd„ Zdd„ Zdd„ ZdS )zèBuilds descriptors, message classes and services for generated _pb2.py.

This file is only called in python generated _pb2.py files. It builds
descriptors, message classes and services that users can directly use
in generated code.
zjieluo@google.com (Jie Luo)é    )Úenum_type_wrapper)Úpython_message)Úmessage)Ú
reflection)Úsymbol_databasec                 C   sZ   |j  ¡ D ]\}}|| ¡  }|| |< t| ||d ƒ q|jD ]}|| ||j ¡  < qd S )NÚ_)Únested_types_by_nameÚitemsÚupperÚ_BuildNestedDescriptorsÚ
enum_typesÚname)ÚmoduleÚmsg_desÚprefixr   Ú
nested_msgÚmodule_nameÚenum_des© r   úo/home/esfera/Documents/content_generation/venv/lib/python3.10/site-packages/google/protobuf/internal/builder.pyr      s   
ÿr   c                 C   s<   | j  ¡ D ]\}}d| ¡  }|||< t|||d ƒ qdS )z‚Builds message and enum descriptors.

  Args:
    file_des: FileDescriptor of the .proto file
    module: Generated _pb2 module
  r   N)Úmessage_types_by_namer	   r
   r   )Úfile_desr   r   r   r   r   r   r   ÚBuildMessageAndEnumDescriptors#   s
   ýr   c                 C   sr   i }|j  ¡ D ]\}}t| |||j d ƒ||< q||d< | |d< ||j |d< t |jtjf|¡}t 	|¡ |S )NÚ.Ú
DESCRIPTORÚ
__module__Ú__qualname__)
r   r	   Ú_BuildMessager   Ú_reflectionÚGeneratedProtocolMessageTypeÚ_messageÚMessageÚ_sym_dbÚRegisterMessage)r   r   r   Úcreate_dictr   r   Úmessage_classr   r   r   r   0   s   
ÿÿ
r   c           	      C   sÄ   | j  ¡ D ]\}}||d| ¡  < t |¡||< |jD ]}|j||j< qq| j ¡ D ]\}}|j|| ¡ d < |||< q*| j	 ¡ D ]\}}||d| ¡  < qA| j
 ¡ D ]\}}t||dƒ||< qSdS )zÇBuilds top level descriptors and message classes.

  Args:
    file_des: FileDescriptor of the .proto file
    module_name: str, the name of generated _pb2 module
    module: Generated _pb2 module
  r   Ú_FIELD_NUMBERÚ N)Úenum_types_by_namer	   r
   r   ÚEnumTypeWrapperÚvaluesÚnumberr   Úextensions_by_nameÚservices_by_namer   r   )	r   r   r   r   r   Ú
enum_valueÚextension_desÚservicer   r   r   r   ÚBuildTopDescriptorsAndMessages@   s   

ÿ
ÿr1   c                 C   s   dS )zsno-op to keep old generated code work with new runtime.

  Args:
    file_des: FileDescriptor of the .proto file
  Nr   )r   r   r   r   ÚAddHelpersToExtensions^   s   r2   c              	   C   sf   ddl m} | j ¡ D ]%\}}| |dt||d�¡||< |d }| ||| ft||d�¡||< qdS )zÆBuilds services classes and services stub class.

  Args:
    file_des: FileDescriptor of the .proto file
    module_name: str, the name of generated _pb2 module
    module: Generated _pb2 module
  r   )Úservice_reflectionr   )r   r   Ú_StubN)Úgoogle.protobufr3   r-   r	   ÚGeneratedServiceTypeÚdictÚGeneratedServiceStubType)r   r   r   r3   r   r0   Ú	stub_namer   r   r   ÚBuildServicesh   s   	
þ


þûr:   N)Ú__doc__Ú
__author__Úgoogle.protobuf.internalr   r   r5   r   r    r   r   r   Ú_symbol_databaseÚDefaultr"   r   r   r   r1   r2   r:   r   r   r   r   Ú<module>   s   	
