o
    	c                     @   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 |h dkstd|f d|v }d|v p| }|s |s J d|v }d}	|r,|	d7 }	|r2|	d7 }	t| |	}
|  jd7  _|du rDd	}|d
k rKtj}|d
krW|sUtd|
S |rc|rct|
|
|}n|rlt|
|}n
|spJ t|
|}|rz|S t	||||}||_
|S )z:
    Backport of ``socket.makefile`` from Python 3.5.
    >   br   wz&invalid mode %r (only r, w, b allowed)r   r   r       Nr   z!unbuffered streams must be binary)set
ValueErrorr   _makefile_refsioDEFAULT_BUFFER_SIZEBufferedRWPairBufferedReaderBufferedWriterTextIOWrappermode)selfr   	bufferingencodingerrorsnewlinewritingreadingbinaryrawmoderawbuffertext r   P/opt/certbot/lib/python3.10/site-packages/urllib3/packages/backports/makefile.pybackport_makefile   s@   
r!   )r   NNNN)__doc__r   socketr   r!   r   r   r   r    <module>   s
   