25
25
26
26
27
27
# Import from pygit2
28
+
29
+ from typing import Any
30
+
31
+ from ._pygit2 import Oid
28
32
from .errors import check_error
29
33
from .ffi import C , ffi
30
- from .utils import to_bytes
34
+ from .repository import BaseRepository
35
+ from .utils import StrOrBytesOrPathLike , buffer_to_bytes , to_bytes
31
36
32
37
33
38
class PackBuilder :
34
- def __init__ (self , repo ):
39
+ def __init__ (self , repo : BaseRepository ):
35
40
cpackbuilder = ffi .new ('git_packbuilder **' )
36
41
err = C .git_packbuilder_new (cpackbuilder , repo ._repo )
37
42
check_error (err )
38
43
39
44
self ._repo = repo
40
- self ._packbuilder = cpackbuilder [0 ]
45
+ self ._packbuilder : Any = cpackbuilder [0 ]
41
46
self ._cpackbuilder = cpackbuilder
42
47
43
48
@property
44
49
def _pointer (self ):
45
- return bytes (ffi . buffer (self ._packbuilder )[:] )
50
+ return bytes (buffer_to_bytes (self ._packbuilder ))
46
51
47
52
def __del__ (self ):
48
53
C .git_packbuilder_free (self ._packbuilder )
@@ -51,29 +56,31 @@ def __len__(self):
51
56
return C .git_packbuilder_object_count (self ._packbuilder )
52
57
53
58
@staticmethod
54
- def __convert_object_to_oid (oid ):
59
+ def __convert_object_to_oid (oid : Oid ):
55
60
git_oid = ffi .new ('git_oid *' )
56
61
ffi .buffer (git_oid )[:] = oid .raw [:]
57
62
return git_oid
58
63
59
- def add (self , oid ):
64
+ def add (self , oid : Oid ):
60
65
git_oid = self .__convert_object_to_oid (oid )
61
66
err = C .git_packbuilder_insert (self ._packbuilder , git_oid , ffi .NULL )
62
67
check_error (err )
63
68
64
- def add_recur (self , oid ):
69
+ def add_recur (self , oid : Oid ):
65
70
git_oid = self .__convert_object_to_oid (oid )
66
71
err = C .git_packbuilder_insert_recur (self ._packbuilder , git_oid , ffi .NULL )
67
72
check_error (err )
68
73
69
- def set_threads (self , n_threads ):
74
+ def set_threads (self , n_threads : int ):
70
75
return C .git_packbuilder_set_threads (self ._packbuilder , n_threads )
71
76
72
- def write (self , path = None ):
73
- path = ffi .NULL if path is None else to_bytes (path )
74
- err = C .git_packbuilder_write (self ._packbuilder , path , 0 , ffi .NULL , ffi .NULL )
77
+ def write (self , path : StrOrBytesOrPathLike | None = None ):
78
+ resolved_path = ffi .NULL if path is None else to_bytes (path )
79
+ err = C .git_packbuilder_write (
80
+ self ._packbuilder , resolved_path , 0 , ffi .NULL , ffi .NULL
81
+ )
75
82
check_error (err )
76
83
77
84
@property
78
- def written_objects_count (self ):
85
+ def written_objects_count (self ) -> int :
79
86
return C .git_packbuilder_written (self ._packbuilder )
0 commit comments