
    Ng/                       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                    g d          Z ej        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$dS )+    )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dS )	UnsetTypeN)__name__
__module____qualname__     I/var/www/html/ai-engine/env/lib/python3.11/site-packages/httpx/_config.pyr   r   *   s        Dr   r   TFcertCertTypes | Noneverifyr   	trust_envboolhttp2returnssl.SSLContextc                2    t          | |||          j        S )Nr   r   r   r!   )	SSLConfigssl_contextr%   s       r   r   r   1   s'     &IU  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dS )r&   z
    SSL Configuration.
    NTFr%   r   r   r   r   r   r    r!   r"   Nonec               p    || _         || _        || _        || _        |                                 | _        d S N)r   r   r   r!   load_ssl_contextr'   )selfr   r   r   r!   s        r   __init__zSSLConfig.__init__C   s:     	"
0022r   r#   c                    t                               d| j        | j        | j        | j                   | j        r|                                 S |                                 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   s_    FKINJ	
 	
 	
 ; 	2//111..000r   c                    |                                  }d|_        t          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   r3   z$SSLConfig.load_ssl_context_no_verify^   s@     2244!&!m(((r   c                   | j         r | j        du rt                      }||| _        t          | j        t          j                  r| j        }|                     |           |S t          | j        t                    r| j        }nbt          | j                  
                                rt          | j                  }n't          d                    | j                            |                                 }t          j        |_        d|_        	 d|_        n# t$          $ r Y nw xY w	 d|_        n# t$          $ r Y nw xY w|                                rAt+          |          }t,                              d|           |                    |           nT|                                r@t+          |          }t,                              d|           |                    |           |                     |           |S )	zA
        Return an SSL context for verified connections.
        TNzECould 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   
isinstancer8   
SSLContextr;   r    DEFAULT_CA_BUNDLE_PATHr   existsIOErrorformatr6   CERT_REQUIREDr:   r7   post_handshake_authAttributeErrorhostname_checks_common_nameis_filestrr0   r1   load_verify_locationsis_dir)r-   	ca_bundler<   ca_bundle_pathr>   r?   s         r   r2   z!SSLConfig.load_ssl_context_verifyh   s    > 	(dkT11.00I$'dk3>22 	kG##G,,,NT** 	!8NN$+%%'' 	!$+..NN##)6$+#6#6  
 2244!/!%	*.G'' 	 	 	D	
	27G// 	 	 	D	 !!## 	9((FLL:FCCC)))8888""$$ 	9((FLL:FCCC)))888(((s$   D 
D+*D+/D7 7
EEc                   t          j        t           j                  }t          |           |xj        t           j        z  c_        |                    t                     t           j        r#| j	        rddgndg}|
                    |           t          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)r8   rA   PROTOCOL_TLS_CLIENTr   optionsOP_NO_COMPRESSIONset_ciphersDEFAULT_CIPHERSHAS_ALPNr!   set_alpn_protocolsosenvirongetr   keylog_filename)r-   r<   alpn_idents
keylogfiles       r   r6   z%SSLConfig._create_default_ssl_context   s    
 .!899#G,,,300O,,,< 	404
L:t,,K&&{333Z^^O44
 	1$. 	1&0G#r   r'   c                (   | j         t          | j         t                    r|                    | j                    dS t          | j         t                    rGt          | j                   dk    r/|                    | j         d         | j         d                    dS t          | j         t                    rUt          | j                   dk    r?|                    | j         d         | j         d         | j         d                    dS dS dS dS )	zF
        Loads client certificates into our SSLContext object
        N)certfile   r   r   )ra   keyfile   )ra   rc   password)r   r@   rK   load_cert_chaintuplelen)r-   r'   s     r   r;   zSSLConfig._load_client_certs   s    9 $)S)) 	++TY+?????DIu-- #di..A2E2E++TYq\49UV<+XXXXXDIu-- #di..A2E2E++!Yq\ IaL!Yq\ ,      ! 
 2E2Er   )
r   r   r   r   r   r    r!   r    r"   r)   )r"   r#   )r'   r#   r"   r)   )r   r   r   __doc__r   certifiwhererB   r.   r,   r3   r2   r6   r;   r   r   r   r&   r&   <   s          "T-'-//22
 "&"3 3 3 3 3 31 1 1 1   5 5 5 5n   (     r   r&   c                  B    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dS )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pooltimeoutTimeoutTypes | UnsetTypern   None | float | UnsetTypero   rp   rq   r"   r)   c                  t          |t                    r^|t          u sJ |t          u sJ |t          u sJ |t          u sJ |j        | _        |j        | _        |j        | _        |j        | _        d S t          |t                    r`|d         | _        |d         | _        t          |          dk     rd n|d         | _        t          |          dk     rd n|d         | _        d S t          |t                    s]t          |t                    sHt          |t                    s3t          |t                    s|| _        || _        || _        || _        d S t          |t                    rt          d          t          |t                    r|n|| _        t          |t                    r|n|| _        t          |t                    r|n|| _        t          |t                    r|n|| _        d S )Nr   r   rd   rb      zShttpx.Timeout must either include a default, or set all four parameters explicitly.)r@   r   UNSETrn   ro   rp   rq   rg   rh   r   
ValueError)r-   rr   rn   ro   rp   rq   s         r   r.   zTimeout.__init__   s    gw'' #	Ie####5====E>>>>5===="?DLDI DJDIII'' 	I"1:DL
DI!$W!1!1wqzDJ #Gq 0 0gajDIIIw	**	I$	**	I %++	I $	**		I #DLDIDJDIII'9--  2   '1)&D&DQ77'DL#-dI#>#>HDDI$.ui$@$@KeDJ#-dI#>#>HDDIIIr   dict[str, float | None]c                8    | j         | j        | j        | j        dS )Nrm   rm   r4   s    r   as_dictzTimeout.as_dict   s%    |IZI	
 
 	
r   other
typing.Anyr    c                    t          || j                  o?| j        |j        k    o/| j        |j        k    o| j        |j        k    o| j        |j        k    S r+   )r@   	__class__rn   ro   rp   rq   r-   r|   s     r   __eq__zTimeout.__eq__  s^    udn-- (-(	UZ'( 
ek)( 	UZ'	
r   rK   c           
         | 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=)r   r   rh   rn   ro   rp   rq   r-   
class_names     r   __repr__zTimeout.__repr__  s    ^,
diTY?@@AEE ::4<:::: G GDL G GIG G'+zG G:>)G G G	
r   N)rr   rs   rn   rt   ro   rt   rp   rt   rq   rt   r"   r)   )r"   ry   r|   r}   r"   r    r"   rK   )	r   r   r   ri   rw   r.   r{   r   r   r   r   r   r   r      s          -2,I -2).*/).,I ,I ,I ,I ,I ,I\
 
 
 

 
 
 

 
 
 
 
 
r   r   c                  4    e Zd ZdZddddddZddZddZdS )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_expiryr   
int | Noner   r   float | Noner"   r)   c               0    || _         || _        || _        d S r+   r   )r-   r   r   r   s       r   r.   zLimits.__init__)  s"      /)B& 0r   r|   r}   r    c                    t          || j                  o/| j        |j        k    o| j        |j        k    o| j        |j        k    S r+   )r@   r   r   r   r   r   s     r   r   zLimits.__eq__4  sT    udn-- @$(==@.%2QQ@ %)??		
r   rK   c                T    | j         j        }| d| j         d| j         d| j         dS )Nz(max_connections=z, max_keepalive_connections=z, keepalive_expiry=r   )r   r   r   r   r   r   s     r   r   zLimits.__repr__<  sR    ^,
 9 9D,@ 9 9)-)G9 9 $ 59 9 9	
r   )r   r   r   r   r   r   r"   r)   r   r   )r   r   r   ri   r.   r   r   r   r   r   r   r     so           '+04),	1 	1 	1 	1 	1 	1
 
 
 

 
 
 
 
 
r   r   c                  @    e Zd ZddddddZedd            ZddZdS )r   N)r'   authheadersurl	URL | strr'   ssl.SSLContext | Noner   tuple[str, str] | Noner   HeaderTypes | Noner"   r)   c                  t          |          }t          |          }|j        dvrt          d|          |j        s|j        r%|j        |j        f}|                    d d           }|| _        || _        || _	        || _
        d S )N)httphttpssocks5zUnknown scheme for proxy URL )usernamere   )r   r   schemerx   r   re   	copy_withr   r   r   r'   )r-   r   r'   r   r   s        r   r.   zProxy.__init__F  s     #hh'"":888DSDDEEE< 	>3< 	>L#,/D---==C	&r   tuple[bytes, bytes] | Nonec                    | j         d n?| j         d                             d          | j         d                             d          fS )Nr   zutf-8r   )r   encoder4   s    r   raw_authzProxy.raw_auth^  sH    
 y  D)A,%%g..	!0C0CG0L0LM	
r   rK   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   rK   r   r   dict)r-   r   url_strauth_strheaders_strs        r   r   zProxy.__repr__g  s    -1Y@	!j))D ]]&)-5%T%%%2=A\Q94#5#5999r999;9999r   )
r   r   r'   r   r   r   r   r   r"   r)   )r"   r   r   )r   r   r   r.   propertyr   r   r   r   r   r   r   E  sq        
 .2'+&*' ' ' ' ' '0 
 
 
 X
: : : : : :r   r   r   )rr   d      )r   r   )NTTF)
r   r   r   r   r   r    r!   r    r"   r#   )%
__future__r   loggingrZ   r8   typingpathlibr   rj   _compatr   _modelsr   _typesr   r	   r
   r   _urlsr   _utilsr   __all__joinrW   	getLoggerr0   r   rw   r   r&   r   r   r   DEFAULT_TIMEOUT_CONFIGDEFAULT_LIMITSDEFAULT_MAX_REDIRECTSr   r   r   <module>r      sH   " " " " " "  				 



         0 0 0 0 0 0       E E E E E E E E E E E E       * * * * * *
>
>
>((   ( 
	7	#	#	 	 	 	 	 	 	 	 		 "	    E E E E E E E EPT
 T
 T
 T
 T
 T
 T
 T
n'
 '
 '
 '
 '
 '
 '
 '
T*: *: *: *: *: *: *: *:Z !--- rJJJ   r   