3737
3838
3939class Object (LazyMixin ):
40- """An Object which may be Blobs, Trees, Commits and Tags."""
40+ """An Object which may be :class:`~git.objects.blob.Blob`,
41+ :class:`~git.objects.tree.Tree`, :class:`~git.objects.commit.Commit` or
42+ `~git.objects.tag.TagObject`."""
4143
4244NULL_HEX_SHA = "0" * 40
4345NULL_BIN_SHA = b"\0 " * 20
@@ -55,11 +57,14 @@ class Object(LazyMixin):
5557
5658def __init__ (self ,repo :"Repo" ,binsha :bytes ):
5759"""Initialize an object by identifying it by its binary sha.
60+
5861 All keyword arguments will be set on demand if None.
5962
60- :param repo: repository this object is located in
63+ :param repo:
64+ Repository this object is located in.
6165
62- :param binsha: 20 byte SHA1
66+ :param binsha:
67+ 20 byte SHA1
6368 """
6469super ().__init__ ()
6570self .repo = repo
@@ -72,24 +77,28 @@ def __init__(self, repo: "Repo", binsha: bytes):
7277@classmethod
7378def new (cls ,repo :"Repo" ,id :Union [str ,"Reference" ])-> Commit_ish :
7479"""
75- :return: New :class:`Object`` instance of a type appropriate to the object type
76- behind `id`. The id of the newly created object will be a binsha even though
77- the input id may have been a Reference or Rev-Spec.
80+ :return:
81+ New :class:`Object` instance of a type appropriate to the object type behind
82+ `id`. The id of the newly created object will be a binsha even though the
83+ input id may have been a `~git.refs.reference.Reference` or rev-spec.
7884
79- :param id: reference, rev-spec, or hexsha
85+ :param id:
86+ :class:`~git.refs.reference.Reference`, rev-spec, or hexsha
8087
81- :note: This cannot be a ``__new__`` method as it would always call
82- :meth:`__init__` with the input id which is not necessarily a binsha.
88+ :note:
89+ This cannot be a ``__new__`` method as it would always call :meth:`__init__`
90+ with the input id which is not necessarily a binsha.
8391 """
8492return repo .rev_parse (str (id ))
8593
8694@classmethod
8795def new_from_sha (cls ,repo :"Repo" ,sha1 :bytes )-> Commit_ish :
8896"""
89- :return: new object instance of a type appropriate to represent the given
90- binary sha1
97+ :return:
98+ New object instance of a type appropriate to represent the given binary sha1
9199
92- :param sha1: 20 byte binary sha1
100+ :param sha1:
101+ 20 byte binary sha1
93102 """
94103if sha1 == cls .NULL_BIN_SHA :
95104# The NULL binsha is always the root commit.
@@ -126,11 +135,11 @@ def __hash__(self) -> int:
126135return hash (self .binsha )
127136
128137def __str__ (self )-> str :
129- """:return:string of our SHA1 as understood by all git commands"""
138+ """:return:String of our SHA1 as understood by all git commands"""
130139return self .hexsha
131140
132141def __repr__ (self )-> str :
133- """:return:string with pythonic representation of our object"""
142+ """:return:String with pythonic representation of our object"""
134143return '<git.%s "%s">' % (self .__class__ .__name__ ,self .hexsha )
135144
136145@property
@@ -142,26 +151,32 @@ def hexsha(self) -> str:
142151@property
143152def data_stream (self )-> "OStream" :
144153"""
145- :return: File Object compatible stream to the uncompressed raw data of the object
154+ :return:
155+ File-object compatible stream to the uncompressed raw data of the object
146156
147- :note: Returned streams must be read in order.
157+ :note:
158+ Returned streams must be read in order.
148159 """
149160return self .repo .odb .stream (self .binsha )
150161
151162def stream_data (self ,ostream :"OStream" )-> "Object" :
152163"""Write our data directly to the given output stream.
153164
154- :param ostream: File object compatible stream object.
155- :return: self
165+ :param ostream:
166+ File-object compatible stream object.
167+
168+ :return:
169+ self
156170 """
157171istream = self .repo .odb .stream (self .binsha )
158172stream_copy (istream ,ostream )
159173return self
160174
161175
162176class IndexObject (Object ):
163- """Base for all objects that can be part of the index file, namely Tree, Blob and
164- SubModule objects."""
177+ """Base for all objects that can be part of the index file, namely
178+ :class:`~git.objects.tree.Tree`, :class:`~git.objects.blob.Blob` and
179+ :class:`~git.objects.submodule.base.Submodule` objects."""
165180
166181__slots__ = ("path" ,"mode" )
167182
@@ -175,16 +190,22 @@ def __init__(
175190mode :Union [None ,int ]= None ,
176191path :Union [None ,PathLike ]= None ,
177192 )-> None :
178- """Initialize a newly instanced IndexObject.
193+ """Initialize a newly instanced :class:`IndexObject`.
194+
195+ :param repo:
196+ The :class:`~git.repo.base.Repo` we are located in.
197+
198+ :param binsha:
199+ 20 byte sha1.
179200
180- :param repo: The :class:`~git.repo.base.Repo` we are located in.
181- :param binsha: 20 byte sha1.
182201 :param mode:
183202 The stat compatible file mode as int, use the :mod:`stat` module to evaluate
184203 the information.
204+
185205 :param path:
186206 The path to the file in the file system, relative to the git repository
187207 root, like ``file.ext`` or ``folder/other.ext``.
208+
188209 :note:
189210 Path may not be set if the index object has been created directly, as it
190211 cannot be retrieved without knowing the parent tree.
@@ -198,8 +219,8 @@ def __init__(
198219def __hash__ (self )-> int :
199220"""
200221 :return:
201- Hash of our path as index items are uniquely identifiable by path, not
202- by their data!
222+ Hash of our path as index items are uniquely identifiable by path, not by
223+ their data!
203224 """
204225return hash (self .path )
205226