summaryrefslogtreecommitdiffstats
path: root/Lib/_pyio.py
diff options
context:
space:
mode:
authorNick Coghlan <ncoghlan@gmail.com>2014-02-04 12:11:18 (GMT)
committerNick Coghlan <ncoghlan@gmail.com>2014-02-04 12:11:18 (GMT)
commita9b15241c6bdf8ac71f1dc598b7c01a20518b6a7 (patch)
tree4a72ac89949ce222ffcad240b450913b0351e1ad /Lib/_pyio.py
parent1ea4e4174ba4051d74aedb9bdc0c020d88e3588c (diff)
downloadcpython-a9b15241c6bdf8ac71f1dc598b7c01a20518b6a7.zip
cpython-a9b15241c6bdf8ac71f1dc598b7c01a20518b6a7.tar.gz
cpython-a9b15241c6bdf8ac71f1dc598b7c01a20518b6a7.tar.bz2
Close #20404: blacklist non-text encodings in io.TextIOWrapper
- io.TextIOWrapper (and hence the open() builtin) now use the internal codec marking system added for issue #19619 - also tweaked the C code to only look up the encoding once, rather than multiple times - the existing output type checks remain in place to deal with unmarked third party codecs.
Diffstat (limited to 'Lib/_pyio.py')
-rw-r--r--Lib/_pyio.py5
1 files changed, 5 insertions, 0 deletions
diff --git a/Lib/_pyio.py b/Lib/_pyio.py
index 3961969..b04d23a 100644
--- a/Lib/_pyio.py
+++ b/Lib/_pyio.py
@@ -1503,6 +1503,11 @@ class TextIOWrapper(TextIOBase):
if not isinstance(encoding, str):
raise ValueError("invalid encoding: %r" % encoding)
+ if not codecs.lookup(encoding)._is_text_encoding:
+ msg = ("%r is not a text encoding; "
+ "use codecs.open() to handle arbitrary codecs")
+ raise LookupError(msg % encoding)
+
if errors is None:
errors = "strict"
else: