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 10.1.0 on October 15, 2023 #7348

Closed
21 tasks done
hugovk opened this issue Aug 21, 2023 · 20 comments
Closed
21 tasks done

Release Pillow 10.1.0 on October 15, 2023 #7348

hugovk opened this issue Aug 21, 2023 · 20 comments
Assignees
Labels
Milestone

Comments

@hugovk
Copy link
Member

hugovk commented Aug 21, 2023

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]]
@hugovk hugovk added the Release label Aug 21, 2023
@hugovk hugovk added this to the 10.1.0 milestone Aug 21, 2023
@hugovk hugovk self-assigned this Aug 21, 2023
@bsekachev
Copy link

bsekachev commented Sep 11, 2023

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?

@hugovk
Copy link
Member Author

hugovk commented Sep 11, 2023

Yes, #7383 will be in the October release.

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

@hugovk hugovk pinned this issue Sep 18, 2023
@homm
Copy link
Member

homm commented Oct 1, 2023

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.

@aclark4life
Copy link
Member

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

@hugovk
Copy link
Member Author

hugovk commented Oct 15, 2023

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?

@radarhere
Copy link
Member

radarhere commented Oct 15, 2023

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

@hugovk
Copy link
Member Author

hugovk commented Oct 15, 2023

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.

@hugovk
Copy link
Member Author

hugovk commented Oct 15, 2023

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

@hugovk
Copy link
Member Author

hugovk commented Oct 15, 2023

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.

@hugovk
Copy link
Member Author

hugovk commented Oct 15, 2023

sudo gem install travis --no-document
...travis --version
Shell completion not installed. Would you like to install it now? |y| y
1.11.1travis 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...

@aclark4life
Copy link
Member

aclark4life commented Oct 15, 2023

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

@radarhere
Copy link
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

@hugovk
Copy link
Member Author

hugovk commented Oct 15, 2023

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.

@hugovk
Copy link
Member Author

hugovk commented Oct 15, 2023

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!

@hugovk
Copy link
Member Author

hugovk commented Oct 15, 2023

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.

@hugovk
Copy link
Member Author

hugovk commented Oct 15, 2023

@hugovk
Copy link
Member Author

hugovk commented Oct 15, 2023

@radarhere
Copy link
Member

@hugovk
Copy link
Member Author

hugovk commented Oct 23, 2023

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

@radarhere
Copy link
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
Labels
Projects
None yet
Development

No branches or pull requests

5 participants