GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — Fix Git.{AutoInterrupt,CatFileContentStream} static typing by EliahKagan · Pull Request #2039 · gitpython-developers/GitPython

Conversation

@EliahKagan

@EliahKagan EliahKagan commented Jun 7, 2025 •
edited
Loading

Uh oh!

There was an error while loading. Please reload this page.

Copy link
Copy Markdown
Member

Fixes #2038

This fixes mypy for Git.AutoInterrupt and Git.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 run mypy do so before running pytest, not after.)

Edit: All mypy results on CI look as they did before, and the new errors that came in with #2037 are gone.

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

Byron reacted with heart emoji
All reactions
  • ❤️ 1 reaction
EliahKagan added 2 commits June 7, 2025 11:35
@EliahKagan
Start on fixing AutoInterrupt/CatFileContentStream aliases
c6d16d0
This 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.
@EliahKagan
Import TypeAlias from typing_extensions where needed
c6c0812
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.)
@EliahKagan
EliahKagan marked this pull request as ready for review June 7, 2025 16:21
@EliahKagan
EliahKagan merged commit 5b098ff into gitpython-developers:main Jun 7, 2025
@EliahKagan
EliahKagan deleted the flatten-next branch June 7, 2025 16:21
This was referenced Jun 7, 2025
Git.{AutoInterrupt,CatFileContentStream} refactor broke static typing #2038
Closed
Fix CI mypy command on free-threaded Python #2040
Merged
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Reviewers

No reviews

Uh oh!

There was an error while loading. Please reload this page.

Assignees

No one assigned

Labels

None yet

Milestone

No milestone

Development

Successfully merging this pull request may close these issues.

Git.{AutoInterrupt,CatFileContentStream} refactor broke static typing

Uh oh!

There was an error while loading. Please reload this page.

1 participant

@EliahKagan
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.
You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.