o
    ;i                     @   s   d dl mZmZm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 dd	lmZ dd
lmZ ddlmZmZ ddlmZmZ ddlmZ ddlmZ G dd deZdS )    )Any
CollectionOptional)FileDescriptor)FileDescriptorProto)Default   )Status)Stream   )ServerReflectionRequest)ServerReflectionResponse)ErrorResponseListServiceResponse)ServiceResponseExtensionNumberResponse)FileDescriptorResponse)ServerReflectionBasec                   @   s   e Zd ZdZdddee dee fddZde	fd	d
Z
dede	fddZdede	fddZdede	fddZdedede	fddZdede	fddZde	fddZdeee	f ddfddZdS ) ServerReflectionz0
    Implements server reflection protocol.
    N)_pool_service_namesr   c                C   s   || _ |pt | _d S N)r   r   r   )selfr   r    r   R/home/ubuntu/.local/lib/python3.10/site-packages/grpclib/reflection/_deprecated.py__init__&   s   zServerReflection.__init__returnc                 C   s   t ttjjdddS )Nz	not found
error_codeerror_messageerror_response)r   r   r	   	NOT_FOUNDvaluer   r   r   r   _not_found_response/   s   z$ServerReflection._not_found_responsefile_descriptorc                 C   s&   t  }|| tt| gddS )N)file_descriptor_proto)file_descriptor_response)r   CopyToProtor   r   SerializeToString)r   r&   protor   r   r   _file_descriptor_response7   s   
z*ServerReflection._file_descriptor_response	file_namec                 C   6   z| j |}W n ty   |   Y S w | |S r   )r   FindFileByNameKeyErrorr%   r,   )r   r-   filer   r   r   _file_by_filename_responseC      
z+ServerReflection._file_by_filename_responsesymbolc                 C   r.   r   )r   FindFileContainingSymbolr0   r%   r,   )r   r4   r1   r   r   r    _file_containing_symbol_responseN   r3   z1ServerReflection._file_containing_symbol_responsemsg_name
ext_numberc                 C   sR   z| j |}| j ||}| j |j}W n ty#   |   Y S w | |S r   )r   FindMessageTypeByNameFindExtensionByNumberr5   	full_namer0   r%   r,   )r   r7   r8   message	extensionr1   r   r   r   #_file_containing_extension_responseY   s   
z4ServerReflection._file_containing_extension_response	type_namec                 C   sV   z| j |}| j |}W n ty   |   Y S w tt|jdd |D ddS )Nc                 S   s   g | ]}|j qS r   )number).0extr   r   r   
<listcomp>t   s    zLServerReflection._all_extension_numbers_of_type_response.<locals>.<listcomp>)base_type_nameextension_number)all_extension_numbers_response)r   r9   FindAllExtensionsr0   r%   r   r   r;   )r   r?   r<   
extensionsr   r   r   '_all_extension_numbers_of_type_responseg   s   z8ServerReflection._all_extension_numbers_of_type_responsec                 C   s   t tdd | jD ddS )Nc                 S   s   g | ]}t |d qS ))name)r   )rA   service_namer   r   r   rC   {   s    z<ServerReflection._list_services_response.<locals>.<listcomp>)service)list_services_response)r   r   r   r$   r   r   r   _list_services_responsex   s   z(ServerReflection._list_services_responsestreamc                    s   |2 zW3 d H W }| dr| |j}n=| dr!| |j}n1| dr1| |jj|jj}n!| dr=| 	|j
}n| drG|  }ntttjjddd}||I d H  q6 d S )	Nfile_by_filenamefile_containing_symbolfile_containing_extensionall_extension_numbers_of_typelist_serviceszinvalid argumentr   r    )HasFieldr2   rP   r6   rQ   r>   rR   containing_typerE   rI   rS   rN   r   r   r	   INVALID_ARGUMENTr#   send_message)r   rO   requestresponser   r   r   ServerReflectionInfo   s:   





z%ServerReflection.ServerReflectionInfo)__name__
__module____qualname____doc__r   strr   r   r   r   r%   r   r,   r2   r6   intr>   rI   rN   r
   r   r[   r   r   r   r   r   "   sT    
	





r   N)typingr   r   r   google.protobuf.descriptorr   google.protobuf.descriptor_pb2r   google.protobuf.descriptor_poolr   constr	   serverr
   v1alpha.reflection_pb2r   r   r   r   r   r   r   v1alpha.reflection_grpcr   r   r   r   r   r   <module>   s   