o ~`@s(dZddlZddlmZ dddZdS)z backports.makefile ~~~~~~~~~~~~~~~~~~ Backports the Python 3 ``socket.makefile`` method for use with anything that wants to create a "fake" socket object. N)SocketIOrc Cst|hdkstd|fd|v}d|vp| }|s |s Jd|v}d} |r,| d7} |r2| d7} t|| } |jd7_|durDd }|d krKtj}|d krW|sUtd | S|rc|rct| | |} n|rlt| |} n |spJt| |} |rz| St | |||} || _ | S) z: Backport of ``socket.makefile`` from Python 3.5. >brwz&invalid mode %r (only r, w, b allowed)rrrNrz!unbuffered streams must be binary) set ValueErrorr_makefile_refsioDEFAULT_BUFFER_SIZEBufferedRWPairBufferedReaderBufferedWriter TextIOWrappermode) selfr bufferingencodingerrorsnewlinewritingreadingbinaryrawmoderawbuffertextrE/usr/lib/python3/dist-packages/urllib3/packages/backports/makefile.pybackport_makefile s@   r!)rNNNN)__doc__r socketrr!rrrr s