o
    í6Wjc!  ã                   @  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   ú\/home/esfera/Documents/content_generation/venv/lib/python3.10/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   TÚSSL_CERT_FILE)ÚcafileÚ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 | UnsetTyper6   úNone | float | UnsetTyper7   r8   r9   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   ÚUNSETr6   r7   r8   r9   ÚtupleÚlenr   Ú
ValueError)Úselfr:   r6   r7   r8   r9   r   r   r   Ú__init__V   sD   
	


$ÿþýü

ÿzTimeout.__init__údict[str, float | None]c                 C  s   | j | j| j| jdœS )Nr5   r5   ©rE   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__r6   r7   r8   r9   ©rE   rJ   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=)rM   r   rC   r6   r7   r8   r9   ©rE   Ú
class_namer   r   r   Ú__repr__•   s   ÿÿÿÿzTimeout.__repr__N)r:   r;   r6   r<   r7   r<   r8   r<   r9   r<   r   r=   )r   rG   ©rJ   rK   r   r   ©r   r-   )	r   r   r   Ú__doc__rA   rF   rI   rO   rS   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_expiryrY   ú
int | NonerZ   r[   úfloat | Noner   r=   c                C  s   || _ || _|| _d S rL   rX   )rE   rY   rZ   r[   r   r   r   rF   ­   s   
zLimits.__init__rJ   rK   r   c                 C  s0   t || jƒo| j|jko| j|jko| j|jkS rL   )r,   rM   rY   rZ   r[   rN   r   r   r   rO   ¸   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=rP   )rM   r   rY   rZ   r[   rQ   r   r   r   rS   À   s   ÿþÿzLimits.__repr__)rY   r\   rZ   r\   r[   r]   r   r=   rT   rU   )r   r   r   rV   rF   rO   rS   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ÚhttpsÚsocks5Úsocks5hzUnknown scheme for proxy URL )ÚusernameÚpassword)r   r   ÚschemerD   rj   rk   Ú	copy_withra   r_   r`   r^   )rE   ra   r^   r_   r`   r   r   r   rF   Ê   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_   ÚencoderH   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(rP   )r_   r-   ra   r`   Údict)rE   r_   Úurl_strÚauth_strÚheaders_strr   r   r   rS   ë   s
   zProxy.__repr__)
ra   rb   r^   rc   r_   rd   r`   re   r   r=   )r   rn   rU   )r   r   r   rF   Úpropertyrp   rS   r   r   r   r   r
   É   s    úr
   rW   )r:   éd   é   )rY   rZ   )TNT)r   r   r   r   r   r   r   r   )Ú
__future__r   r"   ÚtypingÚ_modelsr   Ú_typesr   r   r   Ú_urlsr   ÚTYPE_CHECKINGr   Ú__all__r   rA   r   r   r	   r
   ÚDEFAULT_TIMEOUT_CONFIGÚDEFAULT_LIMITSÚDEFAULT_MAX_REDIRECTSr   r   r   r   Ú<module>   s*    ý1W*
-