-
Notifications
You must be signed in to change notification settings - Fork 99
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
Python version support tracking #151
Comments
So since I've put in the work to make all latest changes compatible with both 3.5 and 2.7, I think it makes sense to keep compatibility with those version for the upcoming 0.14.0 release. I do have some other things I want to get in that release, hoping to release it over the next few weeks. I'm thinking that we can do a quick follow-up 0.15.0 release after 0.14.0, that just drops support for Python 2.7 and 3.5 and bumps dependency versions. |
Some data points from pypi downloads. Last 3 monthspip install -U pypistats
pypistats python_minor gitlint -sd 2020-06-25 -ed 2020-09-25
Date range: 2020-06-25 - 2020-09-25 Take-away: 15% still on Python 2.7 or 3.5 Last Monthpypistats python_minor gitlint --last-month
Date range: 2020-08-01 - 2020-08-31 Take-away: 18% still on Python 2.7 or 3.5 Overall take-away: probably a good decision to keep 2.7 and 3.5 for one more release (0.14.0) with a clear warning during install and in the docs. |
👍 Makes good sense |
The upcoming 0.14.x release will be the last one to support these python versions. Relates to #151
Removed all references to Python 2.7 and 3.5 from the documentation and tools. Tests will no longer run in CI against these versions. Relates to #151.
Removes all cases where there's an explicit code path to support Python2. Relates to #151
The sstr utility method was used explicitly encode strings to unicode in python2. Relates to #151
No longer needed in Python 3. Relates to #151
Was used to explicitely get the string representation of a given object and decode it in Python2. Replaced with built-in str() function in Python 3. Relates to #151
Was used to explicitely get the string representation of a given object and decode it in Python2. Replaced with built-in str() function in Python 3. Relates to #151
Was used to explicitely get the string representation of a given object and decode it in Python2. Replaced with built-in str() function in Python 3. Relates to #151
ConfigParser.readfp() is deprecated in Python 3, replaced it with ConfigParser.read_file(). Relates to #151
Python 3 allows for more elegant access to parent function variables using the 'nonlocal' keyword, which allows for cleanup of the caching decorator. Relates to #151
Replaces most occurences for format() with f-strings (supported since Python 3.6) - this makes for more readable code in most cases. Relates to #151
The __unicode__ method is ignored in Python 3, so we can replace with with __str__. Relates to #151
Removed all references to Python 2.7 and 3.5 from the documentation and tools. Tests will no longer run in CI against these versions. Relates to #151.
Removes all cases where there's an explicit code path to support Python2. Relates to #151
The sstr utility method was used explicitly encode strings to unicode in python2. Relates to #151
No longer needed in Python 3. Relates to #151
Was used to explicitely get the string representation of a given object and decode it in Python2. Replaced with built-in str() function in Python 3. Relates to #151
ConfigParser.readfp() is deprecated in Python 3, replaced it with ConfigParser.read_file(). Relates to #151
Python 3 allows for more elegant access to parent function variables using the 'nonlocal' keyword, which allows for cleanup of the caching decorator. Relates to #151
Replaces most occurences for format() with f-strings (supported since Python 3.6) - this makes for more readable code in most cases. Relates to #151
The __unicode__ method is ignored in Python 3, so we can replace with with __str__. Relates to #151
All work has been completed, this marks the end of gitlint support for Python 2.7 and Python 3.5 (and a lot of related suffering on my end 🎉). Will keep this ticket open for a bit in case there's any follow-up discussion. For reference, here's the latest stats at the time of writing. 3 Month Average
Date range: 2020-08-22 - 2020-11-22 1 Month Average
Date range: 2020-10-01 - 2020-10-31 Take-away is the same as before. About ~20% of users is still using Python 3.5 or 2.7. Given that there are no functional differences between gitlint 0.15.0 (Python 3.6+ only) and gitlint 0.14.0, users on older versions of python should pin their version like so: pip install "gitlint>=0.14.0,<0.15.0" |
Just because it's fun to keep tracking this, today's numbers below. Last Monthpypistats python_minor gitlint --last-month
Date range: 2021-02-01 - 2021-02-28 Python 2.7 + 3.5 share = 14.82% Last 3 Monthspypistats python_minor gitlint -sd 2020-12-07 -ed 2021-03-07
Date range: 2020-12-07 - 2021-03-07 Python 2.7 + 3.5 share = 12.87% So overall there's a slow but steady decline. Reminder, users on older versions of python should pin their version like so
|
New Numbers! Interestingly, number of overall downloads is increasing :-) Last Monthpypistats python_minor gitlint --last-month
Date range: 2021-09-01 - 2021-09-30 Python 2.7 + 3.5 share = 10.25% Last 3 Monthspypistats python_minor gitlint -sd 2021-07-04 -ed 2021-10-04
Date range: 2021-07-04 - 2021-10-04 Python 2.7 + 3.5 share = 11.95% The decline of older python versions in use continues. Reminder, users on older versions of python should pin their version like so
|
New Numbers! Last Monthpypistats python_minor gitlint --last-month
Date range: 2022-03-01 - 2022-03-31 Python 2.7 + 3.5 share = 7.95% Last 3 Monthspypistats python_minor gitlint -sd 2022-01-16 -ed 2022-04-16
Date range: 2022-01-16 - 2022-04-16 Python 2.7 + 3.5 share = 7.24% The decline of older python versions in use continues. Reminder, users on older versions of python should pin their version like so
|
New Numbers! Last Monthpypistats python_minor gitlint --last-month
Date range: 2022-09-01 - 2022-09-30 Python 2.7 + 3.5 share = 4.18% Last 3 Monthspypistats python_minor gitlint -sd 2022-07-27 -ed 2022-10-27
Date range: 2022-07-27 - 2022-10-27 Python 2.7 + 3.5 share = 4.37% The upcoming 0.18.0 release will be the last one to support Python 3.6. |
Edit: Initially this issue was used to track work related to dropping support for Python 2.7 and 3.5, but we're now using it to track the python versions used by gitlint users over time.
Both Python 2.7 and Python 3.5 are EOL. As a result, the upcoming gitlint 0.14.x release will be the last version to support them.
This is mainly because many of gitlint's dependencies have dropped support for Python 2.7 and 3.5 or are planning to do so very soon - this makes it impossible to keep them up-to-date while still supporting Python 2.7 and 3.5. In addition, not having to support both Python 2 and 3 should make maintaining gitlint significantly easier. Today a lot of development time is spend on maintaining this compatibility.
While the act of "dropping support" is easy (we just don't advertise and test for it anymore), we should also remove any code that's no longer required. Dropping support for Python 2.7 in particular will allow us to remove quite a bit of code.
This issue can be used to discuss and track any related work.
The text was updated successfully, but these errors were encountered: