Mercurial > repos > guerler > springsuite
comparison planemo/lib/python3.7/site-packages/urllib3/packages/backports/makefile.py @ 1:56ad4e20f292 draft
"planemo upload commit 6eee67778febed82ddd413c3ca40b3183a3898f1"
| author | guerler |
|---|---|
| date | Fri, 31 Jul 2020 00:32:28 -0400 |
| parents | |
| children |
comparison
equal
deleted
inserted
replaced
| 0:d30785e31577 | 1:56ad4e20f292 |
|---|---|
| 1 # -*- coding: utf-8 -*- | |
| 2 """ | |
| 3 backports.makefile | |
| 4 ~~~~~~~~~~~~~~~~~~ | |
| 5 | |
| 6 Backports the Python 3 ``socket.makefile`` method for use with anything that | |
| 7 wants to create a "fake" socket object. | |
| 8 """ | |
| 9 import io | |
| 10 | |
| 11 from socket import SocketIO | |
| 12 | |
| 13 | |
| 14 def backport_makefile( | |
| 15 self, mode="r", buffering=None, encoding=None, errors=None, newline=None | |
| 16 ): | |
| 17 """ | |
| 18 Backport of ``socket.makefile`` from Python 3.5. | |
| 19 """ | |
| 20 if not set(mode) <= {"r", "w", "b"}: | |
| 21 raise ValueError("invalid mode %r (only r, w, b allowed)" % (mode,)) | |
| 22 writing = "w" in mode | |
| 23 reading = "r" in mode or not writing | |
| 24 assert reading or writing | |
| 25 binary = "b" in mode | |
| 26 rawmode = "" | |
| 27 if reading: | |
| 28 rawmode += "r" | |
| 29 if writing: | |
| 30 rawmode += "w" | |
| 31 raw = SocketIO(self, rawmode) | |
| 32 self._makefile_refs += 1 | |
| 33 if buffering is None: | |
| 34 buffering = -1 | |
| 35 if buffering < 0: | |
| 36 buffering = io.DEFAULT_BUFFER_SIZE | |
| 37 if buffering == 0: | |
| 38 if not binary: | |
| 39 raise ValueError("unbuffered streams must be binary") | |
| 40 return raw | |
| 41 if reading and writing: | |
| 42 buffer = io.BufferedRWPair(raw, raw, buffering) | |
| 43 elif reading: | |
| 44 buffer = io.BufferedReader(raw, buffering) | |
| 45 else: | |
| 46 assert writing | |
| 47 buffer = io.BufferedWriter(raw, buffering) | |
| 48 if binary: | |
| 49 return buffer | |
| 50 text = io.TextIOWrapper(buffer, encoding, errors, newline) | |
| 51 text.mode = mode | |
| 52 return text |
