
     @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mZ ddlmZ dd	lm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URLTypesVerifyTypes)URL)get_ca_bundle_from_env:)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__     A/var/www/piapp/venv/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   create_ssl_contextr%   /   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__A   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_contextO   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   r1   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   
isinstancer6   
SSLContextr9   r   DEFAULT_CA_BUNDLE_PATHr   existsIOErrorformatr4   CERT_REQUIREDr8   r5   post_handshake_authAttributeErrorhostname_checks_common_nameis_filestrr.   r/   load_verify_locationsis_dir)r+   	ca_bundler:   ca_bundle_pathr<   r=   s         r   r0   z!SSLConfig.load_ssl_context_verifyf   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)r6   r?   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   r4   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   )r_   keyfile   )r_   ra   password)r   r>   rI   load_cert_chaintuplelen)r+   r$   s     r   r9   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wherer@   r,   r*   r1   r0   r4   r9   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 )Timeouta  
    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 | UnsetTyperm   None | float | UnsetTypern   ro   rp   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   rb   r`      zShttpx.Timeout must either include a default, or set all four parameters explicitly.)r>   rk   UNSETrm   rn   ro   rp   re   rf   r   
ValueError)r+   rq   rm   rn   ro   rp   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 )Nrl   rl   r2   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__rm   rn   ro   rp   r+   r{   s     r   __eq__zTimeout.__eq__  s^    udn-- (-(	UZ'( 
ek)( 	UZ'	
r   rI   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   rf   rm   rn   ro   rp   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)rq   rr   rm   rs   rn   rs   ro   rs   rp   rs   r   r'   )r   rx   r{   r|   r   r   r   rI   )	r   r   r   rg   rv   r,   rz   r   r   r   r   r   rk   rk      s          -2,I -2).*/).,I ,I ,I ,I ,I ,I\
 
 
 

 
 
 

 
 
 
 
 
r   rk   c                  4    e Zd ZdZddddddZddZddZdS )Limitsa  
    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__2  sT    udn-- @$(==@.%2QQ@ %)??		
r   rI   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   rg   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 )ProxyN)r$   authheadersurlr   r$   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 )usernamerc   )r   r   schemerw   r   rc   	copy_withr   r   r   r$   )r+   r   r$   r   r   s        r   r,   zProxy.__init__D  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   encoder2   s    r   raw_authzProxy.raw_auth\  sH    
 y  D)A,%%g..	!0C0CG0L0LM	
r   rI   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   rI   r   r   dict)r+   r   url_strauth_strheaders_strs        r   r   zProxy.__repr__e  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   C  sq        
 .2'+&*' ' ' ' ' '0 
 
 
 X
: : : : : :r   r   r   )rq   d      )r   r   )NTTF)
r   r   r   r   r   r   r   r   r   r    )%
__future__r   loggingrX   r6   typingpathlibr   rh   _compatr   _modelsr   _typesr   r	   r
   r   r   _urlsr   _utilsr   joinrU   	getLoggerr.   r   rv   r%   r#   rk   r   r   DEFAULT_TIMEOUT_CONFIGDEFAULT_LIMITSDEFAULT_MAX_REDIRECTSr   r   r   <module>r      sC   " " " " " "  				 



         0 0 0 0 0 0       O O O O O O O O O O O O O O       * * * * * *((   ( 
	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   