-
Notifications
You must be signed in to change notification settings - Fork 67
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
Bump smmap dependency major-version upper bound #95
Bump smmap dependency major-version upper bound #95
Conversation
This does not change the lower bound, so all the combinations of versions that could be resolved before can still be resolved. As such, this is not a major or breaking change. This is to allow smmap 6 going forward (including future releases that may change more than metadata).
Closing based on gitpython-developers/smmap#51 (comment). The one and only 6-series smmap has been yanked, and the latest non-yanked version is intentionally 5.0.1. Since no version too high for the current |
Thanks a lot, this all would make perfect sense if It's probably worth it for you to double-check the versions to be sure the currently released You advice is definitely appreciated here. PS: This conversation is a good indicator for why I'd love to merge |
I closed this just before your comment #95 (comment) came in, but of course it could be reopened if it turns out to be useful in some form.
I'll look into that.
Although I'm realizing I'm without citations to confirm this (at least at the moment), in general I think breaking version compatibility in a way that cannot be fixed merely by upgrading other dependencies--and without changing the code that consumes those dependencies--is a breaking change. In a sense, the Python implementation is itself a dependency (it literally is with (I think there are some ambiguities with this. For example, suppose operating system A is used by interpreter B that runs the code C. When B came out, it supported A, but B has a later end of life date than A, much later. Now A is itself no longer supported. B never stopped declaring support for A, and B can still be installed on A, though no one expects that, or anything else, to go well on A today. If C releases a patch version that breaks on A, is that a bug in C? If so, suppose the patch simply doesn't do anything different on A, even as it fixes some bug otherwise. Can C no longer be claimed to have fixed the bug? Can it no longer be claimed to support B?) |
Thanks for sharing, I take it that the python interpreter is considered a dependency, and removing support for running on one is thus considered a breaking change. From what I can tell (without having caught up with anything else yet), the current state of GitPython is OK. |
I had meant to suggest that if we regard the Python implementation (interpreter, standard library, etc.) to be a dependency then that would support the idea that it is more often okay for a library to break compatibility with it... but only in cases where a later version of it is readily available and doesn't require the code using the library to be changed. Since going from, e.g., Python 3.11 to 3.12 almost always incurs some breaking change (removing a deprecated standard library function, for example), and there is effectively no limit to what code that uses a library might also be doing, I think dropping support for a major or minor version of Python is a breaking change, provided support for it was in some way claimed. In contrast, I'm inclined to think it's at least in principle non-breaking to make changes that only require a patch version upgrade to the Python implementation, since a patch-version upgrade to Python shouldn't itself break anything else. But anyway, those were mostly idle thoughts, and not necessarily all that useful.
GitPython should definitely be fine, because the issue here is declared installability, and By the way, what I am thinking of looking into but haven't yet (and alluded to opaquely in #95 (comment)) is whether or not Unlike 3.7, I think it's much harder to test 3.6 these days and be confident that the tests are representative of real-world usage on 3.6. Anyone still using 3.6 is doing something rather odd, whereas plenty of people still use 3.7 in order to maintain libraries that haven't dropped support for it yet to make things easier for people who are struggling to get their applications off 3.7. There is also the issue that 3.6 has been without security updates longer enough than 3.7 that I would be more reluctant to run it on CI. |
Thanks for elaborating! I wholly rely on your experience with python to decide which python versions to support and test for, EOL or not, and whether or not to treat the removal of declared support for installing on a particular python interpreter is supposed to be signalled with a breaking semver change or not. From what I can gather, I think the same happened in GitPython as well, but I never changed its major version because of that as it would have caused too many questions and churn downstream, and doing it like that worked fine. People only ever showed up here if support for older versions was effectively removed, like happened with the switch from python 2 to python 3, which caused GitPython to change its version number from 2 to 3 as well. So I think there we have it :): Major version bumps aren't needed to signal the drop of support of EOL python interpreter versions. |
I think it can be forced to do so. But it does not do so automatically. I'd say that's fine here, though, because it's fine for people to have the older package. They will be using lots of outdated packages if they're on Python 3.6. Please note that I'm only talking about required version metadata, which is specified by |
Ah, that's perfect then, as I had these in mind primarily. Then all the effort I caused by bumping major versions was definitely unnecessary (in case of |
In |
This does not change the lower bound (nor does it prohibit any versions in the range), so all the combinations of versions that could be resolved before can still be resolved. As such, this is not a major or breaking change to
gitdb
.This is to permit
gitdb
to usesmmap
6.*.* going forward (gitpython-developers/smmap#51), including future releases that may change more than metadata. Because it does not keep any combinations of versions that worked before from continuing to work, this should not break anything.smmap
, installingGitPython
does not installsmmap
6 is with any version of Python, no matter how recent. This is becausegitdb
has the exclusive major version upper bound<6
.smmap
change since Release New Version to PyPi smmap#51,smmap
5 would be used on Python 3.7 andsmmap
6 would be used on all later versions of Python.smmap
release after that, then with thisgitdb
would be able to usesmmap
6 even on Python 3.7.Still, whether or not we actually want this, and also when, may depend to some extent on what is done in gitpython-developers/smmap#52 and more broadly to matters discussed in gitpython-developers/smmap#51. However, I suspect that a change like this will be wanted however that goes, unless the outcome is to yank smmap 6.0.0 with no further action.
This PR is conceptually related to gitpython-developers/smmap#52 but I regard them to really be independent. Any combination of either of these PRs and making or not making a release after them could be done in any order and I believe everything would be fine (though obviously I do think these PRs should be regarded as improvements, though admittedly small ones, since if I didn't think that then I wouldn't have opened them). Since unlike
smmap
6.0.0 the version bump ingitdb
in a release after this PR would just be to a minor or patch version, theGitPython
dependencies don't need to be updated.