Skip to content

Commit 1faa25f

Browse files
committed
Rmv typeguard from list_traverse(), was wrong
1 parent 4802a36 commit 1faa25f

File tree

2 files changed

+18
-20
lines changed

2 files changed

+18
-20
lines changed

‎git/objects/util.py

+13-17
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
from typing import (Any, Callable, Deque, Iterator, NamedTuple, overload, Sequence,
2424
TYPE_CHECKING, Tuple, Type, TypeVar, Union, cast)
2525

26-
from git.types import Literal, TypeGuard
26+
from git.types import Literal
2727

2828
if TYPE_CHECKING:
2929
from io import BytesIO, StringIO
@@ -306,23 +306,19 @@ class Tree:: (cls, Tree) -> Tuple[Tree, ...]
306306
"""
307307
raise NotImplementedError("To be implemented in subclass")
308308

309-
def list_traverse(self, *args: Any, **kwargs: Any) -> IterableList['TraversableIterableObj']:
309+
def list_traverse(self, *args: Any, **kwargs: Any) -> IterableList:
310310
"""
311311
:return: IterableList with the results of the traversal as produced by
312312
traverse()
313-
List objects must be IterableObj and Traversable e.g. Commit, Submodule"""
314-
315-
def is_TraversableIterableObj(inp: 'Traversable') -> TypeGuard['TraversableIterableObj']:
316-
# return isinstance(self, TraversableIterableObj)
317-
# Can it be anything else? Check this
318-
return isinstance(self, TraversableIterableObj)
313+
"""
314+
if isinstance(self, TraversableIterableObj):
315+
id = self._id_attribute_
316+
else: # Tree
317+
id = ""
319318

320-
if is_TraversableIterableObj(self):
321-
out: IterableList['TraversableIterableObj'] = IterableList(self._id_attribute_)
322-
out.extend(self.traverse(*args, **kwargs))
323-
return out
324-
else:
325-
return IterableList("") # Its a Tree, which doesnt have _id_attribute_
319+
out: IterableList = IterableList(id)
320+
out.extend(self.traverse(*args, **kwargs))
321+
return out
326322

327323
def traverse(self,
328324
predicate: Callable[[Union['Traversable', 'Blob', TraversedTup], int], bool] = lambda i, d: True,
@@ -449,7 +445,7 @@ class TraversableIterableObj(Traversable, IterableObj):
449445

450446
TIobj_tuple = Tuple[Union[T_TIobj, None], T_TIobj]
451447

452-
@overload # type: ignore
448+
@ overload # type: ignore
453449
def traverse(self: T_TIobj,
454450
predicate: Callable[[Union[T_TIobj, Tuple[Union[T_TIobj, None], T_TIobj]], int], bool],
455451
prune: Callable[[Union[T_TIobj, Tuple[Union[T_TIobj, None], T_TIobj]], int], bool],
@@ -459,7 +455,7 @@ def traverse(self: T_TIobj,
459455
) -> Iterator[T_TIobj]:
460456
...
461457

462-
@overload
458+
@ overload
463459
def traverse(self: T_TIobj,
464460
predicate: Callable[[Union[T_TIobj, Tuple[Union[T_TIobj, None], T_TIobj]], int], bool],
465461
prune: Callable[[Union[T_TIobj, Tuple[Union[T_TIobj, None], T_TIobj]], int], bool],
@@ -469,7 +465,7 @@ def traverse(self: T_TIobj,
469465
) -> Iterator[Tuple[Union[T_TIobj, None], T_TIobj]]:
470466
...
471467

472-
@overload
468+
@ overload
473469
def traverse(self: T_TIobj,
474470
predicate: Callable[[Union[T_TIobj, TIobj_tuple], int], bool],
475471
prune: Callable[[Union[T_TIobj, TIobj_tuple], int], bool],

‎git/util.py

+5-3
Original file line numberDiff line numberDiff line change
@@ -36,11 +36,13 @@
3636
from git.remote import Remote
3737
from git.repo.base import Repo
3838
from git.config import GitConfigParser, SectionConstraint
39+
from git.objects.base import IndexObject
3940

40-
from .types import (Literal, Protocol, SupportsIndex, # because behind py version guards
41+
42+
from .types import (Literal, SupportsIndex, # because behind py version guards
4143
PathLike, HSH_TD, Total_TD, Files_TD) # aliases
4244

43-
T_IterableObj = TypeVar('T_IterableObj', bound='IterableObj', covariant=True)
45+
T_IterableObj = TypeVar('T_IterableObj', bound=Union['IterableObj', 'IndexObject'], covariant=True)
4446
# So IterableList[Head] is subtype of IterableList[IterableObj]
4547

4648
# ---------------------------------------------------------------------
@@ -1068,7 +1070,7 @@ def iter_items(cls, repo: 'Repo', *args: Any, **kwargs: Any):
10681070
raise NotImplementedError("To be implemented by Subclass")
10691071

10701072

1071-
class IterableObj(Protocol):
1073+
class IterableObj():
10721074
"""Defines an interface for iterable items which is to assure a uniform
10731075
way to retrieve and iterate items within the git repository
10741076

0 commit comments

Comments
 (0)