Changelog
0.38.4
- Fixed ``PKG-INFO`` conversion in ``bdist_wheel`` mangling UTF-8 header values in
``METADATA`` (PR by Anderson Bravalheri)
0.38.3
- Fixed install failure when used with ``--no-binary``, reported on Ubuntu 20.04, by
removing ``setup_requires`` from ``setup.cfg``
0.38.2
- Fixed regression introduced in v0.38.1 which broke parsing of wheel file names with
multiple platform tags
0.38.1
- Removed install dependency on setuptools
- The future-proof fix in 0.36.0 for converting PyPy's SOABI into a abi tag was
faulty. Fixed so that future changes in the SOABI will not change the tag.
0.38.0
- Dropped support for Python < 3.7
- Updated vendored ``packaging`` to 21.3
- Replaced all uses of ``distutils`` with ``setuptools``
- The handling of ``license_files`` (including glob patterns and default
values) is now delegated to ``setuptools>=57.0.0`` (466).
The package dependencies were updated to reflect this change.
- Fixed potential DoS attack via the ``WHEEL_INFO_RE`` regular expression
- Fixed ``ValueError: ZIP does not support timestamps before 1980`` when using
``SOURCE_DATE_EPOCH=0`` or when on-disk timestamps are earlier than 1980-01-01. Such
timestamps are now changed to the minimum value before packaging.
0.37.1
- Fixed ``wheel pack`` duplicating the ``WHEEL`` contents when the build number has changed (415)
- Fixed parsing of file names containing commas in ``RECORD`` (PR by Hood Chatham)
0.37.0
- Added official Python 3.10 support
- Updated vendored ``packaging`` library to v20.9
0.36.2
- Updated vendored ``packaging`` library to v20.8
- Fixed wheel sdist missing ``LICENSE.txt``
- Don't use default ``macos/arm64`` deployment target in calculating the
platform tag for fat binaries (PR by Ronald Oussoren)
0.36.1
- Fixed ``AssertionError`` when ``MACOSX_DEPLOYMENT_TARGET`` was set to ``11``
(PR by Grzegorz Bokota and François-Xavier Coudert)
- Fixed regression introduced in 0.36.0 on Python 2.7 when a custom generator
name was passed as unicode (Scikit-build)
(``TypeError: 'unicode' does not have the buffer interface``)
0.36.0
- Added official Python 3.9 support
- Updated vendored ``packaging`` library to v20.7
- Switched to always using LF as line separator when generating ``WHEEL`` files
(on Windows, CRLF was being used instead)
- The ABI tag is taken from the sysconfig SOABI value. On PyPy the SOABI value
is ``pypy37-pp73`` which is not compliant with PEP 3149, as it should have
both the API tag and the platform tag. This change future-proofs any change
in PyPy's SOABI tag to make sure only the ABI tag is used by wheel.
- Fixed regression and test for ``bdist_wheel --plat-name``. It was ignored for
C extensions in v0.35, but the regression was not detected by tests.
0.35.1
- Replaced install dependency on ``packaging`` with a vendored copy of its
``tags`` module
- Fixed ``bdist_wheel`` not working on FreeBSD due to mismatching platform tag
name (it was not being converted to lowercase)
0.35.0
- Switched to the packaging_ library for computing wheel tags
- Fixed a resource leak in ``WheelFile.open()`` (PR by Jon Dufresne)
.. _packaging: https://pypi.org/project/packaging/
0.34.2
- Fixed installation of ``wheel`` from sdist on environments without Unicode
file name support
0.34.1
- Fixed installation of ``wheel`` from sdist which was broken due to a chicken
and egg problem with PEP 517 and setuptools_scm
0.34.0
- Dropped Python 3.4 support
- Added automatic platform tag detection for macOS binary wheels
(PR by Grzegorz Bokota)
- Added the ``--compression=`` option to the ``bdist_wheel`` command
- Fixed PyPy tag generation to work with the updated semantics (328)
- Updated project packaging and testing configuration for :pep:`517`
- Moved the contents of setup.py to setup.cfg
- Fixed duplicate RECORD file when using ``wheel pack`` on Windows
- Fixed bdist_wheel failing at cleanup on Windows with a read-only source tree
- Fixed ``wheel pack`` not respecting the existing build tag in ``WHEEL``
- Switched the project to use the "src" layout
- Switched to setuptools_scm_ for versioning
.. _setuptools_scm: https://github.com/pypa/setuptools_scm/
0.33.6
- Fixed regression from 0.33.5 that broke building binary wheels against the
limited ABI
- Fixed egg2wheel compatibility with the future release of Python 3.10
(PR by Anthony Sottile)
0.33.5
- Don't add the ``m`` ABI flag to wheel names on Python 3.8 (PR by rdb)
- Updated ``MANIFEST.in`` to include many previously omitted files in the sdist
0.33.4
- Reverted PR 289 (adding directory entries to the wheel file) due to
incompatibility with ``distlib.wheel``
0.33.3
- Fixed wheel build failures on some systems due to all attributes being
preserved (PR by Matt Wozniski)
0.33.2
- Fixed empty directories missing from the wheel (PR by Jason R. Coombs)
0.33.1
- Fixed the ``--build-number`` option for ``wheel pack`` not being applied
0.33.0
- Added the ``--build-number`` option to the ``wheel pack`` command
- Fixed bad shebangs sneaking into wheels
- Fixed documentation issue with ``wheel pack`` erroneously being called
``wheel repack``
- Fixed filenames with "bad" characters (like commas) not being quoted in
``RECORD`` (PR by Paul Moore)
- Sort requirements extras to ensure deterministic builds
(PR by PoncinMatthieu)
- Forced ``inplace = False`` when building a C extension for the wheel
Changelog
9.3.0
------------------
- Limit SAMPLESPERPIXEL to avoid runtime DOS 6700
[wiredfool]
- Initialize libtiff buffer when saving 6699
[radarhere]
- Inline fname2char to fix memory leak 6329
[nulano]
- Fix memory leaks related to text features 6330
[nulano]
- Use double quotes for version check on old CPython on Windows 6695
[hugovk]
- Remove backup implementation of Round for Windows platforms 6693
[cgohlke]
- Fixed set_variation_by_name offset 6445
[radarhere]
- Fix malloc in _imagingft.c:font_setvaraxes 6690
[cgohlke]
- Release Python GIL when converting images using matrix operations 6418
[hmaarrfk]
- Added ExifTags enums 6630
[radarhere]
- Do not modify previous frame when calculating delta in PNG 6683
[radarhere]
- Added support for reading BMP images with RLE4 compression 6674
[npjg, radarhere]
- Decode JPEG compressed BLP1 data in original mode 6678
[radarhere]
- Added GPS TIFF tag info 6661
[radarhere]
- Added conversion between RGB/RGBA/RGBX and LAB 6647
[radarhere]
- Do not attempt normalization if mode is already normal 6644
[radarhere]
- Fixed seeking to an L frame in a GIF 6576
[radarhere]
- Consider all frames when selecting mode for PNG save_all 6610
[radarhere]
- Don't reassign crc on ChunkStream close 6627
[wiredfool, radarhere]
- Raise a warning if NumPy failed to raise an error during conversion 6594
[radarhere]
- Show all frames in ImageShow 6611
[radarhere]
- Allow FLI palette chunk to not be first 6626
[radarhere]
- If first GIF frame has transparency for RGB_ALWAYS loading strategy, use RGBA mode 6592
[radarhere]
- Round box position to integer when pasting embedded color 6517
[radarhere, nulano]
- Removed EXIF prefix when saving WebP 6582
[radarhere]
- Pad IM palette to 768 bytes when saving 6579
[radarhere]
- Added DDS BC6H reading 6449
[ShadelessFox, REDxEYE, radarhere]
- Added support for opening WhiteIsZero 16-bit integer TIFF images 6642
[JayWiz, radarhere]
- Raise an error when allocating translucent color to RGB palette 6654
[jsbueno, radarhere]
- Added reading of TIFF child images 6569
[radarhere]
- Improved ImageOps palette handling 6596
[PososikTeam, radarhere]
- Defer parsing of palette into colors 6567
[radarhere]
- Apply transparency to P images in ImageTk.PhotoImage 6559
[radarhere]
- Use rounding in ImageOps contain() and pad() 6522
[bibinhashley, radarhere]
- Fixed GIF remapping to palette with duplicate entries 6548
[radarhere]
- Allow remap_palette() to return an image with less than 256 palette entries 6543
[radarhere]
- Corrected BMP and TGA palette size when saving 6500
[radarhere]
- Do not call load() before draft() in Image.thumbnail 6539
[radarhere]
- Copy palette when converting from P to PA 6497
[radarhere]
- Allow RGB and RGBA values for PA image putpixel 6504
[radarhere]
- Removed support for tkinter in PyPy before Python 3.6 6551
[nulano]
- Do not use CCITTFaxDecode filter if libtiff is not available 6518
[radarhere]
- Fallback to not using mmap if buffer is not large enough 6510
[radarhere]
- Fixed writing bytes as ASCII tag 6493
[radarhere]
- Open 1 bit EPS in mode 1 6499
[radarhere]
- Removed support for tkinter before Python 1.5.2 6549
[radarhere]
- Allow default ImageDraw font to be set 6484
[radarhere, hugovk]
- Save 1 mode PDF using CCITTFaxDecode filter 6470
[radarhere]
- Added support for RGBA PSD images 6481
[radarhere]
- Parse orientation from XMP tag contents 6463
[bigcat88, radarhere]
- Added support for reading ATI1/ATI2 (BC4/BC5) DDS images 6457
[REDxEYE, radarhere]
- Do not clear GIF tile when checking number of frames 6455
[radarhere]
- Support saving multiple MPO frames 6444
[radarhere]
- Do not double quote Pillow version for setuptools >= 60 6450
[radarhere]
- Added ABGR BMP mask mode 6436
[radarhere]
- Fixed PSDraw rectangle 6429
[radarhere]
- Raise ValueError if PNG sRGB chunk is truncated 6431
[radarhere]
- Handle missing Python executable in ImageShow on macOS 6416
[bryant1410, radarhere]