2525
2626from __future__ import annotations
2727
28- from typing import TYPE_CHECKING
28+ from typing import TYPE_CHECKING , Iterator
29+
30+ from pygit2 import Oid
2931
3032from .enums import ReferenceFilter
3133
3234# Need BaseRepository for type hints, but don't let it cause a circular dependency
3335if TYPE_CHECKING :
36+ from ._pygit2 import Reference
3437 from .repository import BaseRepository
3538
3639
3740class References :
38- def __init__ (self , repository : BaseRepository ):
41+ def __init__ (self , repository : BaseRepository ) -> None :
3942 self ._repository = repository
4043
41- def __getitem__ (self , name : str ):
44+ def __getitem__ (self , name : str ) -> 'Reference' :
4245 return self ._repository .lookup_reference (name )
4346
44- def get (self , key : str ):
47+ def get (self , key : str ) -> 'Reference' :
4548 try :
4649 return self [key ]
4750 except KeyError :
48- return None
51+ return None # type: ignore # will be corrected in next commit!
4952
50- def __iter__ (self ):
53+ def __iter__ (self ) -> Iterator [ str ] :
5154 iter = self ._repository .references_iterator_init ()
5255 while True :
5356 ref = self ._repository .references_iterator_next (iter )
@@ -56,7 +59,9 @@ def __iter__(self):
5659 else :
5760 return
5861
59- def iterator (self , references_return_type : ReferenceFilter = ReferenceFilter .ALL ):
62+ def iterator (
63+ self , references_return_type : ReferenceFilter = ReferenceFilter .ALL
64+ ) -> Iterator ['Reference' ]:
6065 """Creates a new iterator and fetches references for a given repository.
6166
6267 Can also filter and pass all refs or only branches or only tags.
@@ -88,18 +93,18 @@ def iterator(self, references_return_type: ReferenceFilter = ReferenceFilter.ALL
8893 else :
8994 return
9095
91- def create (self , name , target , force = False ):
96+ def create (self , name : str , target : Oid | str , force : bool = False ) -> 'Reference' :
9297 return self ._repository .create_reference (name , target , force )
9398
94- def delete (self , name : str ):
99+ def delete (self , name : str ) -> None :
95100 self [name ].delete ()
96101
97- def __contains__ (self , name : str ):
102+ def __contains__ (self , name : str ) -> bool :
98103 return self .get (name ) is not None
99104
100105 @property
101- def objects (self ):
106+ def objects (self ) -> list [ 'Reference' ] :
102107 return self ._repository .listall_reference_objects ()
103108
104- def compress (self ):
109+ def compress (self ) -> None :
105110 return self ._repository .compress_references ()
0 commit comments