U
    M8c                     @   s&   d Z ddlZddlmZ dddZdS )z
backports.makefile
~~~~~~~~~~~~~~~~~~

Backports the Python 3 ``socket.makefile`` method for use with anything that
wants to create a "fake" socket object.
    N)SocketIOrc                 C   s  t |dddhks td|f d|k}d|kp4| }|sB|sBtd|k}d}	|rZ|	d7 }	|rf|	d7 }	t| |	}
|  jd7  _|dkrd}|d	k rtj}|d	kr|std
|
S |r|rt|
|
|}n&|rt|
|}n|stt	|
|}|r|S t
||||}||_|S )z:
    Backport of ``socket.makefile`` from Python 3.5.
    r   wbz&invalid mode %r (only r, w, b allowed)    Nr   z!unbuffered streams must be binary)set
ValueErrorAssertionErrorr   Z_makefile_refsioDEFAULT_BUFFER_SIZEBufferedRWPairBufferedReaderBufferedWriterTextIOWrappermode)selfr   	bufferingencodingerrorsnewlinewritingreadingbinaryrawmoderawbuffertext r   G/tmp/pip-unpacked-wheel-1wxsa54m/urllib3/packages/backports/makefile.pybackport_makefile   s@    
r!   )r   NNNN)__doc__r   socketr   r!   r   r   r   r    <module>   s            