mirror of
https://github.com/python/cpython.git
synced 2025-08-16 14:50:43 +00:00
Issue #8796: codecs.open() calls the builtin open() function instead of using
StreamReaderWriter. Deprecate StreamReader, StreamWriter, StreamReaderWriter, StreamRecoder and EncodedFile() of the codec module. Use the builtin open() function or io.TextIOWrapper instead.
This commit is contained in:
parent
c556e10b94
commit
98fe1a0c3b
4 changed files with 148 additions and 59 deletions
|
@ -345,6 +345,8 @@ class StreamWriter(Codec):
|
|||
The set of allowed parameter values can be extended via
|
||||
register_error.
|
||||
"""
|
||||
import warnings
|
||||
warnings.warn('use io.TextIOWrapper', DeprecationWarning, stacklevel=2)
|
||||
self.stream = stream
|
||||
self.errors = errors
|
||||
|
||||
|
@ -416,6 +418,8 @@ class StreamReader(Codec):
|
|||
The set of allowed parameter values can be extended via
|
||||
register_error.
|
||||
"""
|
||||
import warnings
|
||||
warnings.warn('use io.TextIOWrapper', DeprecationWarning, stacklevel=2)
|
||||
self.stream = stream
|
||||
self.errors = errors
|
||||
self.bytebuffer = b""
|
||||
|
@ -846,7 +850,7 @@ class StreamRecoder:
|
|||
|
||||
### Shortcuts
|
||||
|
||||
def open(filename, mode='rb', encoding=None, errors='strict', buffering=1):
|
||||
def open(filename, mode='r', encoding=None, errors=None, buffering=1):
|
||||
|
||||
""" Open an encoded file using the given mode and return
|
||||
a wrapped version providing transparent encoding/decoding.
|
||||
|
@ -877,18 +881,13 @@ def open(filename, mode='rb', encoding=None, errors='strict', buffering=1):
|
|||
parameter.
|
||||
|
||||
"""
|
||||
if encoding is not None and \
|
||||
'b' not in mode:
|
||||
# Force opening of the file in binary mode
|
||||
mode = mode + 'b'
|
||||
file = builtins.open(filename, mode, buffering)
|
||||
if encoding is None:
|
||||
return file
|
||||
info = lookup(encoding)
|
||||
srw = StreamReaderWriter(file, info.streamreader, info.streamwriter, errors)
|
||||
# Add attributes to simplify introspection
|
||||
srw.encoding = encoding
|
||||
return srw
|
||||
if encoding is not None:
|
||||
return builtins.open(filename, mode, buffering,
|
||||
encoding, errors, newline='')
|
||||
else:
|
||||
if 'b' not in mode:
|
||||
mode = mode + 'b'
|
||||
return builtins.open(filename, mode, buffering, encoding, errors)
|
||||
|
||||
def EncodedFile(file, data_encoding, file_encoding=None, errors='strict'):
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue