U
    \eS                     @   s   d dl 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
 G dd dZG d	d
 d
e
ZG dd de	ZG dd deZG dd deZdS )    N)Optional   )	ReadError   )SOCKET_OPTIONAsyncNetworkBackendAsyncNetworkStreamNetworkBackendNetworkStreamc                   @   s(   e Zd ZedddZedddZdS )MockSSLObjecthttp2c                 C   s
   || _ d S N_http2)selfr    r   ;/tmp/pip-unpacked-wheel-4txt3dqh/httpcore/_backends/mock.py__init__   s    zMockSSLObject.__init__returnc                 C   s   | j r
dS dS )Nh2zhttp/1.1r   r   r   r   r   selected_alpn_protocol   s    z$MockSSLObject.selected_alpn_protocolN)__name__
__module____qualname__boolr   strr   r   r   r   r   r      s   r   c                   @   s   e Zd Zdeje eddddZdee	e
 edddZdee	e
 dd	d
dZddddZdeje	e e	e
 edddZeejdddZedddZdS )
MockStreamFNbufferr   r   c                 C   s   || _ || _d| _d S NF_bufferr   _closedr   r!   r   r   r   r   r      s    zMockStream.__init__	max_bytestimeoutr   c                 C   s$   | j rtd| jsdS | jdS NzConnection closed    r   r%   r   r$   popr   r(   r)   r   r   r   read   s
    zMockStream.readr!   r)   r   c                 C   s   d S r   r   r   r!   r)   r   r   r   write$   s    zMockStream.writer   c                 C   s
   d| _ d S NTr%   r   r   r   r   close'   s    zMockStream.closessl_contextserver_hostnamer)   r   c                 C   s   | S r   r   r   r7   r8   r)   r   r   r   	start_tls*   s    zMockStream.start_tlsinfor   c                 C   s   |dkrt | jdS d S NZ
ssl_objectr   r   r   r   r<   r   r   r   get_extra_info2   s    zMockStream.get_extra_infoc                 C   s   dS )Nz<httpcore.MockStream>r   r   r   r   r   __repr__5   s    zMockStream.__repr__)F)N)N)NN)r   r   r   typingListbytesr   r   intr   floatr/   r2   r5   ssl
SSLContextr   r
   r:   Anyr@   rA   r   r   r   r   r      s     r   c                   @   s   e Zd Zdeje eddddZdee	e
e e
e ej
eje  edddZdee
e ej
eje  ed	d
dZeddddZdS )MockBackendFNr    c                 C   s   || _ || _d S r   r$   r   r&   r   r   r   r   :   s    zMockBackend.__init__hostportr)   local_addresssocket_optionsr   c                 C   s   t t| j| jdS Nr   r   listr$   r   r   rM   rN   r)   rO   rP   r   r   r   connect_tcp>   s    zMockBackend.connect_tcppathr)   rP   r   c                 C   s   t t| j| jdS rQ   rR   r   rW   r)   rP   r   r   r   connect_unix_socketH   s    zMockBackend.connect_unix_socketsecondsr   c                 C   s   d S r   r   r   r[   r   r   r   sleepP   s    zMockBackend.sleep)F)NNN)NN)r   r   r   rB   rC   rD   r   r   r   rE   r   rF   Iterabler   r
   rU   rY   r]   r   r   r   r   rJ   9   s*        rJ   c                   @   s   e Zd Zdeje eddddZdee	e
 edddZdee	e
 dd	d
dZddddZdeje	e e	e
 edddZeejdddZedddZdS )AsyncMockStreamFNr    c                 C   s   || _ || _d| _d S r"   r#   r&   r   r   r   r   U   s    zAsyncMockStream.__init__r'   c                    s$   | j rtd| jsdS | jdS r*   r,   r.   r   r   r   r/   Z   s
    zAsyncMockStream.readr0   c                    s   d S r   r   r1   r   r   r   r2   a   s    zAsyncMockStream.writer   c                    s
   d| _ d S r3   r4   r   r   r   r   aclosed   s    zAsyncMockStream.acloser6   c                    s   | S r   r   r9   r   r   r   r:   g   s    zAsyncMockStream.start_tlsr;   c                 C   s   |dkrt | jdS d S r=   r>   r?   r   r   r   r@   o   s    zAsyncMockStream.get_extra_infoc                 C   s   dS )Nz<httpcore.AsyncMockStream>r   r   r   r   r   rA   r   s    zAsyncMockStream.__repr__)F)N)N)NN)r   r   r   rB   rC   rD   r   r   rE   r   rF   r/   r2   r`   rG   rH   r   r   r:   rI   r@   rA   r   r   r   r   r_   T   s     r_   c                   @   s   e Zd Zdeje eddddZdee	e
e e
e ej
eje  edddZdee
e ej
eje  ed	d
dZeddddZdS )AsyncMockBackendFNr    c                 C   s   || _ || _d S r   rK   r&   r   r   r   r   w   s    zAsyncMockBackend.__init__rL   c                    s   t t| j| jdS rQ   r_   rS   r$   r   rT   r   r   r   rU   {   s    zAsyncMockBackend.connect_tcprV   c                    s   t t| j| jdS rQ   rb   rX   r   r   r   rY      s    z$AsyncMockBackend.connect_unix_socketrZ   c                    s   d S r   r   r\   r   r   r   r]      s    zAsyncMockBackend.sleep)F)NNN)NN)r   r   r   rB   rC   rD   r   r   r   rE   r   rF   r^   r   r   rU   rY   r]   r   r   r   r   ra   v   s*        ra   )rG   rB   r   _exceptionsr   baser   r   r   r	   r
   r   r   rJ   r_   ra   r   r   r   r   <module>   s   	""