diff --git a/docs/installation.rst b/docs/installation.rst index 334bc1638..a53d22a43 100644 --- a/docs/installation.rst +++ b/docs/installation.rst @@ -325,64 +325,93 @@ Prerequisites are installed on **Fedora 23** with:: Platform Support ---------------- -Current platform support for Pillow. Binary distributions are contributed for -each release on a volunteer basis, but the source should compile and run -everywhere platform support is listed. In general, we aim to support all -current versions of Linux, macOS, and Windows. +Current platform support for Pillow. Binary distributions are +contributed for each release on a volunteer basis, but the source +should compile and run everywhere platform support is listed. In +general, we aim to support all current versions of Linux, macOS, and +Windows. Note that Android is not currently supported, but there have +been reports of success. + +Continuous Integration Targets +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +These platforms are built and tested for every change. + ++----------------------------------+-------------------------------+-----------------------+ +|**Operating system** |**Tested Python versions** |**Tested Architecture**| ++----------------------------------+-------------------------------+-----------------------+ +| Alpine | 2.7 |x86-64 | ++----------------------------------+-------------------------------+-----------------------+ +| Arch | 2.7 |x86-64 | ++----------------------------------+-------------------------------+-----------------------+ +| Debian Stretch | 2.7 |x86 | ++----------------------------------+-------------------------------+-----------------------+ +| Mac OS X 10.10 Yosemite* | 2.7, 3.3, 3.4, 3.5, 3.6 |x86-64 | ++----------------------------------+-------------------------------+-----------------------+ +| Ubuntu Linux 16.04 LTS | 2.7 |x86-64 | ++----------------------------------+-------------------------------+-----------------------+ +| Ubuntu Linux 14.04 LTS | 2.7, 3.3, 3.4, 3.5, 3.6, |x86-64 | +| | pypy, pypy3 | | +| | | | +| | 2.7 |x86 | ++----------------------------------+-------------------------------+-----------------------+ +| Ubuntu Linux 12.04 LTS | 2.7 |x86-64 | ++----------------------------------+-------------------------------+-----------------------+ +| Windows Server 2012 R2 | 2.7,3.3,3.4 |x86, x86-64 | ++----------------------------------+-------------------------------+-----------------------+ + +* Mac OS X CI is not run for every commit, but is run for every release. + +Other Platforms +^^^^^^^^^^^^^^^ + +These platforms have been reported to work at the versions mentioned. .. note:: Contributors please test Pillow on your platform then update this document and send a pull request. -+----------------------------------+-------------+------------------------------+--------------------------------+-----------------------+ -|**Operating system** |**Supported**|**Tested Python versions** |**Latest tested Pillow version**|**Tested processors** | -+----------------------------------+-------------+------------------------------+--------------------------------+-----------------------+ -| macOS 10.12 Sierra |Yes | 3.4,3.5,3.6 | 4.0.0 |x86-64 | -+----------------------------------+-------------+------------------------------+--------------------------------+-----------------------+ -| Mac OS X 10.11 El Capitan |Yes | 2.7,3.3,3.4,3.5 | 3.4.1 |x86-64 | -+----------------------------------+-------------+------------------------------+--------------------------------+-----------------------+ -| Mac OS X 10.10 Yosemite |Yes | 2.7,3.3,3.4 | 3.0.0 |x86-64 | -+----------------------------------+-------------+------------------------------+--------------------------------+-----------------------+ -| Mac OS X 10.9 Mavericks |Yes | 2.7,3.2,3.3,3.4 | 3.0.0 |x86-64 | -+----------------------------------+-------------+------------------------------+--------------------------------+-----------------------+ -| Mac OS X 10.8 Mountain Lion |Yes | 2.6,2.7,3.2,3.3 | |x86-64 | -+----------------------------------+-------------+------------------------------+--------------------------------+-----------------------+ -| Redhat Linux 6 |Yes | 2.6 | |x86 | -+----------------------------------+-------------+------------------------------+--------------------------------+-----------------------+ -| CentOS 6.3 |Yes | 2.7,3.3 | |x86 | -+----------------------------------+-------------+------------------------------+--------------------------------+-----------------------+ -| Fedora 23 |Yes | 2.7,3.4 | 3.1.0 |x86-64 | -+----------------------------------+-------------+------------------------------+--------------------------------+-----------------------+ -| Ubuntu Linux 14.04 LTS |Yes | 2.7,3.4 | 3.1.0 |x86-64 | -+----------------------------------+-------------+------------------------------+--------------------------------+-----------------------+ -| Ubuntu Linux 12.04 LTS |Yes | 2.6,2.7,3.2,3.3,3.4,3.5 | 3.4.1 (CI target) |x86,x86-64 | -| | | PyPy5.3.1,PyPy3 v2.4.0 | | | -| | | | | | -| | | 2.7,3.2 | 3.4.1 |ppc | -+----------------------------------+-------------+------------------------------+--------------------------------+-----------------------+ -| Ubuntu Linux 10.04 LTS |Yes | 2.6 | 2.3.0 |x86,x86-64 | -+----------------------------------+-------------+------------------------------+--------------------------------+-----------------------+ -| Debian 8.2 Jessie |Yes | 2.7,3.4 | 3.1.0 |x86-64 | -+----------------------------------+-------------+------------------------------+--------------------------------+-----------------------+ -| Raspian Jessie |Yes | 2.7,3.4 | 3.1.0 |arm | -+----------------------------------+-------------+------------------------------+--------------------------------+-----------------------+ -| Gentoo Linux |Yes | 2.7,3.2 | 2.1.0 |x86-64 | -+----------------------------------+-------------+------------------------------+--------------------------------+-----------------------+ -| Arch Linux |Yes | 2.7,3.6 | 4.0.0 |x86,x86-64 | -+----------------------------------+-------------+------------------------------+--------------------------------+-----------------------+ -| FreeBSD 10.2 |Yes | 2.7,3.4 | 3.1.0 |x86-64 | -+----------------------------------+-------------+------------------------------+--------------------------------+-----------------------+ -| Windows 8.1 Pro |Yes | 2.6,2.7,3.2,3.3,3.4 | 2.4.0 |x86,x86-64 | -+----------------------------------+-------------+------------------------------+--------------------------------+-----------------------+ -| Windows 8 Pro |Yes | 2.6,2.7,3.2,3.3,3.4a3 | 2.2.0 |x86,x86-64 | -+----------------------------------+-------------+------------------------------+--------------------------------+-----------------------+ -| Windows 7 Pro |Yes | 2.7,3.2,3.3 | 3.4.1 |x86-64 | -+----------------------------------+-------------+------------------------------+--------------------------------+-----------------------+ -| Windows Server 2012 R2 |Yes | 2.7,3.3,3.4 | 3.4.1 (CI target) |x86,x86-64 | -+----------------------------------+-------------+------------------------------+--------------------------------+-----------------------+ -| Windows Server 2008 R2 Enterprise|Yes | 3.3 | |x86-64 | -+----------------------------------+-------------+------------------------------+--------------------------------+-----------------------+ ++----------------------------------+------------------------------+--------------------------------+-----------------------+ +|**Operating system** |**Tested Python versions** |**Latest tested Pillow version**|**Tested processors** | ++----------------------------------+------------------------------+--------------------------------+-----------------------+ +| macOS 10.12 Sierra | 3.4,3.5,3.6 | 4.0.0 |x86-64 | ++----------------------------------+------------------------------+--------------------------------+-----------------------+ +| Mac OS X 10.11 El Capitan | 2.7,3.3,3.4,3.5 | 4.1.0 |x86-64 | ++----------------------------------+------------------------------+--------------------------------+-----------------------+ +| Mac OS X 10.9 Mavericks | 2.7,3.2,3.3,3.4 | 3.0.0 |x86-64 | ++----------------------------------+------------------------------+--------------------------------+-----------------------+ +| Mac OS X 10.8 Mountain Lion | 2.6,2.7,3.2,3.3 | |x86-64 | ++----------------------------------+------------------------------+--------------------------------+-----------------------+ +| Redhat Linux 6 | 2.6 | |x86 | ++----------------------------------+------------------------------+--------------------------------+-----------------------+ +| CentOS 6.3 | 2.7,3.3 | |x86 | ++----------------------------------+------------------------------+--------------------------------+-----------------------+ +| Fedora 23 | 2.7,3.4 | 3.1.0 |x86-64 | ++----------------------------------+------------------------------+--------------------------------+-----------------------+ +| Ubuntu Linux 12.04 LTS | 2.6,2.7,3.2,3.3,3.4,3.5 | 3.4.1 |x86,x86-64 | +| | PyPy5.3.1,PyPy3 v2.4.0 | | | +| | | | | +| | 2.7,3.2 | 3.4.1 |ppc | ++----------------------------------+------------------------------+--------------------------------+-----------------------+ +| Ubuntu Linux 10.04 LTS | 2.6 | 2.3.0 |x86,x86-64 | ++----------------------------------+------------------------------+--------------------------------+-----------------------+ +| Debian 8.2 Jessie | 2.7,3.4 | 3.1.0 |x86-64 | ++----------------------------------+------------------------------+--------------------------------+-----------------------+ +| Raspian Jessie | 2.7,3.4 | 3.1.0 |arm | ++----------------------------------+------------------------------+--------------------------------+-----------------------+ +| Gentoo Linux | 2.7,3.2 | 2.1.0 |x86-64 | ++----------------------------------+------------------------------+--------------------------------+-----------------------+ +| FreeBSD 10.2 | 2.7,3.4 | 3.1.0 |x86-64 | ++----------------------------------+------------------------------+--------------------------------+-----------------------+ +| Windows 8.1 Pro | 2.6,2.7,3.2,3.3,3.4 | 2.4.0 |x86,x86-64 | ++----------------------------------+------------------------------+--------------------------------+-----------------------+ +| Windows 8 Pro | 2.6,2.7,3.2,3.3,3.4a3 | 2.2.0 |x86,x86-64 | ++----------------------------------+------------------------------+--------------------------------+-----------------------+ +| Windows 7 Pro | 2.7,3.2,3.3 | 3.4.1 |x86-64 | ++----------------------------------+------------------------------+--------------------------------+-----------------------+ +| Windows Server 2008 R2 Enterprise| 3.3 | |x86-64 | ++----------------------------------+------------------------------+--------------------------------+-----------------------+ Old Versions ------------ diff --git a/docs/reference/Image.rst b/docs/reference/Image.rst index ac8b6f506..6dcc816e5 100644 --- a/docs/reference/Image.rst +++ b/docs/reference/Image.rst @@ -88,10 +88,13 @@ Registering plugins ignore them. .. autofunction:: register_open +.. autofunction:: register_decoder .. autofunction:: register_mime .. autofunction:: register_save +.. autofunction:: register_encoder .. autofunction:: register_extension + The Image Class --------------- @@ -135,6 +138,7 @@ ITU-R 709, using the D65 luminant) to the CIE XYZ color space: .. automethod:: PIL.Image.Image.putpixel .. automethod:: PIL.Image.Image.quantize .. automethod:: PIL.Image.Image.resize +.. automethod:: PIL.Image.Image.remap_palette .. automethod:: PIL.Image.Image.rotate .. automethod:: PIL.Image.Image.save .. automethod:: PIL.Image.Image.seek diff --git a/docs/releasenotes/4.1.0.rst b/docs/releasenotes/4.1.0.rst new file mode 100644 index 000000000..b57385cdb --- /dev/null +++ b/docs/releasenotes/4.1.0.rst @@ -0,0 +1,86 @@ +4.1.0 +----- + +Removed Deprecated Items +======================== + +Several deprecated items have been removed. + +* Support for spaces in tiff kwargs the parameters for 'x resolution', 'y + resolution', 'resolution unit', and 'date time' has been + removed. Underscores should be used instead. + +* The methods :py:meth:`PIL.ImageDraw.ImageDraw.setink`, + :py:meth:`PIL.ImageDraw.ImageDraw.setfill`, and + :py:meth:`PIL.ImageDraw.ImageDraw.setfont` have been removed. + + +Closing Files When Opening Images +================================= + +The file handling when opening images has been overhauled. Previously, +there Pillow would attempt to close some, but not all image formats +after loading the image data, but not all. Now, the following behavior +is specified: + +* For images where an open file is passed in, it is the + responsibility of the calling code to close the file. + +* For images where Pillow opens the file and the file is known to have + only one frame, the file is closed after loading. + +* If the file has more than one frame, or if it can't be determined, + then the file is left open to permit seeking to subsequent + frames. It will be closed, eventually, in the ``close`` or + ``__del__`` methods + +* If the image is memory mapped, then we can't close the mapping to + the underlying file until we are done with the image. The mapping + will be closed in the ``close`` or ``__del__`` method. + + +Changes to GIF Handling When Saving +=================================== + +The :py:class:`PIL.GifImagePlugin` code has been refactored to fix the flow when +saving images. There are two external changes that arise from this: + +* An :py:class:`PIL.ImagePalette.ImagePalette` object is now accepted + as a specified palette argument in :py:meth:`PIL.Image.Image.save()`. + +* The image to be saved is no longer modified in place by any of the + operations of the save function. Previously it was modified when + optimizing the image palette. + +This refactor fixed some bugs with palette handling when saving +multiple frame GIFs. + +New Method: Image.remap_palette +=============================== + +The method :py:meth:`PIL.Image.Image.remap_palette()` has been +added. This method was hoisted from the GifImagePlugin code used to +optimize the palette. + +Added Decoder Registry and Support for Python Based Decoders +============================================================ + +There is now a decoder registry similar to the image plugin +registries. Image plugins can register a decoder, and it will be +called when the decoding is requested. This allows for the creation of +pure Python decoders. While the python decoders will not be as fast as +their C based counterparts, they may be easier and quicker to develop +or safer to run. + +Tests +===== + +Many tests have been added, including correctness tests for image +formats that have been previously untested. + +We are now running automated tests in Docker containers against more +Linux versions than are provided on TravisCi, which is currently +Ubuntu 14.04 x64. This Pillow release is tested on 64 bit Alpine, +Arch, Ubuntu 12.04 and 16.04, and 32 bit Debian Stretch and Ubuntu +14.04. This also covers a wider range of dependency versions than are +provided on Travis natively. diff --git a/docs/releasenotes/index.rst b/docs/releasenotes/index.rst index e32bf7e40..1dd6eb8af 100644 --- a/docs/releasenotes/index.rst +++ b/docs/releasenotes/index.rst @@ -6,6 +6,7 @@ Release Notes .. toctree:: :maxdepth: 2 + 4.1.0 4.0.0 3.4.0 3.3.2