Skip to content

Add support for Python 3.12 #6941

Description

@hugovk

Tracking issue for getting the pieces into place to:

  • release wheels for Python 3.12.0 beta in Pillow 10.0.0, released on 2023-07-01
  • support Python 3.12.0 final in Pillow 10.1.0, released on 2023-10-15

TODO

Non-blockers

References:

Activity

  1. added this to the 10.0.0 milestone on Feb 11, 2023
  2. changed the title [-]Add support for Python 3.11[/-] [+]Add support for Python 3.12[/+] on Feb 11, 2023
  3. pinned this issue on Apr 11, 2023
  4. radarhere commented on May 24, 2023

    @radarhere
    Member

    deadsnakes decided not to support Python 3.12 on Bionic, the last 32-bit Ubuntu. We've discussed dropping support for 32-bit briefly before, so the simplest thing is for us to not release 32-bit Linux Python 3.12 wheels.

  5. hugovk commented on May 24, 2023

    @hugovk
    MemberAuthor

    That should be fine.

    Looking at a couple of projects:

    We (NumPy) will continue to test (but not provide wheels for) 32-bit linux.

    We [pyca/cryptography] stopped testing on 32-bit Linux, and stopped building 32-bit Linux wheels several years ago, and that produced no problems.

    https://discuss.python.org/t/dropping-32-bit-packages/5476/16?u=hugovk


    Looking at some numbers, here's a week's worth of Pillow file downloads from PyPI, fetched using https://github.com/ofek/pypinfo:

    pypinfo --days 7 --limit 1000 pillow version file

    1000.txt

    Filtering for the most recent release, for Python 3.11, and Linux (grep "9.5.0-cp311.*linux" 1000.txt) shows a very small number for i686:

    version file download_count percentage
    9.5.0 Pillow-9.5.0-cp311-cp311-manylinux_2_28_x86_64.whl 219,628 91.71 %
    9.5.0 Pillow-9.5.0-cp311-cp311-manylinux_2_28_aarch64.whl 7,407 3.09 %
    9.5.0 Pillow-9.5.0-cp311-cp311-musllinux_1_1_x86_64.whl 5,810 2.43 %
    9.5.0 Pillow-9.5.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl 5,233 2.19 %
    9.5.0 Pillow-9.5.0-cp311-cp311-musllinux_1_1_aarch64.whl 771 0.32 %
    9.5.0 Pillow-9.5.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl 405 0.17 %
    9.5.0 Pillow-9.5.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl 226 0.09 %
      total 239,480 100.00 %
  6. hugovk commented on May 24, 2023

    @hugovk
    MemberAuthor

    Whilst we're here, Windows is quite low for win32:

    version file download_count percentage
    9.5.0 Pillow-9.5.0-cp311-cp311-win_amd64.whl 150,653 98.82 %
    9.5.0 Pillow-9.5.0-cp311-cp311-win32.whl 1,580 1.04 %
    9.5.0 Pillow-9.5.0-cp311-cp311-win_arm64.whl 225 0.15 %
      total 152,458 100.00 %
  7. wiredfool commented on May 24, 2023

    @wiredfool
    Member

    I'd say just drop the 32 bit builds, especially for new pythons.

  8. hugovk commented on May 29, 2023

    @hugovk
    MemberAuthor

    Sounds good.

    So let's not create 32-bit wheels for 3.12. Do we still want to test 32-bit for 3.12?

    The next Pillow 10.0.0 is a major bump so it's a good opportunity to drop things:

    • For 3.11, shall we drop 32-bit wheels and/or testing?

    • And older ones, 3.10-3.8?

    For Linux, the *i686.whl numbers are very low for all versions (0.01% - 0.09%):

    Details
    version file download_count percentage
    9.5.2 Pillow-9.5.0-cp311-cp311-manylinux_2_28_x86_64.whl 219,628 91.71 %
    9.5.2 Pillow-9.5.0-cp311-cp311-manylinux_2_28_aarch64.whl 7,407 3.09 %
    9.5.2 Pillow-9.5.0-cp311-cp311-musllinux_1_1_x86_64.whl 5,810 2.43 %
    9.5.2 Pillow-9.5.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl 5,233 2.19 %
    9.5.2 Pillow-9.5.0-cp311-cp311-musllinux_1_1_aarch64.whl 771 0.32 %
    9.5.2 Pillow-9.5.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl 405 0.17 %
    9.5.2 Pillow-9.5.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl 226 0.09 %
      total 239,480 100 %
           
    9.5.2 Pillow-9.5.0-cp310-cp310-manylinux_2_28_x86_64.whl 788,288 91.90 %
    9.5.2 Pillow-9.5.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl 46,996 5.48 %
    9.5.2 Pillow-9.5.0-cp310-cp310-manylinux_2_28_aarch64.whl 13,842 1.61 %
    9.5.2 Pillow-9.5.0-cp310-cp310-musllinux_1_1_x86_64.whl 6,597 0.77 %
    9.5.2 Pillow-9.5.0-cp310-cp310-musllinux_1_1_aarch64.whl 934 0.11 %
    9.5.2 Pillow-9.5.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl 882 0.10 %
    9.5.2 Pillow-9.5.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl 224 0.03 %
      total 857,763 100 %
           
    9.5.2 Pillow-9.5.0-cp39-cp39-manylinux_2_28_x86_64.whl 910,193 84.64 %
    9.5.2 Pillow-9.5.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl 137,166 12.75 %
    9.5.2 Pillow-9.5.0-cp39-cp39-manylinux_2_28_aarch64.whl 15,810 1.47 %
    9.5.2 Pillow-9.5.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl 7,066 0.66 %
    9.5.2 Pillow-9.5.0-cp39-cp39-musllinux_1_1_x86_64.whl 4,184 0.39 %
    9.5.2 Pillow-9.5.0-cp39-cp39-musllinux_1_1_aarch64.whl 542 0.05 %
    9.5.2 Pillow-9.5.0-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl 462 0.04 %
      total 1,075,423 100 %
           
    9.5.2 Pillow-9.5.0-cp38-cp38-manylinux_2_28_x86_64.whl 924,301 51.40 %
    9.5.2 Pillow-9.5.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl 856,048 47.60 %
    9.5.2 Pillow-9.5.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl 7,569 0.42 %
    9.5.2 Pillow-9.5.0-cp38-cp38-manylinux_2_28_aarch64.whl 7,523 0.42 %
    9.5.2 Pillow-9.5.0-cp38-cp38-musllinux_1_1_x86_64.whl 2,343 0.13 %
    9.5.2 Pillow-9.5.0-cp38-cp38-musllinux_1_1_aarch64.whl 355 0.02 %
    9.5.2 Pillow-9.5.0-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl 241 0.01 %
      total 1,798,380 100 %

    For Windows, *win32.whl are a bigger proportion but still low (0.90% - 5.63%):

    Details
    version file download_count percentage
    9.5.2 Pillow-9.5.0-cp311-cp311-win_amd64.whl 150,653 98.82 %
    9.5.2 Pillow-9.5.0-cp311-cp311-win32.whl 1,580 1.04 %
    9.5.2 Pillow-9.5.0-cp311-cp311-win_arm64.whl 225 0.15 %
      total 152,458 100.00 %
           
    9.5.2 Pillow-9.5.0-cp310-cp310-win_amd64.whl 198,304 99.10 %
    9.5.2 Pillow-9.5.0-cp310-cp310-win32.whl 1,801 0.90 %
      total 200,105 100.00 %
           
    9.5.2 Pillow-9.5.0-cp39-cp39-win_amd64.whl 89,231 98.12 %
    9.5.2 Pillow-9.5.0-cp39-cp39-win32.whl 1,710 1.88 %
      total 90,941 100.00 %
           
    9.5.2 Pillow-9.5.0-cp38-cp38-win_amd64.whl 71,998 94.37 %
    9.5.2 Pillow-9.5.0-cp38-cp38-win32.whl 4,298 5.63 %
      total 76,296 100 %
  9. radarhere commented on Jun 1, 2023

    @radarhere
    Member

    python-pillow/pillow-wheels#383 has added Python 3.12 macOS and Linux wheels, excluding 32-bit wheels, and albeit without fribidi, harfbuzz and raqm on macOS until #7167 is resolved.

  10. cgohlke commented on Jun 6, 2023

    @cgohlke
    Contributor

    Pillow-9.5.0 works well on Python 3.12.0b2 on Windows:

    >py -3.12 -X dev -m pytest -v Tests
    ======================================================================================================= test session starts ========================================================================================================
    platform win32 -- Python 3.12.0b2, pytest-7.3.1, pluggy-1.0.0 -- X:\Python312\python.exe
    cachedir: .pytest_cache
    --------------------------------------------------------------------
    Pillow 9.5.0
    Python 3.12.0b2 (tags/v3.12.0b2:e6c0efa, Jun  6 2023, 15:37:48) [MSC v.1935 64 bit (AMD64)]
    --------------------------------------------------------------------
    Python modules loaded from X:\Python312\Lib\site-packages\PIL
    Binary modules loaded from X:\Python312\Lib\site-packages\PIL
    --------------------------------------------------------------------
    --- PIL CORE support ok, compiled for 9.5.0
    --- TKINTER support ok, loaded 8.6
    --- FREETYPE2 support ok, loaded 2.13.0
    --- LITTLECMS2 support ok, loaded 2.14
    --- WEBP support ok, loaded 1.3.0
    --- WEBP Transparency support ok
    --- WEBPMUX support ok
    --- WEBP Animation support ok
    --- JPEG support ok, compiled for libjpeg-turbo 2.1.92
    --- OPENJPEG (JPEG2000) support ok, loaded 2.5.0
    --- ZLIB (PNG/ZIP) support ok, loaded 1.2.13
    --- LIBTIFF support ok, loaded 4.5.0
    --- RAQM (Bidirectional Text) support ok, loaded 0.10.0, fribidi 1.0.12, harfbuzz 7.3.0
    *** LIBIMAGEQUANT (Quantization method) support not installed
    *** XCB (X protocol) support not installed
    --------------------------------------------------------------------
    
    rootdir: D:\Build\Pillow\Pillow-9.5.0
    configfile: setup.cfg
    plugins: timeout-2.1.0
    collected 3077 items / 2 skipped
    
    Tests/test_000_sanity.py::test_sanity PASSED                                                                                                                                                                                  [  0%]
    Tests/test_binary.py::test_standard PASSED                                                                                                                                                                                    [  0%]
    Tests/test_binary.py::test_little_endian PASSED                                                                                                                                                                               [  0%]
    Tests/test_binary.py::test_big_endian PASSED                                                                                                                                                                                  [  0%]
    Tests/test_bmp_reference.py::test_bad PASSED                                                                                                                                                                                  [  0%]
    Tests/test_bmp_reference.py::test_questionable PASSED                                                                                                                                                                         [  0%]
    Tests/test_bmp_reference.py::test_good PASSED                                                                                                                                                                                 [  0%]
    Tests/test_box_blur.py::test_imageops_box_blur PASSED                                                                                                                                                                         [  0%]
    Tests/test_box_blur.py::test_color_modes PASSED                                                                                                                                                                               [  0%]
    Tests/test_box_blur.py::test_radius_0 PASSED                                                                                                                                                                                  [  0%]
    Tests/test_box_blur.py::test_radius_0_02 PASSED                                                                                                                                                                               [  0%]
    Tests/test_box_blur.py::test_radius_0_05 PASSED                                                                                                                                                                               [  0%]
    Tests/test_box_blur.py::test_radius_0_1 PASSED                                                                                                                                                                                [  0%]
    Tests/test_box_blur.py::test_radius_0_5 PASSED                                                                                                                                                                                [  0%]
    Tests/test_box_blur.py::test_radius_1 PASSED                                                                                                                                                                                  [  0%]
    Tests/test_box_blur.py::test_radius_1_5 PASSED                                                                                                                                                                                [  0%]
    Tests/test_box_blur.py::test_radius_bigger_then_half PASSED                                                                                                                                                                   [  0%]
    Tests/test_box_blur.py::test_radius_bigger_then_width PASSED                                                                                                                                                                  [  0%]
    Tests/test_box_blur.py::test_extreme_large_radius PASSED                                                                                                                                                                      [  0%]
    Tests/test_box_blur.py::test_two_passes PASSED                                                                                                                                                                                [  0%]
    Tests/test_box_blur.py::test_three_passes PASSED                                                                                                                                                                              [  0%]
    Tests/test_color_lut.py::TestColorLut3DCoreAPI::test_wrong_args PASSED                                                                                                                                                        [  0%]
    Tests/test_color_lut.py::TestColorLut3DCoreAPI::test_correct_args PASSED                                                                                                                                                      [  0%]
    Tests/test_color_lut.py::TestColorLut3DCoreAPI::test_wrong_mode PASSED                                                                                                                                                        [  0%]
    Tests/test_color_lut.py::TestColorLut3DCoreAPI::test_correct_mode PASSED                                                                                                                                                      [  0%]
    Tests/test_color_lut.py::TestColorLut3DCoreAPI::test_identities PASSED                                                                                                                                                        [  0%]
    Tests/test_color_lut.py::TestColorLut3DCoreAPI::test_identities_4_channels PASSED                                                                                                                                             [  0%]
    Tests/test_color_lut.py::TestColorLut3DCoreAPI::test_copy_alpha_channel PASSED                                                                                                                                                [  0%]
    Tests/test_color_lut.py::TestColorLut3DCoreAPI::test_channels_order PASSED                                                                                                                                                    [  0%]
    Tests/test_color_lut.py::TestColorLut3DCoreAPI::test_overflow PASSED                                                                                                                                                          [  0%]
    Tests/test_color_lut.py::TestColorLut3DFilter::test_wrong_args PASSED                                                                                                                                                         
    
    <snip>
    
    Tests/test_shell_injection.py::TestShellInjection::test_load_djpeg_filename SKIPPED (Requires Unix or macOS)                                                                                                                  [ 99%]
    Tests/test_shell_injection.py::TestShellInjection::test_save_cjpeg_filename SKIPPED (Requires Unix or macOS)                                                                                                                  [ 99%]
    Tests/test_shell_injection.py::TestShellInjection::test_save_netpbm_filename_bmp_mode SKIPPED (Netpbm not available)                                                                                                          [ 99%]
    Tests/test_shell_injection.py::TestShellInjection::test_save_netpbm_filename_l_mode SKIPPED (Netpbm not available)                                                                                                            [ 99%]
    Tests/test_tiff_crashes.py::test_tiff_crashes[Tests/images/crash_1.tif] SKIPPED (test image not found)                                                                                                                        [ 99%]
    Tests/test_tiff_crashes.py::test_tiff_crashes[Tests/images/crash_2.tif] SKIPPED (test image not found)                                                                                                                        [ 99%]
    Tests/test_tiff_crashes.py::test_tiff_crashes[Tests/images/crash-2020-10-test.tif] PASSED                                                                                                                                     [ 99%]
    Tests/test_tiff_crashes.py::test_tiff_crashes[Tests/images/crash-0c7e0e8e11ce787078f00b5b0ca409a167f070e0.tif] PASSED                                                                                                         [ 99%]
    Tests/test_tiff_crashes.py::test_tiff_crashes[Tests/images/crash-0e16d3bfb83be87356d026d66919deaefca44dac.tif] PASSED                                                                                                         [ 99%]
    Tests/test_tiff_crashes.py::test_tiff_crashes[Tests/images/crash-1152ec2d1a1a71395b6f2ce6721c38924d025bf3.tif] PASSED                                                                                                         [ 99%]
    Tests/test_tiff_crashes.py::test_tiff_crashes[Tests/images/crash-1185209cf7655b5aed8ae5e77784dfdd18ab59e9.tif] PASSED                                                                                                         [ 99%]
    Tests/test_tiff_crashes.py::test_tiff_crashes[Tests/images/crash-338516dbd2f0e83caddb8ce256c22db3bd6dc40f.tif] PASSED                                                                                                         [ 99%]
    Tests/test_tiff_crashes.py::test_tiff_crashes[Tests/images/crash-4f085cc12ece8cde18758d42608bed6a2a2cfb1c.tif] PASSED                                                                                                         [ 99%]
    Tests/test_tiff_crashes.py::test_tiff_crashes[Tests/images/crash-86214e58da443d2b80820cff9677a38a33dcbbca.tif] PASSED                                                                                                         [ 99%]
    Tests/test_tiff_crashes.py::test_tiff_crashes[Tests/images/crash-f46f5b2f43c370fe65706c11449f567ecc345e74.tif] PASSED                                                                                                         [ 99%]
    Tests/test_tiff_crashes.py::test_tiff_crashes[Tests/images/crash-63b1dffefc8c075ddc606c0a2f5fdc15ece78863.tif] PASSED                                                                                                         [ 99%]
    Tests/test_tiff_crashes.py::test_tiff_crashes[Tests/images/crash-74d2a78403a5a59db1fb0a2b8735ac068a75f6e3.tif] PASSED                                                                                                         [ 99%]
    Tests/test_tiff_crashes.py::test_tiff_crashes[Tests/images/crash-81154a65438ba5aaeca73fd502fa4850fbde60f8.tif] SKIPPED (test image not found)                                                                                 [ 99%]
    Tests/test_tiff_crashes.py::test_tiff_crashes[Tests/images/crash-0da013a13571cc8eb457a39fee8db18f8a3c7127.tif] PASSED                                                                                                         [ 99%]
    Tests/test_tiff_ifdrational.py::test_sanity PASSED                                                                                                                                                                            [ 99%]
    Tests/test_tiff_ifdrational.py::test_ranges PASSED                                                                                                                                                                            [ 99%]
    Tests/test_tiff_ifdrational.py::test_nonetype PASSED                                                                                                                                                                          [ 99%]
    Tests/test_tiff_ifdrational.py::test_ifd_rational_save PASSED                                                                                                                                                                 [ 99%]
    Tests/test_util.py::test_is_path PASSED                                                                                                                                                                                       [ 99%]
    Tests/test_util.py::test_path_obj_is_path PASSED                                                                                                                                                                              [ 99%]
    Tests/test_util.py::test_is_not_path PASSED                                                                                                                                                                                   [ 99%]
    Tests/test_util.py::test_is_directory PASSED                                                                                                                                                                                  [ 99%]
    Tests/test_util.py::test_is_not_directory PASSED                                                                                                                                                                              [ 99%]
    Tests/test_util.py::test_deferred_error PASSED                                                                                                                                                                                [ 99%]
    Tests/test_webp_leaks.py::TestWebPLeaks::test_leak_load SKIPPED (Requires Unix or macOS)                                                                                                                                      [100%]
    
    ========================================================================================================= warnings summary =========================================================================================================
    Tests/test_file_wmf.py::test_load_raw
    Tests/test_file_wmf.py::test_load
      X:\Python312\Lib\site-packages\PIL\ImageFile.py:349: ResourceWarning: unclosed file <_io.BufferedReader name='Tests/images/drawing.emf'>
        self.__dict__ = image.__dict__
      Enable tracemalloc to get traceback where the object was allocated.
      See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info.
    
    Tests/test_file_wmf.py::test_load_raw
    Tests/test_file_wmf.py::test_load_set_dpi
      X:\Python312\Lib\site-packages\PIL\ImageFile.py:349: ResourceWarning: unclosed file <_io.BufferedReader name='Tests/images/drawing.wmf'>
        self.__dict__ = image.__dict__
      Enable tracemalloc to get traceback where the object was allocated.
      See https://docs.pytest.org/en/stable/h
    [Pillow-9.5.0-cp312-win.zip](https://github.com/python-pillow/Pillow/files/11671080/Pillow-9.5.0-cp312-win.zip)
    ow-to/capture-warnings.html#resource-warnings for more info.
    
    -- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html
    ===================================================================================================== short test summary info ======================================================================================================
    SKIPPED [1] Tests\test_pyroma.py:5: Pyroma not installed
    SKIPPED [1] Tests\oss-fuzz\test_fuzzers.py:11: Fuzzer is linux only
    SKIPPED [1] Tests\test_features.py:68: libimagequant not available
    SKIPPED [1] Tests\test_file_gif.py:334: Netpbm not available
    SKIPPED [1] Tests\test_file_gif.py:345: Netpbm not available
    SKIPPED [4] Tests\test_file_jpeg2k.py:344: Extra image files not installed
    SKIPPED [1] Tests\test_file_msp.py:57: Extra image files not installed
    SKIPPED [1] Tests\test_file_msp.py:70: Even More Extra image files not installed
    SKIPPED [1] Tests\test_file_png.py:785: Requires Unix or macOS
    SKIPPED [1] Tests\test_file_sun.py:34: Extra image files not installed
    SKIPPED [1] Tests\test_file_tiff.py:787: 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:211: Test requires opening tempfile twice
    SKIPPED [1] Tests\test_image_fromqimage.py:44: Qt bindings are not installed
    SKIPPED [1] Tests\test_image_fromqimage.py:49: Qt bindings are not installed
    SKIPPED [1] Tests\test_image_fromqimage.py:54: Qt bindings are not installed
    SKIPPED [1] Tests\test_image_fromqimage.py:59: Qt bindings are not installed
    SKIPPED [1] Tests\test_image_fromqimage.py:64: Qt bindings are not installed
    SKIPPED [1] Tests\test_image_quantize.py:21: libimagequant not available
    SKIPPED [1] Tests\test_imagedraw.py:1002: failing
    SKIPPED [2] Tests\test_imagefont.py:546: requires Unix or macOS
    SKIPPED [2] Tests\test_imagefontctl.py:233: fails with this font
    SKIPPED [1] Tests\test_imagegrab.py:25: xcb not available
    SKIPPED [1] Tests\test_imagegrab.py:48: xcb not available
    SKIPPED [1] Tests\test_imageqt.py:20: Qt bindings are not installed
    SKIPPED [1] Tests\test_imageqt.py:49: Qt bindings are not installed
    SKIPPED [1] Tests\test_imageqt.py:63: Qt bindings are not installed
    SKIPPED [5] Tests\test_imageshow.py:44: Only run on CIs; hangs on Windows CIs
    SKIPPED [1] Tests\test_imageshow.py:82: IPython not installed
    SKIPPED [1] Tests\test_imageshow.py:94: Only run on CIs; hangs on Windows CIs
    SKIPPED [1] Tests\test_qt_image_qapplication.py:54: Qt bindings are not installed
    SKIPPED [5] Tests\test_qt_image_toqimage.py:19: Qt bindings are not installed
    SKIPPED [1] Tests\test_shell_injection.py:25: Requires Unix or macOS
    SKIPPED [1] Tests\test_shell_injection.py:34: Requires Unix or macOS
    SKIPPED [1] Tests\test_shell_injection.py:39: Netpbm not available
    SKIPPED [1] Tests\test_shell_injection.py:45: Netpbm not available
    SKIPPED [3] Tests\test_tiff_crashes.py:50: test image not found
    SKIPPED [1] Tests\test_webp_leaks.py:15: Requires Unix or macOS
    XFAIL Tests/test_file_palm.py::test_p_mode - Palm P image is wrong
    XFAIL Tests/test_image_access.py::TestEmbeddable::test_embeddable - failing test
    XFAIL Tests/test_image_resample.py::TestCoreResampleAlphaCorrect::test_levels_rgba - Current implementation isn't precise enough
    XFAIL Tests/test_image_resample.py::TestCoreResampleAlphaCorrect::test_levels_la - Current implementation isn't precise enough
    ================================================================================ 3021 passed, 54 skipped, 4 xfailed, 4 warnings in 69.91s (0:01:09) ================================================================================
    

    Pillow-9.5.0-cp312-win.zip

  11. hugovk commented on Jun 23, 2023

    @hugovk
    MemberAuthor

    re: #6941 (comment)

    I suggest we drop all the 32-bit wheels and testing. If there's a lot of demand or very good reason, we can always add something back (e.g. 3.8 on Windows has a slightly larger percentage).

  12. wiredfool commented on Jun 26, 2023

    @wiredfool
    Member

    Sorry, I'm on holiday here so this is a little late --

    I'm not sure if there are any remaining platforms were 32 bit is really a going concern, but I'd view it as a minor platform in the same way that we support S390 or Big Endian -- good to keep compatibility with from a correctness POV, but we're not building wheels. There's nothing in 32 bit to my knowledge where dropping it really streamlines our code.

  13. hugovk commented on Jun 26, 2023

    @hugovk
    MemberAuthor

    Okay, let's keep some representative testing of 32-bit on the CI. I'd say we can leave the docker-images changes as is.

    There's nothing in 32 bit to my knowledge where dropping it really streamlines our code.

    Yeah, #7228 was mostly test bits and pieces.

  14. radarhere commented on Jun 27, 2023

    @radarhere
    Member

    I've created #7234 to restore 32-bit support, without restoring most of the CI jobs. I've only restored 32-bit Debian 12.

  15. radarhere commented on Jun 30, 2023

    @radarhere
    Member

    We later also restored a Windows 32-bit job - #7234 (comment)

  16. radarhere commented on Jul 1, 2023

    @radarhere
    Member

    Pillow 10.0.0 has now been released with Python 3.12 beta wheels.

  17. modified the milestones: 10.0.0, 10.1.0 on Jul 8, 2023
  18. radarhere commented on Oct 15, 2023

    @radarhere
    Member

    Pillow 10.1.0 has now been released with Python 3.12 final wheels.

  19. modified the milestones: 10.1.0, 10.2.0 on Oct 23, 2023
  20. unpinned this issue on Oct 31, 2023
  21. radarhere commented on Nov 30, 2023

    @radarhere
    Member

    I suggest we drop all the 32-bit wheels and testing. If there's a lot of demand or very good reason, we can always add something back (e.g. 3.8 on Windows has a slightly larger percentage).

    Windows 32-bit wheels have now been restored in #7580

  22. yurj commented on Jun 27, 2024

    @yurj

    Hi!
    is there a plan to release a wheel for Pillow 9.5 with python 3.12? Plone, for example, uses Pillow and supports python 3.12 but still reference Pillow 9.5.0. Thanks for any info!

  23. radarhere commented on Jun 27, 2024

    @radarhere
    Member

    Hi. There isn't a plan to do so, no. In general, we would encourage you to upgrade to the latest version of Pillow to receive recent security fixes.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions