o
    ic!                     @  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   G/home/kim/smarthome/.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 | }|rd	}||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	rt
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*
-