U
    ڲg                     @   s   d dl Z d dlZd dlZd dlmZmZmZ d dlZd dlmZ d dl	m
Z
 d dlmZ eeZG dd de dd	ejZG d
d deZG dd dejZG dd deZejee ejdddZdS )    N)CallableOptionalType)_common)cygrpc)MetadataTypec                   @   s   e Zd ZdS )_AuthMetadataContextN)__name__
__module____qualname__ r   r   9/tmp/pip-unpacked-wheel-8poujhl6/grpc/_plugin_wrapping.pyr      s   
r   AuthMetadataContext)service_urlmethod_namec                   @   s   e Zd Zdd ZdS )_CallbackStatec                 C   s   t  | _d| _d | _d S )NF)	threadingLocklockcalled	exception)selfr   r   r   __init__*   s    
z_CallbackState.__init__N)r	   r
   r   r   r   r   r   r   r   )   s   r   c                   @   sF   e Zd ZU eed< eed< eedddZeee	e
  dddZd	S )
_AuthMetadataPluginCallback_state	_callback)statecallbackc                 C   s   || _ || _d S N)r   r   )r   r   r   r   r   r   r   4   s    z$_AuthMetadataPluginCallback.__init__)metadataerrorc              	   C   s   | j j@ | j jd kr2| j jr(tdqDd| j _ntd| j jW 5 Q R X |d krj| |tjj	d  n| d tjj
tt| d S )Nz2AuthMetadataPluginCallback invoked more than once!Tz1AuthMetadataPluginCallback raised exception "{}"!)r   r   r   r   RuntimeErrorformatr   r   
StatusCodeokinternalr   encodestr)r   r   r    r   r   r   __call__8   s&    

  z$_AuthMetadataPluginCallback.__call__N)r	   r
   r   r   __annotations__r   r   r   r   r   BaseExceptionr(   r   r   r   r   r   0   s   
 
r   c                   @   s:   e Zd ZU ejed< ejdddZeeedddZ	dS )	_Plugin_metadata_plugin)metadata_pluginc                 C   s<   || _ d | _zdd l}| | _W n tk
r6   Y nX d S )Nr   )r,   Z_stored_ctxcontextvarsZcopy_contextImportError)r   r-   r.   r   r   r   r   T   s    z_Plugin.__init__)r   r   r   c                 C   s   t t|t|}t }z| |t|| W n| tk
r } z^td| j |j	& ||_|j
rzW 5 Q R  W Y ,d S W 5 Q R X |d tjjtt| W 5 d }~X Y nX d S )Nz1AuthMetadataPluginCallback "%s" raised exception!)r   r   decoder   r,   r   	Exception_LOGGERr   r   r   r   r#   r%   r&   r'   )r   r   r   r   contextZcallback_stater   r   r   r   r(   c   s0        z_Plugin.__call__N)
r	   r
   r   grpcAuthMetadataPluginr)   r   r'   r   r(   r   r   r   r   r+   Q   s   

r+   )r-   namereturnc                 C   sR   |d kr2z
| j }W q6 tk
r.   | jj }Y q6X n|}ttt| t	|S r   )
r	   AttributeError	__class__r4   CallCredentialsr   ZMetadataPluginCallCredentialsr+   r   r&   )r-   r6   Zeffective_namer   r   r    metadata_plugin_call_credentialsz   s    
 r;   )collectionsloggingr   typingr   r   r   r4   r   Zgrpc._cythonr   Zgrpc._typingr   	getLoggerr	   r2   
namedtupler   r   objectr   ZAuthMetadataPluginCallbackr   r+   r5   r'   r:   r;   r   r   r   r   <module>   s,   

!* 