Uh oh!
There was an error while loading.Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork941
Fix Git.{AutoInterrupt,CatFileContentStream} static typing#2039
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 ourterms of service andprivacy statement. We’ll occasionally send you account related emails.
Already on GitHub?Sign in to your account
Merged
Uh oh!
There was an error while loading.Please reload this page.
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.Learn more about bidirectional Unicode characters
This uses `TypeAlias` from the `typing` module, to make it so theassignment statments introduced ingitpython-developers#2037 (to set `Git.AutoInterrupt`and `Git.CatFileContentStream` to nonpublic module-levelimplementations `_AutoInterrupt` and `_CatFileContentStream`) aretreated by `mypy` as type aliases rather than as class variables.For details on the problem this partially fixes, seegitpython-developers#2038 and:https://mypy.readthedocs.io/en/stable/common_issues.html#variables-vs-type-aliasesThe fix won't work in this form, however, because it attempts toimport `TypeAlias` unconditionally from the standard-library`typing` module, which only gained it in Python 3.10.
The standard library `typing` module introduced `TypeAlias` inPython 3.10. This uses it from `typing_extensions` where neederd,by making three changes:- Change the version lower bound for `typing-extensions` from 3.7.4.3 to 3.10.0.2, since 3.7.4.3 doesn't offer `TypeAlias`. (The reason not to go higher, to major version 4, is that it no longer supports versions of Python lower than 3.9, but we currently support Python 3.7 and Python 3.8.)- Require the `typing-extensions` dependency when using Python versions lower than 3.10, rather than only lower than 3.7 as before.- Conditionally import `TypeAlias` (in the `git.cmd` module) from either `typing` or `type_extensions` depending on the Python version, using a pattern that `mypy` and other type checkers recognize statically.Together with the preceding commit, thisfixesgitpython-developers#2038. (This isapproach (2) described there.)
5b098ff
intogitpython-developers:main 26 checks passed
Uh oh!
There was an error while loading.Please reload this page.
This was referencedJun 7, 2025
Sign up for freeto join this conversation on GitHub. Already have an account?Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading.Please reload this page.
Fixes#2038
This fixes
mypy
forGit.AutoInterrupt
andGit.CatFileContentStream
. Static type checking of these was broken inadvertently in#2037, as described in#2038. This is approach (2) described in#2038. Further details are in that bug report and in the commit messages.As in#2037, I've made sure this doesn't break Sphinx (though it would be very strange if it did), by checking locally as well as in the RTD cloud build. The entries in the latter can be examined:
AutoInterrupt
,CatFileContentStream
.Because CI runs
mypy
but does not verify its output, I'll wait to mark this non-draft until I've looked at all relevant jobs'mypy
steps. (But this may be before the jobs complete, since the jobs that runmypy
do so before runningpytest
, not after.)Edit: All
mypy
results on CI look as they did before, and then new errors that came in with#2037 are gone.