Index: third_party/google-endpoints/urllib3/packages/backports/makefile.py |
diff --git a/third_party/google-endpoints/urllib3/packages/backports/makefile.py b/third_party/google-endpoints/urllib3/packages/backports/makefile.py |
new file mode 100644 |
index 0000000000000000000000000000000000000000..75b80dcf8465cc6d2ce5692eaaa62b60555db60e |
--- /dev/null |
+++ b/third_party/google-endpoints/urllib3/packages/backports/makefile.py |
@@ -0,0 +1,53 @@ |
+# -*- coding: utf-8 -*- |
+""" |
+backports.makefile |
+~~~~~~~~~~~~~~~~~~ |
+ |
+Backports the Python 3 ``socket.makefile`` method for use with anything that |
+wants to create a "fake" socket object. |
+""" |
+import io |
+ |
+from socket import SocketIO |
+ |
+ |
+def backport_makefile(self, mode="r", buffering=None, encoding=None, |
+ errors=None, newline=None): |
+ """ |
+ Backport of ``socket.makefile`` from Python 3.5. |
+ """ |
+ if not set(mode) <= set(["r", "w", "b"]): |
+ raise ValueError( |
+ "invalid mode %r (only r, w, b allowed)" % (mode,) |
+ ) |
+ writing = "w" in mode |
+ reading = "r" in mode or not writing |
+ assert reading or writing |
+ binary = "b" in mode |
+ rawmode = "" |
+ if reading: |
+ rawmode += "r" |
+ if writing: |
+ rawmode += "w" |
+ raw = SocketIO(self, rawmode) |
+ self._makefile_refs += 1 |
+ if buffering is None: |
+ buffering = -1 |
+ if buffering < 0: |
+ buffering = io.DEFAULT_BUFFER_SIZE |
+ if buffering == 0: |
+ if not binary: |
+ raise ValueError("unbuffered streams must be binary") |
+ return raw |
+ if reading and writing: |
+ buffer = io.BufferedRWPair(raw, raw, buffering) |
+ elif reading: |
+ buffer = io.BufferedReader(raw, buffering) |
+ else: |
+ assert writing |
+ buffer = io.BufferedWriter(raw, buffering) |
+ if binary: |
+ return buffer |
+ text = io.TextIOWrapper(buffer, encoding, errors, newline) |
+ text.mode = mode |
+ return text |