2525
2626
2727# Import from pygit2
28+
29+ from typing import Any
30+
31+ from ._pygit2 import Oid
2832from .errors import check_error
2933from .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
3136
3237
3338class PackBuilder :
34- def __init__ (self , repo ):
39+ def __init__ (self , repo : BaseRepository ):
3540 cpackbuilder = ffi .new ('git_packbuilder **' )
3641 err = C .git_packbuilder_new (cpackbuilder , repo ._repo )
3742 check_error (err )
3843
3944 self ._repo = repo
40- self ._packbuilder = cpackbuilder [0 ]
45+ self ._packbuilder : Any = cpackbuilder [0 ]
4146 self ._cpackbuilder = cpackbuilder
4247
4348 @property
4449 def _pointer (self ):
45- return bytes (ffi . buffer (self ._packbuilder )[:] )
50+ return bytes (buffer_to_bytes (self ._packbuilder ))
4651
4752 def __del__ (self ):
4853 C .git_packbuilder_free (self ._packbuilder )
@@ -51,29 +56,31 @@ def __len__(self):
5156 return C .git_packbuilder_object_count (self ._packbuilder )
5257
5358 @staticmethod
54- def __convert_object_to_oid (oid ):
59+ def __convert_object_to_oid (oid : Oid ):
5560 git_oid = ffi .new ('git_oid *' )
5661 ffi .buffer (git_oid )[:] = oid .raw [:]
5762 return git_oid
5863
59- def add (self , oid ):
64+ def add (self , oid : Oid ):
6065 git_oid = self .__convert_object_to_oid (oid )
6166 err = C .git_packbuilder_insert (self ._packbuilder , git_oid , ffi .NULL )
6267 check_error (err )
6368
64- def add_recur (self , oid ):
69+ def add_recur (self , oid : Oid ):
6570 git_oid = self .__convert_object_to_oid (oid )
6671 err = C .git_packbuilder_insert_recur (self ._packbuilder , git_oid , ffi .NULL )
6772 check_error (err )
6873
69- def set_threads (self , n_threads ):
74+ def set_threads (self , n_threads : int ):
7075 return C .git_packbuilder_set_threads (self ._packbuilder , n_threads )
7176
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+ )
7582 check_error (err )
7683
7784 @property
78- def written_objects_count (self ):
85+ def written_objects_count (self ) -> int :
7986 return C .git_packbuilder_written (self ._packbuilder )
0 commit comments