
    rOi3                        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
  G d dej                  ej                  ej                  ej                        Z G d dej                   j                  ej                   j                  ej                   j                  ej                   j                        Zd	ed
efdZd	ed
efdZ G d d ej(                  dd      ej*                        Z G d d ej(                  dd      ej                   j*                        Z	 d deeeef      deg ef   dz  d
efdZ	 d deeeef      deg ef   eg ee   f   z  dz  d
efdZd deeef   dz  d
eeeef      fdZd deeef   dz  d
eeedz  f   fdZ 	 	 	 	 d!dede!de"deeeef      dz  deeef   dz  dejF                  dz  deg ef   dz  d
ejH                  fdZ%	 	 	 	 d!dede!de"deeeef      dz  deeef   dz  dejF                  dz  deg ef   eg ee   f   z  dz  d
ej                   jH                  fdZ&y)"    N)Any	AwaitableCallable)ResourceExhaustedResponse)show_warning_oncec                   x    e Zd ZdefdZdedededefdZdedededefdZdeded	edefd
Zdeded	edefdZ	y)_GenericClientInterceptorinterceptor_functionc                     || _         y N_fnselfr
   s     _/volume1/homes/robertsu/coba/app/.venv/lib/python3.12/site-packages/qdrant_client/connection.py__init__z"_GenericClientInterceptor.__init__   	    '    continuationclient_call_detailsrequestreturnc                     | j                  |t        |f      dd      \  }}} ||t        |            }|r ||      S |S NFr   iternext)r   r   r   r   new_detailsnew_request_iteratorpostprocessresponses           r   intercept_unary_unaryz/_GenericClientInterceptor.intercept_unary_unary   sP     :>wj!15%:
6);  T2F-GH(3{8$AAr   c                     | j                  |t        |f      dd      \  }}} ||t        |            }|r ||      S |S NFTr   r   r   r   r   r   r   r    response_its           r   intercept_unary_streamz0_GenericClientInterceptor.intercept_unary_stream   sP     :>wj!15$:
6); #;5I0JK+6{;'GKGr   request_iteratorc                 \    | j                  ||dd      \  }}} |||      }|r ||      S |S NTFr   r   r   r   r(   r   r   r    r!   s           r   intercept_stream_unaryz0_GenericClientInterceptor.intercept_stream_unary(   sE     :>!14:
6);  -AB(3{8$AAr   c                 \    | j                  ||dd      \  }}} |||      }|r ||      S |S NTr   r   r   r   r(   r   r   r    r&   s           r   intercept_stream_streamz1_GenericClientInterceptor.intercept_stream_stream1   sE     :>!14:
6); #;0DE+6{;'GKGr   N
__name__
__module____qualname__r   r   r   r"   r'   r,   r0    r   r   r	   r	      s    (X (BB69BDGB	BHH69HDGH	HBB69BMPB	BHH69HMPH	Hr   r	   c                   x    e Zd ZdefdZdedededefdZdedededefdZdeded	edefd
Zdeded	edefdZ	y)_GenericAsyncClientInterceptorr
   c                     || _         y r   r   r   s     r   r   z'_GenericAsyncClientInterceptor.__init__A   r   r   r   r   r   r   c                    K   | j                  |t        |f      dd       d {   \  }}}t        |      } |||       d {   }|r ||       d {   S |S 7 87 7 
wr   r   )	r   r   r   r   r   r   r    next_requestr!   s	            r   r"   z4_GenericAsyncClientInterceptor.intercept_unary_unaryD   sw      @Dxxwj!15%@
 :
6); 01%k<@@.9[**GxG:
 A*s3   "A#AA#AA#A!A#A#!A#c                    K   | j                  |t        |f      dd       d {   \  }}} ||t        |             d {   }|r ||       d {   S |S 7 67 7 
wr$   r   r%   s           r   r'   z5_GenericAsyncClientInterceptor.intercept_unary_streamN   sr      @Dxxwj!15$@
 :
6); )d;O6PQQ1<[--M+M	:
 R-s3   "A!AA!AA!AA!A!A!r(   c                    K   | j                  ||dd       d {   \  }}} |||       d {   }|r ||       d {   S |S 7 -7 7 
wr*   r   r+   s           r   r,   z5_GenericAsyncClientInterceptor.intercept_stream_unaryW   sg      @Dxx!14@
 :
6); &k3GHH.9[**GxG	:
 I*1   AAAA
AAA
AAc                    K   | j                  ||dd       d {   \  }}} |||       d {   }|r ||       d {   S |S 7 -7 7 
wr.   r   r/   s           r   r0   z6_GenericAsyncClientInterceptor.intercept_stream_stream`   sg      @Dxx!14@
 :
6); )6JKK1<[--M+M	:
 L-r=   Nr1   r5   r   r   r7   r7   ;   s    (X (HH69HDGH	HNN69NDGN	NHH69HMPH	HNN69NMPN	Nr   r7   intercept_callr   c                     t        |       S r   )r	   r?   s    r   !create_generic_client_interceptorrB   j   s    $^44r   c                     t        |       S r   )r7   rA   s    r   'create_generic_async_client_interceptorrD   n   s     *.99r   c                       e Zd Zy)_ClientCallDetailsNr2   r3   r4   r5   r   r   rF   rF   v        	r   rF   )methodtimeoutmetadatacredentialsc                       e Zd Zy)_ClientAsyncCallDetailsNrG   r5   r   r   rN   rN   }   rH   r   rN   new_metadataauth_token_providerc                      dt         dt         fddt        dt         dt         dt         dt        t        t         t         f   f
 fd}t        |      S )	Nr!   r   c                 \   | j                         t        j                  j                  k(  rod }| j	                         D ])  }|j
                  dk(  s	 t        |j                        } n | j                         r| j                         nd}|rt        ||      | S # t        $ r d }Y Cw xY w)Nretry-after messageretry_after_s)codegrpc
StatusCodeRESOURCE_EXHAUSTEDtrailing_metadatakeyintvalue	Exceptiondetailsr   )r!   retry_afteritemreason_phrases       r   process_responsez2header_adder_interceptor.<locals>.process_response   s    ==?doo@@@K 22488},+&)$**o  5 3;2B2B2DH,,."M/U`aa % +&*+s   BB+*B+r   r(   _request_streaming_response_streamingc                 b   g }| j                   t        | j                         }D ]  \  }}|j                  ||f        r<t        j                        s|j                  dd         f       nt        d      t        | j                  | j                  || j                        } | |	fS )NauthorizationBearer z=Synchronous channel requires synchronous auth token provider.)
rK   listappendasyncioiscoroutinefunction
ValueErrorrF   rI   rJ   rL   )
r   r(   rf   rg   rK   headerr_   rP   rO   re   s
          r   r?   z0header_adder_interceptor.<locals>.intercept_call   s     ''3/889H)MFEOO * ../BCG<O<Q;R2S TU !`aa0&&''++	
 #$46FFFr   )r   rF   tuplerB   rO   rP   r?   re   s   `` @r   header_adder_interceptorrs      sj    3 3 G/GG  G !	G
 
!3+	,G@ -^<<r   c                      dt         dt         fddt        j                  j                  dt         dt         dt         dt        t
        t         t         f   f
 fd}t        |      S )	Ncallr   c                   K   	 |  d {   S 7 # t         j                  j                  $ r}|j                         t         j                  j
                  k(  rtd }|j                         D ]-  }|d   dk(  s	 t        |d         }n# t        $ r d }Y nw xY w n |j                         r|j                         nd}|rt        ||      | d }~ww xY ww)Nr   rS      rT   rU   )rY   aioAioRpcErrorrX   rZ   r[   r\   r^   r`   ra   r   )ru   errb   rc   rd   s        r   re   z8header_adder_async_interceptor.<locals>.process_response   s     	::xx## 	wwyDOO>>>"002DAw-//*-d1g,K( /*.K/ 3 13



"3 -[ 	sU   C  C CAC7BCBCB9CCCr   r(   rf   rg   c                 F  K   g }| j                   t        | j                         }	D ]  \  }}|j                  ||f        rBt        j                        r         d {   }n        }|j                  dd| f       | j                  |      } | |
fS 7 9w)Nri   rj   )rK   )rK   rk   rl   rm   rn   _replace)r   r(   rf   rg   rK   rp   r_   tokenrP   rO   re   s           r   r?   z6header_adder_async_interceptor.<locals>.intercept_call   s      ''3/889H)MFEOO * **+>?133+-OO_w.?@A1::H:M"$46FFF 4s   A"B!%B&:B!)r   rY   rx   ClientCallDetailsrq   rN   rD   rr   s   `` @r   header_adder_async_interceptorr      ss    S S (G!XX77GG  G !	G
 
&S0	1G6 3>BBr   optionsc                     ddg}| |S | j                         D cg c]	  \  }}||f }}}|D ]  \  }}|| vs|j                  ||f        |S c c}}w )N)zgrpc.max_send_message_length)zgrpc.max_receive_message_lengthr   )itemsrl   )r   default_optionsoption_nameoption_value_optionss        r   parse_channel_optionsr      su    ,/.O
 MT]]_]_0I\l+_H]%4!\g%OO[,78 &5 O ^s   Ac                     t        ddd      }| |S |D ]V  }| j                  |d      }d| | v rt        d| dd| d       |4t        |t              st        | d      |||<   X |S )	zParse ssl credentials to create `grpc.ssl_channel_credentials` for `grpc.secure_channel`

    WARN: Directly modifies input `options`

    Return:
        dict[str, Optional[bytes]]: dict(root_certificates=..., private_key=..., certificate_chain=...)
    N)root_certificatesprivate_keycertificate_chainzgrpc.`z/` is supposed to be used without `grpc.` prefix
   )idx
stacklevelz must be a byte string)dictpopr   
isinstancebytes	TypeError)r   ssl_optionsssl_option_namer   s       r   parse_ssl_credentialsr     s     ,0DD,K &#KK>?#$/O$$STO,- ,.//EFGG'3O$ '" r   hostportsslrK   compressionc                 p   ||j                         nd }t        |      }t        |      }	t        |xs g |      }
|rHt	        j
                  di |}t	        j                  |  d| ||	|      }t	        j                  ||
      S t	        j                  |  d| |	|      }t	        j                  ||
      S )NrO   rP   :r5   )	copyr   r   rs   rY   ssl_channel_credentialssecure_channelintercept_channelinsecure_channel)r   r   r   rK   r   r   rP   _copied_options_ssl_cred_optionsr   metadata_interceptor	ssl_credschannels                r   get_channelr   $  s     "-4  .o>$_5H3^9L 00E3DE	%%av&6	8[Y%%g/CDD''4&$(8(KP%%g/CDDr   c                 L   ||j                         nd }t        |      }t        |      }	t        |xs g |      }
|r?t	        j
                  di |}t        j                  j                  |  d| ||	||
g      S t        j                  j                  |  d| |	||
g      S )Nr   r   )interceptorsr5   )	r   r   r   r   rY   r   rx   r   r   )r   r   r   rK   r   r   rP   r   r   r   r   r   s               r   get_async_channelr   @  s     "-4  .o>$_5H :^9L 00E3DE	xx&&fAdV./ ' 
 	
 xx((fAdVhCWBX ) 
 	
r   r   )NNNN)'rm   collectionstypingr   r   r   rY   &qdrant_client.common.client_exceptionsr   $qdrant_client.common.client_warningsr   UnaryUnaryClientInterceptorUnaryStreamClientInterceptorStreamUnaryClientInterceptorStreamStreamClientInterceptorr	   rx   r7   rB   rD   
namedtupler~   rF   rN   rk   rq   strrs   r   r   r   r   r   r^   boolCompressionChannelr   r   r5   r   r   <module>r      sW     + +  L B
+H$$%%%%&&	+H\,NHH((HH))HH))HH**	,N^5c 5>W 5::#:	K/1ab		K/1abHH	 593=uS#X'3=!"c'*T13= 3=p TX3CuS#X'3C!"c'*Xb)C.6H-IIDP3C $3Cl4S>D#8 DsTWxDY " 4S>D#8  DeVZlIZD[  N .2%)+/48E
E
E 
E 5c?#d*	E
 #s(^d"E !!D(E ""c'*T1E 
\\E@ .2%)+/SW!

!

!
 
!
 5c?#d*	!

 #s(^d"!
 !!D(!
 ""c'*Xb)C.6H-IIDP!
 
XX!
r   