o
    ;i#                     @   s  d dl Z d dlZd dlmZmZmZmZmZmZ d dlm	Z	m
Z
mZmZ d dlmZ d dlmZ d dl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 ejjejjejjejjdZ G dd deZ!G dd deZ"G dd dZ#de$de$dee$ de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$de$fd"d#Z(de$de$fd$d%Z)de$de$fd&d'Z*	d.ded(ed)eee$  dee
e$e$f  fd*d+Z+d/d,d-Z,dS )0    N)ListAny
CollectionIterator
NamedTuplecast)DictTupleOptionalDeque)contextmanager)deque)FileDescriptorProtoDescriptorProto)CodeGeneratorRequest)CodeGeneratorResponse   )const)client)server))FF)TF)FT)TTc                   @   s0   e Zd ZU eed< ejed< eed< eed< dS )Methodnamecardinalityrequest_type
reply_typeN)__name__
__module____qualname__str__annotations__r   Cardinality r!   r!   G/home/ubuntu/.local/lib/python3.10/site-packages/grpclib/plugin/main.pyr      s
   
 
r   c                   @   s"   e Zd ZU eed< ee ed< dS )Servicer   methodsN)r   r   r   r   r   r   r   r!   r!   r!   r"   r#   !   s   
 r#   c                   @   sT   e Zd ZdddZdedededdfdd	Zeded fd
dZ	defddZ
dS )BufferreturnNc                 C   s   g | _ d| _d S )Nr   )_lines_indentselfr!   r!   r"   __init__(   s   
zBuffer.__init__stringargskwargsc                 O   s4   d| j  d |j|i | }| j|d d S )N    )r(   formatr'   appendrstrip)r*   r,   r-   r.   liner!   r!   r"   add,   s   z
Buffer.addc              	   c   s<    |  j d7  _ zd V  W |  j d8  _ d S |  j d8  _ w )N   )r(   r)   r!   r!   r"   indent0   s
   "zBuffer.indentc                 C   s   d | jd S )N
)joinr'   r)   r!   r!   r"   content8   s   zBuffer.contentr&   N)r   r   r   r+   r   r   r5   r   r   r7   r:   r!   r!   r!   r"   r%   &   s    
r%   
proto_filepackageimportsservicesr&   c                 C   s  t  }|d |d|  |dt |s| S |d |d |d |dtj |dtj |d |  |dtj W d    n1 sRw   Y  |d |D ]}|d| q^|D ]}|rvd	||j	}n|j	}|d |d |d
|j	 |  |j
D ]6\}}	}
}|d |d |d|tjtjj|
| |  |d W d    n1 sw   Y  q|d |dtjtjj | | |d | ] |j
D ]Q}|\}}}
}d||}|d|tjtjj | & |d| |dtjtjj|j	 |d|
 |d| W d    n	1 s1w   Y  |d qW d    n	1 sGw   Y  |d W d    n	1 s\w   Y  W d    n	1 slw   Y  |d |d |d|j	 |  |d |dtjtjj |  t|j
dkr|d |j
D ]}|\}}}
}d||}|tjju rtj}n%|tjju rtj}n|tjju rtj}n|tjju rtj}nt|tt|}|d|tj|j | ! |d |d| |d|
 |d| W d    n	1 s%w   Y  |d qW d    n	1 s<w   Y  W d    n	1 sLw   Y  qi| S )Nz:# Generated by the Protocol Buffers compiler. DO NOT EDIT!z# source: {}z# plugin: {}z
import abczimport typing z	import {}zif typing.TYPE_CHECKING:z{}.{}zclass {}Base(abc.ABC):z@abc.abstractmethodz4async def {}(self, stream: '{}.{}[{}, {}]') -> None:passz1def __mapping__(self) -> typing.Dict[str, {}.{}]:z	return {{z/{}/{}z'{}': {}.{}(zself.{},z	{}.{}.{},z{},z),z}}zclass {}Stub:z+def __init__(self, channel: {}.{}) -> None:r   zself.{} = {}.{}(zchannel,z{!r},))r%   r5   r   r:   r   r   r7   r   r1   r   r$   StreamHandlerr    ChannellenUNARY_UNARYUnaryUnaryMethodUNARY_STREAMUnaryStreamMethodSTREAM_UNARYStreamUnaryMethodSTREAM_STREAMStreamStreamMethod	TypeErrorr   type)r<   r=   r>   r?   bufmodserviceservice_namer   _r   r   methodr   	full_name
method_clsr!   r!   r"   render<   s   






























rY   requestr   c                    s   t  fdd| jD S )Nc                 3   s    | ]
}|j  kr|V  qd S Nr   ).0fr\   r!   r"   	<genexpr>   s    z_get_proto.<locals>.<genexpr>)nextr<   )rZ   r   r!   r\   r"   
_get_proto   s   ra   proto_file_pathc                 C   s.   dD ]}|  |r| d t|    S q| S )N)z.protodevelz.proto)endswithrF   )rb   suffixr!   r!   r"   _strip_proto   s
   
re   c                 C   s   t | }|ddddS )N-rU   /.)re   replace)rb   basenamer!   r!   r"   _base_module_name   s   rk   c                 C      t | d S )N_pb2rk   rb   r!   r!   r"   _proto2pb2_module_name      rp   c                 C   rl   )N_grpcrn   ro   r!   r!   r"   _proto2grpc_module_name   rq   rs   message_typeparentsc                 c   s    |d u rt  }dg}| jr|| j || ||j t| jg}|| ||j d|d|fV  ||j |jD ]}t| ||dE d H  qD|	  d S )Nr@   rh   )ru   )
r   r=   r2   extendr   rp   r9   nested_type_type_namespop)r<   rt   ru   proto_name_partspy_name_partsnestedr!   r!   r"   rx      s    


rx   c                  C   s  t tj d} t|  }W d    n1 sw   Y  i }|jD ]}|j	D ]
}|
t|| q*q%t }ttdrBtj|_|jD ]e}t||}dd t|j|g D }g }	|jD ].}
g }|
jD ]}t|j|jf }|t|j|||j ||j d qe|	t|
j|d q^|j  }t!|}|"ddd	 |_t#|j|j$||	d
|_%qEt tj& d}|'|(  W d    d S 1 sw   Y  d S )NrbFeaturec                 S   s   g | ]}t |qS r!   )rp   )r]   depr!   r!   r"   
<listcomp>   s    zmain.<locals>.<listcomp>)r   r   r   r   )r   r$   rh   rg   z.py)r<   r=   r>   r?   wb))osfdopensysstdinfilenor   
FromStringreadr<   rt   updaterx   r   hasattrFEATURE_PROTO3_OPTIONALsupported_featuresfile_to_generatera   list
dependencyrS   rV   _CARDINALITYclient_streamingserver_streamingr2   r   r   
input_typeoutput_typer#   filer5   rs   ri   rY   r=   r:   stdoutwriteSerializeToString)inprZ   	types_mappfmtresponser   r<   r>   r?   rS   r$   rV   r   r   module_nameoutr!   r!   r"   main   sZ   











"r   r[   r;   )-r   r   typingr   r   r   r   r   r   r   r	   r
   r   
contextlibr   collectionsr   google.protobuf.descriptor_pb2r   r   #google.protobuf.compiler.plugin_pb2r   r   r@   r   r   r   r    rG   rK   rI   rM   r   r   r#   r%   r   rY   ra   re   rk   rp   rs   rx   r   r!   r!   r!   r"   <module>   s^     
d

