Skip to content

Commit 94151aa

Browse files
committedMar 19, 2025
Use property decorator to support typing
1 parent 6d09bb6 commit 94151aa

File tree

2 files changed

+45
-36
lines changed

2 files changed

+45
-36
lines changed
 

‎git/refs/symbolic.py

+24-17
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,6 @@
3939
if TYPE_CHECKING:
4040
from git.config import GitConfigParser
4141
from git.objects.commit import Actor
42-
from git.refs import Head, TagReference, RemoteReference, Reference
4342
from git.refs.log import RefLogEntry
4443
from git.repo import Repo
4544

@@ -387,17 +386,23 @@ def set_object(
387386
# set the commit on our reference
388387
return self._get_reference().set_object(object, logmsg)
389388

390-
commit = property(
391-
_get_commit,
392-
set_commit, # type: ignore[arg-type]
393-
doc="Query or set commits directly",
394-
)
389+
@property
390+
def commit(self) -> "Commit":
391+
"""Query or set commits directly"""
392+
return self._get_commit()
393+
394+
@commit.setter
395+
def commit(self, commit: Union[Commit, "SymbolicReference", str]) -> "SymbolicReference":
396+
return self.set_commit(commit)
397+
398+
@property
399+
def object(self) -> AnyGitObject:
400+
"""Return the object our ref currently refers to"""
401+
return self._get_object()
395402

396-
object = property(
397-
_get_object,
398-
set_object, # type: ignore[arg-type]
399-
doc="Return the object our ref currently refers to",
400-
)
403+
@object.setter
404+
def object(self, object: Union[AnyGitObject, "SymbolicReference", str]) -> "SymbolicReference":
405+
return self.set_object(object)
401406

402407
def _get_reference(self) -> "SymbolicReference":
403408
"""
@@ -496,12 +501,14 @@ def set_reference(
496501
return self
497502

498503
# Aliased reference
499-
reference: Union["Head", "TagReference", "RemoteReference", "Reference"]
500-
reference = property( # type: ignore[assignment]
501-
_get_reference,
502-
set_reference, # type: ignore[arg-type]
503-
doc="Returns the Reference we point to",
504-
)
504+
@property
505+
def reference(self) -> "SymbolicReference":
506+
return self._get_reference()
507+
508+
@reference.setter
509+
def reference(self, ref: Union[AnyGitObject, "SymbolicReference", str]) -> "SymbolicReference":
510+
return self.set_reference(ref)
511+
505512
ref = reference
506513

507514
def is_valid(self) -> bool:

‎git/repo/base.py

+21-19
Original file line numberDiff line numberDiff line change
@@ -354,21 +354,19 @@ def __ne__(self, rhs: object) -> bool:
354354
def __hash__(self) -> int:
355355
return hash(self.git_dir)
356356

357-
# Description property
358-
def _get_description(self) -> str:
357+
@property
358+
def description(self) -> str:
359+
"""The project's description"""
359360
filename = osp.join(self.git_dir, "description")
360361
with open(filename, "rb") as fp:
361362
return fp.read().rstrip().decode(defenc)
362363

363-
def _set_description(self, descr: str) -> None:
364+
@description.setter
365+
def description(self, descr: str) -> None:
364366
filename = osp.join(self.git_dir, "description")
365367
with open(filename, "wb") as fp:
366368
fp.write((descr + "\n").encode(defenc))
367369

368-
description = property(_get_description, _set_description, doc="the project's description")
369-
del _get_description
370-
del _set_description
371-
372370
@property
373371
def working_tree_dir(self) -> Optional[PathLike]:
374372
"""
@@ -885,13 +883,14 @@ def _set_daemon_export(self, value: object) -> None:
885883
elif not value and fileexists:
886884
os.unlink(filename)
887885

888-
daemon_export = property(
889-
_get_daemon_export,
890-
_set_daemon_export,
891-
doc="If True, git-daemon may export this repository",
892-
)
893-
del _get_daemon_export
894-
del _set_daemon_export
886+
@property
887+
def daemon_export(self) -> bool:
888+
"""If True, git-daemon may export this repository"""
889+
return self._get_daemon_export()
890+
891+
@daemon_export.setter
892+
def daemon_export(self, value: object) -> None:
893+
self._set_daemon_export(value)
895894

896895
def _get_alternates(self) -> List[str]:
897896
"""The list of alternates for this repo from which objects can be retrieved.
@@ -929,11 +928,14 @@ def _set_alternates(self, alts: List[str]) -> None:
929928
with open(alternates_path, "wb") as f:
930929
f.write("\n".join(alts).encode(defenc))
931930

932-
alternates = property(
933-
_get_alternates,
934-
_set_alternates,
935-
doc="Retrieve a list of alternates paths or set a list paths to be used as alternates",
936-
)
931+
@property
932+
def alternates(self) -> List[str]:
933+
"""Retrieve a list of alternates paths or set a list paths to be used as alternates"""
934+
return self._get_alternates()
935+
936+
@alternates.setter
937+
def alternates(self, alts: List[str]) -> None:
938+
self._set_alternates(alts)
937939

938940
def is_dirty(
939941
self,

0 commit comments

Comments
 (0)
Failed to load comments.