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 support for EOL Python versions #375

Closed
Theelx opened this issue Jan 7, 2022 · 9 comments
Closed

Drop support for EOL Python versions #375

Theelx opened this issue Jan 7, 2022 · 9 comments

Comments

@Theelx
Copy link
Contributor

Theelx commented Jan 7, 2022

Currently, I want to remove support for Python 2.7, 3.5, and 3.6, as both have reached their End of Life date. The PSF stated that EOL CPython versions receive no further security updates, and any codebase using them is advised to migrate to a newer version. I'm thinking that CPython 3.8+ would be a sensible target, as that lets us use walrus operators (:=) in the code as well as the nice f"{expr}=" syntax for f-strings (since both of those were introduced in 3.8). Also, for speed implications, the CPython 3.9 Whatsnew has a nice graph of how much faster some basic operations got between 3.7 and 3.8.

Any dropping of multiple EOL CPython versions would probably occur in a jsonpickle 3.0 release, so likely not for at least another few months. For reference, here's a chart of EOL CPython versions. 3.6 hit EOL 2 weeks ago, and 3.7 hits EOL in June 2023 so it would be reasonable to keep supporting 3.7 for a while longer (I'm just trying to minimize the number of major version bumps we need, since we'll eventually need to drop support for 3.7). 2.7 and 3.5 absolutely do not need to be supported, as 2.7 hit EOL 2 years ago, and 3.5 hit it 1.25 years ago.

@davvid Can you check the PyPi stats for jsonpickle to see how many weekly/monthly downloads the package gets from 2.7, 3.6, and 3.7? The 3.x series isn't super relevant since it's an easy upgrade from 3.5/3.6 to 3.8+, and 3.7 to 3.8 is essentially drop-in. I'd be interested to see how many people have yet to make the switch though.

Lastly, do any users of jsonpickle have a reason they'd like to see support for 3.6 and/or 3.7 in the library in the near future? I think a valid case for 3.7 would be pretty easy to make, and 3.6 support could possibly be kept if a lot of people still use it.

@davvid
Copy link
Member

davvid commented Jan 7, 2022

With my vfxplatform hat on, python3.7 would stilll be nice to support since it can help folks that are still trying to transition to 3.x. A fairly significant set of tools still ship 3.7. The vfx2021 platform is still in the process of being adopted in many facilities.

https://www.pypistats.org/packages/jsonpickle shows that 3.7 is still very actively downloaded, so maybe we can hold onto it for another couple of years.

@Theelx
Copy link
Contributor Author

Theelx commented Jan 8, 2022

Oh, that website is interesting. Based on that info, we should absolutely keep 3.7 support. 3.6 seems pretty high up there though, so maybe when jsonpickle 3.0 is released, focus can be on the 3.0 branch, and bugfixes can be backported to the 2.x series?

@Theelx
Copy link
Contributor Author

Theelx commented May 8, 2022

I think I'm leaning towards cleaning up outdated code and releasing jsonpickle 3 (with only 3.7+ support) sometime after 2.2.0 is released, probably over the summer. In retrospect, jsonpickle 2 was really released too fast, we should have at least dropped 2.7 and 3.5 support with that dictionary identity change.

@Theelx
Copy link
Contributor Author

Theelx commented May 11, 2022

2.2.0 has been released, starting to clean up the old code now.

@stefan6419846
Copy link

The claim in the initial comment is false, as f-strings (PEP-498) are already present in Python 3.6 (see https://docs.python.org/3.6/whatsnew/3.6.html#pep-498-formatted-string-literals). That said, while I am still stuck on Python 3.6 for now, dropping support for it should be no big deal from my side as I only use a rather small subset of the available functionality.

@Theelx
Copy link
Contributor Author

Theelx commented May 18, 2022

The initial comment was that 3.8 introduced support for the walrus operator was well as the {expr=} feature for f-strings. That is a true statement, see walrus and expr=.

@stefan6419846
Copy link

Okay, I must have missed the assignment part for f-strings.

@Theelx
Copy link
Contributor Author

Theelx commented Dec 1, 2022

3.0.0 has been released, and support for Python 2.7 and <=3.6 has been dropped. https://pypi.org/project/jsonpickle/3.0.0/

@Theelx Theelx closed this as completed Dec 1, 2022
@Theelx Theelx unpinned this issue Dec 1, 2022
@perrinjerome
Copy link
Contributor

The README still mentions "Version support below CPython 3.7 will be dropped upon release of jsonpickle 3.0.", I'm suggesting to remove this #463

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

No branches or pull requests

4 participants