Ë
    RPf¬/  ã                  óš  — 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__© ó    úG/var/www/fastapitest/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   € ô Ø˜&¨I¸Uôç�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Ø�K‰KØ�I‰IØ�N‰NØ�J‰Jô	
ð �;Š;Ø×/Ñ/Ó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ˆØ!&ˆÔÜ!Ÿm™mˆÔØ×Ñ Ô(Øˆ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�  € ð �>Š>˜dŸk™k¨TÑ1Ü.Ó0ˆIØÐ$Ø'�”ä�d—k‘k¤3§>¡>Ô2à—k‘kˆGØ×#Ñ# GÔ,ØˆNÜ˜Ÿ™¤TÔ*Ø!×8Ñ8‰NÜ�$—+‘+Ó×%Ñ%Ô'Ü! $§+¡+Ó.‰Näð#ß#)¡6¨$¯+©+Ó#6óð ð
 ×2Ñ2Ó4ˆÜ!×/Ñ/ˆÔØ!%ˆÔð	Ø*.ˆGÔ'ð	Ø27ˆGÔ/ð ×!Ñ!Ô#Ü˜Ó(ˆFÜ�L‰LÐ:¸FÔCØ×)Ñ)°Ð)Õ8Ø×"Ñ"Ô$Ü˜Ó(ˆFÜ�L‰LÐ:¸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ä—Z‘Z—^‘^ OÓ4ˆ
Ù˜$Ÿ.š.Ø&0ˆGÔ#àˆ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Ñ   € ð �9‰9Ñ Ü˜$Ÿ)™)¤SÔ)Ø×+Ñ+°T·Y±YÐ+Õ?Ü˜DŸI™I¤uÔ-´#°d·i±i³.ÀAÒ2EØ×+Ñ+°T·Y±Y¸q±\È4Ï9É9ÐUVÉ<Ð+ÕXÜ˜DŸI™I¤uÔ-´#°d·i±i³.ÀAÒ2EØ×+Ñ+Ø!ŸY™Y q™\Ø ŸI™I a™LØ!ŸY™Y q™\ð ,õ ð 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  € ô �gœwÔ'àœeÑ#Ð#Ð#Øœ5‘=Ð �=ØœE‘>Ð!�>Øœ5‘=Ð �=Ø"Ÿ?™?ˆDŒLØŸ™ˆDŒIØ Ÿ™ˆDŒJØŸ™ˆD�IÜ˜¤Ô'à" 1™:ˆDŒLØ ™
ˆDŒIÜ!$ W£°Ò!1™°w¸q±zˆDŒJÜ # G£¨qÒ 0˜ˆD�I°g¸a±jˆD�Iä�w¤	Ô*Ü˜$¤	Ô*Ü˜%¤Ô+Ü˜$¤	Ô*à"ˆDŒLØˆDŒIØˆDŒJØˆD�Iä˜'¤9Ô-Ü ð2óð ô '1°¼)Ô&D™7È'ˆDŒLÜ#-¨d´IÔ#>™ÀDˆDŒIÜ$.¨u´iÔ$@™ÀeˆDŒJÜ#-¨d´IÔ#>™ÀDˆD�Ir   c                ó`   — | j                   | j                  | j                  | j                  dœS )Nrl   rl   r-   s    r   Úas_dictzTimeout.as_dictþ   s(   € à—|‘|Ø—I‘IØ—Z‘ZØ—I‘Iñ	
ð 	
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   € ä�u˜dŸn™nÓ-ò (Ø—‘ §¡Ñ-ò(à—	‘	˜UŸZ™ZÑ'ò(ð —
‘
˜eŸk™kÑ)ò(ð —	‘	˜UŸZ™ZÑ'ð	
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Œ   € Ø—^‘^×,Ñ,ˆ
Ü�—‘˜dŸi™i¨¯©°T·Y±YÐ?Ó@ÀAÒEØ �\ ¨4¯<©<¨.¸Ð:Ð:àˆl˜) D§L¡L >ð 2Ø—I‘I�;˜h t§z¡z l°'¸$¿)¹)¸À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   € ä�u˜dŸn™nÓ-ò @Ø×$Ñ$¨×(=Ñ(=Ñ=ò@à×.Ñ.°%×2QÑ2QÑ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Ð6°að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ÜÐ<¸S¸GÐDÓEÐEà�<Š<˜3Ÿ<š<à—L‘L #§,¡,Ð/ˆ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   € ð
 �y‰yÐ ð ð	
ð —)‘)˜A‘,×%Ñ% gÓ.°·	±	¸!±×0CÑ0CÀGÓ0LÐ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   € à-1¯YªY�—	‘	˜!‘˜jÑ)¸Dˆô ˜Ÿ™“]Ð%ˆÙ)-�W˜T˜HÑ%°2ˆØ=A¿\º\˜
¤4¨¯©Ó#5Ð"8Ñ9ÈrˆØ˜�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   