
     j/                       S SK Jr  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  SSKJr  SS	KJr  / S
QrSR/                  / SQ5      r\R2                  " S5      r " S S5      r\" 5       r    S         S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)     )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                      \ rS rSrSrg)	UnsetType*    N)__name__
__module____qualname____firstlineno____static_attributes__r       W/home/ubuntu/second-brain/public-api/venv/lib/python3.13/site-packages/httpx/_config.pyr   r   *   s    r   r   c                *    [        XX#S9R                  $ )Ncertverify	trust_envhttp2)	SSLConfigssl_contextr    s       r   r   r   1   s     Ikr   c                      \ rS rSrSr\" \R                  " 5       5      rSSSSS.         SS jjr	SS jr
SS	 jrSS
 jrSS jrSS jrSrg)r%   <   z
SSL Configuration.
NTFr    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__C   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_contextQ   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   r3   $SSLConfig.load_ssl_context_no_verify^   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   
isinstancer9   
SSLContextr<   boolDEFAULT_CA_BUNDLE_PATHr   existsIOErrorformatr7   CERT_REQUIREDr;   r8   post_handshake_authAttributeErrorhostname_checks_common_nameis_filestrr0   r1   load_verify_locationsis_dir)r,   	ca_bundler=   ca_bundle_pathr@   rA   s         r   r2   !SSLConfig.load_ssl_context_verifyh   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)r9   rC   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   r7   %SSLConfig._create_default_ssl_context   s    
 ..!8!89#G,3000O,<<04

:t,K&&{3ZZ^^O4
$..&0#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   )rf   keyfile   )rf   rh   password)r!   rB   rN   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!   CertTypes | Noner"   r   r#   rD   r$   rD   returnNone)rp   ssl.SSLContext)r&   rr   rp   rq   )r   r   r   r   __doc__r   certifiwhererE   r-   r+   r3   r2   r7   r<   r   r   r   r   r%   r%   <   sy     "'--/2
 "&"3 3 	3
 3 3 
315n(r   r%   c                  j    \ rS rSrSr\4\\\\S.           S
S jjjrSS jrSS jrSS jr	Sr
g	)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                  [        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   ri   rg      zShttpx.Timeout must either include a default, or set all four parameters explicitly.)rB   r   UNSETry   rz   r{   r|   rl   rm   r   
ValueError)r,   timeoutry   rz   r{   r|   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.$ )Nrx   rx   r4   s    r   as_dictTimeout.as_dict   s(    ||IIZZII	
 	
r   c                ,   [        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*   )rB   	__class__ry   rz   r{   r|   r,   others     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   rm   ry   rz   r{   r|   r,   
class_names     r   __repr__Timeout.__repr__  s    ^^,,
diiTYY?@AE \4<<.::l)DLL> 2II;htzzl'$))AG	
r   )ry   r|   rz   r{   N)r   zTimeoutTypes | UnsetTypery   None | float | UnsetTyperz   r   r{   r   r|   r   rp   rq   )rp   zdict[str, float | None]r   z
typing.Anyrp   rD   rp   rN   )r   r   r   r   rs   r   r-   r   r   r   r   r   r   r   r   r      sv     -2,I -2).*/).,I),I *	,I
 ',I (,I ',I 
,I\


r   r   c                  P    \ rS rSrSrSSSS.       S
S jjrSS jrSS jrS	rg)r   i  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               (    Xl         X l        X0l        g r*   r   )r,   r   r   r   s       r   r-   Limits.__init__)  s      /)B& 0r   c                    [        XR                  5      =(       aY    U R                  UR                  :H  =(       a9    U R                  UR                  :H  =(       a    U R                  UR                  :H  $ r*   )rB   r   r   r   r   r   s     r   r   Limits.__eq__4  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__<  sT    ^^,,
l+D,@,@+A B))-)G)G(H I  $ 5 56a9	
r   )r   r   r   )r   
int | Noner   r   r   zfloat | Nonerp   rq   r   r   )	r   r   r   r   rs   r-   r   r   r   r   r   r   r   r     sI      '+04),	1 $	1 $.		1
 '	1 
	1

r   r   c                  Z    \ rS rSrSSSS.         SS jjr\S	S j5       rS
S jrSrg)r   iE  N)r&   authheadersc               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 )usernamerj   )r   r   schemer   r   rj   	copy_withurlr   r   r&   )r,   r   r&   r   r   s        r   r-   Proxy.__init__F  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   encoder4   s    r   raw_authProxy.raw_auth^  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   rN   r   r   dict)r,   r   url_strauth_strheaders_strs        r   r   Proxy.__repr__g  ss    -1YY		!j)D ]%)-WTH%2=A\\
4#5"89ry
;-q99r   )r   r   r&   r   )
r   z	URL | strr&   zssl.SSLContext | Noner   ztuple[str, str] | Noner   zHeaderTypes | Nonerp   rq   )rp   ztuple[bytes, bytes] | Noner   )	r   r   r   r   r-   propertyr   r   r   r   r   r   r   r   E  s[    
 .2'+&*'' +	'
 %' $' 
'0 
 
:r   r   r   )r   d      )r   r   )NTTF)
r!   ro   r"   r   r#   rD   r$   rD   rp   rr   )%
__future__r   loggingr^   r9   typingpathlibr   rt   _compatr   _modelsr   _typesr   r	   r
   r   _urlsr   _utilsr   __all__joinr[   	getLoggerr0   r   r   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   