mirror of
https://github.com/python/cpython.git
synced 2025-08-04 08:59:19 +00:00
bpo-32236: open() emits RuntimeWarning if buffering=1 for binary mode (GH-4842)
If buffering=1 is specified for open() in binary mode, it is silently treated as buffering=-1 (i.e., the default buffer size). Coupled with the fact that line buffering is always supported in Python 2, such behavior caused several issues (e.g., bpo-10344, bpo-21332). Warn that line buffering is not supported if open() is called with binary mode and buffering=1.
This commit is contained in:
parent
4acf6c9d4b
commit
a2670565d8
11 changed files with 88 additions and 28 deletions
|
@ -198,6 +198,11 @@ def open(file, mode="r", buffering=-1, encoding=None, errors=None,
|
|||
raise ValueError("binary mode doesn't take an errors argument")
|
||||
if binary and newline is not None:
|
||||
raise ValueError("binary mode doesn't take a newline argument")
|
||||
if binary and buffering == 1:
|
||||
import warnings
|
||||
warnings.warn("line buffering (buffering=1) isn't supported in binary "
|
||||
"mode, the default buffer size will be used",
|
||||
RuntimeWarning, 2)
|
||||
raw = FileIO(file,
|
||||
(creating and "x" or "") +
|
||||
(reading and "r" or "") +
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue