o
    ùT·j§  ã                   @  s  d dl mZ d dl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ejddd�G dd„ dƒƒZejd
d�G dd„ dƒƒZG dd„ dƒZedd�Zed d!d"�Zd!Zd#Zd$Zd%Z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   úQ/home/dinkstrade/pdmp-scanner/venv/lib/python3.10/site-packages/httpx2/_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�}nR|r4tj d¡r4|jtjd d�}n@| |j¡}n9| du rM| |j¡}d|_	|j
|_n't| tƒrr|rXtdƒ‚d	}| |t¡ tj | ¡rl|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>` cannot be combined with `cert=...`. Build an `ssl.SSLContext` and pass it as `verify=<ctx>`, using `.load_cert_chain()` to configure the certificate chain.z�`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Ú
truststoreÚosÚenvironÚgetÚcreate_default_contextÚ
SSLContextÚPROTOCOL_TLS_CLIENTÚcheck_hostnameÚ	CERT_NONEÚverify_modeÚ
isinstanceÚstrÚ	TypeErrorÚwarnÚDeprecationWarningÚpathÚisdirÚload_cert_chain)r   r   r   r   r    r!   ÚctxÚmessager   r   r   r      sD   

ÿÿÿ


þr   F)ÚinitÚreprc                   @  s`   e Zd ZU dZded< ded< ded< ded< efeeeedœ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.
    úfloat | NoneÚconnectÚreadÚwriteÚpool©r8   r9   r:   r;   ÚtimeoutúTimeoutTypes | UnsetTypeúNone | float | UnsetTyper   Ú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   é   é   é   zThttpx2.Timeout must either include a default, or set all four parameters explicitly.)r+   r   ÚUNSETr8   r9   r:   r;   ÚtupleÚlenr   Ú
ValueError)Úselfr=   r8   r9   r:   r;   r   r   r   Ú__init__c   s@   
	


$ÿþýü

zTimeout.__init__údict[str, float | None]c                 C  s   | j | j| j| jdœS )Nr<   r<   ©rH   r   r   r   Úas_dictŽ   s
   üzTimeout.as_dictr,   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=)Ú	__class__r   rF   r8   r9   r:   r;   )rH   Ú
class_namer   r   r   Ú__repr__–   s   *zTimeout.__repr__N)r=   r>   r8   r?   r9   r?   r:   r?   r;   r?   r   r@   )r   rJ   ©r   r,   )	r   r   r   Ú__doc__Ú__annotations__rD   rI   rL   rP   r   r   r   r   r   O   s   
 þù
+r   )Úkw_onlyc                   @  s6   e Zd ZU dZdZded< dZded< dZded< 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.
    Nz
int | NoneÚmax_connectionsÚmax_keepalive_connectionsç      @r7   Úkeepalive_expiry)r   r   r   rR   rU   rS   rV   rX   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 | strrY   ússl.SSLContext | NonerZ   ú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   ÚschemerG   re   rf   Ú	copy_withr\   rZ   r[   rY   )rH   r\   rY   rZ   r[   r   r   r   rI   ²   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   )rZ   ÚencoderK   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(rM   )rZ   r,   r\   r[   Údict)rH   rZ   Úurl_strÚauth_strÚheaders_strr   r   r   rP   Ï   s
   zProxy.__repr__)
r\   r]   rY   r^   rZ   r_   r[   r`   r   r@   )r   ri   rQ   )r   r   r   rI   Úpropertyrk   rP   r   r   r   r   r
   ±   s    úr
   rW   )r=   éd   é   )rU   rV   i   i   i   g      4@)TNT)r   r   r   r   r   r   r   r   )Ú
__future__r   Údataclassesr"   ÚtypingÚ_modelsr   Ú_typesr   r   r   Ú_urlsr   ÚTYPE_CHECKINGr   Ú__all__r   rD   r   Ú	dataclassr   r	   r
   ÚDEFAULT_TIMEOUT_CONFIGÚDEFAULT_LIMITSÚDEFAULT_MAX_REDIRECTSÚDEFAULT_MAX_EVENT_SIZE_BYTESÚDEFAULT_MAX_MESSAGE_SIZE_BYTESÚDEFAULT_QUEUE_SIZEÚ'DEFAULT_KEEPALIVE_PING_INTERVAL_SECONDSÚ&DEFAULT_KEEPALIVE_PING_TIMEOUT_SECONDSr   r   r   r   Ú<module>   s:    ý7
M
)