◐ Shell
clean mode source ↗

Mypy linting issue with Repo.clone_from and progress bar · gitpython-developers/GitPython · Discussion #2002

Hi,

Consider the following example:

import rich.progress
import git
from git import Repo
from rich.console import Console

console = Console(log_path=False)

class GitProgressPrinter(git.RemoteProgress):
    def __init__(self, progress, name):
        super().__init__()
        self.progress = progress
        self.name = name
        self.task = progress.add_task(name)

    def update(self, op_code, cur_count, max_count=None, message=""):
        pass


def main():
    with rich.progress.Progress(console=console) as progress:
        progress_bar = GitProgressPrinter(progress, "My Repo")
        Repo.clone_from("url", "dir", progress=progress_bar, depth=1)

Using gitpython==3.1.44 and mypy==1.15.0, it shows the following message:

Image

Argument of type "GitProgressPrinter" cannot be assigned to parameter "progress" of type "CallableProgress" in function "clone_from"
  Type "GitProgressPrinter" is not assignable to type "CallableProgress"
    Type "GitProgressPrinter" is not assignable to type "(int, str | float, str | float | None, str) -> None"
    "GitProgressPrinter" is not assignable to "None"

Can you help me understand what's wrong here? Missing typing info on the gitpython side?