pygit2 1.18.1__tar.gz → 1.19.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (201) hide show
  1. {pygit2-1.18.1 → pygit2-1.19.0}/AUTHORS.md +8 -4
  2. {pygit2-1.18.1 → pygit2-1.19.0}/CHANGELOG.md +127 -25
  3. {pygit2-1.18.1 → pygit2-1.19.0}/PKG-INFO +17 -13
  4. {pygit2-1.18.1 → pygit2-1.19.0}/README.md +13 -9
  5. pygit2-1.19.0/build.ps1 +21 -0
  6. {pygit2-1.18.1 → pygit2-1.19.0}/build.sh +3 -3
  7. pygit2-1.19.0/mypy.ini +12 -0
  8. {pygit2-1.18.1 → pygit2-1.19.0}/pygit2/__init__.py +338 -16
  9. {pygit2-1.18.1 → pygit2-1.19.0}/pygit2/_build.py +4 -4
  10. pygit2-1.19.0/pygit2/_libgit2/ffi.pyi +373 -0
  11. {pygit2-1.18.1 → pygit2-1.19.0}/pygit2/_pygit2.pyi +84 -149
  12. {pygit2-1.18.1 → pygit2-1.19.0}/pygit2/_run.py +4 -2
  13. {pygit2-1.18.1 → pygit2-1.19.0}/pygit2/blame.py +32 -19
  14. {pygit2-1.18.1 → pygit2-1.19.0}/pygit2/blob.py +2 -2
  15. {pygit2-1.18.1 → pygit2-1.19.0}/pygit2/branches.py +25 -15
  16. {pygit2-1.18.1 → pygit2-1.19.0}/pygit2/callbacks.py +47 -18
  17. {pygit2-1.18.1 → pygit2-1.19.0}/pygit2/config.py +64 -43
  18. {pygit2-1.18.1 → pygit2-1.19.0}/pygit2/credentials.py +0 -1
  19. {pygit2-1.18.1 → pygit2-1.19.0}/pygit2/decl/callbacks.h +5 -0
  20. pygit2-1.19.0/pygit2/decl/options.h +50 -0
  21. {pygit2-1.18.1 → pygit2-1.19.0}/pygit2/decl/submodule.h +2 -0
  22. pygit2-1.19.0/pygit2/decl/transaction.h +8 -0
  23. {pygit2-1.18.1 → pygit2-1.19.0}/pygit2/decl/types.h +2 -0
  24. {pygit2-1.18.1 → pygit2-1.19.0}/pygit2/enums.py +47 -44
  25. {pygit2-1.18.1 → pygit2-1.19.0}/pygit2/errors.py +4 -3
  26. {pygit2-1.18.1 → pygit2-1.19.0}/pygit2/ffi.py +4 -1
  27. {pygit2-1.18.1 → pygit2-1.19.0}/pygit2/filter.py +4 -4
  28. {pygit2-1.18.1 → pygit2-1.19.0}/pygit2/index.py +39 -34
  29. pygit2-1.19.0/pygit2/options.py +805 -0
  30. {pygit2-1.18.1 → pygit2-1.19.0}/pygit2/packbuilder.py +21 -13
  31. {pygit2-1.18.1 → pygit2-1.19.0}/pygit2/references.py +17 -10
  32. {pygit2-1.18.1 → pygit2-1.19.0}/pygit2/refspec.py +13 -11
  33. {pygit2-1.18.1 → pygit2-1.19.0}/pygit2/remotes.py +165 -70
  34. {pygit2-1.18.1 → pygit2-1.19.0}/pygit2/repository.py +257 -121
  35. pygit2-1.19.0/pygit2/settings.py +348 -0
  36. {pygit2-1.18.1 → pygit2-1.19.0}/pygit2/submodules.py +36 -20
  37. pygit2-1.19.0/pygit2/transaction.py +199 -0
  38. {pygit2-1.18.1 → pygit2-1.19.0}/pygit2/utils.py +67 -19
  39. pygit2-1.19.0/pyproject.toml +76 -0
  40. {pygit2-1.18.1 → pygit2-1.19.0}/requirements-test.txt +1 -0
  41. {pygit2-1.18.1 → pygit2-1.19.0}/requirements.txt +1 -1
  42. {pygit2-1.18.1 → pygit2-1.19.0}/setup.py +19 -17
  43. {pygit2-1.18.1 → pygit2-1.19.0}/src/blob.c +1 -1
  44. {pygit2-1.18.1 → pygit2-1.19.0}/src/pygit2.c +4 -35
  45. {pygit2-1.18.1 → pygit2-1.19.0}/src/repository.c +23 -3
  46. {pygit2-1.18.1 → pygit2-1.19.0}/test/__init__.py +3 -2
  47. {pygit2-1.18.1 → pygit2-1.19.0}/test/conftest.py +19 -18
  48. {pygit2-1.18.1 → pygit2-1.19.0}/test/test_apply_diff.py +37 -20
  49. {pygit2-1.18.1 → pygit2-1.19.0}/test/test_archive.py +7 -6
  50. {pygit2-1.18.1 → pygit2-1.19.0}/test/test_attributes.py +4 -2
  51. {pygit2-1.18.1 → pygit2-1.19.0}/test/test_blame.py +13 -16
  52. {pygit2-1.18.1 → pygit2-1.19.0}/test/test_blob.py +39 -25
  53. {pygit2-1.18.1 → pygit2-1.19.0}/test/test_branch.py +34 -21
  54. {pygit2-1.18.1 → pygit2-1.19.0}/test/test_branch_empty.py +29 -18
  55. {pygit2-1.18.1 → pygit2-1.19.0}/test/test_cherrypick.py +10 -6
  56. {pygit2-1.18.1 → pygit2-1.19.0}/test/test_commit.py +37 -25
  57. {pygit2-1.18.1 → pygit2-1.19.0}/test/test_commit_gpg.py +5 -3
  58. {pygit2-1.18.1 → pygit2-1.19.0}/test/test_commit_trailer.py +9 -3
  59. {pygit2-1.18.1 → pygit2-1.19.0}/test/test_config.py +18 -17
  60. {pygit2-1.18.1 → pygit2-1.19.0}/test/test_credentials.py +42 -21
  61. {pygit2-1.18.1 → pygit2-1.19.0}/test/test_describe.py +14 -13
  62. {pygit2-1.18.1 → pygit2-1.19.0}/test/test_diff.py +29 -28
  63. {pygit2-1.18.1 → pygit2-1.19.0}/test/test_diff_binary.py +6 -2
  64. {pygit2-1.18.1 → pygit2-1.19.0}/test/test_filter.py +33 -16
  65. {pygit2-1.18.1 → pygit2-1.19.0}/test/test_index.py +36 -33
  66. {pygit2-1.18.1 → pygit2-1.19.0}/test/test_mailmap.py +3 -4
  67. {pygit2-1.18.1 → pygit2-1.19.0}/test/test_merge.py +43 -37
  68. {pygit2-1.18.1 → pygit2-1.19.0}/test/test_nonunicode.py +3 -2
  69. {pygit2-1.18.1 → pygit2-1.19.0}/test/test_note.py +14 -9
  70. {pygit2-1.18.1 → pygit2-1.19.0}/test/test_object.py +11 -12
  71. {pygit2-1.18.1 → pygit2-1.19.0}/test/test_odb.py +10 -9
  72. {pygit2-1.18.1 → pygit2-1.19.0}/test/test_odb_backend.py +29 -27
  73. {pygit2-1.18.1 → pygit2-1.19.0}/test/test_oid.py +11 -11
  74. pygit2-1.19.0/test/test_options.py +262 -0
  75. {pygit2-1.18.1 → pygit2-1.19.0}/test/test_packbuilder.py +16 -9
  76. {pygit2-1.18.1 → pygit2-1.19.0}/test/test_patch.py +37 -18
  77. {pygit2-1.18.1 → pygit2-1.19.0}/test/test_patch_encoding.py +9 -5
  78. {pygit2-1.18.1 → pygit2-1.19.0}/test/test_refdb_backend.py +45 -31
  79. {pygit2-1.18.1 → pygit2-1.19.0}/test/test_refs.py +85 -51
  80. {pygit2-1.18.1 → pygit2-1.19.0}/test/test_remote.py +99 -14
  81. {pygit2-1.18.1 → pygit2-1.19.0}/test/test_remote_prune.py +12 -6
  82. {pygit2-1.18.1 → pygit2-1.19.0}/test/test_remote_utf8.py +8 -3
  83. {pygit2-1.18.1 → pygit2-1.19.0}/test/test_repository.py +179 -114
  84. {pygit2-1.18.1 → pygit2-1.19.0}/test/test_repository_bare.py +39 -31
  85. {pygit2-1.18.1 → pygit2-1.19.0}/test/test_repository_custom.py +6 -3
  86. {pygit2-1.18.1 → pygit2-1.19.0}/test/test_repository_empty.py +5 -3
  87. {pygit2-1.18.1 → pygit2-1.19.0}/test/test_revparse.py +10 -9
  88. {pygit2-1.18.1 → pygit2-1.19.0}/test/test_revwalk.py +11 -11
  89. pygit2-1.19.0/test/test_settings.py +284 -0
  90. {pygit2-1.18.1 → pygit2-1.19.0}/test/test_signature.py +8 -7
  91. {pygit2-1.18.1 → pygit2-1.19.0}/test/test_status.py +9 -4
  92. {pygit2-1.18.1 → pygit2-1.19.0}/test/test_submodule.py +42 -28
  93. {pygit2-1.18.1 → pygit2-1.19.0}/test/test_tag.py +11 -8
  94. pygit2-1.19.0/test/test_transaction.py +327 -0
  95. {pygit2-1.18.1 → pygit2-1.19.0}/test/test_tree.py +37 -25
  96. {pygit2-1.18.1 → pygit2-1.19.0}/test/test_treebuilder.py +9 -4
  97. {pygit2-1.18.1 → pygit2-1.19.0}/test/utils.py +30 -9
  98. pygit2-1.18.1/pygit2/settings.py +0 -193
  99. pygit2-1.18.1/pyproject.toml +0 -39
  100. pygit2-1.18.1/src/options.c +0 -309
  101. pygit2-1.18.1/src/options.h +0 -72
  102. pygit2-1.18.1/test/test_options.py +0 -132
  103. {pygit2-1.18.1 → pygit2-1.19.0}/COPYING +0 -0
  104. {pygit2-1.18.1 → pygit2-1.19.0}/Makefile +0 -0
  105. {pygit2-1.18.1 → pygit2-1.19.0}/SPONSORS.md +0 -0
  106. {pygit2-1.18.1 → pygit2-1.19.0}/build_tag.py +0 -0
  107. {pygit2-1.18.1 → pygit2-1.19.0}/mypy-stubtest.ini +0 -0
  108. {pygit2-1.18.1 → pygit2-1.19.0}/pygit2/decl/attr.h +0 -0
  109. {pygit2-1.18.1 → pygit2-1.19.0}/pygit2/decl/blame.h +0 -0
  110. {pygit2-1.18.1 → pygit2-1.19.0}/pygit2/decl/buffer.h +0 -0
  111. {pygit2-1.18.1 → pygit2-1.19.0}/pygit2/decl/checkout.h +0 -0
  112. {pygit2-1.18.1 → pygit2-1.19.0}/pygit2/decl/clone.h +0 -0
  113. {pygit2-1.18.1 → pygit2-1.19.0}/pygit2/decl/commit.h +0 -0
  114. {pygit2-1.18.1 → pygit2-1.19.0}/pygit2/decl/common.h +0 -0
  115. {pygit2-1.18.1 → pygit2-1.19.0}/pygit2/decl/config.h +0 -0
  116. {pygit2-1.18.1 → pygit2-1.19.0}/pygit2/decl/describe.h +0 -0
  117. {pygit2-1.18.1 → pygit2-1.19.0}/pygit2/decl/diff.h +0 -0
  118. {pygit2-1.18.1 → pygit2-1.19.0}/pygit2/decl/errors.h +0 -0
  119. {pygit2-1.18.1 → pygit2-1.19.0}/pygit2/decl/graph.h +0 -0
  120. {pygit2-1.18.1 → pygit2-1.19.0}/pygit2/decl/index.h +0 -0
  121. {pygit2-1.18.1 → pygit2-1.19.0}/pygit2/decl/indexer.h +0 -0
  122. {pygit2-1.18.1 → pygit2-1.19.0}/pygit2/decl/merge.h +0 -0
  123. {pygit2-1.18.1 → pygit2-1.19.0}/pygit2/decl/net.h +0 -0
  124. {pygit2-1.18.1 → pygit2-1.19.0}/pygit2/decl/oid.h +0 -0
  125. {pygit2-1.18.1 → pygit2-1.19.0}/pygit2/decl/pack.h +0 -0
  126. {pygit2-1.18.1 → pygit2-1.19.0}/pygit2/decl/proxy.h +0 -0
  127. {pygit2-1.18.1 → pygit2-1.19.0}/pygit2/decl/refspec.h +0 -0
  128. {pygit2-1.18.1 → pygit2-1.19.0}/pygit2/decl/remote.h +0 -0
  129. {pygit2-1.18.1 → pygit2-1.19.0}/pygit2/decl/repository.h +0 -0
  130. {pygit2-1.18.1 → pygit2-1.19.0}/pygit2/decl/revert.h +0 -0
  131. {pygit2-1.18.1 → pygit2-1.19.0}/pygit2/decl/stash.h +0 -0
  132. {pygit2-1.18.1 → pygit2-1.19.0}/pygit2/decl/strarray.h +0 -0
  133. {pygit2-1.18.1 → pygit2-1.19.0}/pygit2/decl/transport.h +0 -0
  134. {pygit2-1.18.1 → pygit2-1.19.0}/pygit2/legacyenums.py +0 -0
  135. {pygit2-1.18.1 → pygit2-1.19.0}/pygit2/py.typed +0 -0
  136. {pygit2-1.18.1 → pygit2-1.19.0}/pytest.ini +0 -0
  137. {pygit2-1.18.1 → pygit2-1.19.0}/setup.cfg +0 -0
  138. {pygit2-1.18.1 → pygit2-1.19.0}/src/branch.c +0 -0
  139. {pygit2-1.18.1 → pygit2-1.19.0}/src/branch.h +0 -0
  140. {pygit2-1.18.1 → pygit2-1.19.0}/src/commit.c +0 -0
  141. {pygit2-1.18.1 → pygit2-1.19.0}/src/diff.c +0 -0
  142. {pygit2-1.18.1 → pygit2-1.19.0}/src/diff.h +0 -0
  143. {pygit2-1.18.1 → pygit2-1.19.0}/src/error.c +0 -0
  144. {pygit2-1.18.1 → pygit2-1.19.0}/src/error.h +0 -0
  145. {pygit2-1.18.1 → pygit2-1.19.0}/src/filter.c +0 -0
  146. {pygit2-1.18.1 → pygit2-1.19.0}/src/filter.h +0 -0
  147. {pygit2-1.18.1 → pygit2-1.19.0}/src/mailmap.c +0 -0
  148. {pygit2-1.18.1 → pygit2-1.19.0}/src/mailmap.h +0 -0
  149. {pygit2-1.18.1 → pygit2-1.19.0}/src/note.c +0 -0
  150. {pygit2-1.18.1 → pygit2-1.19.0}/src/note.h +0 -0
  151. {pygit2-1.18.1 → pygit2-1.19.0}/src/object.c +0 -0
  152. {pygit2-1.18.1 → pygit2-1.19.0}/src/object.h +0 -0
  153. {pygit2-1.18.1 → pygit2-1.19.0}/src/odb.c +0 -0
  154. {pygit2-1.18.1 → pygit2-1.19.0}/src/odb.h +0 -0
  155. {pygit2-1.18.1 → pygit2-1.19.0}/src/odb_backend.c +0 -0
  156. {pygit2-1.18.1 → pygit2-1.19.0}/src/odb_backend.h +0 -0
  157. {pygit2-1.18.1 → pygit2-1.19.0}/src/oid.c +0 -0
  158. {pygit2-1.18.1 → pygit2-1.19.0}/src/oid.h +0 -0
  159. {pygit2-1.18.1 → pygit2-1.19.0}/src/patch.c +0 -0
  160. {pygit2-1.18.1 → pygit2-1.19.0}/src/patch.h +0 -0
  161. {pygit2-1.18.1 → pygit2-1.19.0}/src/refdb.c +0 -0
  162. {pygit2-1.18.1 → pygit2-1.19.0}/src/refdb.h +0 -0
  163. {pygit2-1.18.1 → pygit2-1.19.0}/src/refdb_backend.c +0 -0
  164. {pygit2-1.18.1 → pygit2-1.19.0}/src/refdb_backend.h +0 -0
  165. {pygit2-1.18.1 → pygit2-1.19.0}/src/reference.c +0 -0
  166. {pygit2-1.18.1 → pygit2-1.19.0}/src/reference.h +0 -0
  167. {pygit2-1.18.1 → pygit2-1.19.0}/src/repository.h +0 -0
  168. {pygit2-1.18.1 → pygit2-1.19.0}/src/revspec.c +0 -0
  169. {pygit2-1.18.1 → pygit2-1.19.0}/src/revspec.h +0 -0
  170. {pygit2-1.18.1 → pygit2-1.19.0}/src/signature.c +0 -0
  171. {pygit2-1.18.1 → pygit2-1.19.0}/src/signature.h +0 -0
  172. {pygit2-1.18.1 → pygit2-1.19.0}/src/stash.c +0 -0
  173. {pygit2-1.18.1 → pygit2-1.19.0}/src/tag.c +0 -0
  174. {pygit2-1.18.1 → pygit2-1.19.0}/src/tree.c +0 -0
  175. {pygit2-1.18.1 → pygit2-1.19.0}/src/tree.h +0 -0
  176. {pygit2-1.18.1 → pygit2-1.19.0}/src/treebuilder.c +0 -0
  177. {pygit2-1.18.1 → pygit2-1.19.0}/src/treebuilder.h +0 -0
  178. {pygit2-1.18.1 → pygit2-1.19.0}/src/types.h +0 -0
  179. {pygit2-1.18.1 → pygit2-1.19.0}/src/utils.c +0 -0
  180. {pygit2-1.18.1 → pygit2-1.19.0}/src/utils.h +0 -0
  181. {pygit2-1.18.1 → pygit2-1.19.0}/src/walker.c +0 -0
  182. {pygit2-1.18.1 → pygit2-1.19.0}/src/walker.h +0 -0
  183. {pygit2-1.18.1 → pygit2-1.19.0}/src/wildmatch.c +0 -0
  184. {pygit2-1.18.1 → pygit2-1.19.0}/src/wildmatch.h +0 -0
  185. {pygit2-1.18.1 → pygit2-1.19.0}/src/worktree.c +0 -0
  186. {pygit2-1.18.1 → pygit2-1.19.0}/src/worktree.h +0 -0
  187. {pygit2-1.18.1 → pygit2-1.19.0}/test/data/barerepo.zip +0 -0
  188. {pygit2-1.18.1 → pygit2-1.19.0}/test/data/binaryfilerepo.zip +0 -0
  189. {pygit2-1.18.1 → pygit2-1.19.0}/test/data/blameflagsrepo.zip +0 -0
  190. {pygit2-1.18.1 → pygit2-1.19.0}/test/data/dirtyrepo.zip +0 -0
  191. {pygit2-1.18.1 → pygit2-1.19.0}/test/data/emptyrepo.zip +0 -0
  192. {pygit2-1.18.1 → pygit2-1.19.0}/test/data/encoding.zip +0 -0
  193. {pygit2-1.18.1 → pygit2-1.19.0}/test/data/gpgsigned.zip +0 -0
  194. {pygit2-1.18.1 → pygit2-1.19.0}/test/data/submodulerepo.zip +0 -0
  195. {pygit2-1.18.1 → pygit2-1.19.0}/test/data/testrepo.zip +0 -0
  196. {pygit2-1.18.1 → pygit2-1.19.0}/test/data/testrepoformerging.zip +0 -0
  197. {pygit2-1.18.1 → pygit2-1.19.0}/test/data/testrepopacked.zip +0 -0
  198. {pygit2-1.18.1 → pygit2-1.19.0}/test/data/trailerrepo.zip +0 -0
  199. {pygit2-1.18.1 → pygit2-1.19.0}/test/data/utf8branchrepo.zip +0 -0
  200. {pygit2-1.18.1 → pygit2-1.19.0}/test/keys/pygit2_empty +0 -0
  201. {pygit2-1.18.1 → pygit2-1.19.0}/test/keys/pygit2_empty.pub +0 -0
@@ -4,6 +4,7 @@ Authors:
4
4
  Carlos Martín Nieto
5
5
  Nico von Geyso
6
6
  Iliyas Jorio
7
+ Benedikt Seidl
7
8
  Sviatoslav Sydorenko
8
9
  Matthias Bartelmeß
9
10
  Robert Coup
@@ -14,12 +15,13 @@ Authors:
14
15
  Daniel Rodríguez Troitiño
15
16
  Peter Rowlands
16
17
  Richo Healey
18
+ Brendan Doherty
17
19
  Christian Boos
18
20
  Julien Miotte
19
- Benedikt Seidl
20
21
  Nick Hynes
21
22
  Richard Möhn
22
23
  Xu Tao
24
+ Konstantin Baikov
23
25
  Matthew Duggan
24
26
  Matthew Gamble
25
27
  Jeremy Westwood
@@ -28,6 +30,7 @@ Authors:
28
30
  Sriram Raghu
29
31
  Victor Garcia
30
32
  Yonggang Luo
33
+ Łukasz Langa
31
34
  Patrick Steinhardt
32
35
  Petr Hosek
33
36
  Tamir Bahar
@@ -48,7 +51,7 @@ Authors:
48
51
  Mathieu Parent
49
52
  Michał Kępień
50
53
  Nicolas Dandrimont
51
- Raphael Medaer (Escaux)
54
+ Raphael Medaer
52
55
  Yaroslav Halchenko
53
56
  Anatoly Techtonik
54
57
  Andrew Olsen
@@ -62,6 +65,7 @@ Authors:
62
65
  Santiago Perez De Rosso
63
66
  Sebastian Thiel
64
67
  Thom Wiggers
68
+ WANG Xuerui
65
69
  William Manley
66
70
  Alexander Linne
67
71
  Alok Singhal
@@ -87,7 +91,6 @@ Authors:
87
91
  Sukhman Bhuller
88
92
  Thomas Kluyver
89
93
  Tyler Cipriani
90
- WANG Xuerui
91
94
  Alex Chamberlain
92
95
  Alexander Bayandin
93
96
  Amit Bakshi
@@ -96,6 +99,7 @@ Authors:
96
99
  Ben Davis
97
100
  CJ Steiner
98
101
  Colin Watson
102
+ Craig de Stigter
99
103
  Dan Yeaw
100
104
  Dustin Raimondi
101
105
  Eric Schrijver
@@ -154,7 +158,6 @@ Authors:
154
158
  Chris Rebert
155
159
  Christopher Hunt
156
160
  Claudio Jolowicz
157
- Craig de Stigter
158
161
  Cristian Hotea
159
162
  Cyril Jouve
160
163
  Dan Cecile
@@ -202,6 +205,7 @@ Authors:
202
205
  Maxwell G
203
206
  Michał Górny
204
207
  Na'aman Hirschfeld
208
+ Nicolas Rybowski
205
209
  Nicolás Sanguinetti
206
210
  Nikita Kartashov
207
211
  Nikolai Zujev
@@ -1,3 +1,97 @@
1
+ # 1.19.0 (2025-10-23)
2
+
3
+ - Add support for Python 3.14 and drop 3.10
4
+
5
+ - Support threaded builds (experimental)
6
+ [#1430](https://github.com/libgit2/pygit2/pull/1430)
7
+ [#1435](https://github.com/libgit2/pygit2/pull/1435)
8
+
9
+ - Add Linux musl wheels for AArch64
10
+
11
+ - Add Windows wheels for AArch64;
12
+ CI: build Windows wheels with cibuildwheel on GitHub
13
+ [#1423](https://github.com/libgit2/pygit2/pull/1423)
14
+
15
+ - New `Repository.transaction()` context manager, returns new `ReferenceTransaction`
16
+ [#1420](https://github.com/libgit2/pygit2/pull/1420)
17
+
18
+ - CI: add GitHub releases and other improvements
19
+ [#1433](https://github.com/libgit2/pygit2/pull/1433)
20
+ [#1432](https://github.com/libgit2/pygit2/pull/1432)
21
+ [#1425](https://github.com/libgit2/pygit2/pull/1425)
22
+ [#1431](https://github.com/libgit2/pygit2/pull/1431)
23
+
24
+ - Documentation improvements and other changes
25
+ [#1426](https://github.com/libgit2/pygit2/pull/1426)
26
+ [#1424](https://github.com/libgit2/pygit2/pull/1424)
27
+
28
+ Breaking changes:
29
+
30
+ - Remove deprecated `IndexEntry.hex`, use `str(entry.id)` instead of `entry.hex`
31
+
32
+ Deprecations:
33
+
34
+ - Deprecate `IndexEntry.oid`, use `entry.id` instead of `entry.oid`
35
+
36
+ # 1.18.2 (2025-08-16)
37
+
38
+ - Add support for almost all global options
39
+ [#1409](https://github.com/libgit2/pygit2/pull/1409)
40
+
41
+ - Now it's possible to set `Submodule.url = url`
42
+ [#1395](https://github.com/libgit2/pygit2/pull/1395)
43
+
44
+ - New `RemoteCallbacks.push_negotiation(...)`
45
+ [#1396](https://github.com/libgit2/pygit2/pull/1396)
46
+
47
+ - New optional boolean argument `connect` in `Remote.ls_remotes(...)`
48
+ [#1396](https://github.com/libgit2/pygit2/pull/1396)
49
+
50
+ - New `Remote.list_heads(...)` returns a list of `RemoteHead` objects
51
+ [#1397](https://github.com/libgit2/pygit2/pull/1397)
52
+ [#1410](https://github.com/libgit2/pygit2/pull/1410)
53
+
54
+ - Documentation fixes
55
+ [#1388](https://github.com/libgit2/pygit2/pull/1388)
56
+
57
+ - Typing improvements
58
+ [#1387](https://github.com/libgit2/pygit2/pull/1387)
59
+ [#1389](https://github.com/libgit2/pygit2/pull/1389)
60
+ [#1390](https://github.com/libgit2/pygit2/pull/1390)
61
+ [#1391](https://github.com/libgit2/pygit2/pull/1391)
62
+ [#1392](https://github.com/libgit2/pygit2/pull/1392)
63
+ [#1393](https://github.com/libgit2/pygit2/pull/1393)
64
+ [#1394](https://github.com/libgit2/pygit2/pull/1394)
65
+ [#1398](https://github.com/libgit2/pygit2/pull/1398)
66
+ [#1399](https://github.com/libgit2/pygit2/pull/1399)
67
+ [#1400](https://github.com/libgit2/pygit2/pull/1400)
68
+ [#1402](https://github.com/libgit2/pygit2/pull/1402)
69
+ [#1403](https://github.com/libgit2/pygit2/pull/1403)
70
+ [#1406](https://github.com/libgit2/pygit2/pull/1406)
71
+ [#1407](https://github.com/libgit2/pygit2/pull/1407)
72
+ [#1408](https://github.com/libgit2/pygit2/pull/1408)
73
+
74
+ Deprecations:
75
+
76
+ - `Remote.ls_remotes(...)` is deprecated, use `Remote.list_heads(...)`:
77
+
78
+ # Before
79
+ for head in remote.ls_remotes():
80
+ head['name']
81
+ head['oid']
82
+ head['loid'] # None when local is False
83
+ head['local']
84
+ head['symref_target']
85
+
86
+ # Now
87
+ for head in remote.list_heads():
88
+ head.name
89
+ head.oid
90
+ head.loid # The zero oid when local is False
91
+ head.local
92
+ head.symref_target
93
+
94
+
1
95
  # 1.18.1 (2025-07-26)
2
96
 
3
97
  - Update wheels to libgit2 1.9.1 and OpenSSL 3.3
@@ -239,31 +333,39 @@ Deprecations:
239
333
 
240
334
  # 1.14.0 (2024-01-26)
241
335
 
242
- - Drop support for Python 3.8
243
- - Add Linux wheels for musl on x86\_64
244
- [#1266](https://github.com/libgit2/pygit2/pull/1266)
245
- - New `Repository.submodules` namespace
246
- [#1250](https://github.com/libgit2/pygit2/pull/1250)
247
- - New `Repository.listall_mergeheads()`, `Repository.message`,
248
- `Repository.raw_message` and `Repository.remove_message()`
249
- [#1261](https://github.com/libgit2/pygit2/pull/1261)
250
- - New `pygit2.enums` supersedes the `GIT_` constants
251
- [#1251](https://github.com/libgit2/pygit2/pull/1251)
252
- - Now `Repository.status()`, `Repository.status_file()`,
253
- `Repository.merge_analysis()`, `DiffFile.flags`, `DiffFile.mode`,
254
- `DiffDelta.flags` and `DiffDelta.status` return enums
255
- [#1263](https://github.com/libgit2/pygit2/pull/1263)
256
- - Now repository\'s `merge()`, `merge_commits()` and `merge_trees()`
257
- take enums/flags for their `favor`, `flags` and `file_flags` arguments.
258
- [#1271](https://github.com/libgit2/pygit2/pull/1271)
259
- [#1272](https://github.com/libgit2/pygit2/pull/1272)
260
- - Fix crash in filter cleanup
261
- [#1259](https://github.com/libgit2/pygit2/pull/1259)
262
- - Documentation fixes
263
- [#1255](https://github.com/libgit2/pygit2/pull/1255)
264
- [#1258](https://github.com/libgit2/pygit2/pull/1258)
265
- [#1268](https://github.com/libgit2/pygit2/pull/1268)
266
- [#1270](https://github.com/libgit2/pygit2/pull/1270)
336
+ - Drop support for Python 3.8
337
+
338
+ - Add Linux wheels for musl on x86\_64
339
+ [#1266](https://github.com/libgit2/pygit2/pull/1266)
340
+
341
+ - New `Repository.submodules` namespace
342
+ [#1250](https://github.com/libgit2/pygit2/pull/1250)
343
+
344
+ - New `Repository.listall_mergeheads()`, `Repository.message`,
345
+ `Repository.raw_message` and `Repository.remove_message()`
346
+ [#1261](https://github.com/libgit2/pygit2/pull/1261)
347
+
348
+ - New `pygit2.enums` supersedes the `GIT_` constants
349
+ [#1251](https://github.com/libgit2/pygit2/pull/1251)
350
+
351
+ - Now `Repository.status()`, `Repository.status_file()`,
352
+ `Repository.merge_analysis()`, `DiffFile.flags`, `DiffFile.mode`,
353
+ `DiffDelta.flags` and `DiffDelta.status` return enums
354
+ [#1263](https://github.com/libgit2/pygit2/pull/1263)
355
+
356
+ - Now repository\'s `merge()`, `merge_commits()` and `merge_trees()`
357
+ take enums/flags for their `favor`, `flags` and `file_flags` arguments.
358
+ [#1271](https://github.com/libgit2/pygit2/pull/1271)
359
+ [#1272](https://github.com/libgit2/pygit2/pull/1272)
360
+
361
+ - Fix crash in filter cleanup
362
+ [#1259](https://github.com/libgit2/pygit2/pull/1259)
363
+
364
+ - Documentation fixes
365
+ [#1255](https://github.com/libgit2/pygit2/pull/1255)
366
+ [#1258](https://github.com/libgit2/pygit2/pull/1258)
367
+ [#1268](https://github.com/libgit2/pygit2/pull/1268)
368
+ [#1270](https://github.com/libgit2/pygit2/pull/1270)
267
369
 
268
370
  Breaking changes:
269
371
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pygit2
3
- Version: 1.18.1
3
+ Version: 1.19.0
4
4
  Summary: Python bindings for libgit2.
5
5
  Home-page: https://github.com/libgit2/pygit2
6
6
  Maintainer: J. David Ibáñez
@@ -14,19 +14,19 @@ Classifier: Development Status :: 5 - Production/Stable
14
14
  Classifier: Intended Audience :: Developers
15
15
  Classifier: Programming Language :: Python
16
16
  Classifier: Programming Language :: Python :: 3
17
- Classifier: Programming Language :: Python :: 3.10
18
17
  Classifier: Programming Language :: Python :: 3.11
19
18
  Classifier: Programming Language :: Python :: 3.12
20
19
  Classifier: Programming Language :: Python :: 3.13
20
+ Classifier: Programming Language :: Python :: 3.14
21
21
  Classifier: Programming Language :: Python :: Implementation :: PyPy
22
22
  Classifier: Programming Language :: Python :: Implementation :: CPython
23
23
  Classifier: Topic :: Software Development :: Version Control
24
24
  Classifier: Typing :: Typed
25
- Requires-Python: >=3.10
25
+ Requires-Python: >=3.11
26
26
  Description-Content-Type: text/markdown
27
27
  License-File: COPYING
28
28
  License-File: AUTHORS.md
29
- Requires-Dist: cffi>=1.17.0
29
+ Requires-Dist: cffi>=2.0
30
30
  Dynamic: classifier
31
31
  Dynamic: description
32
32
  Dynamic: description-content-type
@@ -44,20 +44,24 @@ Dynamic: summary
44
44
  # pygit2 - libgit2 bindings in Python
45
45
 
46
46
  Bindings to the libgit2 shared library, implements Git plumbing.
47
- Supports Python 3.10 to 3.13 and PyPy3 7.3+
47
+ Supports Python 3.11 to 3.14 and PyPy3 7.3+
48
48
 
49
- [![image](https://github.com/libgit2/pygit2/actions/workflows/tests.yml/badge.svg)](https://github.com/libgit2/pygit2/actions/workflows/tests.yml)
49
+ [![test-ci-badge][test-ci-badge]][test-ci-link]
50
+ [![deploy-ci-badge][deploy-ci-badge]][deploy-ci-link]
50
51
 
51
- [![image](https://ci.appveyor.com/api/projects/status/edmwc0dctk5nacx0/branch/master?svg=true)](https://ci.appveyor.com/project/jdavid/pygit2/branch/master)
52
+ [deploy-ci-badge]: https://github.com/libgit2/pygit2/actions/workflows/wheels.yml/badge.svg
53
+ [deploy-ci-link]: https://github.com/libgit2/pygit2/actions/workflows/wheels.yml
54
+ [test-ci-badge]: https://github.com/libgit2/pygit2/actions/workflows/tests.yml/badge.svg
55
+ [test-ci-link]: https://github.com/libgit2/pygit2/actions/workflows/tests.yml
52
56
 
53
57
  ## Links
54
58
 
55
- - Documentation - <https://www.pygit2.org/>
56
- - Install - <https://www.pygit2.org/install.html>
57
- - Download - <https://pypi.org/project/pygit2/>
58
- - Source code and issue tracker - <https://github.com/libgit2/pygit2>
59
- - Changelog - <https://github.com/libgit2/pygit2/blob/master/CHANGELOG.md>
60
- - Authors - <https://github.com/libgit2/pygit2/blob/master/AUTHORS.md>
59
+ - Documentation - <https://www.pygit2.org/>
60
+ - Install - <https://www.pygit2.org/install.html>
61
+ - Download - <https://pypi.org/project/pygit2/>
62
+ - Source code and issue tracker - <https://github.com/libgit2/pygit2>
63
+ - Changelog - <https://github.com/libgit2/pygit2/blob/master/CHANGELOG.md>
64
+ - Authors - <https://github.com/libgit2/pygit2/blob/master/AUTHORS.md>
61
65
 
62
66
  ## Sponsors
63
67
 
@@ -1,20 +1,24 @@
1
1
  # pygit2 - libgit2 bindings in Python
2
2
 
3
3
  Bindings to the libgit2 shared library, implements Git plumbing.
4
- Supports Python 3.10 to 3.13 and PyPy3 7.3+
4
+ Supports Python 3.11 to 3.14 and PyPy3 7.3+
5
5
 
6
- [![image](https://github.com/libgit2/pygit2/actions/workflows/tests.yml/badge.svg)](https://github.com/libgit2/pygit2/actions/workflows/tests.yml)
6
+ [![test-ci-badge][test-ci-badge]][test-ci-link]
7
+ [![deploy-ci-badge][deploy-ci-badge]][deploy-ci-link]
7
8
 
8
- [![image](https://ci.appveyor.com/api/projects/status/edmwc0dctk5nacx0/branch/master?svg=true)](https://ci.appveyor.com/project/jdavid/pygit2/branch/master)
9
+ [deploy-ci-badge]: https://github.com/libgit2/pygit2/actions/workflows/wheels.yml/badge.svg
10
+ [deploy-ci-link]: https://github.com/libgit2/pygit2/actions/workflows/wheels.yml
11
+ [test-ci-badge]: https://github.com/libgit2/pygit2/actions/workflows/tests.yml/badge.svg
12
+ [test-ci-link]: https://github.com/libgit2/pygit2/actions/workflows/tests.yml
9
13
 
10
14
  ## Links
11
15
 
12
- - Documentation - <https://www.pygit2.org/>
13
- - Install - <https://www.pygit2.org/install.html>
14
- - Download - <https://pypi.org/project/pygit2/>
15
- - Source code and issue tracker - <https://github.com/libgit2/pygit2>
16
- - Changelog - <https://github.com/libgit2/pygit2/blob/master/CHANGELOG.md>
17
- - Authors - <https://github.com/libgit2/pygit2/blob/master/AUTHORS.md>
16
+ - Documentation - <https://www.pygit2.org/>
17
+ - Install - <https://www.pygit2.org/install.html>
18
+ - Download - <https://pypi.org/project/pygit2/>
19
+ - Source code and issue tracker - <https://github.com/libgit2/pygit2>
20
+ - Changelog - <https://github.com/libgit2/pygit2/blob/master/CHANGELOG.md>
21
+ - Authors - <https://github.com/libgit2/pygit2/blob/master/AUTHORS.md>
18
22
 
19
23
  ## Sponsors
20
24
 
@@ -0,0 +1,21 @@
1
+ if (!(Test-Path -Path "build")) {
2
+ # in case the pygit2 package build/ workspace has not been created by cibuildwheel yet
3
+ mkdir build
4
+ }
5
+ if (Test-Path -Path "$env:LIBGIT2_SRC") {
6
+ Set-Location "$env:LIBGIT2_SRC"
7
+ # for local runs, reuse build/libgit_src if it exists
8
+ if (Test-Path -Path build) {
9
+ # purge previous build env (likely for a different arch type)
10
+ Remove-Item -Recurse -Force build
11
+ }
12
+ # ensure we are checked out to the right version
13
+ git fetch --depth=1 --tags
14
+ git checkout "v$env:LIBGIT2_VERSION"
15
+ } else {
16
+ # from a fresh run (like in CI)
17
+ git clone --depth=1 -b "v$env:LIBGIT2_VERSION" https://github.com/libgit2/libgit2.git $env:LIBGIT2_SRC
18
+ Set-Location "$env:LIBGIT2_SRC"
19
+ }
20
+ cmake -B build -S . -DBUILD_TESTS=OFF
21
+ cmake --build build/ --config=Release --target install
@@ -134,7 +134,7 @@ if [ -n "$OPENSSL_VERSION" ]; then
134
134
  # Linux
135
135
  tar xf $FILENAME.tar.gz
136
136
  cd $FILENAME
137
- ./Configure shared --prefix=$PREFIX --libdir=$PREFIX/lib
137
+ ./Configure shared no-apps no-docs no-tests --prefix=$PREFIX --libdir=$PREFIX/lib
138
138
  make
139
139
  make install
140
140
  OPENSSL_PREFIX=$(pwd)
@@ -178,7 +178,7 @@ if [ -n "$LIBGIT2_VERSION" ]; then
178
178
  wget https://github.com/libgit2/libgit2/archive/refs/tags/v$LIBGIT2_VERSION.tar.gz -N -O $FILENAME.tar.gz
179
179
  tar xf $FILENAME.tar.gz
180
180
  cd $FILENAME
181
- mkdir build -p
181
+ mkdir -p build
182
182
  cd build
183
183
  if [ "$KERNEL" = "Darwin" ] && [ "$CIBUILDWHEEL" = "1" ]; then
184
184
  CMAKE_PREFIX_PATH=$OPENSSL_PREFIX:$PREFIX cmake .. \
@@ -269,7 +269,7 @@ if [ "$1" = "mypy" ]; then
269
269
  $PREFIX/bin/pip install $WHEELDIR/pygit2*-$PYTHON_TAG-*.whl
270
270
  fi
271
271
  $PREFIX/bin/pip install -r requirements-test.txt
272
- $PREFIX/bin/mypy pygit2
272
+ $PREFIX/bin/mypy pygit2 test
273
273
  fi
274
274
 
275
275
  # Test .pyi stub file
pygit2-1.19.0/mypy.ini ADDED
@@ -0,0 +1,12 @@
1
+ [mypy]
2
+
3
+ warn_unused_configs = True
4
+ warn_redundant_casts = True
5
+ warn_unused_ignores = True
6
+ no_implicit_reexport = True
7
+ disallow_subclassing_any = True
8
+ disallow_untyped_decorators = True
9
+
10
+ [mypy-test.*]
11
+ disallow_untyped_defs = True
12
+ disallow_untyped_calls = True