o
    [۷i                     @   sx   d Z ddlmZ ddlmZ ddlZddlmZ ddlmZ	 e
 Zdd Zd	d
 Zdd ZG dd de	jZdgZdS )z+Base implementation of reflection servicer.    )descriptor_pb2)descriptor_poolN)reflection_pb2)reflection_pb2_grpcc                 C   s0   t jt jtjjjd tjjjd  d| dS )Nr      )
error_codeerror_message)error_responseoriginal_request)_reflection_pb2ServerReflectionResponseErrorResponsegrpc
StatusCode	NOT_FOUNDvalueencode)r
    r   S/home/ubuntu/vllm_env/lib/python3.10/site-packages/grpc_reflection/v1alpha/_base.py_not_found_error   s   r   c                 C   s4   | | j| i | jD ]}|j|vrt|| qd S N)updatenamedependencies _collect_transitive_dependencies)
descriptor
seen_files
dependencyr   r   r   r   #   s   


r   c                 C   sV   i }t | | g }| D ]}t }|| ||  qtjtj	|d|dS )N)file_descriptor_proto)file_descriptor_responser
   )
r   valuesr   FileDescriptorProtoCopyToProtoappendSerializeToStringr   r   FileDescriptorResponse)r   r
   descriptorsserialized_proto_listd_valueprotor   r   r   _file_descriptor_response+   s   

r*   c                   @   sB   e Zd ZdZdddZdd Zdd Zd	d
 Zdd Zdd Z	dS )BaseReflectionServicerz#Base class for reflection servicer.Nc                 C   s*   t t|| _|du rt| _dS || _dS )zConstructor.

        Args:
            service_names: Iterable of fully-qualified service names available.
            pool: An optional DescriptorPool instance.
        N)tuplesorted_service_names_POOL_pool)selfservice_namespoolr   r   r   __init__B   s   zBaseReflectionServicer.__init__c                 C   6   z| j |}W n ty   t| Y S w t||S r   )r0   FindFileByNameKeyErrorr   r*   )r1   requestfilenamer   r   r   r   _file_by_filenameL   s   
z(BaseReflectionServicer._file_by_filenamec                 C   r5   r   )r0   FindFileContainingSymbolr7   r   r*   )r1   r8   fully_qualified_namer   r   r   r   _file_containing_symbolT   s   
z.BaseReflectionServicer._file_containing_symbolc                 C   sR   z| j |}| j ||}| j |j}W n ty#   t| Y S w t||S r   )r0   FindMessageTypeByNameFindExtensionByNumberr;   	full_namer7   r   r*   )r1   r8   containing_typeextension_numbermessage_descriptorextension_descriptorr   r   r   r   _file_containing_extension^   s   
z1BaseReflectionServicer._file_containing_extensionc                 C   sd   z| j |}ttdd | j |D }W n ty$   t| Y S w tjtj	|j
|d|dS )Nc                 s   s    | ]}|j V  qd S r   )number).0	extensionr   r   r   	<genexpr>v   s
    
zHBaseReflectionServicer._all_extension_numbers_of_type.<locals>.<genexpr>)base_type_namerB   )all_extension_numbers_responser
   )r0   r>   r,   r-   FindAllExtensionsr7   r   r   r   ExtensionNumberResponser@   )r1   r8   rA   rC   extension_numbersr   r   r   _all_extension_numbers_of_typep   s*   z5BaseReflectionServicer._all_extension_numbers_of_typec                 C   s"   t jt jdd | jD d|dS )Nc                 S   s   g | ]}t j|d qS ))r   )r   ServiceResponse)rG   service_namer   r   r   
<listcomp>   s    
z9BaseReflectionServicer._list_services.<locals>.<listcomp>)service)list_services_responser
   )r   r   ListServiceResponser.   )r1   r8   r   r   r   _list_services   s   z%BaseReflectionServicer._list_servicesr   )
__name__
__module____qualname____doc__r4   r:   r=   rE   rO   rV   r   r   r   r   r+   ?   s    


r+   )rZ   google.protobufr   r   r   grpc_reflection.v1alphar   r   r   _reflection_pb2_grpcDefaultr/   r   r   r*   ServerReflectionServicerr+   __all__r   r   r   r   <module>   s   

U