U
    h                     @  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	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 )    )annotationsN   )	ReadError   )SOCKET_OPTIONAsyncNetworkBackendAsyncNetworkStreamNetworkBackendNetworkStreamc                   @  s(   e Zd ZddddZddddZd	S )
MockSSLObjectboolhttp2c                 C  s
   || _ d S N_http2)selfr    r   ;/tmp/pip-unpacked-wheel-a8helrha/httpcore/_backends/mock.py__init__   s    zMockSSLObject.__init__str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__r   r   r   r   r   r   r      s   r   c                   @  s   e Zd Zd"ddddddZd#d	d
ddddZd$dd
ddddZddddZd%ddd
ddddZdddddZddd d!Z	dS )&
MockStreamFlist[bytes]r   Nonebufferr   r   c                 C  s   || _ || _d| _d S NF_bufferr   _closedr   r#   r   r   r   r   r      s    zMockStream.__init__Nintfloat | Nonebytes	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.SSLContext
str | Noner
   ssl_contextserver_hostnamer.   r   c                 C  s   | S r   r   r   r>   r?   r.   r   r   r   	start_tls+   s    zMockStream.start_tlsr   
typing.Anyinfor   c                 C  s   |dkrt | jdS d S NZ
ssl_objectr   r   r   r   rD   r   r   r   get_extra_info3   s    zMockStream.get_extra_infoc                 C  s   dS )Nz<httpcore.MockStream>r   r   r   r   r   __repr__6   s    zMockStream.__repr__)F)N)N)NN)
r   r   r   r   r4   r7   r:   rA   rH   rI   r   r   r   r   r      s     r   c                   @  s`   e Zd ZdddddddZdd	d
dddddddZdd	ddddddZdddddZdS )MockBackendFr    r   r!   r"   c                 C  s   || _ || _d S r   r&   r   r(   r   r   r   r   ;   s    zMockBackend.__init__Nr   r)   r*   r<   %typing.Iterable[SOCKET_OPTION] | Noner
   hostportr.   local_addresssocket_optionsr   c                 C  s   t t| j| jdS Nr   r   listr&   r   r   rN   rO   r.   rP   rQ   r   r   r   connect_tcp?   s    zMockBackend.connect_tcppathr.   rQ   r   c                 C  s   t t| j| jdS rR   rS   r   rX   r.   rQ   r   r   r   connect_unix_socketI   s    zMockBackend.connect_unix_socketfloatsecondsr   c                 C  s   d S r   r   r   r]   r   r   r   sleepQ   s    zMockBackend.sleep)F)NNN)NNr   r   r   r   rV   rZ   r_   r   r   r   r   rJ   :   s        rJ   c                   @  s   e Zd Zd"ddddddZd#d	d
ddddZd$dd
ddddZddddZd%ddd
ddddZdddddZddd d!Z	dS )&AsyncMockStreamFr    r   r!   r"   c                 C  s   || _ || _d| _d S r$   r%   r(   r   r   r   r   V   s    zAsyncMockStream.__init__Nr)   r*   r+   r,   c                   s$   | j rtd| jsdS | jdS r/   r1   r3   r   r   r   r4   [   s
    zAsyncMockStream.readr5   c                   s   d S r   r   r6   r   r   r   r7   b   s    zAsyncMockStream.writer   c                   s
   d| _ d S r8   r9   r   r   r   r   aclosee   s    zAsyncMockStream.acloser;   r<   r   r=   c                   s   | S r   r   r@   r   r   r   rA   h   s    zAsyncMockStream.start_tlsr   rB   rC   c                 C  s   |dkrt | jdS d S rE   rF   rG   r   r   r   rH   p   s    zAsyncMockStream.get_extra_infoc                 C  s   dS )Nz<httpcore.AsyncMockStream>r   r   r   r   r   rI   s   s    zAsyncMockStream.__repr__)F)N)N)NN)
r   r   r   r   r4   r7   rb   rA   rH   rI   r   r   r   r   ra   U   s     ra   c                   @  s`   e Zd ZdddddddZdd	d
dddddddZdd	ddddddZdddddZdS )AsyncMockBackendFr    r   r!   r"   c                 C  s   || _ || _d S r   rK   r(   r   r   r   r   x   s    zAsyncMockBackend.__init__Nr   r)   r*   r<   rL   r   rM   c                   s   t t| j| jdS rR   ra   rT   r&   r   rU   r   r   r   rV   |   s    zAsyncMockBackend.connect_tcprW   c                   s   t t| j| jdS rR   rd   rY   r   r   r   rZ      s    z$AsyncMockBackend.connect_unix_socketr[   r\   c                   s   d S r   r   r^   r   r   r   r_      s    zAsyncMockBackend.sleep)F)NNN)NNr`   r   r   r   r   rc   w   s        rc   )
__future__r   ssltyping_exceptionsr   baser   r   r   r	   r
   r   r   rJ   ra   rc   r   r   r   r   <module>   s   	""