jquast / blessed

Blessed is an easy, practical library for making python terminal apps
http://pypi.python.org/pypi/blessed
MIT License
1.18k stars 71 forks source link

Drop Python 3.4 support #226

Open tiptenbrink opened 2 years ago

tiptenbrink commented 2 years ago

Hi, it is nearly impossible nowadays to install Python 3.4 as it requires openssl1.0, which is very difficult (if not impossible, all solutions from previous years seem to have stopped working) to install as it has been replaced by openssl1.1. Python 3.4 is also EOL for quite some time now. Maybe it is time to remove support?

avylove commented 2 years ago
Download counts for the last 45 days python_version download_count
3.7 815,720
3.8 382,366
3.6 186,227
3.9 88,979
3.10 25,073
2.7 22,184
3.5 11,901
3.4 436
3.11 9
Total 1,532,895

Chances are good a lot of those 436 downloads are test runs. I wish that number was lower, but I don't have a problem dropping 3.4. That said, it's not a priority because it's not breaking anything and both @jquast and I are pretty busy these days. I had been thinking I'd deal with it when we can't test it or it blocks something.

Taking a quick look at the code there is a little exception cleanup we can do in Terminal.kbhit(), but it's not a performance hit for other versions. That would be the only code change that's 3.4 specific. Otherwise it's just metadata.

Not specific to 3.4, but related to versions, we can clean up some old version references in the docs and the version check in __init__.py

Also related, we have some cases where we use hasattr() on the standard library but don't have a comment for why. We should probably add comments. That said, they seem to be *nix/windows differences or for redirected streams and not version specific.

tiptenbrink commented 2 years ago

A main problem is that since 3.4 is so difficult to install (which is probably why it's so much lower than the other versions), it's hard to run a full test suite on blessed on your own machine, which is why I just didn't bother.

jquast commented 2 months ago

I don't bother to run tests with older python versions locally, either, I just (ab)use CI to do it on my behalf. We will certainly drop older versions when the download numbers are very low and/or we can't support it in CI.

avylove commented 2 months ago

Dropped 3.4 in https://github.com/jquast/blessed/commit/ffc90134a08f175e1dc07c6f5e94c019cedde759 3 downloads for 3.4 in the last month.

However, it doesn't take out the code I mentioned above. We can probably drop it though since 2.7 doesn't have InterruptedError and 3.5+ doesn't raise it. https://github.com/jquast/blessed/blob/167c34e5268cacb4501418e71e9b926b80dfe077/blessed/terminal.py#L1293-L1314