mirror of
				https://github.com/python-pillow/Pillow.git
				synced 2025-11-04 01:47:47 +03:00 
			
		
		
		
	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:
		
						commit
						bc31502183
					
				| 
						 | 
				
			
			@ -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
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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
 | 
			
		||||
~~~~~~~~~
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										61
									
								
								docs/releasenotes/9.0.0.rst
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										61
									
								
								docs/releasenotes/9.0.0.rst
									
									
									
									
									
										Normal 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
 | 
			
		||||
| 
						 | 
				
			
			@ -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
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -45,45 +45,28 @@ 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(
 | 
			
		||||
                    "Image categories are deprecated and will be removed in Pillow 10 "
 | 
			
		||||
                    "(2023-01-02). Use is_animated instead.",
 | 
			
		||||
                    DeprecationWarning,
 | 
			
		||||
                    stacklevel=2,
 | 
			
		||||
                )
 | 
			
		||||
                return categories[name]
 | 
			
		||||
        categories = {"NORMAL": 0, "SEQUENCE": 1, "CONTAINER": 2}
 | 
			
		||||
        if name in categories:
 | 
			
		||||
            warnings.warn(
 | 
			
		||||
                "Image categories are deprecated and will be removed in Pillow 10 "
 | 
			
		||||
                "(2023-01-02). Use is_animated instead.",
 | 
			
		||||
                DeprecationWarning,
 | 
			
		||||
                stacklevel=2,
 | 
			
		||||
            )
 | 
			
		||||
            return categories[name]
 | 
			
		||||
        raise AttributeError(f"module '{__name__}' has no attribute '{name}'")
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
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)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# --------------------------------------------------------------------
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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]
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue
	
	Block a user