Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Release Pillow 7.1.0 on April 1, 2020 #4354

Closed
23 tasks done
hugovk opened this issue Jan 13, 2020 · 25 comments
Closed
23 tasks done

Release Pillow 7.1.0 on April 1, 2020 #4354

hugovk opened this issue Jan 13, 2020 · 25 comments
Assignees
Labels
Projects
Milestone

Comments

@hugovk
Copy link
Member

hugovk commented Jan 13, 2020

Needs release notes:

Release Checklist

Main Release

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

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

Binary Distributions

Windows

Mac and Linux

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

Publicize Release

Documentation

@hugovk hugovk added the Release label Jan 13, 2020
@hugovk hugovk added this to the 7.1.0 milestone Jan 13, 2020
@hugovk hugovk self-assigned this Jan 13, 2020
@hugovk hugovk added this to New Issues in Pillow via automation Jan 13, 2020
@radarhere radarhere pinned this issue Mar 1, 2020
@nulano
Copy link
Contributor

nulano commented Apr 1, 2020

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

@hugovk
Copy link
Member Author

hugovk commented Apr 1, 2020

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

@hugovk hugovk moved this from New Issues to In progress in Pillow Apr 1, 2020
@hugovk
Copy link
Member Author

hugovk commented Apr 1, 2020

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

@hugovk
Copy link
Member Author

hugovk commented Apr 1, 2020

Thanks, wrong 7.2.0 removed and 7.1.0 pushed.

@hugovk
Copy link
Member Author

hugovk commented Apr 1, 2020

@hugovk
Copy link
Member Author

hugovk commented Apr 1, 2020

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.

@hugovk
Copy link
Member Author

hugovk commented Apr 2, 2020

Looks like we'll need a 7.1.1 for the #4509 regression, fixed by #4512.

@hugovk
Copy link
Member Author

hugovk commented Apr 2, 2020

7.1.1 Point Release

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

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

Binary Distributions

Windows

Mac and Linux

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

Publicize Release

Documentation

@hugovk
Copy link
Member Author

hugovk commented Apr 2, 2020

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

@python-pillow python-pillow deleted a comment from cgohlke Apr 2, 2020
@hugovk
Copy link
Member Author

hugovk commented Apr 2, 2020

Downloaded, thanks!

@hugovk
Copy link
Member Author

hugovk commented Apr 6, 2020

Do we need a 7.1.2 for the #4518 regression, fixed by #4528?

@robvdl

This comment has been minimized.

@wiredfool

This comment has been minimized.

@hugovk
Copy link
Member Author

hugovk commented Apr 24, 2020

As we've had a nudge at #4528 (comment) and looking at the issues linking to #4518 and #4528, there's a few projects blocked by the regression (eg. scikit-learn/scikit-learn#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.)

@hugovk
Copy link
Member Author

hugovk commented Apr 24, 2020

7.1.2 Point Release

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

  • Make necessary changes in master branch.

  • Update CHANGES.rst.

  • Check out release branch e.g.:

    git checkout -t remotes/origin/5.2.x
  • Cherry pick individual commits from master branch to release branch e.g. 5.2.x.

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

  • In compliance with PEP 440, update version identifier in src/PIL/_version.py

  • Run pre-release check via make release-test.

  • Create tag for release e.g.:

    git tag 5.2.1
    git push
    git push --tags
  • Create source distributions e.g.:

    make sdist
  • Create binary distributions

  • Upload all binaries and source distributions e.g. twine upload dist/Pillow-5.2.1*

  • Create a new release on GitHub

Binary Distributions

Windows

Mac and Linux

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

Publicize Release

Documentation

@hugovk
Copy link
Member Author

hugovk commented Apr 25, 2020

Release notes added in f6358a6.

@hugovk
Copy link
Member Author

hugovk commented Apr 25, 2020

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

(I double checked the version number this time :)

@hugovk

This comment has been minimized.

@radarhere

This comment has been minimized.

@hugovk

This comment has been minimized.

@cgohlke
Copy link
Contributor

cgohlke commented Apr 25, 2020

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 =====================================================

@hugovk
Copy link
Member Author

hugovk commented Apr 25, 2020

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: #4583

@hugovk
Copy link
Member Author

hugovk commented Apr 25, 2020

@radarhere
Copy link
Member

Thanks @hugovk for all the work

Pillow automation moved this from In progress to Closed May 1, 2020
@radarhere radarhere unpinned this issue May 1, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
Pillow
  
Closed
Development

No branches or pull requests

6 participants