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

Add support for Python 3.10 and musl-based runtimes #629

Merged
merged 16 commits into from
Oct 1, 2021
Merged

Add support for Python 3.10 and musl-based runtimes #629

merged 16 commits into from
Oct 1, 2021

Conversation

asvetlov
Copy link
Member

No description provided.

@asvetlov asvetlov requested a review from webknjaz as a code owner September 30, 2021 12:00
@psf-chronographer psf-chronographer bot added the bot:chronographer:provided There is a change note present in this PR label Sep 30, 2021
@codecov
Copy link

codecov bot commented Sep 30, 2021

Codecov Report

Merging #629 (f707636) into master (9dde0bd) will decrease coverage by 0.01%.
The diff coverage is 100.00%.

Impacted file tree graph

@@            Coverage Diff             @@
##           master     #629      +/-   ##
==========================================
- Coverage   93.78%   93.77%   -0.02%     
==========================================
  Files           5        5              
  Lines         499      498       -1     
==========================================
- Hits          468      467       -1     
  Misses         31       31              
Flag Coverage Δ
unit 93.77% <100.00%> (-0.02%) ⬇️

Flags with carried forward coverage won't be shown. Click here to find out more.

Impacted Files Coverage Δ
multidict/__init__.py 100.00% <100.00%> (ø)
multidict/_multidict_py.py 99.40% <0.00%> (-0.01%) ⬇️

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 9dde0bd...f707636. Read the comment docs.

CHANGES/629.feature Outdated Show resolved Hide resolved
@webknjaz webknjaz changed the title Setup Python 3.10 support Add support for Python 3.10 and musl-based runtimes Sep 30, 2021
@asvetlov
Copy link
Member Author

@webknjaz I've switched our build system to cibuildwheel, works like a charm (after 10+ CI script fixes).
My current plan is: merge the PR tomorrow, make another yet alpha release, wait for success, publish the final release.
The follow-up steps are applying a similar procedure to yarl and aiohttp itself.
Python 3.10 is coming, we should be prepared.

Regarding aiohttp: we can publish 3.8 branch without any critical blocker, isn't it?

/cc @Dreamsorcerer

@Dreamsorcerer
Copy link
Member

Regarding aiohttp: we can publish 3.8 branch without any critical blocker, isn't it?

I think we should be good. We recently fixed a couple of missing deprecation errors, so it should be ready for Python 3.10 now.
I have a couple of bug fix PRs open that might be worth merging before the release (aio-libs/aiohttp#5853, aio-libs/aiohttp#5328, maybe aio-libs/aiohttp#5393, but still needs the test to be cleaned up).

@webknjaz
Copy link
Member

@webknjaz I've switched our build system to cibuildwheel, works like a charm (after 10+ CI script fixes).

Yep. I saw that. Actually, I've been meaning to try it out and have been collaborating with the maintainers a few times in different corners of GH. I think it's great to have. Hope to see it improved even more over time, with Composite Actions that can now invoke other actions.
And great job picking up the recently available musl tag, I've been meaning to start integrating it into the projects too.

My current plan is: merge the PR tomorrow, make another yet alpha release, wait for success, publish the final release. The follow-up steps are applying a similar procedure to yarl and aiohttp itself. Python 3.10 is coming, we should be prepared.

Regarding aiohttp: we can publish 3.8 branch without any critical blocker, isn't it?

I haven't checked the automation side of it since I've addressed the CVE in the 3.7 stream. But it should be fine. Except, maybe, we need to check if Towncrier still works as expected — after its recent major release, I've faced a regression in other projects.

@asvetlov

There is one blocker, though, that is important for my employer. I've even been collaborating with a few people across the company to get the TLS-in-TLS support in aiohttp. My plan was to polish + aio-libs/aiohttp#5992, include this feature in v3.8, and publish it soon (I was actually going to do it around now or in a few days). It'll probably need some warnings in place because of the need to patch CPython and I haven't yet decided on whether to allow a hack in aiohttp directly or try to make it possible to patch it externally — you could actually help with it by seeing python/cpython#28073 through. The team/project should've applied this patch in production today AFAIK but there's a need to get it into upstream properly. They did manual testing but we need to integrate it into our CI — the attempts to do this are currently failing (aio-libs/aiohttp#6002), I haven't figured out why but my suspicion is that it may have something to do with the fact that the proxy library we're trying to integrate is synchronous and it probably needs to be executed in a separate thread 🤷‍♂️.

@webknjaz
Copy link
Member

@asvetlov since you're already refactoring some of the publishing aspects, I'll add a few improvements to this branch too:

  1. GHA for publishing that I've created under PyPA
  2. Release approvals and restricted access to the publishing token via per-env secrets

@asvetlov
Copy link
Member Author

asvetlov commented Oct 1, 2021

Cool!
I've marked mentioned aiohttp PRs with '3.8' milestone to don't miss them.

Regarding release -- I'd like to reuse https://github.com/aio-libs/create-release action for publishing nice-looking GitHub release notes generated from towncrier changelog. The action is usable now. Will do it in a separate PR.

@asvetlov asvetlov merged commit d203c73 into master Oct 1, 2021
@asvetlov asvetlov deleted the py310 branch October 1, 2021 06:57
kraj referenced this pull request in YoeDistro/meta-openembedded Oct 12, 2021
-License-Update: Delete the description of the license and use the license address instead.
 You may obtain a copy of the License at
     http://www.apache.org/licenses/LICENSE-2.0

5.2.0 (2021-10-03)
=====================
Features
--------
- 1. Added support Python 3.10
  2. Started shipping platform-specific wheels with the ``musl`` tag targeting typical Alpine Linux runtimes.
  3. Started shipping platform-specific arm64 wheels for Apple Silicon. (`openembedded#629 <https://github.com/aio-libs/multidict/issues/629>`_)
Bugfixes
--------
- Fixed pure-python implementation that used to raise "Dictionary changed during iteration" error when iterated view (``.keys()``, ``.values()`` or ``.items()``) was created before the dictionary's content change. (`openembedded#620 <https://github.com/aio-libs/multidict/issues/620>`_)

Signed-off-by: Zang Ruochen <[email protected]>
Signed-off-by: Khem Raj <[email protected]>
kraj referenced this pull request in YoeDistro/meta-openembedded Oct 12, 2021
-License-Update: Delete the description of the license and use the license address instead.
 You may obtain a copy of the License at
     http://www.apache.org/licenses/LICENSE-2.0

5.2.0 (2021-10-03)
=====================
Features
--------
- 1. Added support Python 3.10
  2. Started shipping platform-specific wheels with the ``musl`` tag targeting typical Alpine Linux runtimes.
  3. Started shipping platform-specific arm64 wheels for Apple Silicon. (`openembedded#629 <https://github.com/aio-libs/multidict/issues/629>`_)
Bugfixes
--------
- Fixed pure-python implementation that used to raise "Dictionary changed during iteration" error when iterated view (``.keys()``, ``.values()`` or ``.items()``) was created before the dictionary's content change. (`openembedded#620 <https://github.com/aio-libs/multidict/issues/620>`_)

Signed-off-by: Zang Ruochen <[email protected]>
Signed-off-by: Khem Raj <[email protected]>
kraj referenced this pull request in YoeDistro/meta-openembedded Oct 12, 2021
-License-Update: Delete the description of the license and use the license address instead.
 You may obtain a copy of the License at
     http://www.apache.org/licenses/LICENSE-2.0

5.2.0 (2021-10-03)
=====================
Features
--------
- 1. Added support Python 3.10
  2. Started shipping platform-specific wheels with the ``musl`` tag targeting typical Alpine Linux runtimes.
  3. Started shipping platform-specific arm64 wheels for Apple Silicon. (`openembedded#629 <https://github.com/aio-libs/multidict/issues/629>`_)
Bugfixes
--------
- Fixed pure-python implementation that used to raise "Dictionary changed during iteration" error when iterated view (``.keys()``, ``.values()`` or ``.items()``) was created before the dictionary's content change. (`openembedded#620 <https://github.com/aio-libs/multidict/issues/620>`_)

Signed-off-by: Zang Ruochen <[email protected]>
Signed-off-by: Khem Raj <[email protected]>
kraj referenced this pull request in YoeDistro/meta-openembedded Oct 13, 2021
-License-Update: Delete the description of the license and use the license address instead.
 You may obtain a copy of the License at
     http://www.apache.org/licenses/LICENSE-2.0

5.2.0 (2021-10-03)
=====================
Features
--------
- 1. Added support Python 3.10
  2. Started shipping platform-specific wheels with the ``musl`` tag targeting typical Alpine Linux runtimes.
  3. Started shipping platform-specific arm64 wheels for Apple Silicon. (`openembedded#629 <https://github.com/aio-libs/multidict/issues/629>`_)
Bugfixes
--------
- Fixed pure-python implementation that used to raise "Dictionary changed during iteration" error when iterated view (``.keys()``, ``.values()`` or ``.items()``) was created before the dictionary's content change. (`openembedded#620 <https://github.com/aio-libs/multidict/issues/620>`_)

Signed-off-by: Zang Ruochen <[email protected]>
Signed-off-by: Khem Raj <[email protected]>
kraj referenced this pull request in YoeDistro/meta-openembedded Oct 13, 2021
-License-Update: Delete the description of the license and use the license address instead.
 You may obtain a copy of the License at
     http://www.apache.org/licenses/LICENSE-2.0

5.2.0 (2021-10-03)
=====================
Features
--------
- 1. Added support Python 3.10
  2. Started shipping platform-specific wheels with the ``musl`` tag targeting typical Alpine Linux runtimes.
  3. Started shipping platform-specific arm64 wheels for Apple Silicon. (`openembedded#629 <https://github.com/aio-libs/multidict/issues/629>`_)
Bugfixes
--------
- Fixed pure-python implementation that used to raise "Dictionary changed during iteration" error when iterated view (``.keys()``, ``.values()`` or ``.items()``) was created before the dictionary's content change. (`openembedded#620 <https://github.com/aio-libs/multidict/issues/620>`_)

Signed-off-by: Zang Ruochen <[email protected]>
Signed-off-by: Khem Raj <[email protected]>
kraj referenced this pull request in YoeDistro/meta-openembedded Oct 13, 2021
-License-Update: Delete the description of the license and use the license address instead.
 You may obtain a copy of the License at
     http://www.apache.org/licenses/LICENSE-2.0

5.2.0 (2021-10-03)
=====================
Features
--------
- 1. Added support Python 3.10
  2. Started shipping platform-specific wheels with the ``musl`` tag targeting typical Alpine Linux runtimes.
  3. Started shipping platform-specific arm64 wheels for Apple Silicon. (`openembedded#629 <https://github.com/aio-libs/multidict/issues/629>`_)
Bugfixes
--------
- Fixed pure-python implementation that used to raise "Dictionary changed during iteration" error when iterated view (``.keys()``, ``.values()`` or ``.items()``) was created before the dictionary's content change. (`openembedded#620 <https://github.com/aio-libs/multidict/issues/620>`_)

Signed-off-by: Zang Ruochen <[email protected]>
Signed-off-by: Khem Raj <[email protected]>
kraj referenced this pull request in YoeDistro/meta-openembedded Oct 13, 2021
-License-Update: Delete the description of the license and use the license address instead.
 You may obtain a copy of the License at
     http://www.apache.org/licenses/LICENSE-2.0

5.2.0 (2021-10-03)
=====================
Features
--------
- 1. Added support Python 3.10
  2. Started shipping platform-specific wheels with the ``musl`` tag targeting typical Alpine Linux runtimes.
  3. Started shipping platform-specific arm64 wheels for Apple Silicon. (`openembedded#629 <https://github.com/aio-libs/multidict/issues/629>`_)
Bugfixes
--------
- Fixed pure-python implementation that used to raise "Dictionary changed during iteration" error when iterated view (``.keys()``, ``.values()`` or ``.items()``) was created before the dictionary's content change. (`openembedded#620 <https://github.com/aio-libs/multidict/issues/620>`_)

Signed-off-by: Zang Ruochen <[email protected]>
Signed-off-by: Khem Raj <[email protected]>
kraj referenced this pull request in YoeDistro/meta-openembedded Oct 14, 2021
-License-Update: Delete the description of the license and use the license address instead.
 You may obtain a copy of the License at
     http://www.apache.org/licenses/LICENSE-2.0

5.2.0 (2021-10-03)
=====================
Features
--------
- 1. Added support Python 3.10
  2. Started shipping platform-specific wheels with the ``musl`` tag targeting typical Alpine Linux runtimes.
  3. Started shipping platform-specific arm64 wheels for Apple Silicon. (`openembedded#629 <https://github.com/aio-libs/multidict/issues/629>`_)
Bugfixes
--------
- Fixed pure-python implementation that used to raise "Dictionary changed during iteration" error when iterated view (``.keys()``, ``.values()`` or ``.items()``) was created before the dictionary's content change. (`openembedded#620 <https://github.com/aio-libs/multidict/issues/620>`_)

Signed-off-by: Zang Ruochen <[email protected]>
Signed-off-by: Khem Raj <[email protected]>
halstead referenced this pull request in openembedded/meta-openembedded Oct 14, 2021
-License-Update: Delete the description of the license and use the license address instead.
 You may obtain a copy of the License at
     http://www.apache.org/licenses/LICENSE-2.0

5.2.0 (2021-10-03)
=====================
Features
--------
- 1. Added support Python 3.10
  2. Started shipping platform-specific wheels with the ``musl`` tag targeting typical Alpine Linux runtimes.
  3. Started shipping platform-specific arm64 wheels for Apple Silicon. (`#629 <https://github.com/aio-libs/multidict/issues/629>`_)
Bugfixes
--------
- Fixed pure-python implementation that used to raise "Dictionary changed during iteration" error when iterated view (``.keys()``, ``.values()`` or ``.items()``) was created before the dictionary's content change. (`#620 <https://github.com/aio-libs/multidict/issues/620>`_)

Signed-off-by: Zang Ruochen <[email protected]>
Signed-off-by: Khem Raj <[email protected]>
Signed-off-by: Trevor Gamblin <[email protected]>
daregit referenced this pull request in daregit/yocto-combined May 22, 2024
-License-Update: Delete the description of the license and use the license address instead.
 You may obtain a copy of the License at
     http://www.apache.org/licenses/LICENSE-2.0

5.2.0 (2021-10-03)
=====================
Features
--------
- 1. Added support Python 3.10
  2. Started shipping platform-specific wheels with the ``musl`` tag targeting typical Alpine Linux runtimes.
  3. Started shipping platform-specific arm64 wheels for Apple Silicon. (`#629 <https://github.com/aio-libs/multidict/issues/629>`_)
Bugfixes
--------
- Fixed pure-python implementation that used to raise "Dictionary changed during iteration" error when iterated view (``.keys()``, ``.values()`` or ``.items()``) was created before the dictionary's content change. (`#620 <https://github.com/aio-libs/multidict/issues/620>`_)

Signed-off-by: Zang Ruochen <[email protected]>
Signed-off-by: Khem Raj <[email protected]>
Signed-off-by: Trevor Gamblin <[email protected]>
daregit referenced this pull request in daregit/yocto-combined May 22, 2024
-License-Update: Delete the description of the license and use the license address instead.
 You may obtain a copy of the License at
     http://www.apache.org/licenses/LICENSE-2.0

5.2.0 (2021-10-03)
=====================
Features
--------
- 1. Added support Python 3.10
  2. Started shipping platform-specific wheels with the ``musl`` tag targeting typical Alpine Linux runtimes.
  3. Started shipping platform-specific arm64 wheels for Apple Silicon. (`#629 <https://github.com/aio-libs/multidict/issues/629>`_)
Bugfixes
--------
- Fixed pure-python implementation that used to raise "Dictionary changed during iteration" error when iterated view (``.keys()``, ``.values()`` or ``.items()``) was created before the dictionary's content change. (`#620 <https://github.com/aio-libs/multidict/issues/620>`_)

Signed-off-by: Zang Ruochen <[email protected]>
Signed-off-by: Khem Raj <[email protected]>
Signed-off-by: Trevor Gamblin <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bot:chronographer:provided There is a change note present in this PR
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants