Skip to content

Commit c4ad77d

Browse files
committed
Include the new names in __all__ and the high-level settings sub-module
1 parent 09ce9c4 commit c4ad77d

File tree

3 files changed

+483
-0
lines changed

3 files changed

+483
-0
lines changed

pygit2/__init__.py

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -297,37 +297,51 @@
297297
from .blob import BlobIO
298298
from .options import (
299299
option,
300+
GIT_OPT_ADD_SSL_X509_CERT,
300301
GIT_OPT_DISABLE_PACK_KEEP_FILE_CHECKS,
301302
GIT_OPT_ENABLE_CACHING,
302303
GIT_OPT_ENABLE_FSYNC_GITDIR,
304+
GIT_OPT_ENABLE_HTTP_EXPECT_CONTINUE,
303305
GIT_OPT_ENABLE_OFS_DELTA,
304306
GIT_OPT_ENABLE_STRICT_HASH_VERIFICATION,
305307
GIT_OPT_ENABLE_STRICT_OBJECT_CREATION,
306308
GIT_OPT_ENABLE_STRICT_SYMBOLIC_REF_CREATION,
307309
GIT_OPT_ENABLE_UNSAVED_INDEX_SAFETY,
308310
GIT_OPT_GET_CACHED_MEMORY,
311+
GIT_OPT_GET_EXTENSIONS,
312+
GIT_OPT_GET_HOMEDIR,
309313
GIT_OPT_GET_MWINDOW_FILE_LIMIT,
310314
GIT_OPT_GET_MWINDOW_MAPPED_LIMIT,
311315
GIT_OPT_GET_MWINDOW_SIZE,
312316
GIT_OPT_GET_OWNER_VALIDATION,
313317
GIT_OPT_GET_PACK_MAX_OBJECTS,
314318
GIT_OPT_GET_SEARCH_PATH,
319+
GIT_OPT_GET_SERVER_CONNECT_TIMEOUT,
320+
GIT_OPT_GET_SERVER_TIMEOUT,
315321
GIT_OPT_GET_TEMPLATE_PATH,
316322
GIT_OPT_GET_USER_AGENT,
323+
GIT_OPT_GET_USER_AGENT_PRODUCT,
317324
GIT_OPT_GET_WINDOWS_SHAREMODE,
318325
GIT_OPT_SET_ALLOCATOR,
319326
GIT_OPT_SET_CACHE_MAX_SIZE,
320327
GIT_OPT_SET_CACHE_OBJECT_LIMIT,
328+
GIT_OPT_SET_EXTENSIONS,
329+
GIT_OPT_SET_HOMEDIR,
321330
GIT_OPT_SET_MWINDOW_FILE_LIMIT,
322331
GIT_OPT_SET_MWINDOW_MAPPED_LIMIT,
323332
GIT_OPT_SET_MWINDOW_SIZE,
333+
GIT_OPT_SET_ODB_LOOSE_PRIORITY,
334+
GIT_OPT_SET_ODB_PACKED_PRIORITY,
324335
GIT_OPT_SET_OWNER_VALIDATION,
325336
GIT_OPT_SET_PACK_MAX_OBJECTS,
326337
GIT_OPT_SET_SEARCH_PATH,
338+
GIT_OPT_SET_SERVER_CONNECT_TIMEOUT,
339+
GIT_OPT_SET_SERVER_TIMEOUT,
327340
GIT_OPT_SET_SSL_CERT_LOCATIONS,
328341
GIT_OPT_SET_SSL_CIPHERS,
329342
GIT_OPT_SET_TEMPLATE_PATH,
330343
GIT_OPT_SET_USER_AGENT,
344+
GIT_OPT_SET_USER_AGENT_PRODUCT,
331345
GIT_OPT_SET_WINDOWS_SHAREMODE,
332346
)
333347
from .callbacks import (
@@ -747,37 +761,51 @@ def clone_repository(
747761
'GIT_OBJECT_REF_DELTA',
748762
'GIT_OBJECT_TAG',
749763
'GIT_OBJECT_TREE',
764+
'GIT_OPT_ADD_SSL_X509_CERT',
750765
'GIT_OPT_DISABLE_PACK_KEEP_FILE_CHECKS',
751766
'GIT_OPT_ENABLE_CACHING',
752767
'GIT_OPT_ENABLE_FSYNC_GITDIR',
768+
'GIT_OPT_ENABLE_HTTP_EXPECT_CONTINUE',
753769
'GIT_OPT_ENABLE_OFS_DELTA',
754770
'GIT_OPT_ENABLE_STRICT_HASH_VERIFICATION',
755771
'GIT_OPT_ENABLE_STRICT_OBJECT_CREATION',
756772
'GIT_OPT_ENABLE_STRICT_SYMBOLIC_REF_CREATION',
757773
'GIT_OPT_ENABLE_UNSAVED_INDEX_SAFETY',
758774
'GIT_OPT_GET_CACHED_MEMORY',
775+
'GIT_OPT_GET_EXTENSIONS',
776+
'GIT_OPT_GET_HOMEDIR',
759777
'GIT_OPT_GET_MWINDOW_FILE_LIMIT',
760778
'GIT_OPT_GET_MWINDOW_MAPPED_LIMIT',
761779
'GIT_OPT_GET_MWINDOW_SIZE',
762780
'GIT_OPT_GET_OWNER_VALIDATION',
763781
'GIT_OPT_GET_PACK_MAX_OBJECTS',
764782
'GIT_OPT_GET_SEARCH_PATH',
783+
'GIT_OPT_GET_SERVER_CONNECT_TIMEOUT',
784+
'GIT_OPT_GET_SERVER_TIMEOUT',
765785
'GIT_OPT_GET_TEMPLATE_PATH',
766786
'GIT_OPT_GET_USER_AGENT',
787+
'GIT_OPT_GET_USER_AGENT_PRODUCT',
767788
'GIT_OPT_GET_WINDOWS_SHAREMODE',
768789
'GIT_OPT_SET_ALLOCATOR',
769790
'GIT_OPT_SET_CACHE_MAX_SIZE',
770791
'GIT_OPT_SET_CACHE_OBJECT_LIMIT',
792+
'GIT_OPT_SET_EXTENSIONS',
793+
'GIT_OPT_SET_HOMEDIR',
771794
'GIT_OPT_SET_MWINDOW_FILE_LIMIT',
772795
'GIT_OPT_SET_MWINDOW_MAPPED_LIMIT',
773796
'GIT_OPT_SET_MWINDOW_SIZE',
797+
'GIT_OPT_SET_ODB_LOOSE_PRIORITY',
798+
'GIT_OPT_SET_ODB_PACKED_PRIORITY',
774799
'GIT_OPT_SET_OWNER_VALIDATION',
775800
'GIT_OPT_SET_PACK_MAX_OBJECTS',
776801
'GIT_OPT_SET_SEARCH_PATH',
802+
'GIT_OPT_SET_SERVER_CONNECT_TIMEOUT',
803+
'GIT_OPT_SET_SERVER_TIMEOUT',
777804
'GIT_OPT_SET_SSL_CERT_LOCATIONS',
778805
'GIT_OPT_SET_SSL_CIPHERS',
779806
'GIT_OPT_SET_TEMPLATE_PATH',
780807
'GIT_OPT_SET_USER_AGENT',
808+
'GIT_OPT_SET_USER_AGENT_PRODUCT',
781809
'GIT_OPT_SET_WINDOWS_SHAREMODE',
782810
'GIT_REFERENCES_ALL',
783811
'GIT_REFERENCES_BRANCHES',

pygit2/settings.py

Lines changed: 143 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -105,6 +105,15 @@ def mwindow_mapped_limit(self) -> int:
105105
def mwindow_mapped_limit(self, value: int) -> None:
106106
option(Option.SET_MWINDOW_MAPPED_LIMIT, value)
107107

108+
@property
109+
def mwindow_file_limit(self) -> int:
110+
"""Get or set the maximum number of files to be mapped at any time"""
111+
return option(Option.GET_MWINDOW_FILE_LIMIT)
112+
113+
@mwindow_file_limit.setter
114+
def mwindow_file_limit(self, value: int) -> None:
115+
option(Option.SET_MWINDOW_FILE_LIMIT, value)
116+
108117
@property
109118
def cached_memory(self) -> tuple[int, int]:
110119
"""
@@ -207,3 +216,137 @@ def set_ssl_cert_locations(
207216
option(Option.SET_SSL_CERT_LOCATIONS, cert_file, cert_dir)
208217
self._ssl_cert_file = cert_file
209218
self._ssl_cert_dir = cert_dir
219+
220+
@property
221+
def template_path(self) -> str | None:
222+
"""Get or set the default template path for new repositories"""
223+
return option(Option.GET_TEMPLATE_PATH)
224+
225+
@template_path.setter
226+
def template_path(self, value: str | bytes) -> None:
227+
option(Option.SET_TEMPLATE_PATH, value)
228+
229+
@property
230+
def user_agent(self) -> str | None:
231+
"""Get or set the user agent string for network operations"""
232+
return option(Option.GET_USER_AGENT)
233+
234+
@user_agent.setter
235+
def user_agent(self, value: str | bytes) -> None:
236+
option(Option.SET_USER_AGENT, value)
237+
238+
@property
239+
def user_agent_product(self) -> str | None:
240+
"""Get or set the user agent product name"""
241+
return option(Option.GET_USER_AGENT_PRODUCT)
242+
243+
@user_agent_product.setter
244+
def user_agent_product(self, value: str | bytes) -> None:
245+
option(Option.SET_USER_AGENT_PRODUCT, value)
246+
247+
def set_ssl_ciphers(self, ciphers: str | bytes) -> None:
248+
"""Set the SSL ciphers to use for HTTPS connections"""
249+
option(Option.SET_SSL_CIPHERS, ciphers)
250+
251+
def add_ssl_x509_cert(self, certificate: str | bytes) -> None:
252+
"""Add a trusted X.509 certificate for SSL/TLS connections"""
253+
option(Option.ADD_SSL_X509_CERT, certificate)
254+
255+
def enable_strict_object_creation(self, value: bool = True) -> None:
256+
"""Enable or disable strict object creation validation"""
257+
option(Option.ENABLE_STRICT_OBJECT_CREATION, value)
258+
259+
def enable_strict_symbolic_ref_creation(self, value: bool = True) -> None:
260+
"""Enable or disable strict symbolic reference creation validation"""
261+
option(Option.ENABLE_STRICT_SYMBOLIC_REF_CREATION, value)
262+
263+
def enable_ofs_delta(self, value: bool = True) -> None:
264+
"""Enable or disable offset delta encoding"""
265+
option(Option.ENABLE_OFS_DELTA, value)
266+
267+
def enable_fsync_gitdir(self, value: bool = True) -> None:
268+
"""Enable or disable fsync for git directory operations"""
269+
option(Option.ENABLE_FSYNC_GITDIR, value)
270+
271+
def enable_strict_hash_verification(self, value: bool = True) -> None:
272+
"""Enable or disable strict hash verification"""
273+
option(Option.ENABLE_STRICT_HASH_VERIFICATION, value)
274+
275+
def enable_unsaved_index_safety(self, value: bool = True) -> None:
276+
"""Enable or disable unsaved index safety checks"""
277+
option(Option.ENABLE_UNSAVED_INDEX_SAFETY, value)
278+
279+
def enable_http_expect_continue(self, value: bool = True) -> None:
280+
"""Enable or disable HTTP Expect/Continue for large pushes"""
281+
option(Option.ENABLE_HTTP_EXPECT_CONTINUE, value)
282+
283+
@property
284+
def windows_sharemode(self) -> int:
285+
"""Get or set the Windows share mode for opening files"""
286+
return option(Option.GET_WINDOWS_SHAREMODE)
287+
288+
@windows_sharemode.setter
289+
def windows_sharemode(self, value: int) -> None:
290+
option(Option.SET_WINDOWS_SHAREMODE, value)
291+
292+
@property
293+
def pack_max_objects(self) -> int:
294+
"""Get or set the maximum number of objects in a pack"""
295+
return option(Option.GET_PACK_MAX_OBJECTS)
296+
297+
@pack_max_objects.setter
298+
def pack_max_objects(self, value: int) -> None:
299+
option(Option.SET_PACK_MAX_OBJECTS, value)
300+
301+
@property
302+
def owner_validation(self) -> bool:
303+
"""Get or set repository directory ownership validation"""
304+
return option(Option.GET_OWNER_VALIDATION)
305+
306+
@owner_validation.setter
307+
def owner_validation(self, value: bool) -> None:
308+
option(Option.SET_OWNER_VALIDATION, value)
309+
310+
def set_odb_packed_priority(self, priority: int) -> None:
311+
"""Set the priority for packed ODB backend (default 1)"""
312+
option(Option.SET_ODB_PACKED_PRIORITY, priority)
313+
314+
def set_odb_loose_priority(self, priority: int) -> None:
315+
"""Set the priority for loose ODB backend (default 2)"""
316+
option(Option.SET_ODB_LOOSE_PRIORITY, priority)
317+
318+
@property
319+
def extensions(self) -> list[str]:
320+
"""Get the list of enabled extensions"""
321+
return option(Option.GET_EXTENSIONS)
322+
323+
def set_extensions(self, extensions: list[str]) -> None:
324+
"""Set the list of enabled extensions"""
325+
option(Option.SET_EXTENSIONS, extensions, len(extensions))
326+
327+
@property
328+
def homedir(self) -> str | None:
329+
"""Get or set the home directory"""
330+
return option(Option.GET_HOMEDIR)
331+
332+
@homedir.setter
333+
def homedir(self, value: str | bytes) -> None:
334+
option(Option.SET_HOMEDIR, value)
335+
336+
@property
337+
def server_connect_timeout(self) -> int:
338+
"""Get or set the server connection timeout in milliseconds"""
339+
return option(Option.GET_SERVER_CONNECT_TIMEOUT)
340+
341+
@server_connect_timeout.setter
342+
def server_connect_timeout(self, value: int) -> None:
343+
option(Option.SET_SERVER_CONNECT_TIMEOUT, value)
344+
345+
@property
346+
def server_timeout(self) -> int:
347+
"""Get or set the server timeout in milliseconds"""
348+
return option(Option.GET_SERVER_TIMEOUT)
349+
350+
@server_timeout.setter
351+
def server_timeout(self, value: int) -> None:
352+
option(Option.SET_SERVER_TIMEOUT, value)

0 commit comments

Comments
 (0)