Skip to content

Release Pillow 6.0.0 on April 1, 2019 #3618

Description

@radarhere

Release notes needed:

Main release checklist

  • Open a release ticket
  • 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 6.0.x
    $ git tag 6.0.0
    $ git push --all
    $ git push --tags
  • Create source distributions e.g.:
    $ make sdist

Binary Distributions

Windows

Mac and Linux

  git clone https://github.com/python-pillow/pillow-wheels
  cd pillow-wheels
  ./update-pillow-tag.sh 6.0.0
  wget -m -A 'Pillow-6.0.0*' \
  http://a365fff413fe338398b6-1c8a9b3114517dc5fe17b7c3f8c63a43.r19.cf2.rackcdn.com

Publicize Release

Documentation

Activity

  1. added this to the 6.0.0 milestone on Jan 28, 2019
  2. pinned this issue on Feb 18, 2019
  3. radarhere commented on Mar 23, 2019

    @radarhere
    MemberAuthor
  4. aclark4life commented on Mar 30, 2019

    @aclark4life
    Member

    Almost time for Pillow 6!! 🎉

  5. radarhere commented on Apr 1, 2019

    @radarhere
    MemberAuthor

    Okay, @cgohlke, if you would be able to create Windows binaries?

  6. cgohlke commented on Apr 1, 2019

    @cgohlke
    Contributor

    I do get a reproducible access violation fault on Python 3.x, e.g.:

    ================================================= test session starts =================================================
    platform win32 -- Python 3.6.8, pytest-4.4.0, py-1.8.0, pluggy-0.9.0 -- X:\Python36\python.exe
    cachedir: .pytest_cache
    hypothesis profile 'default' -> database=DirectoryBasedExampleDatabase('D:\\Build\\Pillow\\Pillow-6.0.0\\.hypothesis\\examples')
    rootdir: D:\Build\Pillow\Pillow-6.0.0
    plugins: xdist-1.27.0, pep8-1.0.6, forked-1.0.2, faulthandler-1.5.0, cov-2.6.1, palladium-1.2.1.1, hypothesis-4.14.0
    collected 1316 items
    
    Tests/test_000_sanity.py::TestSanity::test_sanity PASSED                                                         [  0%]
    Tests/test_binary.py::TestBinary::test_big_endian PASSED                                                         [  0%]
    <snip>
    Tests/test_image_convert.py::TestImageConvert::test_rgba_p PASSED                                                [ 54%]
    Tests/test_image_convert.py::TestImageConvert::test_sanity Windows fatal exception: access violation
    
    Current thread 0x0000470c (most recent call first):
      File "X:\Python36\lib\site-packages\PIL\Image.py", line 1027 in convert
      File "D:\Build\Pillow\Pillow-6.0.0\Tests\test_image_convert.py", line 11 in convert
      File "D:\Build\Pillow\Pillow-6.0.0\Tests\test_image_convert.py", line 21 in test_sanity
      File "X:\Python36\lib\unittest\case.py", line 605 in run
      File "D:\Build\Pillow\Pillow-6.0.0\Tests\helper.py", line 58 in run
      File "X:\Python36\lib\unittest\case.py", line 653 in __call__
      File "X:\Python36\lib\site-packages\_pytest\unittest.py", line 221 in runtest
      File "X:\Python36\lib\site-packages\_pytest\runner.py", line 123 in pytest_runtest_call
      File "X:\Python36\lib\site-packages\pluggy\callers.py", line 187 in _multicall
      File "X:\Python36\lib\site-packages\pluggy\manager.py", line 62 in <lambda>
      File "X:\Python36\lib\site-packages\pluggy\manager.py", line 68 in _hookexec
      File "X:\Python36\lib\site-packages\pluggy\hooks.py", line 289 in __call__
      File "X:\Python36\lib\site-packages\_pytest\runner.py", line 198 in <lambda>
      File "X:\Python36\lib\site-packages\_pytest\runner.py", line 226 in from_call
      File "X:\Python36\lib\site-packages\_pytest\runner.py", line 198 in call_runtest_hook
      File "X:\Python36\lib\site-packages\_pytest\runner.py", line 173 in call_and_report
      File "X:\Python36\lib\site-packages\_pytest\runner.py", line 93 in runtestprotocol
      File "X:\Python36\lib\site-packages\_pytest\runner.py", line 78 in pytest_runtest_protocol
      File "X:\Python36\lib\site-packages\pluggy\callers.py", line 187 in _multicall
      File "X:\Python36\lib\site-packages\pluggy\manager.py", line 62 in <lambda>
      File "X:\Python36\lib\site-packages\pluggy\manager.py", line 68 in _hookexec
      File "X:\Python36\lib\site-packages\pluggy\hooks.py", line 289 in __call__
      File "X:\Python36\lib\site-packages\_pytest\main.py", line 270 in pytest_runtestloop
      File "X:\Python36\lib\site-packages\pluggy\callers.py", line 187 in _multicall
      File "X:\Python36\lib\site-packages\pluggy\manager.py", line 62 in <lambda>
      File "X:\Python36\lib\site-packages\pluggy\manager.py", line 68 in _hookexec
      File "X:\Python36\lib\site-packages\pluggy\hooks.py", line 289 in __call__
      File "X:\Python36\lib\site-packages\_pytest\main.py", line 249 in _main
      File "X:\Python36\lib\site-packages\_pytest\main.py", line 209 in wrap_session
      File "X:\Python36\lib\site-packages\_pytest\main.py", line 242 in pytest_cmdline_main
      File "X:\Python36\lib\site-packages\pluggy\callers.py", line 187 in _multicall
      File "X:\Python36\lib\site-packages\pluggy\manager.py", line 62 in <lambda>
      File "X:\Python36\lib\site-packages\pluggy\manager.py", line 68 in _hookexec
      File "X:\Python36\lib\site-packages\pluggy\hooks.py", line 289 in __call__
      File "X:\Python36\lib\site-packages\_pytest\config\__init__.py", line 79 in main
      File "X:\Python36\lib\site-packages\pytest.py", line 89 in <module>
      File "X:\Python36\lib\runpy.py", line 85 in _run_code
      File "X:\Python36\lib\runpy.py", line 193 in _run_module_as_main
    
  7. cgohlke commented on Apr 1, 2019

    @cgohlke
    Contributor

    test_sanity passes when removing the "PA" mode from the matrix.

    Then there's another segfault later:

    Tests/test_qt_image_fromqpixmap.py::TestFromQPixmap::test_sanity_1 PASSED                                                   [ 98%]
    Tests/test_qt_image_fromqpixmap.py::TestFromQPixmap::test_sanity_l PASSED                                                   [ 98%]
    Tests/test_qt_image_fromqpixmap.py::TestFromQPixmap::test_sanity_p PASSED                                                   [ 98%]
    Tests/test_qt_image_fromqpixmap.py::TestFromQPixmap::test_sanity_rgb PASSED                                                 [ 98%]
    Tests/test_qt_image_fromqpixmap.py::TestFromQPixmap::test_sanity_rgba PASSED                                                [ 98%]Windows fatal exception: access violation
    
    Current thread 0x00004344 (most recent call first):
      File "X:\Python37\lib\site-packages\_pytest\runner.py", line 305 in _callfinalizers
      File "X:\Python37\lib\site-packages\_pytest\runner.py", line 315 in _teardown_with_finalization
      File "X:\Python37\lib\site-packages\_pytest\runner.py", line 297 in _pop_and_teardown
      File "X:\Python37\lib\site-packages\_pytest\runner.py", line 340 in _teardown_towards
      File "X:\Python37\lib\site-packages\_pytest\runner.py", line 332 in teardown_exact
      File "X:\Python37\lib\site-packages\_pytest\runner.py", line 137 in pytest_runtest_teardown
      File "X:\Python37\lib\site-packages\pluggy\callers.py", line 187 in _multicall
      File "X:\Python37\lib\site-packages\pluggy\manager.py", line 62 in <lambda>
      File "X:\Python37\lib\site-packages\pluggy\manager.py", line 68 in _hookexec
      File "X:\Python37\lib\site-packages\pluggy\hooks.py", line 289 in __call__
      File "X:\Python37\lib\site-packages\_pytest\runner.py", line 198 in <lambda>
      File "X:\Python37\lib\site-packages\_pytest\runner.py", line 226 in from_call
      File "X:\Python37\lib\site-packages\_pytest\runner.py", line 198 in call_runtest_hook
      File "X:\Python37\lib\site-packages\_pytest\runner.py", line 173 in call_and_report
      File "X:\Python37\lib\site-packages\_pytest\runner.py", line 94 in runtestprotocol
      File "X:\Python37\lib\site-packages\_pytest\runner.py", line 78 in pytest_runtest_protocol
      File "X:\Python37\lib\site-packages\pluggy\callers.py", line 187 in _multicall
      File "X:\Python37\lib\site-packages\pluggy\manager.py", line 62 in <lambda>
      File "X:\Python37\lib\site-packages\pluggy\manager.py", line 68 in _hookexec
      File "X:\Python37\lib\site-packages\pluggy\hooks.py", line 289 in __call__
      File "X:\Python37\lib\site-packages\_pytest\main.py", line 270 in pytest_runtestloop
      File "X:\Python37\lib\site-packages\pluggy\callers.py", line 187 in _multicall
      File "X:\Python37\lib\site-packages\pluggy\manager.py", line 62 in <lambda>
      File "X:\Python37\lib\site-packages\pluggy\manager.py", line 68 in _hookexec
      File "X:\Python37\lib\site-packages\pluggy\hooks.py", line 289 in __call__
      File "X:\Python37\lib\site-packages\_pytest\main.py", line 249 in _main
      File "X:\Python37\lib\site-packages\_pytest\main.py", line 209 in wrap_session
      File "X:\Python37\lib\site-packages\_pytest\main.py", line 242 in pytest_cmdline_main
      File "X:\Python37\lib\site-packages\pluggy\callers.py", line 187 in _multicall
      File "X:\Python37\lib\site-packages\pluggy\manager.py", line 62 in <lambda>
      File "X:\Python37\lib\site-packages\pluggy\manager.py", line 68 in _hookexec
      File "X:\Python37\lib\site-packages\pluggy\hooks.py", line 289 in __call__
      File "X:\Python37\lib\site-packages\_pytest\config\__init__.py", line 79 in main
      File "X:\Python37\lib\site-packages\pytest.py", line 89 in <module>
      File "X:\Python37\lib\runpy.py", line 85 in _run_code
      File "X:\Python37\lib\runpy.py", line 193 in _run_module_as_main
    
  8. hugovk commented on Apr 1, 2019

    @hugovk
    Member

    Any ideas why these aren't showing up on AppVeyor?

  9. cgohlke commented on Apr 1, 2019

    @cgohlke
    Contributor

    Any ideas why these aren't showing up on AppVeyor?

    I have heap verification enabled and Qt installed during testing.

  10. cgohlke commented on Apr 1, 2019

    @cgohlke
    Contributor

    The conversion P -> PA crashes at Convert.c#L986. I have not noticed this before because this is relatively recent code added in #3728.

    >	_imaging.cp37-win_amd64.pyd!p2pa(unsigned char * out=0x000001682941db80, const unsigned char * in=0x000001682938a000, int xsize=128, const unsigned char * palette=0x000001682938bbe7) Line 986	C
     	_imaging.cp37-win_amd64.pyd!frompalette(ImagingMemoryInstance * imOut=0x0000016829405fa0, ImagingMemoryInstance * imIn=0x000001682937dfa0, const char * mode=0x000001682745bd80) Line 1179	C
     	_imaging.cp37-win_amd64.pyd!convert(ImagingMemoryInstance * imOut=0x0000000000000000, ImagingMemoryInstance * imIn=0x000001682937dfa0, const char * mode=0x000001682745bd80, ImagingPaletteInstance * palette=0x0000000000000000, int dither=3) Line 1467	C
     	_imaging.cp37-win_amd64.pyd!ImagingConvert(ImagingMemoryInstance * imIn=0x000001682937dfa0, const char * mode=0x000001682745bd80, ImagingPaletteInstance * palette=0x0000000000000000, int dither=3) Line 1517	C
     	_imaging.cp37-win_amd64.pyd!_convert(ImagingObject * self=0x0000016829679fd0, _object * args=0x00000168296d90c8) Line 921	C
     	python37.dll!_PyMethodDef_RawFastCallKeywords(PyMethodDef * method=0x0000000000000000, _object * self=0x0000016829679fd0, _object * const * args=0x0000016828dedfb0, __int64 nargs=2, _object * kwnames) Line 694	C
     	[Inline Frame] python37.dll!_PyMethodDescr_FastCallKeywords(_object *) Line 288	C
     	python37.dll!call_function(_object * * * pp_stack=0x00000022087eeff8, __int64 oparg, _object * kwnames=0x0000000000000000) Line 4593	C
     	python37.dll!_PyEval_EvalFrameDefault(_frame * f=0x0000016828dedda8, int throwflag=694656976) Line 3111	C
     	[Inline Frame] python37.dll!PyEval_EvalFrameEx(_frame *) Line 547	C
    
      | Name | Value | Type
    -- | -- | -- | --
    ◢ | in | 0x000001682938a000 <Error reading characters of string.> | const unsigned char *
      |   | <Unable to read memory> | const unsigned char
    ◢ | out | 0x000001682941db80 "ÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀ... | unsigned char *
      |   | 192 'À' | unsigned char
    ◢ | palette | 0x000001682938bbe7 "" | const unsigned char *
      |   | 0 '\0' | const unsigned char
    ◢ | rgba | 0x000001682938bcbb "333ÿf33ÿ™33ÿÌ33ÿÿ33ÿ" | const unsigned char *
      |   | 51 '3' | const unsigned char
      | x | 96 | int
      | xsize | 128 | int
    
  11. radarhere commented on Apr 1, 2019

    @radarhere
    MemberAuthor

    @cgohlke could you try https://github.com/python-pillow/Pillow/tree/segfault and see if that fixes those two problems?

  12. cgohlke commented on Apr 2, 2019

    @cgohlke
    Contributor

    could you try https://github.com/python-pillow/Pillow/tree/segfault and see if that fixes those two problems?

    Thanks. That works. All tests pass.

  13. radarhere commented on Apr 2, 2019

    @radarhere
    MemberAuthor

    Excellent, thanks. That commit is now part of the release, so if you would be so kind as to generate the binaries again?

  14. radarhere commented on Apr 2, 2019

    @radarhere
    MemberAuthor

    Thanks @cgohlke. Okay, Pillow 6.0.0 is released.

  15. hugovk commented on Apr 2, 2019

    @hugovk
    Member

    Thanks both!

    We should also get heap verification and Qt on a Windows builds to detect these things earlier.

  16. aclark4life commented on Apr 2, 2019

    @aclark4life
    Member

    Great work all, thank you!!

  17. xqt commented on Apr 4, 2019

    @xqt

    New Pillow 6.0.0 leads to AttributeError on our test environment with Python 3.4.1

    See

    I see, Python 3.4 support was dropped with this release.

  18. unpinned this issue on Apr 10, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions