|
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