diff options
author | Sebastian Thiel <sebastian.thiel@icloud.com> | 2021-06-18 11:28:33 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-06-18 11:28:33 +0800 |
commit | 6a0d131ece696f259e7ab42a064ceb10dabb1fcc (patch) | |
tree | fb07007006ec6af0dccbcd6a62abc4c6589dcfd3 /git/objects/tree.py | |
parent | b0f79c58ad919e90261d1e332df79a4ad0bc40de (diff) | |
parent | 18b6aa55309adfa8aa99bdaf9e8f80337befe74e (diff) | |
download | gitpython-6a0d131ece696f259e7ab42a064ceb10dabb1fcc.tar.gz |
Merge pull request #1271 from Yobmod/main
Add initial types to object, and fix CI
Diffstat (limited to 'git/objects/tree.py')
-rw-r--r-- | git/objects/tree.py | 22 |
1 files changed, 18 insertions, 4 deletions
diff --git a/git/objects/tree.py b/git/objects/tree.py index 68e98329..29b2a684 100644 --- a/git/objects/tree.py +++ b/git/objects/tree.py @@ -17,6 +17,17 @@ from .fun import ( tree_to_stream ) + +# typing ------------------------------------------------- + +from typing import Iterable, Iterator, Tuple, Union, cast, TYPE_CHECKING + +if TYPE_CHECKING: + from io import BytesIO + +#-------------------------------------------------------- + + cmp = lambda a, b: (a > b) - (a < b) __all__ = ("TreeModifier", "Tree") @@ -182,8 +193,10 @@ class Tree(IndexObject, diff.Diffable, util.Traversable, util.Serializable): super(Tree, self).__init__(repo, binsha, mode, path) @classmethod - def _get_intermediate_items(cls, index_object): + def _get_intermediate_items(cls, index_object: 'Tree', # type: ignore + ) -> Tuple['Tree', ...]: if index_object.type == "tree": + index_object = cast('Tree', index_object) return tuple(index_object._iter_convert_to_object(index_object._cache)) return () @@ -196,7 +209,8 @@ class Tree(IndexObject, diff.Diffable, util.Traversable, util.Serializable): super(Tree, self)._set_cache_(attr) # END handle attribute - def _iter_convert_to_object(self, iterable): + def _iter_convert_to_object(self, iterable: Iterable[Tuple[bytes, int, str]] + ) -> Iterator[Union[Blob, 'Tree', Submodule]]: """Iterable yields tuples of (binsha, mode, name), which will be converted to the respective object representation""" for binsha, mode, name in iterable: @@ -317,7 +331,7 @@ class Tree(IndexObject, diff.Diffable, util.Traversable, util.Serializable): def __reversed__(self): return reversed(self._iter_convert_to_object(self._cache)) - def _serialize(self, stream): + def _serialize(self, stream: 'BytesIO') -> 'Tree': """Serialize this tree into the stream. Please note that we will assume our tree data to be in a sorted state. If this is not the case, serialization will not generate a correct tree representation as these are assumed to be sorted @@ -325,7 +339,7 @@ class Tree(IndexObject, diff.Diffable, util.Traversable, util.Serializable): tree_to_stream(self._cache, stream.write) return self - def _deserialize(self, stream): + def _deserialize(self, stream: 'BytesIO') -> 'Tree': self._cache = tree_entries_from_data(stream.read()) return self |