Kaydet (Commit) ffa198c6 authored tarafından Matthias Bussonnier's avatar Matthias Bussonnier Kaydeden (comit) Gregory P. Smith

bpo-33487: improve BZ2File Deprecation and documentation. (GH-6785)

Emit warning when None passed explicitly, list Python version since
deprecation in warning message and docs.
üst f0195798
...@@ -81,7 +81,7 @@ All of the classes in this module may safely be accessed from multiple threads. ...@@ -81,7 +81,7 @@ All of the classes in this module may safely be accessed from multiple threads.
If *filename* is a file object (rather than an actual file name), a mode of If *filename* is a file object (rather than an actual file name), a mode of
``'w'`` does not truncate the file, and is instead equivalent to ``'a'``. ``'w'`` does not truncate the file, and is instead equivalent to ``'a'``.
The *buffering* argument is ignored. Its use is deprecated. The *buffering* argument is ignored. Its use is deprecated since Python 3.0.
If *mode* is ``'w'`` or ``'a'``, *compresslevel* can be a number between If *mode* is ``'w'`` or ``'a'``, *compresslevel* can be a number between
``1`` and ``9`` specifying the level of compression: ``1`` produces the ``1`` and ``9`` specifying the level of compression: ``1`` produces the
...@@ -109,6 +109,10 @@ All of the classes in this module may safely be accessed from multiple threads. ...@@ -109,6 +109,10 @@ All of the classes in this module may safely be accessed from multiple threads.
.. versionadded:: 3.3 .. versionadded:: 3.3
.. deprecated:: 3.0
The keyword argument *buffering* was deprecated and is now ignored.
.. versionchanged:: 3.1 .. versionchanged:: 3.1
Support for the :keyword:`with` statement was added. Support for the :keyword:`with` statement was added.
......
...@@ -24,6 +24,8 @@ _MODE_READ = 1 ...@@ -24,6 +24,8 @@ _MODE_READ = 1
# Value 2 no longer used # Value 2 no longer used
_MODE_WRITE = 3 _MODE_WRITE = 3
_sentinel = object()
class BZ2File(_compression.BaseStream): class BZ2File(_compression.BaseStream):
...@@ -36,7 +38,7 @@ class BZ2File(_compression.BaseStream): ...@@ -36,7 +38,7 @@ class BZ2File(_compression.BaseStream):
returned as bytes, and data to be written should be given as bytes. returned as bytes, and data to be written should be given as bytes.
""" """
def __init__(self, filename, mode="r", buffering=None, compresslevel=9): def __init__(self, filename, mode="r", buffering=_sentinel, compresslevel=9):
"""Open a bzip2-compressed file. """Open a bzip2-compressed file.
If filename is a str, bytes, or PathLike object, it gives the If filename is a str, bytes, or PathLike object, it gives the
...@@ -47,7 +49,7 @@ class BZ2File(_compression.BaseStream): ...@@ -47,7 +49,7 @@ class BZ2File(_compression.BaseStream):
'x' for creating exclusively, or 'a' for appending. These can 'x' for creating exclusively, or 'a' for appending. These can
equivalently be given as 'rb', 'wb', 'xb', and 'ab'. equivalently be given as 'rb', 'wb', 'xb', and 'ab'.
buffering is ignored. Its use is deprecated. buffering is ignored since Python 3.0. Its use is deprecated.
If mode is 'w', 'x' or 'a', compresslevel can be a number between 1 If mode is 'w', 'x' or 'a', compresslevel can be a number between 1
and 9 specifying the level of compression: 1 produces the least and 9 specifying the level of compression: 1 produces the least
...@@ -63,9 +65,11 @@ class BZ2File(_compression.BaseStream): ...@@ -63,9 +65,11 @@ class BZ2File(_compression.BaseStream):
self._closefp = False self._closefp = False
self._mode = _MODE_CLOSED self._mode = _MODE_CLOSED
if buffering is not None: if buffering is not _sentinel:
warnings.warn("Use of 'buffering' argument is deprecated", warnings.warn("Use of 'buffering' argument is deprecated and ignored"
DeprecationWarning) "since Python 3.0.",
DeprecationWarning,
stacklevel=2)
if not (1 <= compresslevel <= 9): if not (1 <= compresslevel <= 9):
raise ValueError("compresslevel must be between 1 and 9") raise ValueError("compresslevel must be between 1 and 9")
......
BZ2file now emit a DeprecationWarning when buffering=None is passed, the
deprecation message and documentation also now explicitely state it is
deprecated since 3.0.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment