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

Drop Python 3.6 & support Python 3.10 #936

Merged
merged 4 commits into from
May 3, 2021
Merged

Conversation

aaugustin
Copy link
Member

@aaugustin aaugustin commented May 2, 2021

Fix #916.

Also fix a few places that were missed when adding 3.9.
Refs #916 - get_event_loop is deprecated in Python 3.10.

Fix #534.
@aaugustin aaugustin force-pushed the bump-python-version branch 2 times, most recently from 26c2176 to 08d8011 Compare May 3, 2021 07:06
@aaugustin aaugustin merged commit 08d8011 into main May 3, 2021
@aaugustin aaugustin deleted the bump-python-version branch May 3, 2021 07:19
@adriansev
Copy link

@aaugustin Hi! I just seen this, sorry for my lack/delayed of reaction. Is it really needed the drop of 3.6 support? EL7 have python 3.6.8 and, while most if not all CERN experiments have their own software stacks, everything is still based on EL7 (and there is no newer python in softwarecollections ). Thank you!

@aaugustin
Copy link
Member Author

I understand your concern. My take is the following: if you're using a Python released on Dec 23rd, 2016 and EOL on Dec 23rd, 2021, then it should be OK to use a websockets released on May 1st, 2021 and EOL some time in 2021 or maybe 2022. (Since I don't do support branches, each websockets release is EOL as soon as the next release is out.) Existing versions aren't going away.

websockets tries to maintain backwards compatibility over 5 years, which means I barely started removing backwards compatibility for changes that happened in the first years of the library. I also support 5 years old Python versions. That's a pretty strong commitment as far as open source projects maintained by a single person in their free time go.

Support multiple Python versions in websockets has adds mental overhead to remember what constraints there are on the newer and older Python versions. I don't find it reasonable to support more than 4 Python versions at a time. Given that Python does deprecations over two releases, that's two (overlapping) deprecations periods, and asyncio still changes quite a bit.

That said, if there was a significant bug in 9.0.1, then I'd probably make a branch to fix it and avoid stranding Python 3.6 users on websockets 8.x. This situation hasn't come up when I dropped 3.3, 3.4, and 3.5.

@adriansev
Copy link

@aaugustin Thanks a lot for info! My only concern was for bugs that we might hit and could not be applied on the old versions (but given that everything worked so well so far, and the data-path that we use within websockets will not change, i doubt that unexpected things will arise.. but well, in engineering anything that can go wrong, it will :) ).
So, your support statement is quite titanic especially the manpower (and that "small" detail of "free time"), so i personally i'm deeply grateful for all your work!
Also, very true your statement about multiple python versions, is quite bad that there is such big mismatch between what upstream release and what distributions are willing to package and provide.
At this moment 9.0.1 works seemingly without problems on centos7 (python 3.6.8) so everything is well :)
Thanks a lot for all your work and support!

@aaugustin
Copy link
Member Author

Thanks for the feedback on 9.0.1 :-) Since I don't even use this project myself (just maintaining it for fun) I'm always shooting in the dark when I make new releases!

@adriansev
Copy link

@aaugustin well, you could do like some other projects and just announce a RC tag with a RC release before the final tag (well, actually do a release branch then announce the rc tag and release, then after testing and fixes on that branch (as well as in master) you do the tag and forget about it ... but of course is a matter of preference and available time as this requires a little bit of management)
If i can get the news in time i will test and give feedback for sure :)
Thank you!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Python 3.10 support (loop parameter was removed from Lock())
2 participants