o
    &=jc!  ã                   @  sÌ   d dl mZ d dlZd dlZddlmZ ddlmZmZm	Z	 ddl
mZ ejr+d dlZg d¢ZG dd	„ d	ƒZeƒ Z	
		
d d!dd„ZG dd„ dƒZG dd„ dƒZG dd„ dƒZedd�Zeddd�ZdZdS )"é    )ÚannotationsNé   )ÚHeaders)Ú	CertTypesÚHeaderTypesÚTimeoutTypes)ÚURL)ÚLimitsÚProxyÚTimeoutÚcreate_ssl_contextc                   @  s   e Zd ZdS )Ú	UnsetTypeN)Ú__name__Ú
__module__Ú__qualname__© r   r   úWC:\Users\psant\Downloads\Anu Raj Backend\school\venv\Lib\site-packages\httpx/_config.pyr      s    r   TÚverifyússl.SSLContext | str | boolÚcertúCertTypes | NoneÚ	trust_envÚboolÚreturnússl.SSLContextc                 C  s  dd l }dd l}dd l}| du r=|r"tj d¡r"|jtjd d�}nN|r4tj d¡r4|jtjd d�}n<|j| ¡ d�}n3| du rO| |j	¡}d|_
|j|_n!t| tƒrnd}| |t¡ tj | ¡rh|j| d�S |j| d�S | }|r‹d	}| |t¡ t|tƒr†| |¡ |S |j|Ž  |S )
Nr   TZSSL_CERT_FILE)ÚcafileZSSL_CERT_DIR)ÚcapathFz�`verify=<str>` is deprecated. Use `verify=ssl.create_default_context(cafile=...)` or `verify=ssl.create_default_context(capath=...)` instead.zz`cert=...` is deprecated. Use `verify=<ssl_context>` instead,with `.load_cert_chain()` to configure the certificate chain.)ÚsslÚwarningsÚcertifiÚosÚenvironÚgetÚcreate_default_contextÚwhereÚ
SSLContextÚPROTOCOL_TLS_CLIENTÚcheck_hostnameÚ	CERT_NONEÚverify_modeÚ
isinstanceÚstrÚwarnÚDeprecationWarningÚpathÚisdirÚload_cert_chain)r   r   r   r   r   r   ÚctxÚmessager   r   r   r      s<   

ÿÿ


þr   c                   @  sH   e Zd ZdZefeeeedœddd„Zddd„Zddd„Zddd„ZdS )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ÚpoolÚtimeoutúTimeoutTypes | UnsetTyper4   úNone | float | UnsetTyper5   r6   r7   r   ÚNonec                C  sd  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 rFd n|d | _t|ƒdk rVd | _d S |d | _d S t |t	ƒst |t	ƒst |t	ƒst |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   é   é   é   zShttpx.Timeout must either include a default, or set all four parameters explicitly.)r*   r   ÚUNSETr4   r5   r6   r7   ÚtupleÚlenr   Ú
ValueError)Úselfr8   r4   r5   r6   r7   r   r   r   Ú__init__V   sD   
	


$ÿþýü

ÿzTimeout.__init__údict[str, float | None]c                 C  s   | j | j| j| jdœS )Nr3   r3   ©rC   r   r   r   Úas_dict„   s
   üzTimeout.as_dictÚotherú
typing.Anyr   c                 C  s<   t || jƒo| j|jko| j|jko| j|jko| j|jkS ©N)r*   Ú	__class__r4   r5   r6   r7   ©rC   rH   r   r   r   Ú__eq__Œ   s   
ÿ
þ
ý
ûzTimeout.__eq__r+   c              
   C  s`   | 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=)rK   r   rA   r4   r5   r6   r7   ©rC   Ú
class_namer   r   r   Ú__repr__•   s   ÿÿÿÿzTimeout.__repr__N)r8   r9   r4   r:   r5   r:   r6   r:   r7   r:   r   r;   )r   rE   ©rH   rI   r   r   ©r   r+   )	r   r   r   Ú__doc__r?   rD   rG   rM   rQ   r   r   r   r   r   H   s    þù
.
	r   c                   @  s8   e Zd ZdZddddœddd„Zddd„Zddd„ZdS )r	   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_expiryrW   ú
int | NonerX   rY   úfloat | Noner   r;   c                C  s   || _ || _|| _d S rJ   rV   )rC   rW   rX   rY   r   r   r   rD   ­   s   
zLimits.__init__rH   rI   r   c                 C  s0   t || jƒo| j|jko| j|jko| j|jkS rJ   )r*   rK   rW   rX   rY   rL   r   r   r   rM   ¸   s   
ÿ
þ
üzLimits.__eq__r+   c                 C  s*   | j j}|› d| j› d| j› d| j› d�S )Nz(max_connections=z, max_keepalive_connections=z, keepalive_expiry=rN   )rK   r   rW   rX   rY   rO   r   r   r   rQ   À   s   ÿþÿzLimits.__repr__)rW   rZ   rX   rZ   rY   r[   r   r;   rR   rS   )r   r   r   rT   rD   rM   rQ   r   r   r   r   r	   Ÿ   s    û
r	   c                   @  s8   e Zd Zddddœddd„Zeddd„ƒZddd„ZdS )r
   N)Ússl_contextÚauthÚheadersÚurlú	URL | strr\   ússl.SSLContext | Noner]   útuple[str, str] | Noner^   úHeaderTypes | Noner   r;   c                C  sj   t |ƒ}t|ƒ}|jdvrtd|›�ƒ‚|js|jr'|j|jf}|jd d d�}|| _|| _|| _	|| _
d S )N)ÚhttpÚhttpsZsocks5Zsocks5hzUnknown scheme for proxy URL )ÚusernameÚpassword)r   r   ÚschemerB   rf   rg   Ú	copy_withr_   r]   r^   r\   )rC   r_   r\   r]   r^   r   r   r   rD   Ê   s   

zProxy.__init__útuple[bytes, bytes] | Nonec                 C  s.   | j d u rd S | j d  d¡| j d  d¡fS )Nr   zutf-8r   )r]   ÚencoderF   r   r   r   Úraw_authâ   s
   ÿÿýzProxy.raw_authr+   c                 C  sd   | 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(rN   )r]   r+   r_   r^   Údict)rC   r]   Zurl_strÚauth_strZheaders_strr   r   r   rQ   ë   s
   zProxy.__repr__)
r_   r`   r\   ra   r]   rb   r^   rc   r   r;   )r   rj   rS   )r   r   r   rD   Úpropertyrl   rQ   r   r   r   r   r
   É   s    úr
   rU   )r8   éd   é   )rW   rX   )TNT)r   r   r   r   r   r   r   r   )Ú
__future__r   r    ÚtypingZ_modelsr   Ú_typesr   r   r   Z_urlsr   ÚTYPE_CHECKINGr   Ú__all__r   r?   r   r   r	   r
   ZDEFAULT_TIMEOUT_CONFIGZDEFAULT_LIMITSZDEFAULT_MAX_REDIRECTSr   r   r   r   Ú<module>   s*    ý1W*
-