
    IiN0                        S SK r S SKrS SKrS SKrS SKJr  S SKrSSKJr  SSK	J
r
  SSKJrJrJrJrJr  SSKJr  SSKJr  S	R+                  / S
Q5      r\ R.                  " S5      r " S S5      r\" 5       r    S!S\R6                  \   S\S\S\S\R:                  4
S jjr " S S5      r " S S5      r  " S S5      r! " S S5      r"\ " SS9r#\!" SSS 9r$Sr%g)"    N)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                       \ rS rSrSrg)	UnsetType&    N)__name__
__module____qualname____firstlineno____static_attributes__r       3/venv/lib/python3.13/site-packages/httpx/_config.pyr   r   &   s    r   r   certverify	trust_envhttp2returnc                 *    [        XX#S9R                  $ )Nr   r   r   r   )	SSLConfigssl_contextr!   s       r   create_ssl_contextr$   -   s     Ikr   c                   :   \ rS rSrSr\" \R                  " 5       5      rSSSSS.S\	R                  \   S\S	\S
\SS4
S jjrS\R                   4S jrS\R                   4S jrS\R                   4S jrS\R                   4S jrS\R                   SS4S jrSrg)r"   8   z
SSL Configuration.
NTFr!   r   r   r   r   r   c                ^    Xl         X l        X0l        X@l        U R	                  5       U l        g N)r   r   r   r   load_ssl_contextr#   )selfr   r   r   r   s        r   __init__SSLConfig.__init__?   s)     	"
002r   c                     [         R                  SU R                  U R                  U R                  U R
                  5        U R                  (       a  U R                  5       $ U R                  5       $ )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)   SSLConfig.load_ssl_contextM   sT    FKKIINNJJ	
 ;;//11..00r   c                     U R                  5       nSUl        [        R                  Ul        U R                  U5        U$ )z3
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   $SSLConfig.load_ssl_context_no_verifyZ   s9     224!&!mm(r   c                    U R                   (       a"  U R                  SL a  [        5       nUb  Xl        [        U R                  [        R
                  5      (       a  U R                  nU R                  U5        U$ [        U R                  [        5      (       a  U R                  nOb[        U R                  5      R                  5       (       a  [        U R                  5      nO$[        SR                  U R                  5      5      eU R                  5       n[        R                  Ul        SUl         SUl         SUl        UR)                  5       (       a1  [+        U5      n[,        R/                  SU5        UR1                  US9  OEUR3                  5       (       a0  [+        U5      n[,        R/                  SU5        UR1                  US9  U R                  U5        U$ ! [$         a     Nf = f! [$         a     Nf = f)z1
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   
isinstancer7   
SSLContextr:   boolDEFAULT_CA_BUNDLE_PATHr   existsIOErrorformatr5   CERT_REQUIREDr9   r6   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   !SSLConfig.load_ssl_context_verifyd   s    >>dkkT1.0I$'dkk3>>2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$   7G$ ?G4 $
G10G14
H Hc                    [         R                  " [         R                  5      n[        U5        U=R                  [         R
                  -  sl        UR                  [        5        [         R                  (       a)  U R                  (       a  SS/OS/nUR                  U5        [        R                  R                  S5      nU(       a  U R                  (       a  X1l        U$ )za
Creates the default SSLContext object that's used for both verified
and unverified connections.
zhttp/1.1h2SSLKEYLOGFILE)r7   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   r5   %SSLConfig._create_default_ssl_context   s    
 ..!8!89#G,3000O,<<04

:t,K&&{3ZZ^^O4
$..&0#r   r#   c                 >   U R                   Gb  [        U R                   [        5      (       a  UR                  U R                   S9  g[        U R                   [        5      (       aD  [        U R                   5      S:X  a+  UR                  U R                   S   U R                   S   S9  g[        U R                   [        5      (       aS  [        U R                   5      S:X  a9  UR                  U R                   S   U R                   S   U R                   S   S9  gggg)	z6
Loads client certificates into our SSLContext object
N)certfile   r   r   )rd   keyfile   )rd   rf   password)r   r@   rL   load_cert_chaintuplelen)r*   r#   s     r   r:   SSLConfig._load_client_certs   s     99 $))S))++TYY+?DIIu--#dii.A2E++TYYq\499UV<+XDIIu--#dii.A2E++!YYq\ IIaL!YYq\ ,  3F- !r   )r   r   r#   r   r   )r   r   r   r   __doc__r   certifiwhererC   typingOptionalr   r   rB   r+   r7   rA   r)   r1   r0   r5   r:   r   r   r   r   r"   r"   8   s     "'--/2
 ,0"3 ooi(3 	3
 3 3 
31#.. 1CNN 5 5nS^^ (cnn  r   r"   c                   f   \ rS rSrSr\4\\\\S.S\R                  \\	4   S\R                  S\
\	4   S\R                  S\
\	4   S\R                  S\
\	4   S	\R                  S\
\	4   S
S4S jjjrS
\R                  \\R                  \
   4   4S jrS\R                   S
\4S jrS
\4S jrSrg)Timeout   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timeoutrv   Nrw   rx   ry   r   c                   [        U[        5      (       aq  U[        L d   eU[        L d   eU[        L d   eU[        L d   eUR                  U l        UR                  U l        UR
                  U l        UR                  U l        g [        U[        5      (       aK  US   U l        US   U l        [        U5      S:  a  S OUS   U l        [        U5      S:  a  S OUS   U l        g [        U[        5      (       dX  [        U[        5      (       dC  [        U[        5      (       d.  [        U[        5      (       d  X l        X0l        X@l        XPl        g [        U[        5      (       a  [        S5      e[        U[        5      (       a  UOUU l        [        U[        5      (       a  UOUU l        [        U[        5      (       a  UOUU l        [        U[        5      (       a  UOUU l        g )Nr   r   rg   re      zShttpx.Timeout must either include a default, or set all four parameters explicitly.)r@   rs   UNSETrv   rw   rx   ry   rj   rk   r   
ValueError)r*   rz   rv   rw   rx   ry   s         r   r+   Timeout.__init__   s    gw''e###5= =E>!>5= ="??DLDI DJDI''"1:DL
DI!$W!1wqzDJ #Gq 0gajDIw	**$	**%++$	**"LIJI'9-- 2  '1)&D&D7'DL#-dI#>#>DDI$.ui$@$@eDJ#-dI#>#>DDIr   c                 `    U R                   U R                  U R                  U R                  S.$ )Nru   ru   r2   s    r   as_dictTimeout.as_dict   s(    ||IIZZII	
 	
r   otherc                 ,   [        XR                  5      =(       ay    U R                  UR                  :H  =(       aY    U R                  UR                  :H  =(       a9    U R                  UR                  :H  =(       a    U R
                  UR
                  :H  $ r(   )r@   	__class__rv   rw   rx   ry   r*   r   s     r   __eq__Timeout.__eq__  sk    unn- (-(		UZZ'( 

ekk)( 		UZZ'	
r   c           
      :   U R                   R                  n[        U R                  U R                  U R
                  U R                  15      S:X  a  U SU R                   S3$ U SU R                   SU R                   SU R
                   SU R                   S3
$ )Nr   z	(timeout=)z	(connect=z, read=z, write=z, pool=)r   r   rk   rv   rw   rx   ry   r*   
class_names     r   __repr__Timeout.__repr__  s    ^^,,
diiTYY?@AE \4<<.::l)DLL> 2II;htzzl'$))AG	
r   )rv   ry   rw   rx   )r   r   r   r   rm   r}   rp   Unionr	   r   floatr+   DictrL   rq   r   AnyrB   r   r   r   r   r   r   rs   rs      s     :?,I 9>5:6;5:,IlI56,I dE945	,I
 ll4	12,I ||D%23,I ll4	12,I 
,I\
S&//%*@%@A 

FJJ 
4 

# 
r   rs   c            	           \ rS rSrSrSSSS.S\R                  \   S\R                  \   S\R                  \   S	S4S
 jjr	S\R                  S	\4S jrS	\4S jrSrg)Limitsi  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   r   r   r   c                (    Xl         X l        X0l        g r(   r   )r*   r   r   r   s       r   r+   Limits.__init__%  s      /)B& 0r   r   c                     [        XR                  5      =(       aY    U R                  UR                  :H  =(       a9    U R                  UR                  :H  =(       a    U R                  UR                  :H  $ r(   )r@   r   r   r   r   r   s     r   r   Limits.__eq__0  sc    unn- @$$(=(==@..%2Q2QQ@ %%)?)??		
r   c                     U R                   R                  nU SU R                   SU R                   SU R                   S3$ )Nz(max_connections=z, max_keepalive_connections=z, keepalive_expiry=r   )r   r   r   r   r   r   s     r   r   Limits.__repr__8  sT    ^^,,
l+D,@,@+A B))-)G)G(H I  $ 5 56a9	
r   )r   r   r   )r   r   r   r   rm   rp   rq   intr   r+   r   rB   r   rL   r   r   r   r   r   r   r     s}      15:>36	1  -	1 $*??3#7		1
 !//%0	1 
	1
FJJ 
4 

# 
r   r   c                      \ rS rSrSSSS.S\S\R                  \R                     S\R                  \R                  \
\
4      S\R                  \   SS4
S	 jjr\S\R                  \R                  \\4      4S
 j5       rS\
4S jrSrg)ProxyiA  N)r#   authheadersurlr#   r   r   r   c                2   [        U5      n[        U5      nUR                  S;  a  [        SU< 35      eUR                  (       d  UR
                  (       a(  UR                  UR
                  4nUR                  S S S9nXl        X0l        X@l	        X l
        g )N)httphttpssocks5zUnknown scheme for proxy URL )usernamerh   )r   r   schemer~   r   rh   	copy_withr   r   r   r#   )r*   r   r#   r   r   s        r   r+   Proxy.__init__B  s}     #h'"::88<SGDEE<<3<<LL#,,/D---=C	&r   c                     U R                   c  S $ U R                   S   R                  S5      U R                   S   R                  S5      4$ )Nr   zutf-8r   )r   encoder2   s    r   raw_authProxy.raw_authZ  sM    
 yy  	
 ))A,%%g.		!0C0CG0LM	
r   c                    U R                   (       a  U R                   S   S4OS n[        U R                  5      < nU(       a  SU< 3OSnU R                  (       a  S[	        U R                  5      < 3OSnSU U U S3$ )Nr   z********z, auth= z
, headers=zProxy(r   )r   rL   r   r   dict)r*   r   url_strauth_strheaders_strs        r   r   Proxy.__repr__c  ss    -1YY		!j)D ]%)-WTH%2=A\\
4#5"89ry
;-q99r   )r   r   r#   r   )r   r   r   r   r
   rp   rq   r7   rA   TuplerL   r   r+   propertybytesr   r   r   r   r   r   r   r   A  s    
 8<8<04'' __S^^4	'
 oofll3845' -' 
'0 
&//&,,ue|*DE 
 
:# :r   r   r   )rz   d      )r   r   )NTTF)&loggingr\   r7   rp   pathlibr   rn   _compatr   _modelsr   _typesr   r   r	   r
   r   _urlsr   _utilsr   joinrY   	getLoggerr.   r   r}   rq   rB   rA   r$   r"   rs   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   