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 2.6 and 3.3 #737

Merged
merged 10 commits into from Mar 24, 2018

Conversation

@hugovk
Copy link
Contributor

@hugovk hugovk commented Mar 18, 2018

As a follow on from #540 (comment), this drops support for Python 2.6 and 3.3, both of which are EOL and no longer receiving security updates, or any updates, from the core Python team.

They're also little used. Here's the pip installs for GitPython from PyPI for last month:

python_version percent download_count
2.7 82.08% 466,982
3.6 10.07% 57,285
3.5 4.88% 27,754
3.4 2.58% 14,663
2.6 0.23% 1,333
3.7 0.10% 571
3.3 0.06% 321
3.8 0.00% 5

Source: pypinfo --start-date -39 --end-date -12 --percent --pip --markdown GitPython pyversion

Dropping Python 2.6 means some old compatibility and 2.6-specific code can be removed, and can also be updated to use more modern features of Python 2.7+, some of which has been applied here.

Python 3.3 is also dropped here. Whilst there's less benefit to be had from code changes (compared to 2.6), it's unsupported and used even less that 2.6 (in this project and in general), so there's no strong reason to keep it and we might as well free up some CI slots.

@Byron
Copy link
Member

@Byron Byron commented Mar 18, 2018

Thank you so much for this massive cleanup!
To me it would have been utterly impossible to do it! It's contributors like you who keep this project going!

I will have a closer look in the following days, and invite @yarikoptic and @ankostis to do the same.

What do you all think how this change should be released? In theory it would have to be a major version jump, as we might break some people. On the other hand, the API didn't change so the release might be confusing and repelling to everyone else.

From that point of view, it might not be more than a patch release.

@hugovk
Copy link
Contributor Author

@hugovk hugovk commented Mar 18, 2018

You're welcome, and thanks for the maintenance!


Some projects bump major versions to indicate dropping support, some don't.

If following semver, it depends if you consider it a backwards incompatible changes:

  1. Major version X (X.y.z | X > 0) MUST be incremented if any backwards incompatible changes are introduced to the public API. It MAY include minor and patch level changes. Patch and minor version MUST be reset to 0 when major version is incremented.

https://semver.org/#spec-item-8

I probably would bump it, but don't have strong opinions.


It's good 2.1.8 was already released with python_requires (c22f1b0), which will help pip install the right version for people still on old Pythons. See:

@Byron
Byron approved these changes Mar 18, 2018
Copy link
Member

@Byron Byron left a comment

Looks good to me!
Interesting to see all the new syntactic sugar that was added since the last time I actively wrote python code.

@Byron
Copy link
Member

@Byron Byron commented Mar 18, 2018

And since we don't change the public API in that sense, I think a major version bump shouldn't be required. Also I would rather upset those behind ~1000 downloads, rather than confusing (or loosing) those behind the 500k downloads.

I will wait a week for more commends and/or opinions to come in, and if there are no objects, will release a new version next weekend.

Copy link
Collaborator

@yarikoptic yarikoptic left a comment

cute! just 2 minor comments/questions ;)

* `[include]` sections in git configuration files are now respected
* Added `GitConfigParser.rename_section()`
* Added `Submodule.rename()`
* A list of all issues can be found `on github <https://github.com/gitpython-developers/GitPython/issues?q=milestone%3A%22v0.3.6+-+Features%22+>`_
* A list of all issues can be found `on GitHub <https://github.com/gitpython-developers/GitPython/issues?q=milestone%3A%22v0.3.6+-+Features%22+>`_

This comment has been minimized.

@yarikoptic

yarikoptic Mar 19, 2018
Collaborator

Probably could/will be added later -- but there should be a "loud" changelog entry about dropping 2.6 support for the upcoming release

This comment has been minimized.

@hugovk

hugovk Mar 19, 2018
Author Contributor

Yes, that would be sensible.

Would you like me to do that as part of this PR, or should it wait? If now, what's version will the next release be?

@@ -3,4 +3,4 @@
coverage
flake8
nose
mock; python_version<='2.7'
mock; python_version=='2.7'

This comment has been minimized.

@yarikoptic

yarikoptic Mar 19, 2018
Collaborator

so version here could never include ".patch" (ie to be 2.7.5)? if it could then would need to retain <=

This comment has been minimized.

@hugovk

hugovk Mar 19, 2018
Author Contributor

Not too sure. Shall I revert this to be on the safe side?

@Byron Byron merged commit f3265bd into gitpython-developers:master Mar 24, 2018
1 of 2 checks passed
1 of 2 checks passed
continuous-integration/appveyor/pr AppVeyor build failed
Details
continuous-integration/travis-ci/pr The Travis CI build passed
Details
@codecov-io
Copy link

@codecov-io codecov-io commented Mar 24, 2018

Codecov Report

Merging #737 into master will decrease coverage by <.01%.
The diff coverage is 95.5%.

Impacted file tree graph

@@            Coverage Diff             @@
##           master     #737      +/-   ##
==========================================
- Coverage   94.66%   94.66%   -0.01%     
==========================================
  Files          60       59       -1     
  Lines        9338     9289      -49     
==========================================
- Hits         8840     8793      -47     
+ Misses        498      496       -2
Impacted Files Coverage Δ
git/test/test_docs.py 100% <ø> (ø) ⬆️
git/test/test_git.py 98.8% <100%> (ø) ⬆️
git/refs/head.py 98.9% <100%> (ø) ⬆️
git/objects/submodule/base.py 94.35% <100%> (-0.22%) ⬇️
git/test/performance/test_odb.py 100% <100%> (ø) ⬆️
git/test/test_repo.py 97.83% <100%> (+0.13%) ⬆️
git/objects/util.py 92.35% <100%> (ø) ⬆️
git/diff.py 99.11% <100%> (ø) ⬆️
git/test/test_fun.py 98.92% <100%> (-0.02%) ⬇️
git/config.py 92.43% <100%> (-0.33%) ⬇️
... and 28 more

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 9f12b26...80b038f. Read the comment docs.

@Byron Byron added this to the v2.1.9 - Bugfixes milestone Mar 24, 2018
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Linked issues

Successfully merging this pull request may close these issues.

None yet

4 participants
You can’t perform that action at this time.