From 59a0c88a08de4b35608d82b107844915a787f192 Mon Sep 17 00:00:00 2001 From: Andrej730 Date: Mon, 3 Jun 2024 00:26:11 +0500 Subject: [PATCH 1/2] Fix IndexFile items argument type Error before commit: path: os.PathLike = ... repo = git.Repo(path_dir) repo.index.add(path) --- git/index/base.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/git/index/base.py b/git/index/base.py index b8161ea52..fc4474cac 100644 --- a/git/index/base.py +++ b/git/index/base.py @@ -658,7 +658,7 @@ def _to_relative_path(self, path: PathLike) -> PathLike: return os.path.relpath(path, self.repo.working_tree_dir) def _preprocess_add_items( - self, items: Sequence[Union[PathLike, Blob, BaseIndexEntry, "Submodule"]] + self, items: Union[PathLike, Sequence[Union[PathLike, Blob, BaseIndexEntry, "Submodule"]]] ) -> Tuple[List[PathLike], List[BaseIndexEntry]]: """Split the items into two lists of path strings and BaseEntries.""" paths = [] @@ -749,7 +749,7 @@ def _entries_for_paths( def add( self, - items: Sequence[Union[PathLike, Blob, BaseIndexEntry, "Submodule"]], + items: Union[PathLike, Sequence[Union[PathLike, Blob, BaseIndexEntry, "Submodule"]]], force: bool = True, fprogress: Callable = lambda *args: None, path_rewriter: Union[Callable[..., PathLike], None] = None, @@ -976,7 +976,7 @@ def _items_to_rela_paths( @default_index def remove( self, - items: Sequence[Union[PathLike, Blob, BaseIndexEntry, "Submodule"]], + items: Union[PathLike, Sequence[Union[PathLike, Blob, BaseIndexEntry, "Submodule"]]], working_tree: bool = False, **kwargs: Any, ) -> List[str]: @@ -1036,7 +1036,7 @@ def remove( @default_index def move( self, - items: Sequence[Union[PathLike, Blob, BaseIndexEntry, "Submodule"]], + items: Union[PathLike, Sequence[Union[PathLike, Blob, BaseIndexEntry, "Submodule"]]], skip_errors: bool = False, **kwargs: Any, ) -> List[Tuple[str, str]]: From 77fb5f06bd86a02f481a1d34ca0938bb5b7f5219 Mon Sep 17 00:00:00 2001 From: Andrej730 Date: Mon, 3 Jun 2024 00:28:45 +0500 Subject: [PATCH 2/2] Specify DiffIndex generic type Example before this commit: repo = git.Repo(path_dir) diff = repo.index.diff(None) modified_files = [d for d in repo.index.diff(None)] reveal_type(modified_files) # list[Unknown] instead of list[Diff] --- git/diff.py | 8 ++++---- git/index/base.py | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/git/diff.py b/git/diff.py index f89b12d98..e9f7e209f 100644 --- a/git/diff.py +++ b/git/diff.py @@ -187,7 +187,7 @@ def diff( paths: Union[PathLike, List[PathLike], Tuple[PathLike, ...], None] = None, create_patch: bool = False, **kwargs: Any, - ) -> "DiffIndex": + ) -> "DiffIndex[Diff]": """Create diffs between two items being trees, trees and index or an index and the working tree. Detects renames automatically. @@ -581,7 +581,7 @@ def _pick_best_path(cls, path_match: bytes, rename_match: bytes, path_fallback_m return None @classmethod - def _index_from_patch_format(cls, repo: "Repo", proc: Union["Popen", "Git.AutoInterrupt"]) -> DiffIndex: + def _index_from_patch_format(cls, repo: "Repo", proc: Union["Popen", "Git.AutoInterrupt"]) -> DiffIndex["Diff"]: """Create a new :class:`DiffIndex` from the given process output which must be in patch format. @@ -674,7 +674,7 @@ def _index_from_patch_format(cls, repo: "Repo", proc: Union["Popen", "Git.AutoIn return index @staticmethod - def _handle_diff_line(lines_bytes: bytes, repo: "Repo", index: DiffIndex) -> None: + def _handle_diff_line(lines_bytes: bytes, repo: "Repo", index: DiffIndex["Diff"]) -> None: lines = lines_bytes.decode(defenc) # Discard everything before the first colon, and the colon itself. @@ -747,7 +747,7 @@ def _handle_diff_line(lines_bytes: bytes, repo: "Repo", index: DiffIndex) -> Non index.append(diff) @classmethod - def _index_from_raw_format(cls, repo: "Repo", proc: "Popen") -> "DiffIndex": + def _index_from_raw_format(cls, repo: "Repo", proc: "Popen") -> "DiffIndex[Diff]": """Create a new :class:`DiffIndex` from the given process output which must be in raw format. diff --git a/git/index/base.py b/git/index/base.py index fc4474cac..28b60a880 100644 --- a/git/index/base.py +++ b/git/index/base.py @@ -1478,7 +1478,7 @@ def diff( paths: Union[PathLike, List[PathLike], Tuple[PathLike, ...], None] = None, create_patch: bool = False, **kwargs: Any, - ) -> git_diff.DiffIndex: + ) -> git_diff.DiffIndex[git_diff.Diff]: """Diff this index against the working copy or a :class:`~git.objects.tree.Tree` or :class:`~git.objects.commit.Commit` object.