diff options
author | Nick Coghlan <ncoghlan@gmail.com> | 2014-02-04 12:11:18 (GMT) |
---|---|---|
committer | Nick Coghlan <ncoghlan@gmail.com> | 2014-02-04 12:11:18 (GMT) |
commit | a9b15241c6bdf8ac71f1dc598b7c01a20518b6a7 (patch) | |
tree | 4a72ac89949ce222ffcad240b450913b0351e1ad /Lib/_pyio.py | |
parent | 1ea4e4174ba4051d74aedb9bdc0c020d88e3588c (diff) | |
download | cpython-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.py | 5 |
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: |