Skip to content

Release Pillow 10.1.0 on October 15, 2023 #7348

Closed

Description

@hugovk

Highlights:

TODO

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 main branch.
  • Check GitHub Actions and AppVeyor to confirm passing tests in main branch.
  • Check that all of the wheel builds pass the tests in the GitHub Actions "Wheels" workflow and Travis CI jobs by manually triggering them.
  • 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 --tags
  • Create and check source distribution:
    make sdist
  • Create binary distributions
  • Check and upload all binaries and source distributions e.g.:
    python3 -m twine check --strict dist/*
    python3 -m twine upload dist/Pillow-5.2.0*
  • Publish the release on GitHub
  • In compliance with PEP 440,
    increment and append .dev0 to version identifier in src/PIL/_version.py and then:
    git push --all

Binary Distributions

macOS and Linux

Windows

Publicize Release

Documentation

Docker Images

  • Update Pillow in the Docker Images repository
    git clone https://github.com/python-pillow/docker-images
    cd docker-images
    ./update-pillow-tag.sh [[release tag]]

Activity

  1. added this to the 10.1.0 milestone on Aug 21, 2023
  2. self-assigned this
    on Aug 21, 2023
  3. bsekachev commented on Sep 11, 2023

    @bsekachev

    Hello,
    May I ask if you are going to include #7383 to the October Release?
    Or it is already too late, and it will be postponed till the next one?

  4. hugovk commented on Sep 11, 2023

    @hugovk
    MemberAuthor

    Yes, #7383 will be in the October release.

    Everything merged to main before the release is started will be included.

  5. pinned this issue on Sep 18, 2023
  6. homm commented on Oct 1, 2023

    @homm
    Member

    For the record: release is delayed from common 1st October to 15th October due to Python 3.12 support which will be released at 15th October.

  7. aclark4life commented on Oct 1, 2023

    @aclark4life
    Member

    Right, and the aforementioned record on release schedule is here: https://pillow.readthedocs.io/en/stable/releasenotes/index.html#release-notes

  8. hugovk commented on Oct 15, 2023

    @hugovk
    MemberAuthor

    It's release day!

    About PR #7307. I merged it, but now I'm having second thoughts. Sorry for raising this last minute, but rather before the release.

    The release notes call it a breaking change:

    If you attempt to set the mode of an image directly, e.g. im.mode = "RGBA", you will now receive an AttributeError. This is not about removing existing functionality, but instead about raising an explicit error to prevent later consequences. The convert method is the correct way to change an image’s mode.

    https://pillow.readthedocs.io/en/latest/releasenotes/10.1.0.html#backwards-incompatible-changes

    We use SemVer and 10.1.0 is not a major release that would allow breaking changes.

    Options:

    • Is this breaking change acceptable for a minor release? If so, let's keep it.
    • We could bump to 11.0.0. We normally align major releases with a Python EOL drop, but I don't think we have anything preventing us also doing major bumps at other times.
    • Reframe the change as something other than a breaking change. A bug fix? Bug fixes do sometimes break things... See xkcd space bar heating.
    • Revert, potentially add deprecation warnings as usual (in this release or next), remove in next major release.

    @python-pillow/pillow-team Thoughts?

  9. radarhere commented on Oct 15, 2023

    @radarhere
    Member

    I don't think it should be a breaking change for the normal user - I find it hard to think of a safe practical use for this, and we released #3203 for size in Pillow 5.3.0.

    It is a breaking change if you are writing your own plugins for Pillow, e.g. bigcat88/pillow_heif#122, but I don't think we consider that when creating releases.

    I've created #7465 to move it to a different section of the release notes, and improve the documentation about writing your own plugin.

    Edit: Also fdintino/pillow-avif-plugin@1853be2

  10. hugovk commented on Oct 15, 2023

    @hugovk
    MemberAuthor

    Hmm, on the one hand, SemVer doesn't distinguish between normal users and plugins users, it's all part of the public API. But the exposure is clearly smaller, plugins do things a bit differently, and in this case it's fine to set an internal mode_.

    Thanks for the PR, let's go with it, and if there are other plugins we can give a heads-up to, let's do that.

  11. hugovk commented on Oct 15, 2023

    @hugovk
    MemberAuthor

    I've started the release. So far the GH wheel building is very nice and smooth!

    Travis CI build failed to upload the wheels to the GH release:

    invalid option "--token="
    failed to deploy
    

    https://app.travis-ci.com/github/python-pillow/pillow/builds/266593993

  12. hugovk commented on Oct 15, 2023

    @hugovk
    MemberAuthor

    I think this is because the token was originally generated against the https://github.com/python-pillow/pillow-wheels/ repo:

    python-pillow/pillow-wheels#156 (comment)

    So we need to update it for this https://github.com/python-pillow/Pillow repo and add it to https://app.travis-ci.com/github/python-pillow/pillow/settings.

    I'll try that.

  13. hugovk commented on Oct 15, 2023

    @hugovk
    MemberAuthor
    ❯ sudo gem install travis --no-document
    ...
    ❯ travis --version
    Shell completion not installed. Would you like to install it now? |y| y
    1.11.1
    
    ❯ travis setup releases
    Detected repository as python-pillow/Pillow/, is this correct? |yes|
    resource not found ({}
    )
    
    ❯ travis login
    resource not found ({}
    )
    

    I need to pop out for an hour or so, to be continued...

  14. aclark4life commented on Oct 15, 2023

    @aclark4life
    Member

    Not related to this release but wondering do we still need Travis to build wheels? Thinking of this as potential replacement: https://github.com/pypa/cibuildwheel

  15. radarhere commented on Oct 15, 2023

    @radarhere
    Member

    If you're interested in a quick fix for this release, here are aarch64 wheels. As I have sometimes before, I generated them by adjusting the Travis script to upload the wheels to https://www.file.io/

    aarch64-Python38-39.zip
    aarch64-Python310-311.zip
    aarch64-Python312.zip

  16. hugovk commented on Oct 15, 2023

    @hugovk
    MemberAuthor

    I would very much like to move from multibuild to cibuildwheel. Both are fantastic projects, multibuild came first, and cibuildwheel learnt a lot from multibuild (see https://github.com/pypa/cibuildwheel#credits).

    We're using Travis CI to build aarch64 wheels because of the available hardware. We can already build them on GHA, but it's sloooow due to emulation. See python-pillow/pillow-wheels#367.

    I expect cibuildwheel would be about as slow with cibuildwheel.

    And when we have the automation of #7390 full in place, perhaps the slowness will be acceptable. Definitely something to evaluate when the time comes.

  17. hugovk commented on Oct 15, 2023

    @hugovk
    MemberAuthor

    If you're interested in a quick fix for this release, here are aarch64 wheels. As I have sometimes before, I generated them by adjusting the Travis script to upload the wheels to https://www.file.io/

    aarch64-Python38-39.zip aarch64-Python310-311.zip aarch64-Python312.zip

    Thanks, I'll probably use those if travis isn't a trivially fixable!

  18. hugovk commented on Oct 15, 2023

    @hugovk
    MemberAuthor

    It wasn't trivially fixable, so I used those. Thanks!

    Looks like we need to create a GitHub API token, then use that to login to travis, then create the new release token and save it as GITHUB_RELEASE_TOKEN at https://app.travis-ci.com/github/python-pillow/pillow/settings.

    @aclark4life The GitHub token should be scoped against this repo, and I'm not an admin here so can't do that, so can I delegate this to you? :) No rush on this, and we can create a new issue for it.

  19. hugovk commented on Oct 15, 2023

    @hugovk
    MemberAuthor
  20. unpinned this issue on Oct 23, 2023
  21. radarhere commented on Oct 23, 2023

    @radarhere
    Member
  22. hugovk commented on Oct 23, 2023

    @hugovk
    MemberAuthor

    It wasn't trivially fixable, so I used those. Thanks!

    Looks like we need to create a GitHub API token, then use that to login to travis, then create the new release token and save it as GITHUB_RELEASE_TOKEN at app.travis-ci.com/github/python-pillow/pillow/settings.

    @aclark4life The GitHub token should be scoped against this repo, and I'm not an admin here so can't do that, so can I delegate this to you? :) No rush on this, and we can create a new issue for it.

    Issue for this: #7485

  23. radarhere commented on Dec 2, 2023

    @radarhere
    Member

    I would very much like to move from multibuild to cibuildwheel. Both are fantastic projects, multibuild came first, and cibuildwheel learnt a lot from multibuild (see https://github.com/pypa/cibuildwheel#credits).

    Thanks to #7552, we are now using cibuildwheel.

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