Fix Git.{AutoInterrupt,CatFileContentStream} static typing by EliahKagan · Pull Request #2039 · gitpython-developers/GitPython
added 2 commits
June 7, 2025 11:35This uses `TypeAlias` from the `typing` module, to make it so the assignment statments introduced in gitpython-developers#2037 (to set `Git.AutoInterrupt` and `Git.CatFileContentStream` to nonpublic module-level implementations `_AutoInterrupt` and `_CatFileContentStream`) are treated by `mypy` as type aliases rather than as class variables. For details on the problem this partially fixes, see gitpython-developers#2038 and: https://mypy.readthedocs.io/en/stable/common_issues.html#variables-vs-type-aliases The fix won't work in this form, however, because it attempts to import `TypeAlias` unconditionally from the standard-library `typing` module, which only gained it in Python 3.10.
The standard library `typing` module introduced `TypeAlias` in Python 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, this fixes gitpython-developers#2038. (This is approach (2) described there.)
This was referenced
Jun 7, 2025This 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