
    g/                       d dl mZ d dlZd dlZd dlZd dlZd dlmZ d dlZddl	m
Z
 ddlmZ ddlmZmZmZmZ ddlmZ dd	lmZ g d
Zdj/                  g d      Z ej2                  d      Z G d d      Z e       Z	 	 	 	 d	 	 	 	 	 	 	 	 	 ddZ G d d      Z G d d      Z G d d      Z  G d d      Z! ed      Z" e dd      Z#dZ$y)     )annotationsN)Path   )set_minimum_tls_version_1_2)Headers)	CertTypesHeaderTypesTimeoutTypesVerifyTypes)URL)get_ca_bundle_from_env)LimitsProxyTimeoutcreate_ssl_context:)zECDHE+AESGCMzECDHE+CHACHA20z
DHE+AESGCMzDHE+CHACHA20zECDH+AESGCMz	DH+AESGCMzECDH+AESzDH+AESz
RSA+AESGCMzRSA+AESz!aNULLz!eNULLz!MD5z!DSShttpxc                      e Zd Zy)	UnsetTypeN)__name__
__module____qualname__     B/var/www/openai/venv/lib/python3.12/site-packages/httpx/_config.pyr   r   *   s    r   r   c                4    t        | |||      j                  S )Ncertverify	trust_envhttp2)	SSLConfigssl_contextr   s       r   r   r   1   s     &IUkr   c                      e Zd ZdZ e ej                               Zddddd	 	 	 	 	 	 	 	 	 ddZddZ	ddZ
dd	Zdd
ZddZy)r"   z
    SSL Configuration.
    NTFr   c               f    || _         || _        || _        || _        | j	                         | _        y N)r   r   r    r!   load_ssl_contextr#   )selfr   r   r    r!   s        r   __init__zSSLConfig.__init__C   s1     	"
002r   c                    t         j                  d| j                  | j                  | j                  | j
                         | j                  r| j                         S | j                         S )Nz8load_ssl_context verify=%r cert=%r trust_env=%r http2=%r)loggerdebugr   r   r    r!   load_ssl_context_verifyload_ssl_context_no_verifyr(   s    r   r'   zSSLConfig.load_ssl_contextQ   sT    FKKIINNJJ	
 ;;//11..00r   c                    | j                         }d|_        t        j                  |_        | j                  |       |S )zC
        Return an SSL context for unverified connections.
        F)_create_default_ssl_contextcheck_hostnamessl	CERT_NONEverify_mode_load_client_certs)r(   contexts     r   r.   z$SSLConfig.load_ssl_context_no_verify^   s9     224!&!mm(r   c                   | j                   r!| j                  du rt               }||| _        t        | j                  t        j
                        r| j                  }| j                  |       |S t        | j                  t              r| j                  }n]t        | j                        j                         rt        | j                        }n$t        dj                  | j                              | j                         }t        j                  |_        d|_        	 d|_        	 d|_        |j)                         r4t+        |      }t,        j/                  d|       |j1                  |       nC|j3                         r3t+        |      }t,        j/                  d|       |j1                  |       | j                  |       |S # t$        $ r Y w xY w# t$        $ r Y w xY w)zA
        Return an SSL context for verified connections.
        TzECould not find a suitable TLS CA certificate bundle, invalid path: {}Fzload_verify_locations cafile=%r)cafilezload_verify_locations capath=%r)capath)r    r   r   
isinstancer3   
SSLContextr6   boolDEFAULT_CA_BUNDLE_PATHr   existsIOErrorformatr1   CERT_REQUIREDr5   r2   post_handshake_authAttributeErrorhostname_checks_common_nameis_filestrr+   r,   load_verify_locationsis_dir)r(   	ca_bundler7   ca_bundle_pathr9   r:   s         r   r-   z!SSLConfig.load_ssl_context_verifyh   s    >>dkkT1.0I$'dkk3>>2kkG##G,NT*!88N$++%%'!$++.N##)6$++#6 
 224!//!%	*.G'	27G/ !!#(FLL:FC)))8""$(FLL:FC)))8(+  		  		s$   "G *G 	GG	G&%G&c                   t        j                  t         j                        }t        |       |xj                  t         j
                  z  c_        |j                  t               t         j                  r$| j                  rddgndg}|j                  |       t        j                  j                  d      }|r| j                  r||_        |S )zy
        Creates the default SSLContext object that's used for both verified
        and unverified connections.
        zhttp/1.1h2SSLKEYLOGFILE)r3   r<   PROTOCOL_TLS_CLIENTr   optionsOP_NO_COMPRESSIONset_ciphersDEFAULT_CIPHERSHAS_ALPNr!   set_alpn_protocolsosenvirongetr    keylog_filename)r(   r7   alpn_idents
keylogfiles       r   r1   z%SSLConfig._create_default_ssl_context   s    
 ..!8!89#G,3000O,<<04

:t,K&&{3ZZ^^O4
$..&0G#r   c                ,   | j                   t        | j                   t              r|j                  | j                          yt        | j                   t              rFt        | j                         dk(  r.|j                  | j                   d   | j                   d          yt        | j                   t              rUt        | j                         dk(  r<|j                  | j                   d   | j                   d   | j                   d          yyyy)	zF
        Loads client certificates into our SSLContext object
        N)certfile   r   r   )r]   keyfile   )r]   r_   password)r   r;   rG   load_cert_chaintuplelen)r(   r#   s     r   r6   zSSLConfig._load_client_certs   s     99 $))S)++TYY+?DIIu-#dii.A2E++TYYq\499UV<+XDIIu-#dii.A2E++!YYq\ IIaL!YYq\ ,  3F- !r   )
r   CertTypes | Noner   r   r    r=   r!   r=   returnNone)rf   ssl.SSLContext)r#   rh   rf   rg   )r   r   r   __doc__r   certifiwherer>   r)   r'   r.   r-   r1   r6   r   r   r   r"   r"   <   s{     "-'--/2
 "&"3 3 	3
 3 3 
315n(r   r"   c                  V    e Zd ZdZefeeeed	 	 	 	 	 	 	 	 	 	 	 ddZd	dZd
dZddZy)r   a  
    Timeout configuration.

    **Usage**:

    Timeout(None)               # No timeouts.
    Timeout(5.0)                # 5s timeout on all operations.
    Timeout(None, connect=5.0)  # 5s timeout on connect, no other timeouts.
    Timeout(5.0, connect=10.0)  # 10s timeout on connect. 5s timeout elsewhere.
    Timeout(5.0, pool=None)     # No timeout on acquiring connection from pool.
                                # 5s timeout elsewhere.
    connectreadwritepoolc               t   t        |t              rm|t        u sJ |t        u sJ |t        u sJ |t        u sJ |j                  | _        |j                  | _        |j
                  | _        |j                  | _        y t        |t              rO|d   | _        |d   | _        t        |      dk  rd n|d   | _        t        |      dk  rd | _        y |d   | _        y t        |t              sMt        |t              s=t        |t              s-t        |t              s|| _        || _        || _        || _        y t        |t              rt        d      t        |t              r|n|| _        t        |t              r|n|| _        t        |t              r|n|| _        t        |t              r|n|| _        y )Nr   r   r`   r^      zShttpx.Timeout must either include a default, or set all four parameters explicitly.)r;   r   UNSETrn   ro   rp   rq   rc   rd   r   
ValueError)r(   timeoutrn   ro   rp   rq   s         r   r)   zTimeout.__init__   sj    gw'e###5= =E>!>5= ="??DLDI DJDI'"1:DL
DI!$W!1wqzDJ #Gq 0DIgajDIw	*$	*%+$	*"DLDIDJDI'9- 2  '1)&D7'DL#-dI#>DDI$.ui$@eDJ#-dI#>DDIr   c                `    | j                   | j                  | j                  | j                  dS )Nrm   rm   r/   s    r   as_dictzTimeout.as_dict   s(    ||IIZZII	
 	
r   c                   t        || j                        xrj | j                  |j                  k(  xrO | j                  |j                  k(  xr4 | j                  |j                  k(  xr | j
                  |j
                  k(  S r&   )r;   	__class__rn   ro   rp   rq   r(   others     r   __eq__zTimeout.__eq__  sm    udnn- (-(		UZZ'( 

ekk)( 		UZZ'	
r   c           
     8   | j                   j                  }t        | j                  | j                  | j
                  | j                  h      dk(  r| d| j                   dS | d| j                   d| j                   d| j
                   d| j                   d
S )Nr   z	(timeout=)z	(connect=z, read=z, write=z, pool=)rz   r   rd   rn   ro   rp   rq   r(   
class_names     r   __repr__zTimeout.__repr__  s    ^^,,
diiTYY?@AE \4<<.::l)DLL> 2II;htzzl'$))AG	
r   N)rv   zTimeoutTypes | UnsetTypern   None | float | UnsetTypero   r   rp   r   rq   r   rf   rg   )rf   zdict[str, float | None]r|   z
typing.Anyrf   r=   rf   rG   )	r   r   r   ri   rt   r)   rx   r}   r   r   r   r   r   r      sv     -2,I -2).*/).,I),I *	,I
 ',I (,I ',I 
,I\


r   r   c                  @    e Zd ZdZdddd	 	 	 	 	 	 	 ddZd	dZd
dZy)r   a  
    Configuration for limits to various client behaviors.

    **Parameters:**

    * **max_connections** - The maximum number of concurrent connections that may be
            established.
    * **max_keepalive_connections** - Allow the connection pool to maintain
            keep-alive connections below this point. Should be less than or equal
            to `max_connections`.
    * **keepalive_expiry** - Time limit on idle keep-alive connections in seconds.
    N      @max_connectionsmax_keepalive_connectionskeepalive_expiryc               .    || _         || _        || _        y r&   r   )r(   r   r   r   s       r   r)   zLimits.__init__)  s      /)B& 0r   c                    t        || j                        xrO | j                  |j                  k(  xr4 | j                  |j                  k(  xr | j                  |j                  k(  S r&   )r;   rz   r   r   r   r{   s     r   r}   zLimits.__eq__4  se    udnn- @$$(=(==@..%2Q2QQ@ %%)?)??		
r   c                    | j                   j                  }| d| j                   d| j                   d| j                   dS )Nz(max_connections=z, max_keepalive_connections=z, keepalive_expiry=r   )rz   r   r   r   r   r   s     r   r   zLimits.__repr__<  sT    ^^,,
l+D,@,@+A B))-)G)G(H I  $ 5 56a9	
r   )r   
int | Noner   r   r   zfloat | Nonerf   rg   r   r   )r   r   r   ri   r)   r}   r   r   r   r   r   r     sI      '+04),	1 $	1 $.		1
 '	1 
	1

r   r   c                  J    e Zd Zdddd	 	 	 	 	 	 	 	 	 ddZedd       ZddZy)	r   N)r#   authheadersc               &   t        |      }t        |      }|j                  dvrt        d|      |j                  s|j
                  r+|j                  |j
                  f}|j                  d d       }|| _        || _        || _	        || _
        y )N)httphttpssocks5zUnknown scheme for proxy URL )usernamera   )r   r   schemeru   r   ra   	copy_withurlr   r   r#   )r(   r   r#   r   r   s        r   r)   zProxy.__init__F  s     #h'"::88<SGDEE<<3<<LL#,,/D---=C	&r   c                    | j                   d S | j                   d   j                  d      | j                   d   j                  d      fS )Nr   zutf-8r   )r   encoder/   s    r   raw_authzProxy.raw_auth^  sM    
 yy  	
 ))A,%%g.		!0C0CG0LM	
r   c                    | j                   r| j                   d   dfnd }t        | j                        }|rd|nd}| j                  rdt	        | j                        nd}d| | | dS )Nr   z********z, auth= z
, headers=zProxy(r   )r   rG   r   r   dict)r(   r   url_strauth_strheaders_strs        r   r   zProxy.__repr__g  ss    -1YY		!j)D ]%)-WTH%2=A\\
4#5"89ry
;-q99r   )
r   z	URL | strr#   zssl.SSLContext | Noner   ztuple[str, str] | Noner   zHeaderTypes | Nonerf   rg   )rf   ztuple[bytes, bytes] | Noner   )r   r   r   r)   propertyr   r   r   r   r   r   r   E  s[    
 .2'+&*'' +	'
 %' $' 
'0 
 
:r   r   r   )rv   d      )r   r   )NTTF)
r   re   r   r   r    r=   r!   r=   rf   rh   )%
__future__r   loggingrV   r3   typingpathlibr   rj   _compatr   _modelsr   _typesr   r	   r
   r   _urlsr   _utilsr   __all__joinrS   	getLoggerr+   r   rt   r   r"   r   r   r   DEFAULT_TIMEOUT_CONFIGDEFAULT_LIMITSDEFAULT_MAX_REDIRECTSr   r   r   <module>r      s    "  	 
    0  E E  *
>((( 
		7	#	 	 	 "	
  	
 E EPT
 T
n'
 '
T*: *:Z !- rJ r   