|
23 | 23 | from typing import (Any, Callable, Deque, Iterator, NamedTuple, overload, Sequence,
|
24 | 24 | TYPE_CHECKING, Tuple, Type, TypeVar, Union, cast)
|
25 | 25 |
|
26 |
| -from git.types import Literal |
| 26 | +from git.types import Literal, TypeGuard |
27 | 27 |
|
28 | 28 | if TYPE_CHECKING:
|
29 | 29 | from io import BytesIO, StringIO
|
@@ -306,24 +306,20 @@ class Tree:: (cls, Tree) -> Tuple[Tree, ...]
|
306 | 306 | """
|
307 | 307 | raise NotImplementedError("To be implemented in subclass")
|
308 | 308 |
|
309 |
| - def list_traverse(self, *args: Any, **kwargs: Any |
310 |
| - ) -> Union[IterableList['TraversableIterableObj'], |
311 |
| - IterableList[Tuple[Union[None, 'TraversableIterableObj'], 'TraversableIterableObj']]]: |
| 309 | + def list_traverse(self, *args: Any, **kwargs: Any) -> IterableList['TraversableIterableObj']: |
312 | 310 | """
|
313 | 311 | :return: IterableList with the results of the traversal as produced by
|
314 | 312 | traverse()
|
315 | 313 | List objects must be IterableObj and Traversable e.g. Commit, Submodule"""
|
316 | 314 |
|
317 |
| - out: Union[IterableList['TraversableIterableObj'], |
318 |
| - IterableList[Tuple[Union[None, 'TraversableIterableObj'], 'TraversableIterableObj']]] |
319 |
| - |
320 |
| - # def is_TraversableIterableObj(inp: Union['Traversable', IterableObj]) -> TypeGuard['TraversableIterableObj']: |
321 |
| - # return isinstance(self, TraversableIterableObj) |
322 |
| - # assert is_TraversableIterableObj(self), f"{type(self)}" |
323 |
| - |
324 |
| - self = cast('TraversableIterableObj', self) |
325 |
| - out = IterableList(self._id_attribute_) |
326 |
| - out.extend(self.traverse(*args, **kwargs)) # type: ignore |
| 315 | + def is_TraversableIterableObj(inp: 'Traversable') -> TypeGuard['TraversableIterableObj']: |
| 316 | + # return isinstance(self, TraversableIterableObj) |
| 317 | + # Can it be anythin else? |
| 318 | + return isinstance(self, Traversable) |
| 319 | + |
| 320 | + assert is_TraversableIterableObj(self), f"{type(self)}" |
| 321 | + out: IterableList['TraversableIterableObj'] = IterableList(self._id_attribute_) |
| 322 | + out.extend(self.traverse(*args, **kwargs)) |
327 | 323 | return out
|
328 | 324 |
|
329 | 325 | def traverse(self,
|
|
0 commit comments