Pillow: Release Pillow 7.1.0 on April 1, 2020

Created on 13 Jan 2020  路  25Comments  路  Source: python-pillow/Pillow

Needs release notes:

Release Checklist

Main Release

Released quarterly on January 2nd, April 1st, July 1st and October 15th.

  • [x] Open a release ticket e.g. https://github.com/python-pillow/Pillow/issues/3154
  • [x] Develop and prepare release in master branch.
  • [x] Check Travis CI and AppVeyor CI to confirm passing tests in master branch.
  • [x] Check that all of the wheel builds Pillow Wheel Builder pass the tests in Travis CI.
  • [x] In compliance with PEP 440, update version identifier in src/PIL/_version.py
  • [x] Update CHANGES.rst.
  • [x] Run pre-release check via make release-test in a freshly cloned repo.
  • [x] Create branch and tag for release e.g.:
    bash git branch 5.2.x git tag 5.2.0 git push --all git push --tags
  • [x] Create source distributions e.g.:
    bash make sdist
  • [x] Create binary distributions
  • [x] Upload all binaries and source distributions e.g. twine upload dist/Pillow-5.2.0*
  • [x] Create a new release on GitHub
  • [x] In compliance with PEP 440, increment and append .dev0 to version identifier in src/PIL/_version.py

Binary Distributions

Windows

Mac and Linux

  • [x] Use the Pillow Wheel Builder:
    bash git clone https://github.com/python-pillow/pillow-wheels cd pillow-wheels ./update-pillow-tag.sh [[release tag]]
  • [x] Download distributions from the Pillow Wheel Builder container.
    bash wget -m -A 'Pillow-<VERSION>-*' \ http://a365fff413fe338398b6-1c8a9b3114517dc5fe17b7c3f8c63a43.r19.cf2.rackcdn.com

Publicize Release

Documentation

Release

Most helpful comment

Thanks @hugovk for all the work

All 25 comments

It looks like #4243 already has release notes: https://github.com/python-pillow/Pillow/pull/4243/files#diff-0c5b427c97dabcccc312ee49882ffb0c

Hi @cgohlke, please could we have Windows binaries for 7.2.0? Thank you!

Oops, I did the wrong one. I'll delete it and push the correct one.

Thanks, wrong 7.2.0 removed and 7.1.0 pushed.

https://twitter.com/PythonPillow/status/1245384454614528007

Please could someone else pin it? I could tweet via Tweetdeck, but can't log in with the password I have to pin it.

7.1.1 Point Release

Released as needed for security, installation or critical bug fixes.

  • [x] Make necessary changes in master branch.
  • [x] Update CHANGES.rst.
  • [x] Check out release branch e.g.:
    bash git checkout -t remotes/origin/5.2.x
  • [x] Cherry pick individual commits from master branch to release branch e.g. 5.2.x.
  • [x] Check Travis CI to confirm passing tests in release branch e.g. 5.2.x.
  • [x] In compliance with PEP 440, update version identifier in src/PIL/_version.py
  • [x] Run pre-release check via make release-test.
  • [x] Create tag for release e.g.:
    bash git tag 5.2.1 git push --tags
  • [x] Create source distributions e.g.:
    bash make sdist
  • [x] Create binary distributions
  • [x] Upload all binaries and source distributions e.g. twine upload dist/Pillow-5.2.1*
  • [x] Create a new release on GitHub

Binary Distributions

Windows

Mac and Linux

  • [x] Use the Pillow Wheel Builder:
    bash git clone https://github.com/python-pillow/pillow-wheels cd pillow-wheels ./update-pillow-tag.sh [[release tag]]
  • [x] Download distributions from the Pillow Wheel Builder container.
    bash wget -m -A 'Pillow-<VERSION>-*' \ http://a365fff413fe338398b6-1c8a9b3114517dc5fe17b7c3f8c63a43.r19.cf2.rackcdn.com

Publicize Release

Documentation

@cgohlke Hello again, please could we have Windows binaries for 7.1.1?

Downloaded, thanks!

Hmm "binary distributions" seems to have broken our packaging build. Sorry that I currently can't provide more detail as I need to do more digging later, but I'm going to have to pin 7.0.0 for now.

This is exactly the same problem when Psycopg2 2.7.x did this same move and so many people had trouble, they eventually had to release Psycopg2 2.8.x to "undo" this and have a separate binary release.

Not really too happy with this move, it always used to work.

Perhaps I need to do more digging and I'm misunderstanding this whole binary release thing, but something has changed with the included libz that dh_shlibdeps in our packaging is falling over on.

@robvdl There's not enough to go on there. Can you open a new issue, including details of what's failing, your platform and python version?

As we've had a nudge at https://github.com/python-pillow/Pillow/pull/4528#issuecomment-618694012 and looking at the issues linking to #4518 and #4528, there's a few projects blocked by the regression (eg. https://github.com/scikit-learn/scikit-learn/pull/16843), so let's do a new patch release.

I'll take care of it this weekend. (If I get time, I may do some of the initial commits today to check things are building.)

7.1.2 Point Release

Released as needed for security, installation or critical bug fixes.

  • [x] Make necessary changes in master branch.
  • [x] Update CHANGES.rst.
  • [x] Check out release branch e.g.:
    bash git checkout -t remotes/origin/5.2.x
  • [x] Cherry pick individual commits from master branch to release branch e.g. 5.2.x.

  • [x] Check GitHub Actions,
    Travis CI and
    AppVeyor to confirm
    passing tests in release branch e.g. 5.2.x.

  • [x] In compliance with PEP 440, update version identifier in src/PIL/_version.py
  • [x] Run pre-release check via make release-test.
  • [x] Create tag for release e.g.:
    bash git tag 5.2.1 git push git push --tags
  • [x] Create source distributions e.g.:
    bash make sdist
  • [x] Create binary distributions
  • [x] Upload all binaries and source distributions e.g. twine upload dist/Pillow-5.2.1*
  • [x] Create a new release on GitHub

Binary Distributions

Windows

Mac and Linux

  • [x] Use the Pillow Wheel Builder:
    bash git clone https://github.com/python-pillow/pillow-wheels cd pillow-wheels ./update-pillow-tag.sh [[release tag]]
  • [x] Download distributions from the Pillow Wheel Builder container.
    bash wget -m -A 'Pillow-<VERSION>-*' \ http://a365fff413fe338398b6-1c8a9b3114517dc5fe17b7c3f8c63a43.r19.cf2.rackcdn.com

Publicize Release

Documentation

Hello @cgohlke, please could we have Windows binaries for 7.1.2? Thank you!

(I double checked the version number this time :)

Apart from 2 x 3.7 Xenial jobs, the Pillow Wheel Builder is failed:

curl: (28) Failed to connect to tukaani.org port 443: Connection timed out

https://travis-ci.org/github/python-pillow/pillow-wheels/jobs/679354301

Yesterday's cron was fine:
https://travis-ci.org/github/python-pillow/pillow-wheels/jobs/679009363

Looks like it's from xz:

https://github.com/matthew-brett/multibuild/blob/2a3f785096d791a5cd07c4320a041e37a055be5c/library_builders.sh#L193-L195

Will try again later. (Tip: had to sign out and back into Travis to see the restart buttons.)

I downloaded xz 5.2.5 from SourceForge, added it to pillow-depends, and Travis is passing now.

I created https://github.com/python-pillow/pillow-wheels/pull/143 as a way to trigger another build, thinking that we couldn't access the restart buttons, but you figured out a way, cool.

All green now, thank you!

Not really important, but I get one test failure:

====================================================================== test session starts =======================================================================
platform win32 -- Python 3.8.2, pytest-5.4.1, py-1.8.1, pluggy-0.13.1 -- X:\Python38\python.exe
cachedir: .pytest_cache
hypothesis profile 'default' -> database=DirectoryBasedExampleDatabase('D:\\Build\\Pillow\\Pillow-7.1.2\\.hypothesis\\examples')
--------------------------------------------------------------------
Pillow 7.1.2
Python 3.8.2 (tags/v3.8.2:7b3ab59, Feb 25 2020, 23:03:10) [MSC v.1916 64 bit (AMD64)]
--------------------------------------------------------------------
Python modules loaded from X:\Python38\lib\site-packages\PIL
Binary modules loaded from X:\Python38\lib\site-packages\PIL
--------------------------------------------------------------------
--- PIL CORE support ok
--- TKINTER support ok
--- FREETYPE2 support ok
--- LITTLECMS2 support ok
--- WEBP support ok
--- WEBP Transparency support ok
--- WEBPMUX support ok
--- WEBP Animation support ok
--- JPEG support ok
--- OPENJPEG (JPEG2000) support ok
--- ZLIB (PNG/ZIP) support ok
--- LIBTIFF support ok
--- RAQM (Bidirectional Text) support ok
*** LIBIMAGEQUANT (Quantization method) support not installed
*** XCB (X protocol) support not installed
--------------------------------------------------------------------

rootdir: D:\Build\Pillow\Pillow-7.1.2, inifile: setup.cfg
plugins: hypothesis-5.10.4, palladium-1.2.2, cov-2.8.1, forked-1.1.3, xdist-1.31.0
collected 1456 items

Tests/test_000_sanity.py::test_sanity PASSED                                                                                                                [  0%]
<snip>
Tests/test_webp_leaks.py::TestWebPLeaks::test_leak_load SKIPPED                                                                                             [100%]

============================================================================ FAILURES ============================================================================
_______________________________________________________________________ test_load_set_dpi ________________________________________________________________________

    def test_load_set_dpi():
        with Image.open("Tests/images/drawing.wmf") as im:
            assert im.size == (82, 82)

            if hasattr(Image.core, "drawwmf"):
                im.load(144)
                assert im.size == (164, 164)

                with Image.open("Tests/images/drawing_wmf_ref_144.png") as expected:
>                   assert_image_similar(im, expected, 2.0)

Tests\test_file_wmf.py:69:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Tests\helper.py:140: in assert_image_similar
    raise e
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

a = <PIL.Image.Image image mode=RGB size=164x164 at 0x21B0019A4F0>, b = <PIL.PngImagePlugin.PngImageFile image mode=RGB size=164x164 at 0x21B0019A1F0>
epsilon = 2.0, msg = None

    def assert_image_similar(a, b, epsilon, msg=None):
        assert a.mode == b.mode, msg or "got mode {!r}, expected {!r}".format(
            a.mode, b.mode
        )
        assert a.size == b.size, msg or "got size {!r}, expected {!r}".format(
            a.size, b.size
        )

        a, b = convert_to_comparable(a, b)

        diff = 0
        for ach, bch in zip(a.split(), b.split()):
            chdiff = ImageMath.eval("abs(a - b)", a=ach, b=bch).convert("L")
            diff += sum(i * num for i, num in enumerate(chdiff.histogram()))

        ave_diff = diff / (a.size[0] * a.size[1])
        try:
>           assert epsilon >= ave_diff, (
                msg or ""
            ) + " average pixel value difference %.4f > epsilon %.4f" % (ave_diff, epsilon)
E           AssertionError:  average pixel value difference 2.0669 > epsilon 2.0000
E           assert 2.0 >= 2.0668500892325996

Tests\helper.py:130: AssertionError
---------------------------------------------------------------------- Captured stdout call ----------------------------------------------------------------------
STREAM b'IHDR' 16 13
STREAM b'IDAT' 41 1152
----------------------------------------------------------------------- Captured log call ------------------------------------------------------------------------
DEBUG    PIL.PngImagePlugin:PngImagePlugin.py:153 STREAM b'IHDR' 16 13
DEBUG    PIL.PngImagePlugin:PngImagePlugin.py:153 STREAM b'IDAT' 41 1152
======================================================================== warnings summary ========================================================================
Tests/test_file_wmf.py::test_load_raw
Tests/test_file_wmf.py::test_load_raw
Tests/test_file_wmf.py::test_load_set_dpi
  X:\Python38\lib\site-packages\PIL\WmfImagePlugin.py:51: DeprecationWarning: PY_SSIZE_T_CLEAN will be required for '#' formats
    Image.core.drawwmf(im.fp.read(), im.size, self.bbox),

Tests/test_imagewin.py::TestImageWinDib::test_dib_frombytes_tobytes_roundtrip
  X:\Python38\lib\site-packages\PIL\ImageWin.py:178: DeprecationWarning: PY_SSIZE_T_CLEAN will be required for '#' formats
    return self.image.frombytes(buffer)

-- Docs: https://docs.pytest.org/en/latest/warnings.html
==================================================================== short test summary info =====================================================================
SKIPPED [1] Tests\test_file_gif.py:221: Netpbm not available
SKIPPED [1] Tests\test_file_gif.py:232: Netpbm not available
SKIPPED [1] Tests\test_file_icns.py:28: Requires macOS
SKIPPED [1] Tests\test_file_icns.py:41: Requires macOS
SKIPPED [1] Tests\test_file_msp.py:58: Extra image files not installed
SKIPPED [1] Tests\test_file_msp.py:72: Even More Extra image files not installed
SKIPPED [1] D:\Build\Pillow\Pillow-7.1.2\Tests\helper.py:170: Palm P image is wrong
SKIPPED [1] Tests\test_file_png.py:650: Requires Unix or macOS
SKIPPED [1] Tests\test_file_sun.py:35: Extra image files not installed
SKIPPED [1] Tests\test_font_leaks.py:20: Requires Unix or macOS
SKIPPED [1] Tests\test_font_leaks.py:31: Requires Unix or macOS
SKIPPED [1] Tests\test_image.py:166: Test requires opening tempfile twice
SKIPPED [1] D:\Build\Pillow\Pillow-7.1.2\Tests\test_image_quantize.py:25: libimagequant support not available
SKIPPED [1] D:\Build\Pillow\Pillow-7.1.2\Tests\test_imagedraw.py:784: failing
SKIPPED [2] Tests\test_imagefont.py:483: requires Unix or macOS
SKIPPED [2] Tests\test_imagefont.py:524: requires Unix or macOS
SKIPPED [1] Tests\test_imagegrab.py:25: requires XCB
SKIPPED [1] Tests\test_imagegrab.py:48: requires XCB
SKIPPED [1] Tests\test_imageshow.py:40: Only run on CIs; hangs on Windows on GitHub Actions
SKIPPED [1] Tests\test_map.py:11: Win32 does not call map_buffer
SKIPPED [1] Tests\test_map.py:29: Win32 does not call map_buffer
SKIPPED [1] Tests\test_shell_injection.py:24: Requires Unix or macOS
SKIPPED [1] Tests\test_shell_injection.py:33: Requires Unix or macOS
SKIPPED [1] Tests\test_shell_injection.py:38: Netpbm not available
SKIPPED [1] Tests\test_shell_injection.py:44: Netpbm not available
SKIPPED [1] Tests\test_webp_leaks.py:16: Requires Unix or macOS
==================================================== 1 failed, 1427 passed, 28 skipped, 4 warnings in 28.06s =====================================================

Thanks for the binaries, uploaded and released with all the others at https://pypi.org/project/Pillow/7.1.2/

And I've created a new issue to track the new failure: https://github.com/python-pillow/Pillow/issues/4583

Thanks @hugovk for all the work

Was this page helpful?
0 / 5 - 0 ratings