
    gS4                       d Z ddlmZ ddlZddlZddlmZ ddlZddlm	Z	m
Z
mZmZ ddlmZmZmZmZmZmZmZmZmZmZmZmZmZmZ ddlmZmZ dd	lm Z m!Z!m"Z"m#Z#m$Z$ dd
l%m&Z& ddl'm(Z(m)Z)  ejT                  dd      Z+ ejT                  dd      Z,ejZ                  ej\                  e/e/e/f   ej\                  e/e/ejZ                  e0e1f   f   ej\                  e/e/de/f   f   Z2ddgZ3ejh                  dd       Z5ej0                  eej                  eej,                  eej6                  eej$                  eej"                  eej                  eej*                  eej4                  eej(                  eej2                  eej&                  eej                   eej.                  eiZ6 G d de#      Z7 G d de)      Z8 G d de       Z9 G d de(      Z:y)a  
Custom transports, with nicely configured defaults.

The following additional keyword arguments are currently supported by httpcore...

* uds: str
* local_address: str
* retries: int

Example usages...

# Disable HTTP/2 on a single specific domain.
mounts = {
    "all://": httpx.HTTPTransport(http2=True),
    "all://*example.org": httpx.HTTPTransport()
}

# Using advanced httpcore configuration, with connection retries.
transport = httpx.HTTPTransport(retries=1)
client = httpx.Client(transport=transport)

# Using advanced httpcore configuration, with unix domain sockets.
transport = httpx.HTTPTransport(uds="socket.uds")
client = httpx.Client(transport=transport)
    )annotationsN)TracebackType   )DEFAULT_LIMITSLimitsProxycreate_ssl_context)ConnectErrorConnectTimeoutLocalProtocolErrorNetworkErrorPoolTimeoutProtocolError
ProxyError	ReadErrorReadTimeoutRemoteProtocolErrorTimeoutExceptionUnsupportedProtocol
WriteErrorWriteTimeout)RequestResponse)AsyncByteStream	CertTypes
ProxyTypesSyncByteStreamVerifyTypes)URL   )AsyncBaseTransportBaseTransportTHTTPTransport)boundAAsyncHTTPTransportc               #     K   	 d  y # t         $ rX} d }t        j                         D ]#  \  }}t        | |      s|t	        ||      s"|}% | t        |       } ||      | d } ~ ww xY wwN)	ExceptionHTTPCORE_EXC_MAPitems
isinstance
issubclassstr)exc
mapped_excfrom_excto_excmessages        N/var/www/openai/venv/lib/python3.12/site-packages/httpx/_transports/default.pymap_httpcore_exceptionsr6   E   s~     + +
 0 6 6 8Hfc8, !Z
%C#
 !9 c(!s*!+s*   A-	 A-	A*7A%
A%%A**A-c                  $    e Zd ZddZddZddZy)ResponseStreamc                    || _         y r)   _httpcore_streamselfhttpcore_streams     r5   __init__zResponseStream.__init__o   
     /    c              #  v   K   t               5  | j                  D ]  }|  	 d d d        y # 1 sw Y   y xY wwr)   r6   r;   r=   parts     r5   __iter__zResponseStream.__iter__r   s,     $&--
 . '&&s   9-	969c                f    t        | j                  d      r| j                  j                          y y )Nclose)hasattrr;   rH   r=   s    r5   rH   zResponseStream.closew   s)    4(('2!!'') 3rA   N)r>   ztyping.Iterable[bytes]returnNone)rK   ztyping.Iterator[bytes]rK   rL   )__name__
__module____qualname__r?   rF   rH    rA   r5   r8   r8   n   s    0
*rA   r8   c                      e Zd Zddddeddddddf	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d
dZddZ	 	 	 d	 	 	 	 	 	 	 ddZ	 	 	 	 ddZdd	Zy)r$   TNFr   c                   t        |||      }t        |t        t        f      rt	        |      n|}|Ct        j                  ||j                  |j                  |j                  ||||	|
|
      | _
        y |j                  j                  dv rt        j                  t        j                  |j                  j                  |j                  j                  |j                  j                   |j                  j"                        |j$                  |j&                  j(                  ||j*                  |j                  |j                  |j                  |||      | _
        y |j                  j                  dk(  r	 dd l}t        j0                  t        j                  |j                  j                  |j                  j                  |j                  j                   |j                  j"                        |j$                  ||j                  |j                  |j                  ||
      | _
        y t3        d|j                  j                  d      # t.        $ r t/        d	      d w xY w)Nverifycert	trust_envurl
ssl_contextmax_connectionsmax_keepalive_connectionskeepalive_expiryhttp1http2udslocal_addressretriessocket_optionshttphttpsschemehostporttarget)	proxy_url
proxy_authproxy_headersr[   proxy_ssl_contextr\   r]   r^   r_   r`   rd   socks5r   {Using SOCKS proxy, but the 'socksio' package is not installed. Make sure to install httpx using `pip install httpx[socks]`.rm   rn   r[   r\   r]   r^   r_   r`   zDProxy protocol must be either 'http', 'https', or 'socks5', but got .)r	   r-   r/   r   r   httpcoreConnectionPoolr\   r]   r^   _poolrY   ri   	HTTPProxy
raw_schemeraw_hostrk   raw_pathraw_authheadersrawr[   socksioImportError
SOCKSProxy
ValueErrorr=   rU   rV   r_   r`   limitsrW   proxyra   rb   rc   rd   r[   r   s                 r5   r?   zHTTPTransport.__init__}   s    )TYW$.usCj$A% u=!00' & 6 6*0*J*J!'!8!8+-DJ YY!22!++",, 99//++ 99--	 !>>#mm//'"'"3"3 & 6 6*0*J*J!'!8!8-!DJ$ YY) ",,",, 99//++ 99--	 !>>' & 6 6*0*J*J!'!8!8DJ  !II,,/q2 -  !S s   =I I,c                :    | j                   j                          | S r)   )rw   	__enter__rJ   s    r5   r   zHTTPTransport.__enter__   s    

rA   c                |    t               5  | j                  j                  |||       d d d        y # 1 sw Y   y xY wr)   )r6   rw   __exit__r=   exc_type	exc_value	tracebacks       r5   r   zHTTPTransport.__exit__   s,     %&JJ)Y? '&&s   2;c           	        t        |j                  t              sJ t        j                  |j
                  t        j                  |j                  j                  |j                  j                  |j                  j                  |j                  j                        |j                  j                  |j                  |j                        }t               5  | j                   j#                  |      }d d d        t        j                  t$        j&                        sJ t)        |j*                  |j                  t-        |j                        |j                        S # 1 sw Y   oxY wNrh   )methodrY   r}   content
extensions)status_coder}   streamr   )r-   r   r   ru   r   r   r   rY   ry   rz   rk   r{   r}   r~   r   r6   rw   handle_requesttypingIterabler   statusr8   r=   requestreqresps       r5   r   zHTTPTransport.handle_request   s     '...999>>{{--[[))[[%%{{++	 OO''NN))
 %&::,,S1D ' $++v777LL!$++.	
 	
 '&s   E$$E-c                8    | j                   j                          y r)   )rw   rH   rJ   s    r5   rH   zHTTPTransport.close   s    

rA   rU   r   rV   zCertTypes | Noner_   boolr`   r   r   r   rW   r   r   zProxyTypes | Nonera   
str | Nonerb   r   rc   intrd   z%typing.Iterable[SOCKET_OPTION] | NonerK   rL   )r=   r#   rK   r#   NNNr   ztype[BaseException] | Noner   zBaseException | Noner   zTracebackType | NonerK   rL   r   r   rK   r   rM   )	rN   rO   rP   r   r?   r   r   r   rH   rQ   rA   r5   r$   r$   |   s
    #!%'#'$(@DMM M 	M
 M M M !M M "M M >M 
M^ 04*.*.	@,@ (@ (	@
 
@

 

<rA   c                  $    e Zd ZddZddZddZy)AsyncResponseStreamc                    || _         y r)   r:   r<   s     r5   r?   zAsyncResponseStream.__init__   r@   rA   c                  K   t               5  | j                  2 3 d {   }| 7 
6 	 d d d        y # 1 sw Y   y xY wwr)   rC   rD   s     r5   	__aiter__zAsyncResponseStream.__aiter__   s5     $&"33 d
3 '&&s/   A6+)+6+6	A?Ac                   K   t        | j                  d      r#| j                  j                          d {    y y 7 w)Naclose)rI   r;   r   rJ   s    r5   r   zAsyncResponseStream.aclose  s6     4(((3''..000 40s   4?=?N)r>   ztyping.AsyncIterable[bytes]rK   rL   )rK   ztyping.AsyncIterator[bytes]rM   )rN   rO   rP   r?   r   r   rQ   rA   r5   r   r      s    0
1rA   r   c                      e Zd Zddddeddddddf	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d
dZddZ	 	 	 d	 	 	 	 	 	 	 ddZ	 	 	 	 ddZdd	Zy)r'   TNFr   c                   t        |||      }t        |t        t        f      rt	        |      n|}|Ct        j                  ||j                  |j                  |j                  ||||	|
|
      | _
        y |j                  j                  dv rt        j                  t        j                  |j                  j                  |j                  j                  |j                  j                   |j                  j"                        |j$                  |j&                  j(                  |j*                  ||j                  |j                  |j                  |||      | _
        y |j                  j                  dk(  r	 dd l}t        j0                  t        j                  |j                  j                  |j                  j                  |j                  j                   |j                  j"                        |j$                  ||j                  |j                  |j                  ||
      | _
        y t3        d      # t.        $ r t/        d	      d w xY w)NrT   rX   rZ   re   rh   )rm   rn   ro   rp   r[   r\   r]   r^   r_   r`   rd   rq   r   rr   rs   zYProxy protocol must be either 'http', 'https', or 'socks5', but got {proxy.url.scheme!r}.)r	   r-   r/   r   r   ru   AsyncConnectionPoolr\   r]   r^   rw   rY   ri   AsyncHTTPProxyry   rz   rk   r{   r|   r}   r~   r[   r   r   AsyncSOCKSProxyr   r   s                 r5   r?   zAsyncHTTPTransport.__init__
  s    )TYW$.usCj$A% u=!55' & 6 6*0*J*J!'!8!8+-DJ YY!22!00",, 99//++ 99--	 !>>#mm//"'"3"3' & 6 6*0*J*J!'!8!8-!DJ$ YY) "11",, 99//++ 99--	 !>>' & 6 6*0*J*J!'!8!8DJ  1 -  !S s   =H> >Ic                V   K   | j                   j                          d {    | S 7 wr)   )rw   
__aenter__rJ   s    r5   r   zAsyncHTTPTransport.__aenter__Y  s&     jj##%%% 	&s   )')c                   K   t               5  | j                  j                  |||       d {    d d d        y 7 # 1 sw Y   y xY wwr)   )r6   rw   	__aexit__r   s       r5   r   zAsyncHTTPTransport.__aexit__]  s>      %&**&&xIFFF '&F '&s%   A
!><>	A
>AA
c           	       K   t        |j                  t              sJ t        j                  |j
                  t        j                  |j                  j                  |j                  j                  |j                  j                  |j                  j                        |j                  j                  |j                  |j                        }t               5  | j                   j#                  |       d {   }d d d        t        j                  t$        j&                        sJ t)        |j*                  |j                  t-        |j                        |j                        S 7 r# 1 sw Y   qxY wwr   )r-   r   r   ru   r   r   r   rY   ry   rz   rk   r{   r}   r~   r   r6   rw   handle_async_requestr   AsyncIterabler   r   r   r   s       r5   r   z'AsyncHTTPTransport.handle_async_requestf  s     '../:::>>{{--[[))[[%%{{++	 OO''NN))
 %&88==D ' $++v';';<<<LL&t{{3	
 	
	 > '&s1   CE<E0;E.<E0 A.E<.E00E95E<c                T   K   | j                   j                          d {    y 7 wr)   )rw   r   rJ   s    r5   r   zAsyncHTTPTransport.aclose  s     jj!!!s   (&(r   )r=   r&   rK   r&   r   r   r   rM   )	rN   rO   rP   r   r?   r   r   r   r   rQ   rA   r5   r'   r'   	  s
    #!%'#'$(@DMM M 	M
 M M M !M M "M M >M 
M^ 04*.*.	G,G (G (	G
 
G

 

<"rA   )rK   ztyping.Iterator[None]);__doc__
__future__r   
contextlibr   typesr   ru   _configr   r   r   r	   _exceptionsr
   r   r   r   r   r   r   r   r   r   r   r   r   r   _modelsr   r   _typesr   r   r   r   r   _urlsr   baser!   r"   TypeVarr#   r&   UnionTupler   bytes	bytearraySOCKET_OPTION__all__contextmanagerr6   r+   r8   r$   r   r'   rQ   rA   r5   <module>r      s  4 #     G G     ( X X  3FNN3o.FNN323
LLc3
LLc6<<y(899:
LLc4$%'  
1 + +. /^+<+<<	  "5M!3  "5 $*^ *|M |~1/ 1|"+ |"rA   