
    +DCf/                       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
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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y)	UnsetTypeN)__name__
__module____qualname__     M/var/www/highfloat_scraper/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   create_ssl_contextr!   /   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__A   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_contextO   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   
isinstancer1   
SSLContextr4   boolDEFAULT_CA_BUNDLE_PATHr   existsIOErrorformatr/   CERT_REQUIREDr3   r0   post_handshake_authAttributeErrorhostname_checks_common_nameis_filestrr)   r*   load_verify_locationsis_dir)r&   	ca_bundler5   ca_bundle_pathr7   r8   s         r   r+   z!SSLConfig.load_ssl_context_verifyf   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)r1   r:   PROTOCOL_TLS_CLIENTr   optionsOP_NO_COMPRESSIONset_ciphersDEFAULT_CIPHERSHAS_ALPNr   set_alpn_protocolsosenvirongetr   keylog_filename)r&   r5   alpn_idents
keylogfiles       r   r/   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   r9   rE   load_cert_chaintuplelen)r&   r    s     r   r4   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)rd   ssl.SSLContext)r    rf   rd   re   )r   r   r   __doc__r   certifiwherer<   r'   r%   r,   r+   r/   r4   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)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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.)r9   rk   UNSETrm   rn   ro   rp   ra   rb   r   
ValueError)r&   timeoutrm   rn   ro   rp   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 )Nrl   rl   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$   )r9   	__class__rm   rn   ro   rp   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=)ry   r   rb   rm   rn   ro   rp   r&   
class_names     r   __repr__zTimeout.__repr__  s    ^^,,
diiTYY?@AE \4<<.::l)DLL> 2II;htzzl'$))AG	
r   N)ru   zTimeoutTypes | UnsetTyperm   None | float | UnsetTypern   r   ro   r   rp   r   rd   re   )rd   zdict[str, float | None]r{   z
typing.Anyrd   r;   rd   rE   )	r   r   r   rg   rs   r'   rw   r|   r   r   r   r   rk   rk      sv     -2,I -2).*/).,I),I *	,I
 ',I (,I ',I 
,I\


r   rk   c                  @    e Zd ZdZdddd	 	 	 	 	 	 	 ddZd	dZd
dZy)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_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$   )r9   ry   r   r   r   rz   s     r   r|   zLimits.__eq__2  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~   )ry   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 | Nonerd   re   r   r   )r   r   r   rg   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)	ProxyN)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 )usernamer_   )r   r   schemert   r   r_   	copy_withurlr   r   r    )r&   r   r    r   r   s        r   r'   zProxy.__init__D  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   rE   r   r   dict)r&   r   url_strauth_strheaders_strs        r   r   zProxy.__repr__e  ss    -1YY		!j)D ]%)-WTH%2=A\\
4#5"89ry
;-q99r   )
r   r   r    zssl.SSLContext | Noner   ztuple[str, str] | Noner   zHeaderTypes | Nonerd   re   )rd   ztuple[bytes, bytes] | Noner   )r   r   r   r'   propertyr   r   r   r   r   r   r   C  s[    
 .2'+&*'' +	'
 %' $' 
'0 
 
:r   r   r   )ru   d      )r   r   )NTTF)
r   rc   r   r   r   r;   r   r;   rd   rf   )%
__future__r   loggingrT   r1   typingpathlibr   rh   _compatr   _modelsr   _typesr   r	   r
   r   r   _urlsr   _utilsr   joinrQ   	getLoggerr)   r   rs   r!   r   rk   r   r   DEFAULT_TIMEOUT_CONFIGDEFAULT_LIMITSDEFAULT_MAX_REDIRECTSr   r   r   <module>r      s    "  	 
    0  O O  *((( 
		7	#	 	 	 "	
  	
 E EPT
 T
n'
 '
T*: *:Z !- rJ r   