| Backports the Python 3 ``socket.makefile`` method for use with anything that |
| wants to create a "fake" socket object. |
| from socket import SocketIO |
| self, mode="r", buffering=None, encoding=None, errors=None, newline=None |
| Backport of ``socket.makefile`` from Python 3.5. |
| if not set(mode) <= {"r", "w", "b"}: |
| raise ValueError("invalid mode %r (only r, w, b allowed)" % (mode,)) |
| reading = "r" in mode or not writing |
| assert reading or writing |
| raw = SocketIO(self, rawmode) |
| buffering = io.DEFAULT_BUFFER_SIZE |
| raise ValueError("unbuffered streams must be binary") |
| buffer = io.BufferedRWPair(raw, raw, buffering) |
| buffer = io.BufferedReader(raw, buffering) |
| buffer = io.BufferedWriter(raw, buffering) |
| text = io.TextIOWrapper(buffer, encoding, errors, newline) |