2626
2727if TYPE_CHECKING :
2828from git .repo import Repo
29+ from git .refs import Head ,TagReference ,Reference
2930
3031T_References = TypeVar ('T_References' ,bound = 'SymbolicReference' )
3132
@@ -59,10 +60,10 @@ class SymbolicReference(object):
5960
6061def __init__ (self ,repo :'Repo' ,path :PathLike ,check_path :bool = False ):
6162self .repo = repo
62- self .path = str ( path )
63+ self .path = path
6364
6465def __str__ (self )-> str :
65- return self .path
66+ return str ( self .path )
6667
6768def __repr__ (self ):
6869return '<git.%s "%s">' % (self .__class__ .__name__ ,self .path )
@@ -84,7 +85,7 @@ def name(self) -> str:
8485 :return:
8586 In case of symbolic references, the shortest assumable name
8687 is the path itself."""
87- return self .path
88+ return str ( self .path )
8889
8990@property
9091def abspath (self )-> PathLike :
@@ -557,7 +558,7 @@ def create(cls, repo: 'Repo', path: PathLike, reference: Union[Commit_ish, str]
557558 :note: This does not alter the current HEAD, index or Working Tree"""
558559return cls ._create (repo ,path ,cls ._resolve_ref_on_create ,reference ,force ,logmsg )
559560
560- def rename (self ,new_path ,force = False ):
561+ def rename (self ,new_path : PathLike ,force : bool = False )-> 'SymbolicReference' :
561562"""Rename self to a new path
562563
563564 :param new_path:
@@ -577,7 +578,7 @@ def rename(self, new_path, force=False):
577578
578579new_abs_path = os .path .join (_git_dir (self .repo ,new_path ),new_path )
579580cur_abs_path = os .path .join (_git_dir (self .repo ,self .path ),self .path )
580- if os .path .path . isfile (new_abs_path ):
581+ if os .path .isfile (new_abs_path ):
581582if not force :
582583# if they point to the same file, its not an error
583584with open (new_abs_path ,'rb' )as fd1 :
@@ -663,7 +664,7 @@ def iter_items(cls: Type[T_References], repo: 'Repo', common_path: Union[PathLik
663664return (r for r in cls ._iter_items (repo ,common_path )if r .__class__ == SymbolicReference or not r .is_detached )
664665
665666@classmethod
666- def from_path (cls ,repo ,path ) :
667+ def from_path (cls ,repo : 'Repo' ,path : PathLike ) -> Union [ 'Head' , 'TagReference' , 'Reference' ] :
667668"""
668669 :param path: full .git-directory-relative path name to the Reference to instantiate
669670 :note: use to_full_path() if you only have a partial path of a known Reference Type