11"""Package with general repository related functions"""
2- from git .refs .reference import Reference
3- from git .types import Commit_ish
2+ from __future__import annotations
43import os
54import stat
65from string import digits
2019# Typing ----------------------------------------------------------------------
2120
2221from typing import Union ,Optional ,cast ,TYPE_CHECKING
23-
22+ from git . types import Commit_ish
2423
2524if TYPE_CHECKING :
2625from git .types import PathLike
2726from .base import Repo
2827from git .db import GitCmdObjectDB
28+ from git .refs .reference import Reference
2929from git .objects import Commit ,TagObject ,Blob ,Tree
3030from git .refs .tag import Tag
3131
@@ -204,7 +204,7 @@ def rev_parse(repo: 'Repo', rev: str) -> Union['Commit', 'Tag', 'Tree', 'Blob']:
204204raise NotImplementedError ("commit by message search ( regex )" )
205205# END handle search
206206
207- obj :Union [Commit_ish ,Reference ,None ]= None
207+ obj :Union [Commit_ish ,' Reference' ,None ]= None
208208ref = None
209209output_type = "commit"
210210start = 0
@@ -224,7 +224,7 @@ def rev_parse(repo: 'Repo', rev: str) -> Union['Commit', 'Tag', 'Tree', 'Blob']:
224224ref = repo .head .ref
225225else :
226226if token == '@' :
227- ref = cast (Reference ,name_to_object (repo ,rev [:start ],return_ref = True ))
227+ ref = cast (' Reference' ,name_to_object (repo ,rev [:start ],return_ref = True ))
228228else :
229229obj = cast (Commit_ish ,name_to_object (repo ,rev [:start ]))
230230# END handle token
@@ -251,13 +251,13 @@ def rev_parse(repo: 'Repo', rev: str) -> Union['Commit', 'Tag', 'Tree', 'Blob']:
251251pass # default
252252elif output_type == 'tree' :
253253try :
254- obj = cast (Object ,obj )
254+ obj = cast (Commit_ish ,obj )
255255obj = to_commit (obj ).tree
256256except (AttributeError ,ValueError ):
257257pass # error raised later
258258# END exception handling
259259elif output_type in ('' ,'blob' ):
260- obj = cast (TagObject ,obj )
260+ obj = cast (' TagObject' ,obj )
261261if obj and obj .type == 'tag' :
262262obj = deref_tag (obj )
263263else :