summaryrefslogtreecommitdiff
path: root/git
diff options
context:
space:
mode:
authorYobmod <yobmod@gmail.com>2021-07-09 00:56:20 +0100
committerYobmod <yobmod@gmail.com>2021-07-09 00:56:20 +0100
commit1faa25fcf828062d2c4ad35a962b4d8d3b05e855 (patch)
treede2a427894b78dfd2ca7f9f3de6ae86335b5004e /git
parent4802a36bd0fec7e6ae03d6713ceae70de8e1783a (diff)
downloadgitpython-1faa25fcf828062d2c4ad35a962b4d8d3b05e855.tar.gz
Rmv typeguard from list_traverse(), was wrong
Diffstat (limited to 'git')
-rw-r--r--git/objects/util.py30
-rw-r--r--git/util.py8
2 files changed, 18 insertions, 20 deletions
diff --git a/git/objects/util.py b/git/objects/util.py
index 5fb4c58a..7173bc7a 100644
--- a/git/objects/util.py
+++ b/git/objects/util.py
@@ -23,7 +23,7 @@ from datetime import datetime, timedelta, tzinfo
from typing import (Any, Callable, Deque, Iterator, NamedTuple, overload, Sequence,
TYPE_CHECKING, Tuple, Type, TypeVar, Union, cast)
-from git.types import Literal, TypeGuard
+from git.types import Literal
if TYPE_CHECKING:
from io import BytesIO, StringIO
@@ -306,23 +306,19 @@ class Traversable(object):
"""
raise NotImplementedError("To be implemented in subclass")
- def list_traverse(self, *args: Any, **kwargs: Any) -> IterableList['TraversableIterableObj']:
+ def list_traverse(self, *args: Any, **kwargs: Any) -> IterableList:
"""
:return: IterableList with the results of the traversal as produced by
traverse()
- List objects must be IterableObj and Traversable e.g. Commit, Submodule"""
-
- def is_TraversableIterableObj(inp: 'Traversable') -> TypeGuard['TraversableIterableObj']:
- # return isinstance(self, TraversableIterableObj)
- # Can it be anything else? Check this
- return isinstance(self, TraversableIterableObj)
+ """
+ if isinstance(self, TraversableIterableObj):
+ id = self._id_attribute_
+ else: # Tree
+ id = ""
- if is_TraversableIterableObj(self):
- out: IterableList['TraversableIterableObj'] = IterableList(self._id_attribute_)
- out.extend(self.traverse(*args, **kwargs))
- return out
- else:
- return IterableList("") # Its a Tree, which doesnt have _id_attribute_
+ out: IterableList = IterableList(id)
+ out.extend(self.traverse(*args, **kwargs))
+ return out
def traverse(self,
predicate: Callable[[Union['Traversable', 'Blob', TraversedTup], int], bool] = lambda i, d: True,
@@ -449,7 +445,7 @@ class TraversableIterableObj(Traversable, IterableObj):
TIobj_tuple = Tuple[Union[T_TIobj, None], T_TIobj]
- @overload # type: ignore
+ @ overload # type: ignore
def traverse(self: T_TIobj,
predicate: Callable[[Union[T_TIobj, Tuple[Union[T_TIobj, None], T_TIobj]], int], bool],
prune: Callable[[Union[T_TIobj, Tuple[Union[T_TIobj, None], T_TIobj]], int], bool],
@@ -459,7 +455,7 @@ class TraversableIterableObj(Traversable, IterableObj):
) -> Iterator[T_TIobj]:
...
- @overload
+ @ overload
def traverse(self: T_TIobj,
predicate: Callable[[Union[T_TIobj, Tuple[Union[T_TIobj, None], T_TIobj]], int], bool],
prune: Callable[[Union[T_TIobj, Tuple[Union[T_TIobj, None], T_TIobj]], int], bool],
@@ -469,7 +465,7 @@ class TraversableIterableObj(Traversable, IterableObj):
) -> Iterator[Tuple[Union[T_TIobj, None], T_TIobj]]:
...
- @overload
+ @ overload
def traverse(self: T_TIobj,
predicate: Callable[[Union[T_TIobj, TIobj_tuple], int], bool],
prune: Callable[[Union[T_TIobj, TIobj_tuple], int], bool],
diff --git a/git/util.py b/git/util.py
index b13af358..63ac6134 100644
--- a/git/util.py
+++ b/git/util.py
@@ -36,11 +36,13 @@ if TYPE_CHECKING:
from git.remote import Remote
from git.repo.base import Repo
from git.config import GitConfigParser, SectionConstraint
+ from git.objects.base import IndexObject
-from .types import (Literal, Protocol, SupportsIndex, # because behind py version guards
+
+from .types import (Literal, SupportsIndex, # because behind py version guards
PathLike, HSH_TD, Total_TD, Files_TD) # aliases
-T_IterableObj = TypeVar('T_IterableObj', bound='IterableObj', covariant=True)
+T_IterableObj = TypeVar('T_IterableObj', bound=Union['IterableObj', 'IndexObject'], covariant=True)
# So IterableList[Head] is subtype of IterableList[IterableObj]
# ---------------------------------------------------------------------
@@ -1068,7 +1070,7 @@ class Iterable(object):
raise NotImplementedError("To be implemented by Subclass")
-class IterableObj(Protocol):
+class IterableObj():
"""Defines an interface for iterable items which is to assure a uniform
way to retrieve and iterate items within the git repository