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

RFC: Make boltons Python 3.7+ only. #339

Closed
mahmoud opened this issue Apr 21, 2023 · 8 comments · Fixed by #362
Closed

RFC: Make boltons Python 3.7+ only. #339

mahmoud opened this issue Apr 21, 2023 · 8 comments · Fixed by #362

Comments

@mahmoud
Copy link
Owner

mahmoud commented Apr 21, 2023

Not sure how much explication is necessary here, but it's 2023, what better time to finally jump from 2/3 to just 3?

Off the top of my head:

Pros:

  1. Get rid of all the PY2/PY3 conditionals cluttering up the code
  2. Generally make contribution easier (see the Py2.7 failure in the initial commit of fix: make copy_function work with keyword-only defaults #336 ). Most potential contributors probably don't have a Python 2 installed.

Cons:

  1. Will lose some potential utility for something like ecoutils to detect older Python installations

As for the con, there's always the possibility of using older boltons versions, most of the modules have been pretty stable for a while.

@kdeldycke
Copy link
Contributor

Agreed. And Python 3.7+ support is generous IMHO, given Python 3.7 will stop receiving security updates after 2023-06-27 and will be considered EOL.

@rafalkrupinski
Copy link

Why not 3.6 or 3.8?
if dropping support for EOL Python -> 3.8
if dropping support for Python 2 -> 3.6 is often said to be the first good version in the 3.x line.

I'm not sure what supporting any of the versions mean for boltons, just saying from a user perspective.

@mahmoud
Copy link
Owner Author

mahmoud commented Oct 31, 2023

@rafalkrupinski / @kdeldycke agreed, all my use cases are on 3.9+, but I had one old contact reach out about still being on 3.7. A quick check of pypi stats shows that 3.7 gets around 5-7.75% of downloads, which is appx ten times as many downloads as 2.7, 2-3x as many as 3.6, about half as many as 3.8.

Another way of looking at it would be to focus on benefits of upgrades. Is there a particular development we're looking forward to taking advantage of in 3.8 vs 3.7? 3.7 has ordered dictionaries and from __future__ import annotations, which are the two I think I use the most from modern Python.

@kdeldycke
Copy link
Contributor

@mahmoud I am impressed by your data-backed maintainership! 🤗 My proposal was just to go with the flow of Python mainline support. That's it. To me it only depends on the effort you would be ready to pour in into supported older versions.

@Avasam
Copy link
Contributor

Avasam commented Nov 29, 2023

#190 would be the biggest reason for 3.7 with from __future__ import annotations
With 3.7 in EOL. 3.8 would make it slightly easier to use generic types.

@mgaitan
Copy link
Contributor

mgaitan commented Dec 5, 2023

+1 to make it 3.7+ only

@hugovk
Copy link
Contributor

hugovk commented Feb 3, 2024

Please see PR #362 to drop 3.6 and earlier.

If it's too early for a PR, feel free to close it and use it as an example of what can be done.

@mahmoud
Copy link
Owner Author

mahmoud commented Apr 1, 2024

The biggest PR in boltons history just landed and it's now released on PyPI as boltons==24.0.0. 🎉 Thanks everyone!

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 a pull request may close this issue.

6 participants