Skip to content

Improve RemoteProgress parse return typing - #2187

Merged
Byron merged 1 commit into
gitpython-developers:mainfrom
pick7:codex/remote-progress-return-type
Jul 26, 2026
Merged

Improve RemoteProgress parse return typing#2187
Byron merged 1 commit into
gitpython-developers:mainfrom
pick7:codex/remote-progress-return-type

Conversation

@pick7

@pick7 pick7 commented Jul 25, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Broaden RemoteProgress._parse_progress_line() from None to Optional[object] so subclass overrides may return a value without violating the base type.
  • Make the base implementation return None explicitly and keep new_message_handler() ignoring that return value.
  • Add a mypy-covered regression test with an override that returns a non-None value.

Closes #1834

Checks

  • .venv/bin/python -m pytest test/deprecation/test_remote_progress.py
  • .venv/bin/python -m mypy git/util.py test/deprecation/test_remote_progress.py
  • .venv/bin/python -m ruff check git/util.py test/deprecation/test_remote_progress.py
  • .venv/bin/python -m ruff format --check git/util.py test/deprecation/test_remote_progress.py

AI agent disclosure

OpenAI Codex prepared this scoped code/test change and PR text. I reviewed the diff and ran the checks above.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR adjusts the typing contract of RemoteProgress._parse_progress_line() to support subclass overrides that return a value (without violating Liskov substitutability), while keeping the base implementation conceptually “void” and ensuring internal callers ignore the return value.

Changes:

  • Broaden RemoteProgress._parse_progress_line() return annotation from None to Optional[object], and make the base implementation return None explicitly on all paths.
  • Update RemoteProgress.new_message_handler() to ignore _parse_progress_line()’s return value (avoids returning a non-None type from a -> None handler).
  • Add a regression test demonstrating a subclass override that returns a non-None value.

Reviewed changes

Copilot reviewed 2 out of 2 changed files in this pull request and generated no comments.

File Description
git/util.py Broadens _parse_progress_line() return typing and ensures call sites (message handler) don’t propagate that return value.
test/deprecation/test_remote_progress.py Adds a regression test proving overrides may return non-None under the new base typing.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@Byron Byron left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks, LGTM!

@Byron
Byron merged commit fb5d584 into gitpython-developers:main Jul 26, 2026
48 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

3 participants