Merge pull request #5776 from radarhere/removals

Removed deprecated PILLOW_VERSION, Image.show command parameter, Image._showxv and ImageFile.raise_ioerror
This commit is contained in:
mergify[bot] 2021-10-18 07:00:31 +00:00 committed by GitHub
commit bc31502183
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
8 changed files with 118 additions and 225 deletions

View File

@ -6,8 +6,7 @@ import tempfile
import pytest
import PIL
from PIL import Image, ImageDraw, ImagePalette, ImageShow, UnidentifiedImageError
from PIL import Image, ImageDraw, ImagePalette, UnidentifiedImageError
from .helper import (
assert_image_equal,
@ -626,22 +625,6 @@ class TestImage:
expected = Image.new(mode, (100, 100), color)
assert_image_equal(im.convert(mode), expected)
def test_showxv_deprecation(self):
class TestViewer(ImageShow.Viewer):
def show_image(self, image, **options):
return True
viewer = TestViewer()
ImageShow.register(viewer, -1)
im = Image.new("RGB", (50, 50), "white")
with pytest.warns(DeprecationWarning):
Image._showxv(im)
# Restore original state
ImageShow._viewers.pop(0)
def test_no_resource_warning_on_save(self, tmp_path):
# https://github.com/python-pillow/Pillow/issues/835
# Arrange
@ -813,35 +796,6 @@ class TestImage:
with pytest.warns(DeprecationWarning):
assert Image.CONTAINER == 2
@pytest.mark.parametrize(
"test_module",
[PIL, Image],
)
def test_pillow_version(self, test_module):
with pytest.warns(DeprecationWarning):
assert test_module.PILLOW_VERSION == PIL.__version__
with pytest.warns(DeprecationWarning):
str(test_module.PILLOW_VERSION)
with pytest.warns(DeprecationWarning):
assert int(test_module.PILLOW_VERSION[0]) >= 7
with pytest.warns(DeprecationWarning):
assert test_module.PILLOW_VERSION < "9.9.0"
with pytest.warns(DeprecationWarning):
assert test_module.PILLOW_VERSION <= "9.9.0"
with pytest.warns(DeprecationWarning):
assert test_module.PILLOW_VERSION != "7.0.0"
with pytest.warns(DeprecationWarning):
assert test_module.PILLOW_VERSION >= "7.0.0"
with pytest.warns(DeprecationWarning):
assert test_module.PILLOW_VERSION > "7.0.0"
@pytest.mark.parametrize(
"path",
[
@ -877,18 +831,6 @@ class TestImage:
except OSError as e:
assert str(e) == "buffer overrun when reading image file"
def test_show_deprecation(self, monkeypatch):
monkeypatch.setattr(Image, "_show", lambda *args, **kwargs: None)
im = Image.new("RGB", (50, 50), "white")
with pytest.warns(None) as raised:
im.show()
assert not raised
with pytest.warns(DeprecationWarning):
im.show(command="mock")
class MockEncoder:
pass

View File

@ -94,12 +94,6 @@ class TestImageFile:
assert_image_equal(im1, im2)
def test_raise_ioerror(self):
with pytest.raises(IOError):
with pytest.warns(DeprecationWarning) as record:
ImageFile.raise_ioerror(1)
assert len(record) == 1
def test_raise_oserror(self):
with pytest.raises(OSError):
ImageFile.raise_oserror(1)

View File

@ -25,43 +25,6 @@ vulnerability introduced in FreeType 2.6 (:cve:`CVE-2020-15999`).
.. _2.10.4: https://sourceforge.net/projects/freetype/files/freetype2/2.10.4/
Image.show command parameter
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.. deprecated:: 7.2.0
The ``command`` parameter will be removed in Pillow 9.0.0 (2022-01-02).
Use a subclass of :py:class:`.ImageShow.Viewer` instead.
Image._showxv
~~~~~~~~~~~~~
.. deprecated:: 7.2.0
``Image._showxv`` will be removed in Pillow 9.0.0 (2022-01-02).
Use :py:meth:`.Image.Image.show` instead. If custom behaviour is required, use
:py:func:`.ImageShow.register` to add a custom :py:class:`.ImageShow.Viewer` class.
ImageFile.raise_ioerror
~~~~~~~~~~~~~~~~~~~~~~~
.. deprecated:: 7.2.0
``IOError`` was merged into ``OSError`` in Python 3.3.
So, ``ImageFile.raise_ioerror`` will be removed in Pillow 9.0.0 (2022-01-02).
Use ``ImageFile.raise_oserror`` instead.
PILLOW_VERSION constant
~~~~~~~~~~~~~~~~~~~~~~~
.. deprecated:: 5.2.0
``PILLOW_VERSION`` will be removed in Pillow 9.0.0 (2022-01-02).
Use ``__version__`` instead.
It was initially removed in Pillow 7.0.0, but brought back in 7.1.0 to give projects
more time to upgrade.
Tk/Tcl 8.4
~~~~~~~~~~
@ -109,6 +72,45 @@ Removed features
Deprecated features are only removed in major releases after an appropriate
period of deprecation has passed.
PILLOW_VERSION constant
~~~~~~~~~~~~~~~~~~~~~~~
.. deprecated:: 5.2.0
.. versionremoved:: 9.0.0
Use ``__version__`` instead.
It was initially removed in Pillow 7.0.0, but temporarily brought back in 7.1.0
to give projects more time to upgrade.
Image.show command parameter
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.. deprecated:: 7.2.0
.. versionremoved:: 9.0.0
The ``command`` parameter has been removed. Use a subclass of
:py:class:`.ImageShow.Viewer` instead.
Image._showxv
~~~~~~~~~~~~~
.. deprecated:: 7.2.0
.. versionremoved:: 9.0.0
Use :py:meth:`.Image.Image.show` instead. If custom behaviour is required, use
:py:func:`.ImageShow.register` to add a custom :py:class:`.ImageShow.Viewer` class.
ImageFile.raise_ioerror
~~~~~~~~~~~~~~~~~~~~~~~
.. deprecated:: 7.2.0
.. versionremoved:: 9.0.0
``IOError`` was merged into ``OSError`` in Python 3.3.
So, ``ImageFile.raise_ioerror`` has been removed.
Use ``ImageFile.raise_oserror`` instead.
im.offset
~~~~~~~~~

View File

@ -0,0 +1,61 @@
9.0.0
-----
Backwards Incompatible Changes
==============================
PILLOW_VERSION constant
^^^^^^^^^^^^^^^^^^^^^^^
``PILLOW_VERSION`` has been removed. Use ``__version__`` instead.
Image.show command parameter
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
The ``command`` parameter has been removed. Use a subclass of
:py:class:`PIL.ImageShow.Viewer` instead.
Image._showxv
~~~~~~~~~~~~~
``Image._showxv`` has been removed. Use :py:meth:`~PIL.Image.Image.show`
instead. If custom behaviour is required, use :py:meth:`~PIL.ImageShow.register` to add
a custom :py:class:`~PIL.ImageShow.Viewer` class.
ImageFile.raise_ioerror
~~~~~~~~~~~~~~~~~~~~~~~
``IOError`` was merged into ``OSError`` in Python 3.3. So, ``ImageFile.raise_ioerror``
has been removed. Use ``ImageFile.raise_oserror`` instead.
API Changes
===========
TODO
^^^^
TODO
API Additions
=============
TODO
^^^^
TODO
Security
========
TODO
^^^^
TODO
Other Changes
=============
TODO
^^^^
TODO

View File

@ -14,6 +14,7 @@ expected to be backported to earlier versions.
.. toctree::
:maxdepth: 2
9.0.0
8.4.0
8.3.2
8.3.1

View File

@ -45,26 +45,15 @@ except ImportError:
ElementTree = None
# VERSION was removed in Pillow 6.0.0.
# PILLOW_VERSION is deprecated and will be removed in a future release.
# PILLOW_VERSION was removed in Pillow 9.0.0.
# Use __version__ instead.
from . import (
ImageMode,
TiffTags,
UnidentifiedImageError,
__version__,
_plugins,
_raise_version_warning,
)
from . import ImageMode, TiffTags, UnidentifiedImageError, __version__, _plugins
from ._binary import i32le
from ._util import deferred_error, isPath
if sys.version_info >= (3, 7):
def __getattr__(name):
if name == "PILLOW_VERSION":
_raise_version_warning()
return __version__
else:
categories = {"NORMAL": 0, "SEQUENCE": 1, "CONTAINER": 2}
if name in categories:
warnings.warn(
@ -78,12 +67,6 @@ if sys.version_info >= (3, 7):
else:
from . import PILLOW_VERSION
# Silence warning
assert PILLOW_VERSION
# categories
NORMAL = 0
SEQUENCE = 1
@ -2264,7 +2247,7 @@ class Image:
if frame != 0:
raise EOFError
def show(self, title=None, command=None):
def show(self, title=None):
"""
Displays this image. This method is mainly intended for debugging purposes.
@ -2284,14 +2267,7 @@ class Image:
:param title: Optional title to use for the image window, where possible.
"""
if command is not None:
warnings.warn(
"The command parameter is deprecated and will be removed in Pillow 9 "
"(2022-01-02). Use a subclass of ImageShow.Viewer instead.",
DeprecationWarning,
)
_show(self, title=title, command=command)
_show(self, title=title)
def split(self):
"""
@ -3250,22 +3226,9 @@ def register_encoder(name, encoder):
def _show(image, **options):
options["_internal_pillow"] = True
_showxv(image, **options)
def _showxv(image, title=None, **options):
from . import ImageShow
if "_internal_pillow" in options:
del options["_internal_pillow"]
else:
warnings.warn(
"_showxv is deprecated and will be removed in Pillow 9 (2022-01-02). "
"Use Image.show instead.",
DeprecationWarning,
)
ImageShow.show(image, title, **options)
ImageShow.show(image, **options)
# --------------------------------------------------------------------

View File

@ -30,7 +30,6 @@
import io
import struct
import sys
import warnings
from . import Image
from ._util import isPath
@ -67,15 +66,6 @@ def raise_oserror(error):
raise OSError(message + " when reading image file")
def raise_ioerror(error):
warnings.warn(
"raise_ioerror is deprecated and will be removed in Pillow 9 (2022-01-02). "
"Use raise_oserror instead.",
DeprecationWarning,
)
return raise_oserror(error)
def _tilesort(t):
# sort on offset
return t[2]

View File

@ -13,72 +13,12 @@ Use PIL.__version__ for this Pillow version.
;-)
"""
import sys
import warnings
from . import _version
# VERSION was removed in Pillow 6.0.0.
__version__ = _version.__version__
# PILLOW_VERSION is deprecated and will be removed in a future release.
# PILLOW_VERSION was removed in Pillow 9.0.0.
# Use __version__ instead.
def _raise_version_warning():
warnings.warn(
"PILLOW_VERSION is deprecated and will be removed in Pillow 9 (2022-01-02). "
"Use __version__ instead.",
DeprecationWarning,
stacklevel=3,
)
if sys.version_info >= (3, 7):
def __getattr__(name):
if name == "PILLOW_VERSION":
_raise_version_warning()
return __version__
raise AttributeError(f"module '{__name__}' has no attribute '{name}'")
else:
class _Deprecated_Version(str):
def __str__(self):
_raise_version_warning()
return super().__str__()
def __getitem__(self, key):
_raise_version_warning()
return super().__getitem__(key)
def __eq__(self, other):
_raise_version_warning()
return super().__eq__(other)
def __ne__(self, other):
_raise_version_warning()
return super().__ne__(other)
def __gt__(self, other):
_raise_version_warning()
return super().__gt__(other)
def __lt__(self, other):
_raise_version_warning()
return super().__lt__(other)
def __ge__(self, other):
_raise_version_warning()
return super().__gt__(other)
def __le__(self, other):
_raise_version_warning()
return super().__lt__(other)
PILLOW_VERSION = _Deprecated_Version(__version__)
__version__ = _version.__version__
del _version