2828# Standard Library
2929import binascii
3030from pathlib import Path
31+ from typing import Generator , Iterator
3132
3233import pytest
3334
3435# pygit2
3536import pygit2
37+ from pygit2 import Odb , Oid , Repository
3638from pygit2 .enums import ObjectType
3739
3840from . import utils
4345
4446
4547@pytest .fixture
46- def odb (barerepo ) :
48+ def odb_path (barerepo : Repository ) -> Generator [ tuple [ Odb , Path ], None , None ] :
4749 yield barerepo .odb , Path (barerepo .path ) / 'objects'
4850
4951
50- def test_pack (odb ) :
51- odb , path = odb
52+ def test_pack (odb_path : tuple [ Odb , Path ]) -> None :
53+ odb , path = odb_path
5254
5355 pack = pygit2 .OdbBackendPack (path )
5456 assert len (list (pack )) > 0
5557 for obj in pack :
5658 assert obj in odb
5759
5860
59- def test_loose (odb ) :
60- odb , path = odb
61+ def test_loose (odb_path : tuple [ Odb , Path ]) -> None :
62+ odb , path = odb_path
6163
6264 pack = pygit2 .OdbBackendLoose (path , 5 , False )
6365 assert len (list (pack )) > 0
@@ -66,30 +68,30 @@ def test_loose(odb):
6668
6769
6870class ProxyBackend (pygit2 .OdbBackend ):
69- def __init__ (self , source ) :
71+ def __init__ (self , source : pygit2 . OdbBackend | pygit2 . OdbBackendPack ) -> None :
7072 super ().__init__ ()
7173 self .source = source
7274
73- def read_cb (self , oid ) :
75+ def read_cb (self , oid : Oid | str ) -> tuple [ int , bytes ] :
7476 return self .source .read (oid )
7577
76- def read_prefix_cb (self , oid ) :
78+ def read_prefix_cb (self , oid : Oid | str ) -> tuple [ int , bytes , Oid ] :
7779 return self .source .read_prefix (oid )
7880
79- def read_header_cb (self , oid ) :
81+ def read_header_cb (self , oid : Oid | str ) -> tuple [ int , int ] :
8082 typ , data = self .source .read (oid )
8183 return typ , len (data )
8284
83- def exists_cb (self , oid ) :
85+ def exists_cb (self , oid : Oid | str ) -> bool :
8486 return self .source .exists (oid )
8587
86- def exists_prefix_cb (self , oid ) :
88+ def exists_prefix_cb (self , oid : Oid | str ) -> Oid :
8789 return self .source .exists_prefix (oid )
8890
89- def refresh_cb (self ):
91+ def refresh_cb (self ) -> None :
9092 self .source .refresh ()
9193
92- def __iter__ (self ):
94+ def __iter__ (self ) -> Iterator [ Oid ] :
9395 return iter (self .source )
9496
9597
@@ -100,18 +102,18 @@ def __iter__(self):
100102
101103
102104@pytest .fixture
103- def proxy (barerepo ) :
105+ def proxy (barerepo : Repository ) -> Generator [ ProxyBackend , None , None ] :
104106 path = Path (barerepo .path ) / 'objects'
105107 yield ProxyBackend (pygit2 .OdbBackendPack (path ))
106108
107109
108- def test_iterable (proxy ) :
110+ def test_iterable (proxy : ProxyBackend ) -> None :
109111 assert BLOB_HEX in [o for o in proxy ]
110112
111113
112- def test_read (proxy ) :
114+ def test_read (proxy : ProxyBackend ) -> None :
113115 with pytest .raises (TypeError ):
114- proxy .read (123 )
116+ proxy .read (123 ) # type: ignore
115117 utils .assertRaisesWithArg (KeyError , '1' * 40 , proxy .read , '1' * 40 )
116118
117119 ab = proxy .read (BLOB_OID )
@@ -120,21 +122,21 @@ def test_read(proxy):
120122 assert (ObjectType .BLOB , b'a contents\n ' ) == a
121123
122124
123- def test_read_prefix (proxy ) :
125+ def test_read_prefix (proxy : ProxyBackend ) -> None :
124126 a_hex_prefix = BLOB_HEX [:4 ]
125127 a3 = proxy .read_prefix (a_hex_prefix )
126128 assert (ObjectType .BLOB , b'a contents\n ' , BLOB_OID ) == a3
127129
128130
129- def test_exists (proxy ) :
131+ def test_exists (proxy : ProxyBackend ) -> None :
130132 with pytest .raises (TypeError ):
131- proxy .exists (123 )
133+ proxy .exists (123 ) # type: ignore
132134
133135 assert not proxy .exists ('1' * 40 )
134136 assert proxy .exists (BLOB_HEX )
135137
136138
137- def test_exists_prefix (proxy ) :
139+ def test_exists_prefix (proxy : ProxyBackend ) -> None :
138140 a_hex_prefix = BLOB_HEX [:4 ]
139141 assert BLOB_HEX == proxy .exists_prefix (a_hex_prefix )
140142
@@ -145,22 +147,22 @@ def test_exists_prefix(proxy):
145147
146148
147149@pytest .fixture
148- def repo (barerepo ) :
150+ def repo (barerepo : Repository ) -> Generator [ Repository , None , None ] :
149151 odb = pygit2 .Odb ()
150152
151153 path = Path (barerepo .path ) / 'objects'
152- backend = pygit2 .OdbBackendPack (path )
153- backend = ProxyBackend (backend )
154+ backend_org = pygit2 .OdbBackendPack (path )
155+ backend = ProxyBackend (backend_org )
154156 odb .add_backend (backend , 1 )
155157
156158 repo = pygit2 .Repository ()
157159 repo .set_odb (odb )
158160 yield repo
159161
160162
161- def test_repo_read (repo ) :
163+ def test_repo_read (repo : Repository ) -> None :
162164 with pytest .raises (TypeError ):
163- repo [123 ]
165+ repo [123 ] # type: ignore
164166
165167 utils .assertRaisesWithArg (KeyError , '1' * 40 , repo .__getitem__ , '1' * 40 )
166168
0 commit comments