pygit2 1.15.1__tar.gz → 1.17.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.
- {pygit2-1.15.1 → pygit2-1.17.0}/AUTHORS.md +9 -1
- {pygit2-1.15.1 → pygit2-1.17.0}/CHANGELOG.md +43 -0
- pygit2-1.17.0/Makefile +7 -0
- {pygit2-1.15.1 → pygit2-1.17.0}/PKG-INFO +6 -7
- {pygit2-1.15.1 → pygit2-1.17.0}/README.md +1 -3
- {pygit2-1.15.1 → pygit2-1.17.0}/SPONSORS.md +3 -4
- {pygit2-1.15.1 → pygit2-1.17.0}/build.sh +4 -4
- {pygit2-1.15.1 → pygit2-1.17.0}/pygit2/__init__.py +1 -1
- {pygit2-1.15.1 → pygit2-1.17.0}/pygit2/_build.py +2 -2
- {pygit2-1.15.1 → pygit2-1.17.0}/pygit2/_pygit2.pyi +2 -2
- {pygit2-1.15.1 → pygit2-1.17.0}/pygit2/_run.py +1 -1
- {pygit2-1.15.1 → pygit2-1.17.0}/pygit2/blame.py +1 -1
- {pygit2-1.15.1 → pygit2-1.17.0}/pygit2/branches.py +1 -1
- {pygit2-1.15.1 → pygit2-1.17.0}/pygit2/callbacks.py +8 -7
- {pygit2-1.15.1 → pygit2-1.17.0}/pygit2/config.py +4 -7
- {pygit2-1.15.1 → pygit2-1.17.0}/pygit2/credentials.py +1 -1
- {pygit2-1.15.1 → pygit2-1.17.0}/pygit2/decl/blame.h +3 -0
- {pygit2-1.15.1 → pygit2-1.17.0}/pygit2/decl/callbacks.h +1 -1
- {pygit2-1.15.1 → pygit2-1.17.0}/pygit2/decl/config.h +0 -1
- {pygit2-1.15.1 → pygit2-1.17.0}/pygit2/decl/remote.h +1 -0
- {pygit2-1.15.1 → pygit2-1.17.0}/pygit2/decl/repository.h +1 -0
- {pygit2-1.15.1 → pygit2-1.17.0}/pygit2/decl/types.h +11 -0
- {pygit2-1.15.1 → pygit2-1.17.0}/pygit2/enums.py +7 -7
- {pygit2-1.15.1 → pygit2-1.17.0}/pygit2/errors.py +1 -1
- {pygit2-1.15.1 → pygit2-1.17.0}/pygit2/ffi.py +1 -1
- {pygit2-1.15.1 → pygit2-1.17.0}/pygit2/filter.py +1 -1
- {pygit2-1.15.1 → pygit2-1.17.0}/pygit2/index.py +3 -6
- {pygit2-1.15.1 → pygit2-1.17.0}/pygit2/legacyenums.py +1 -1
- {pygit2-1.15.1 → pygit2-1.17.0}/pygit2/packbuilder.py +1 -1
- pygit2-1.17.0/pygit2/py.typed +1 -0
- {pygit2-1.15.1 → pygit2-1.17.0}/pygit2/references.py +1 -1
- {pygit2-1.15.1 → pygit2-1.17.0}/pygit2/refspec.py +1 -1
- {pygit2-1.15.1 → pygit2-1.17.0}/pygit2/remotes.py +1 -1
- {pygit2-1.15.1 → pygit2-1.17.0}/pygit2/repository.py +54 -1
- {pygit2-1.15.1 → pygit2-1.17.0}/pygit2/settings.py +1 -1
- {pygit2-1.15.1 → pygit2-1.17.0}/pygit2/submodules.py +1 -1
- {pygit2-1.15.1 → pygit2-1.17.0}/pygit2/utils.py +3 -3
- {pygit2-1.15.1 → pygit2-1.17.0}/pyproject.toml +5 -4
- {pygit2-1.15.1 → pygit2-1.17.0}/setup.py +7 -6
- {pygit2-1.15.1 → pygit2-1.17.0}/src/blob.c +1 -1
- {pygit2-1.15.1 → pygit2-1.17.0}/src/branch.c +1 -1
- {pygit2-1.15.1 → pygit2-1.17.0}/src/branch.h +1 -1
- {pygit2-1.15.1 → pygit2-1.17.0}/src/commit.c +1 -1
- {pygit2-1.15.1 → pygit2-1.17.0}/src/diff.c +1 -1
- {pygit2-1.15.1 → pygit2-1.17.0}/src/diff.h +1 -1
- {pygit2-1.15.1 → pygit2-1.17.0}/src/error.c +1 -1
- {pygit2-1.15.1 → pygit2-1.17.0}/src/error.h +1 -1
- {pygit2-1.15.1 → pygit2-1.17.0}/src/filter.c +1 -1
- {pygit2-1.15.1 → pygit2-1.17.0}/src/filter.h +1 -1
- {pygit2-1.15.1 → pygit2-1.17.0}/src/mailmap.c +1 -1
- {pygit2-1.15.1 → pygit2-1.17.0}/src/mailmap.h +1 -1
- {pygit2-1.15.1 → pygit2-1.17.0}/src/note.c +1 -1
- {pygit2-1.15.1 → pygit2-1.17.0}/src/note.h +1 -1
- {pygit2-1.15.1 → pygit2-1.17.0}/src/object.c +1 -1
- {pygit2-1.15.1 → pygit2-1.17.0}/src/object.h +1 -1
- {pygit2-1.15.1 → pygit2-1.17.0}/src/odb.c +1 -1
- {pygit2-1.15.1 → pygit2-1.17.0}/src/odb.h +1 -1
- {pygit2-1.15.1 → pygit2-1.17.0}/src/odb_backend.c +1 -1
- {pygit2-1.15.1 → pygit2-1.17.0}/src/odb_backend.h +1 -1
- {pygit2-1.15.1 → pygit2-1.17.0}/src/oid.c +1 -1
- {pygit2-1.15.1 → pygit2-1.17.0}/src/oid.h +1 -1
- {pygit2-1.15.1 → pygit2-1.17.0}/src/options.c +27 -70
- {pygit2-1.15.1 → pygit2-1.17.0}/src/options.h +7 -1
- {pygit2-1.15.1 → pygit2-1.17.0}/src/patch.c +1 -1
- {pygit2-1.15.1 → pygit2-1.17.0}/src/patch.h +1 -1
- {pygit2-1.15.1 → pygit2-1.17.0}/src/pygit2.c +3 -1
- {pygit2-1.15.1 → pygit2-1.17.0}/src/refdb.c +1 -1
- {pygit2-1.15.1 → pygit2-1.17.0}/src/refdb.h +1 -1
- {pygit2-1.15.1 → pygit2-1.17.0}/src/refdb_backend.c +1 -1
- {pygit2-1.15.1 → pygit2-1.17.0}/src/refdb_backend.h +1 -1
- {pygit2-1.15.1 → pygit2-1.17.0}/src/reference.c +1 -1
- {pygit2-1.15.1 → pygit2-1.17.0}/src/reference.h +1 -1
- {pygit2-1.15.1 → pygit2-1.17.0}/src/repository.c +6 -4
- {pygit2-1.15.1 → pygit2-1.17.0}/src/repository.h +1 -1
- {pygit2-1.15.1 → pygit2-1.17.0}/src/revspec.c +1 -1
- {pygit2-1.15.1 → pygit2-1.17.0}/src/revspec.h +1 -1
- {pygit2-1.15.1 → pygit2-1.17.0}/src/signature.c +1 -1
- {pygit2-1.15.1 → pygit2-1.17.0}/src/signature.h +1 -1
- {pygit2-1.15.1 → pygit2-1.17.0}/src/stash.c +1 -1
- {pygit2-1.15.1 → pygit2-1.17.0}/src/tag.c +1 -1
- {pygit2-1.15.1 → pygit2-1.17.0}/src/tree.c +1 -1
- {pygit2-1.15.1 → pygit2-1.17.0}/src/tree.h +1 -1
- {pygit2-1.15.1 → pygit2-1.17.0}/src/treebuilder.c +1 -1
- {pygit2-1.15.1 → pygit2-1.17.0}/src/treebuilder.h +1 -1
- {pygit2-1.15.1 → pygit2-1.17.0}/src/types.h +3 -3
- {pygit2-1.15.1 → pygit2-1.17.0}/src/utils.c +1 -1
- {pygit2-1.15.1 → pygit2-1.17.0}/src/utils.h +1 -1
- {pygit2-1.15.1 → pygit2-1.17.0}/src/walker.c +1 -1
- {pygit2-1.15.1 → pygit2-1.17.0}/src/walker.h +1 -1
- {pygit2-1.15.1 → pygit2-1.17.0}/src/worktree.c +1 -1
- {pygit2-1.15.1 → pygit2-1.17.0}/src/worktree.h +1 -1
- {pygit2-1.15.1 → pygit2-1.17.0}/test/__init__.py +1 -1
- {pygit2-1.15.1 → pygit2-1.17.0}/test/test_apply_diff.py +1 -1
- {pygit2-1.15.1 → pygit2-1.17.0}/test/test_archive.py +1 -1
- {pygit2-1.15.1 → pygit2-1.17.0}/test/test_attributes.py +1 -1
- {pygit2-1.15.1 → pygit2-1.17.0}/test/test_blame.py +1 -1
- {pygit2-1.15.1 → pygit2-1.17.0}/test/test_blob.py +1 -1
- {pygit2-1.15.1 → pygit2-1.17.0}/test/test_branch.py +1 -1
- {pygit2-1.15.1 → pygit2-1.17.0}/test/test_branch_empty.py +1 -1
- {pygit2-1.15.1 → pygit2-1.17.0}/test/test_cherrypick.py +1 -1
- {pygit2-1.15.1 → pygit2-1.17.0}/test/test_commit.py +1 -1
- {pygit2-1.15.1 → pygit2-1.17.0}/test/test_commit_gpg.py +1 -1
- {pygit2-1.15.1 → pygit2-1.17.0}/test/test_commit_trailer.py +1 -1
- {pygit2-1.15.1 → pygit2-1.17.0}/test/test_config.py +1 -1
- {pygit2-1.15.1 → pygit2-1.17.0}/test/test_credentials.py +1 -1
- {pygit2-1.15.1 → pygit2-1.17.0}/test/test_describe.py +1 -1
- {pygit2-1.15.1 → pygit2-1.17.0}/test/test_diff.py +1 -1
- {pygit2-1.15.1 → pygit2-1.17.0}/test/test_diff_binary.py +1 -1
- {pygit2-1.15.1 → pygit2-1.17.0}/test/test_index.py +1 -1
- {pygit2-1.15.1 → pygit2-1.17.0}/test/test_mailmap.py +1 -1
- {pygit2-1.15.1 → pygit2-1.17.0}/test/test_merge.py +1 -1
- {pygit2-1.15.1 → pygit2-1.17.0}/test/test_note.py +1 -1
- {pygit2-1.15.1 → pygit2-1.17.0}/test/test_object.py +1 -1
- {pygit2-1.15.1 → pygit2-1.17.0}/test/test_odb.py +1 -1
- {pygit2-1.15.1 → pygit2-1.17.0}/test/test_odb_backend.py +1 -1
- {pygit2-1.15.1 → pygit2-1.17.0}/test/test_oid.py +1 -1
- {pygit2-1.15.1 → pygit2-1.17.0}/test/test_options.py +1 -1
- {pygit2-1.15.1 → pygit2-1.17.0}/test/test_packbuilder.py +1 -1
- {pygit2-1.15.1 → pygit2-1.17.0}/test/test_patch.py +1 -1
- {pygit2-1.15.1 → pygit2-1.17.0}/test/test_patch_encoding.py +1 -1
- {pygit2-1.15.1 → pygit2-1.17.0}/test/test_refdb_backend.py +1 -1
- {pygit2-1.15.1 → pygit2-1.17.0}/test/test_refs.py +1 -1
- {pygit2-1.15.1 → pygit2-1.17.0}/test/test_remote.py +31 -1
- {pygit2-1.15.1 → pygit2-1.17.0}/test/test_remote_prune.py +1 -1
- {pygit2-1.15.1 → pygit2-1.17.0}/test/test_remote_utf8.py +1 -1
- {pygit2-1.15.1 → pygit2-1.17.0}/test/test_repository.py +69 -1
- {pygit2-1.15.1 → pygit2-1.17.0}/test/test_repository_bare.py +1 -1
- {pygit2-1.15.1 → pygit2-1.17.0}/test/test_repository_custom.py +1 -1
- {pygit2-1.15.1 → pygit2-1.17.0}/test/test_repository_empty.py +1 -1
- {pygit2-1.15.1 → pygit2-1.17.0}/test/test_revparse.py +1 -1
- {pygit2-1.15.1 → pygit2-1.17.0}/test/test_revwalk.py +1 -1
- {pygit2-1.15.1 → pygit2-1.17.0}/test/test_signature.py +1 -1
- {pygit2-1.15.1 → pygit2-1.17.0}/test/test_status.py +1 -1
- {pygit2-1.15.1 → pygit2-1.17.0}/test/test_submodule.py +1 -1
- {pygit2-1.15.1 → pygit2-1.17.0}/test/test_tag.py +1 -1
- {pygit2-1.15.1 → pygit2-1.17.0}/test/test_tree.py +1 -1
- {pygit2-1.15.1 → pygit2-1.17.0}/test/test_treebuilder.py +1 -1
- {pygit2-1.15.1 → pygit2-1.17.0}/test/utils.py +1 -1
- pygit2-1.15.1/Makefile +0 -7
- {pygit2-1.15.1 → pygit2-1.17.0}/COPYING +0 -0
- {pygit2-1.15.1 → pygit2-1.17.0}/build_tag.py +0 -0
- {pygit2-1.15.1 → pygit2-1.17.0}/mypy-stubtest.ini +0 -0
- {pygit2-1.15.1 → pygit2-1.17.0}/pygit2/blob.py +0 -0
- {pygit2-1.15.1 → pygit2-1.17.0}/pygit2/decl/attr.h +0 -0
- {pygit2-1.15.1 → pygit2-1.17.0}/pygit2/decl/buffer.h +0 -0
- {pygit2-1.15.1 → pygit2-1.17.0}/pygit2/decl/checkout.h +0 -0
- {pygit2-1.15.1 → pygit2-1.17.0}/pygit2/decl/clone.h +0 -0
- {pygit2-1.15.1 → pygit2-1.17.0}/pygit2/decl/commit.h +0 -0
- {pygit2-1.15.1 → pygit2-1.17.0}/pygit2/decl/common.h +0 -0
- {pygit2-1.15.1 → pygit2-1.17.0}/pygit2/decl/describe.h +0 -0
- {pygit2-1.15.1 → pygit2-1.17.0}/pygit2/decl/diff.h +0 -0
- {pygit2-1.15.1 → pygit2-1.17.0}/pygit2/decl/errors.h +0 -0
- {pygit2-1.15.1 → pygit2-1.17.0}/pygit2/decl/graph.h +0 -0
- {pygit2-1.15.1 → pygit2-1.17.0}/pygit2/decl/index.h +0 -0
- {pygit2-1.15.1 → pygit2-1.17.0}/pygit2/decl/indexer.h +0 -0
- {pygit2-1.15.1 → pygit2-1.17.0}/pygit2/decl/merge.h +0 -0
- {pygit2-1.15.1 → pygit2-1.17.0}/pygit2/decl/net.h +0 -0
- {pygit2-1.15.1 → pygit2-1.17.0}/pygit2/decl/oid.h +0 -0
- {pygit2-1.15.1 → pygit2-1.17.0}/pygit2/decl/pack.h +0 -0
- {pygit2-1.15.1 → pygit2-1.17.0}/pygit2/decl/proxy.h +0 -0
- {pygit2-1.15.1 → pygit2-1.17.0}/pygit2/decl/refspec.h +0 -0
- {pygit2-1.15.1 → pygit2-1.17.0}/pygit2/decl/revert.h +0 -0
- {pygit2-1.15.1 → pygit2-1.17.0}/pygit2/decl/stash.h +0 -0
- {pygit2-1.15.1 → pygit2-1.17.0}/pygit2/decl/strarray.h +0 -0
- {pygit2-1.15.1 → pygit2-1.17.0}/pygit2/decl/submodule.h +0 -0
- {pygit2-1.15.1 → pygit2-1.17.0}/pygit2/decl/transport.h +0 -0
- {pygit2-1.15.1 → pygit2-1.17.0}/pytest.ini +0 -0
- {pygit2-1.15.1 → pygit2-1.17.0}/requirements-test.txt +0 -0
- {pygit2-1.15.1 → pygit2-1.17.0}/requirements.txt +0 -0
- {pygit2-1.15.1 → pygit2-1.17.0}/setup.cfg +0 -0
- {pygit2-1.15.1 → pygit2-1.17.0}/src/wildmatch.c +0 -0
- {pygit2-1.15.1 → pygit2-1.17.0}/src/wildmatch.h +0 -0
- {pygit2-1.15.1 → pygit2-1.17.0}/test/conftest.py +0 -0
- {pygit2-1.15.1 → pygit2-1.17.0}/test/data/barerepo.zip +0 -0
- {pygit2-1.15.1 → pygit2-1.17.0}/test/data/binaryfilerepo.zip +0 -0
- {pygit2-1.15.1 → pygit2-1.17.0}/test/data/blameflagsrepo.zip +0 -0
- {pygit2-1.15.1 → pygit2-1.17.0}/test/data/dirtyrepo.zip +0 -0
- {pygit2-1.15.1 → pygit2-1.17.0}/test/data/emptyrepo.zip +0 -0
- {pygit2-1.15.1 → pygit2-1.17.0}/test/data/encoding.zip +0 -0
- {pygit2-1.15.1 → pygit2-1.17.0}/test/data/gpgsigned.zip +0 -0
- {pygit2-1.15.1 → pygit2-1.17.0}/test/data/submodulerepo.zip +0 -0
- {pygit2-1.15.1 → pygit2-1.17.0}/test/data/testrepo.zip +0 -0
- {pygit2-1.15.1 → pygit2-1.17.0}/test/data/testrepoformerging.zip +0 -0
- {pygit2-1.15.1 → pygit2-1.17.0}/test/data/testrepopacked.zip +0 -0
- {pygit2-1.15.1 → pygit2-1.17.0}/test/data/trailerrepo.zip +0 -0
- {pygit2-1.15.1 → pygit2-1.17.0}/test/data/utf8branchrepo.zip +0 -0
- {pygit2-1.15.1 → pygit2-1.17.0}/test/keys/pygit2_empty +0 -0
- {pygit2-1.15.1 → pygit2-1.17.0}/test/keys/pygit2_empty.pub +0 -0
- {pygit2-1.15.1 → pygit2-1.17.0}/test/test_filter.py +0 -0
|
@@ -111,8 +111,10 @@ Authors:
|
|
|
111
111
|
Kaarel Kitsemets
|
|
112
112
|
Ken Dreyer
|
|
113
113
|
Kevin KIN-FOO
|
|
114
|
+
Kyle Gottfried
|
|
114
115
|
Marcel Waldvogel
|
|
115
116
|
Masud Rahman
|
|
117
|
+
Mathieu Parent
|
|
116
118
|
Michael Sondergaard
|
|
117
119
|
Natanael Arndt
|
|
118
120
|
Ondřej Nový
|
|
@@ -173,10 +175,12 @@ Authors:
|
|
|
173
175
|
Jasper Lievisse Adriaanse
|
|
174
176
|
Jimisola Laursen
|
|
175
177
|
Jiri Benc
|
|
178
|
+
Johann Miller
|
|
176
179
|
Jonathan Robson
|
|
177
180
|
Josh Bleecher Snyder
|
|
178
181
|
Julia Evans
|
|
179
182
|
Justin Clift
|
|
183
|
+
Kevin Valk
|
|
180
184
|
Konstantinos Smanis
|
|
181
185
|
Kyriakos Oikonomakos
|
|
182
186
|
Lance Eftink
|
|
@@ -184,16 +188,18 @@ Authors:
|
|
|
184
188
|
Lukas Berk
|
|
185
189
|
Martin von Zweigbergk
|
|
186
190
|
Mathieu Bridon
|
|
187
|
-
Mathieu Parent
|
|
188
191
|
Mathieu Pillard
|
|
189
192
|
Matthaus Woolard
|
|
193
|
+
Matěj Cepl
|
|
190
194
|
Maxwell G
|
|
191
195
|
Michał Górny
|
|
196
|
+
Na'aman Hirschfeld
|
|
192
197
|
Nicolás Sanguinetti
|
|
193
198
|
Nikita Kartashov
|
|
194
199
|
Nikolai Zujev
|
|
195
200
|
Nils Philippsen
|
|
196
201
|
Noah Fontes
|
|
202
|
+
Or Hayat
|
|
197
203
|
Óscar San José
|
|
198
204
|
Patrick Lühne
|
|
199
205
|
Paul Wagland
|
|
@@ -206,6 +212,7 @@ Authors:
|
|
|
206
212
|
Rodrigo Bistolfi
|
|
207
213
|
Ross Nicoll
|
|
208
214
|
Rui Abreu Ferreira
|
|
215
|
+
Rui Chen
|
|
209
216
|
Sandro Jäckel
|
|
210
217
|
Saul Pwanson
|
|
211
218
|
Shane Turner
|
|
@@ -215,6 +222,7 @@ Authors:
|
|
|
215
222
|
Steven Winfield
|
|
216
223
|
Tad Hardesty
|
|
217
224
|
Timo Röhling
|
|
225
|
+
Victor Florea
|
|
218
226
|
Vladimir Rutsky
|
|
219
227
|
Wim Jeantine-Glenn
|
|
220
228
|
Yu Jianjian
|
|
@@ -1,3 +1,46 @@
|
|
|
1
|
+
# 1.17.0 (2025-01-08)
|
|
2
|
+
|
|
3
|
+
- Upgrade to libgit2 1.9
|
|
4
|
+
|
|
5
|
+
- Add `certificate_check` callback to `Remote.ls_remotes(...)`
|
|
6
|
+
[#1326](https://github.com/libgit2/pygit2/pull/1326)
|
|
7
|
+
|
|
8
|
+
- Fix build with GCC 14
|
|
9
|
+
[#1324](https://github.com/libgit2/pygit2/pull/1324)
|
|
10
|
+
|
|
11
|
+
- Release wheels for PyPy
|
|
12
|
+
[#1336](https://github.com/libgit2/pygit2/pull/1336)
|
|
13
|
+
[#1339](https://github.com/libgit2/pygit2/pull/1339)
|
|
14
|
+
|
|
15
|
+
- CI: update tests for macOS to use OpenSSL 3
|
|
16
|
+
[#1335](https://github.com/libgit2/pygit2/pull/1335)
|
|
17
|
+
|
|
18
|
+
- Documentation: fix typo in `Repository.status(...)` docstring
|
|
19
|
+
[#1327](https://github.com/libgit2/pygit2/pull/1327)
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
# 1.16.0 (2024-10-11)
|
|
23
|
+
|
|
24
|
+
- Add support for Python 3.13
|
|
25
|
+
|
|
26
|
+
- Drop support for Python 3.9
|
|
27
|
+
|
|
28
|
+
- New `Repository.hashfile(...)`
|
|
29
|
+
[#1298](https://github.com/libgit2/pygit2/pull/1298)
|
|
30
|
+
|
|
31
|
+
- New `Option.GET_MWINDOW_FILE_LIMIT` and `Option.SET_MWINDOW_FILE_LIMIT`
|
|
32
|
+
[#1312](https://github.com/libgit2/pygit2/pull/1312)
|
|
33
|
+
|
|
34
|
+
- Fix overriding `certificate_check(...)` callback via argument to `RemoteCallbacks(...)`
|
|
35
|
+
[#1321](https://github.com/libgit2/pygit2/pull/1321)
|
|
36
|
+
|
|
37
|
+
- Add py.typed
|
|
38
|
+
[#1310](https://github.com/libgit2/pygit2/pull/1310)
|
|
39
|
+
|
|
40
|
+
- Fix `discover_repository(...)` annotation
|
|
41
|
+
[#1313](https://github.com/libgit2/pygit2/pull/1313)
|
|
42
|
+
|
|
43
|
+
|
|
1
44
|
# 1.15.1 (2024-07-07)
|
|
2
45
|
|
|
3
46
|
- New `Repository.revert(...)`
|
pygit2-1.17.0/Makefile
ADDED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: pygit2
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.17.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,23 +14,24 @@ 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.9
|
|
18
17
|
Classifier: Programming Language :: Python :: 3.10
|
|
19
18
|
Classifier: Programming Language :: Python :: 3.11
|
|
20
19
|
Classifier: Programming Language :: Python :: 3.12
|
|
20
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
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
26
|
Description-Content-Type: text/markdown
|
|
26
27
|
License-File: COPYING
|
|
27
28
|
License-File: AUTHORS.md
|
|
28
|
-
Requires-Dist: cffi>=1.
|
|
29
|
+
Requires-Dist: cffi>=1.17.0
|
|
29
30
|
|
|
30
31
|
# pygit2 - libgit2 bindings in Python
|
|
31
32
|
|
|
32
33
|
Bindings to the libgit2 shared library, implements Git plumbing.
|
|
33
|
-
Supports Python 3.
|
|
34
|
+
Supports Python 3.10 to 3.13 and PyPy3 7.3+
|
|
34
35
|
|
|
35
36
|
[](https://github.com/libgit2/pygit2/actions/workflows/tests.yml)
|
|
36
37
|
|
|
@@ -47,8 +48,6 @@ Supports Python 3.9 to 3.12 and PyPy3 7.3+
|
|
|
47
48
|
|
|
48
49
|
## Sponsors
|
|
49
50
|
|
|
50
|
-
- [Microsoft](https://github.com/microsoft)
|
|
51
|
-
|
|
52
51
|
Add your name and link here, [become a
|
|
53
52
|
sponsor](https://github.com/sponsors/jdavid).
|
|
54
53
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# pygit2 - libgit2 bindings in Python
|
|
2
2
|
|
|
3
3
|
Bindings to the libgit2 shared library, implements Git plumbing.
|
|
4
|
-
Supports Python 3.
|
|
4
|
+
Supports Python 3.10 to 3.13 and PyPy3 7.3+
|
|
5
5
|
|
|
6
6
|
[](https://github.com/libgit2/pygit2/actions/workflows/tests.yml)
|
|
7
7
|
|
|
@@ -18,8 +18,6 @@ Supports Python 3.9 to 3.12 and PyPy3 7.3+
|
|
|
18
18
|
|
|
19
19
|
## Sponsors
|
|
20
20
|
|
|
21
|
-
- [Microsoft](https://github.com/microsoft)
|
|
22
|
-
|
|
23
21
|
Add your name and link here, [become a
|
|
24
22
|
sponsor](https://github.com/sponsors/jdavid).
|
|
25
23
|
|
|
@@ -1,12 +1,11 @@
|
|
|
1
1
|
Friends of pygit2:
|
|
2
2
|
|
|
3
|
-
-
|
|
4
|
-
|
|
5
|
-
Add your name to the list,
|
|
6
|
-
[become a friend of pygit2](https://github.com/sponsors/jdavid).
|
|
3
|
+
- Add your name to the list,
|
|
4
|
+
[become a friend of pygit2](https://github.com/sponsors/jdavid).
|
|
7
5
|
|
|
8
6
|
Past sponsors:
|
|
9
7
|
|
|
8
|
+
- [Microsoft](https://github.com/microsoft)
|
|
10
9
|
- [Iterative](https://iterative.ai/)
|
|
11
10
|
- [SourceHut](https://sourcehut.org)
|
|
12
11
|
- [GitHub](https://github.com/github)
|
|
@@ -22,14 +22,14 @@
|
|
|
22
22
|
#
|
|
23
23
|
# sh build.sh
|
|
24
24
|
#
|
|
25
|
-
# Build libgit2 1.
|
|
25
|
+
# Build libgit2 1.9.0 (will use libssh2 if available), then build pygit2
|
|
26
26
|
# inplace:
|
|
27
27
|
#
|
|
28
|
-
# LIBGIT2_VERSION=1.
|
|
28
|
+
# LIBGIT2_VERSION=1.9.0 sh build.sh
|
|
29
29
|
#
|
|
30
|
-
# Build libssh2 1.11.
|
|
30
|
+
# Build libssh2 1.11.1 and libgit2 1.9.0, then build pygit2 inplace:
|
|
31
31
|
#
|
|
32
|
-
# LIBSSH2_VERSION=1.11.
|
|
32
|
+
# LIBSSH2_VERSION=1.11.1 LIBGIT2_VERSION=1.9.0 sh build.sh
|
|
33
33
|
#
|
|
34
34
|
# Build inplace and run the tests:
|
|
35
35
|
#
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# Copyright 2010-
|
|
1
|
+
# Copyright 2010-2025 The pygit2 contributors
|
|
2
2
|
#
|
|
3
3
|
# This file is free software; you can redistribute it and/or modify
|
|
4
4
|
# it under the terms of the GNU General Public License, version 2,
|
|
@@ -34,7 +34,7 @@ from pathlib import Path
|
|
|
34
34
|
#
|
|
35
35
|
# The version number of pygit2
|
|
36
36
|
#
|
|
37
|
-
__version__ = '1.
|
|
37
|
+
__version__ = '1.17.0'
|
|
38
38
|
|
|
39
39
|
|
|
40
40
|
#
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
from typing import Iterator, Literal, Optional, overload
|
|
2
2
|
from io import IOBase
|
|
3
|
-
from . import Index
|
|
3
|
+
from . import Index
|
|
4
4
|
from .enums import (
|
|
5
5
|
ApplyLocation,
|
|
6
6
|
BranchType,
|
|
@@ -558,7 +558,7 @@ class Worktree:
|
|
|
558
558
|
|
|
559
559
|
def discover_repository(
|
|
560
560
|
path: str, across_fs: bool = False, ceiling_dirs: str = ...
|
|
561
|
-
) -> str: ...
|
|
561
|
+
) -> str | None: ...
|
|
562
562
|
def hash(data: bytes) -> Oid: ...
|
|
563
563
|
def hashfile(path: str) -> Oid: ...
|
|
564
564
|
def init_file_backend(path: str, flags: int = 0) -> object: ...
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# Copyright 2010-
|
|
1
|
+
# Copyright 2010-2025 The pygit2 contributors
|
|
2
2
|
#
|
|
3
3
|
# This file is free software; you can redistribute it and/or modify
|
|
4
4
|
# it under the terms of the GNU General Public License, version 2,
|
|
@@ -113,12 +113,12 @@ class RemoteCallbacks(Payload):
|
|
|
113
113
|
RemoteCallbacks(certificate=certificate).
|
|
114
114
|
"""
|
|
115
115
|
|
|
116
|
-
def __init__(self, credentials=None,
|
|
116
|
+
def __init__(self, credentials=None, certificate_check=None):
|
|
117
117
|
super().__init__()
|
|
118
118
|
if credentials is not None:
|
|
119
119
|
self.credentials = credentials
|
|
120
|
-
if
|
|
121
|
-
self.
|
|
120
|
+
if certificate_check is not None:
|
|
121
|
+
self.certificate_check = certificate_check
|
|
122
122
|
|
|
123
123
|
def sideband_progress(self, string):
|
|
124
124
|
"""
|
|
@@ -344,7 +344,7 @@ def git_fetch_options(payload, opts=None):
|
|
|
344
344
|
opts.callbacks.transfer_progress = C._transfer_progress_cb
|
|
345
345
|
opts.callbacks.update_tips = C._update_tips_cb
|
|
346
346
|
opts.callbacks.credentials = C._credentials_cb
|
|
347
|
-
opts.callbacks.certificate_check = C.
|
|
347
|
+
opts.callbacks.certificate_check = C._certificate_check_cb
|
|
348
348
|
# Payload
|
|
349
349
|
handle = ffi.new_handle(payload)
|
|
350
350
|
opts.callbacks.payload = handle
|
|
@@ -368,7 +368,7 @@ def git_push_options(payload, opts=None):
|
|
|
368
368
|
opts.callbacks.transfer_progress = C._transfer_progress_cb
|
|
369
369
|
opts.callbacks.update_tips = C._update_tips_cb
|
|
370
370
|
opts.callbacks.credentials = C._credentials_cb
|
|
371
|
-
opts.callbacks.certificate_check = C.
|
|
371
|
+
opts.callbacks.certificate_check = C._certificate_check_cb
|
|
372
372
|
opts.callbacks.push_update_reference = C._push_update_reference_cb
|
|
373
373
|
# Payload
|
|
374
374
|
handle = ffi.new_handle(payload)
|
|
@@ -391,6 +391,7 @@ def git_remote_callbacks(payload):
|
|
|
391
391
|
# Plug callbacks
|
|
392
392
|
cdata.credentials = C._credentials_cb
|
|
393
393
|
cdata.update_tips = C._update_tips_cb
|
|
394
|
+
cdata.certificate_check = C._certificate_check_cb
|
|
394
395
|
# Payload
|
|
395
396
|
handle = ffi.new_handle(payload)
|
|
396
397
|
cdata.payload = handle
|
|
@@ -457,7 +458,7 @@ def libgit2_callback_void(f):
|
|
|
457
458
|
|
|
458
459
|
|
|
459
460
|
@libgit2_callback
|
|
460
|
-
def
|
|
461
|
+
def _certificate_check_cb(cert_i, valid, host, data):
|
|
461
462
|
# We want to simulate what should happen if libgit2 supported pass-through
|
|
462
463
|
# for this callback. For SSH, 'valid' is always False, because it doesn't
|
|
463
464
|
# look at known_hosts, but we do want to let it through in order to do what
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# Copyright 2010-
|
|
1
|
+
# Copyright 2010-2025 The pygit2 contributors
|
|
2
2
|
#
|
|
3
3
|
# This file is free software; you can redistribute it and/or modify
|
|
4
4
|
# it under the terms of the GNU General Public License, version 2,
|
|
@@ -52,6 +52,9 @@ class ConfigIterator:
|
|
|
52
52
|
def __iter__(self):
|
|
53
53
|
return self
|
|
54
54
|
|
|
55
|
+
def __next__(self):
|
|
56
|
+
return self._next_entry()
|
|
57
|
+
|
|
55
58
|
def _next_entry(self):
|
|
56
59
|
centry = ffi.new('git_config_entry **')
|
|
57
60
|
err = C.git_config_next(centry, self._iter)
|
|
@@ -59,12 +62,6 @@ class ConfigIterator:
|
|
|
59
62
|
|
|
60
63
|
return ConfigEntry._from_c(centry[0], self)
|
|
61
64
|
|
|
62
|
-
def next(self):
|
|
63
|
-
return self.__next__()
|
|
64
|
-
|
|
65
|
-
def __next__(self):
|
|
66
|
-
return self._next_entry()
|
|
67
|
-
|
|
68
65
|
|
|
69
66
|
class ConfigMultivarIterator(ConfigIterator):
|
|
70
67
|
def __next__(self):
|
|
@@ -18,12 +18,15 @@ typedef struct git_blame_hunk {
|
|
|
18
18
|
git_oid final_commit_id;
|
|
19
19
|
size_t final_start_line_number;
|
|
20
20
|
git_signature *final_signature;
|
|
21
|
+
git_signature *final_committer;
|
|
21
22
|
|
|
22
23
|
git_oid orig_commit_id;
|
|
23
24
|
const char *orig_path;
|
|
24
25
|
size_t orig_start_line_number;
|
|
25
26
|
git_signature *orig_signature;
|
|
27
|
+
git_signature *orig_committer;
|
|
26
28
|
|
|
29
|
+
const char *summary;
|
|
27
30
|
char boundary;
|
|
28
31
|
} git_blame_hunk;
|
|
29
32
|
|
|
@@ -83,6 +83,7 @@ int git_repository_set_head_detached(
|
|
|
83
83
|
git_repository* repo,
|
|
84
84
|
const git_oid* commitish);
|
|
85
85
|
|
|
86
|
+
int git_repository_hashfile(git_oid *out, git_repository *repo, const char *path, git_object_t type, const char *as_path);
|
|
86
87
|
int git_repository_ident(const char **name, const char **email, const git_repository *repo);
|
|
87
88
|
int git_repository_set_ident(git_repository *repo, const char *name, const char *email);
|
|
88
89
|
int git_repository_index(git_index **out, git_repository *repo);
|
|
@@ -57,3 +57,14 @@ typedef enum {
|
|
|
57
57
|
GIT_SUBMODULE_IGNORE_DIRTY = 3,
|
|
58
58
|
GIT_SUBMODULE_IGNORE_ALL = 4,
|
|
59
59
|
} git_submodule_ignore_t;
|
|
60
|
+
|
|
61
|
+
typedef enum {
|
|
62
|
+
GIT_OBJECT_ANY = ...,
|
|
63
|
+
GIT_OBJECT_INVALID = ...,
|
|
64
|
+
GIT_OBJECT_COMMIT = ...,
|
|
65
|
+
GIT_OBJECT_TREE = ...,
|
|
66
|
+
GIT_OBJECT_BLOB = ...,
|
|
67
|
+
GIT_OBJECT_TAG = ...,
|
|
68
|
+
GIT_OBJECT_OFS_DELTA = ...,
|
|
69
|
+
GIT_OBJECT_REF_DELTA = ...,
|
|
70
|
+
} git_object_t;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# Copyright 2010-
|
|
1
|
+
# Copyright 2010-2025 The pygit2 contributors
|
|
2
2
|
#
|
|
3
3
|
# This file is free software; you can redistribute it and/or modify
|
|
4
4
|
# it under the terms of the GNU General Public License, version 2,
|
|
@@ -65,16 +65,16 @@ class BlameFlag(IntFlag):
|
|
|
65
65
|
'Normal blame, the default'
|
|
66
66
|
|
|
67
67
|
TRACK_COPIES_SAME_FILE = _pygit2.GIT_BLAME_TRACK_COPIES_SAME_FILE
|
|
68
|
-
'Not yet implemented and reserved for future use (as of libgit2 1.
|
|
68
|
+
'Not yet implemented and reserved for future use (as of libgit2 1.9.0).'
|
|
69
69
|
|
|
70
70
|
TRACK_COPIES_SAME_COMMIT_MOVES = _pygit2.GIT_BLAME_TRACK_COPIES_SAME_COMMIT_MOVES
|
|
71
|
-
'Not yet implemented and reserved for future use (as of libgit2 1.
|
|
71
|
+
'Not yet implemented and reserved for future use (as of libgit2 1.9.0).'
|
|
72
72
|
|
|
73
73
|
TRACK_COPIES_SAME_COMMIT_COPIES = _pygit2.GIT_BLAME_TRACK_COPIES_SAME_COMMIT_COPIES
|
|
74
|
-
'Not yet implemented and reserved for future use (as of libgit2 1.
|
|
74
|
+
'Not yet implemented and reserved for future use (as of libgit2 1.9.0).'
|
|
75
75
|
|
|
76
76
|
TRACK_COPIES_ANY_COMMIT_COPIES = _pygit2.GIT_BLAME_TRACK_COPIES_ANY_COMMIT_COPIES
|
|
77
|
-
'Not yet implemented and reserved for future use (as of libgit2 1.
|
|
77
|
+
'Not yet implemented and reserved for future use (as of libgit2 1.9.0).'
|
|
78
78
|
|
|
79
79
|
FIRST_PARENT = _pygit2.GIT_BLAME_FIRST_PARENT
|
|
80
80
|
'Restrict the search of commits to those reachable following only the first parents.'
|
|
@@ -979,8 +979,8 @@ class Option(IntEnum):
|
|
|
979
979
|
SET_PACK_MAX_OBJECTS = _pygit2.GIT_OPT_SET_PACK_MAX_OBJECTS
|
|
980
980
|
DISABLE_PACK_KEEP_FILE_CHECKS = _pygit2.GIT_OPT_DISABLE_PACK_KEEP_FILE_CHECKS
|
|
981
981
|
# ENABLE_HTTP_EXPECT_CONTINUE = _pygit2.GIT_OPT_ENABLE_HTTP_EXPECT_CONTINUE
|
|
982
|
-
|
|
983
|
-
|
|
982
|
+
GET_MWINDOW_FILE_LIMIT = _pygit2.GIT_OPT_GET_MWINDOW_FILE_LIMIT
|
|
983
|
+
SET_MWINDOW_FILE_LIMIT = _pygit2.GIT_OPT_SET_MWINDOW_FILE_LIMIT
|
|
984
984
|
# SET_ODB_PACKED_PRIORITY = _pygit2.GIT_OPT_SET_ODB_PACKED_PRIORITY
|
|
985
985
|
# SET_ODB_LOOSE_PRIORITY = _pygit2.GIT_OPT_SET_ODB_LOOSE_PRIORITY
|
|
986
986
|
# GET_EXTENSIONS = _pygit2.GIT_OPT_GET_EXTENSIONS
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# Copyright 2010-
|
|
1
|
+
# Copyright 2010-2025 The pygit2 contributors
|
|
2
2
|
#
|
|
3
3
|
# This file is free software; you can redistribute it and/or modify
|
|
4
4
|
# it under the terms of the GNU General Public License, version 2,
|
|
@@ -467,8 +467,8 @@ class ConflictIterator:
|
|
|
467
467
|
def __del__(self):
|
|
468
468
|
C.git_index_conflict_iterator_free(self._iter)
|
|
469
469
|
|
|
470
|
-
def
|
|
471
|
-
return self
|
|
470
|
+
def __iter__(self):
|
|
471
|
+
return self
|
|
472
472
|
|
|
473
473
|
def __next__(self):
|
|
474
474
|
cancestor = ffi.new('git_index_entry **')
|
|
@@ -486,6 +486,3 @@ class ConflictIterator:
|
|
|
486
486
|
theirs = IndexEntry._from_c(ctheirs[0])
|
|
487
487
|
|
|
488
488
|
return ancestor, ours, theirs
|
|
489
|
-
|
|
490
|
-
def __iter__(self):
|
|
491
|
-
return self
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
# python type marker, see: https://peps.python.org/pep-0561/
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# Copyright 2010-
|
|
1
|
+
# Copyright 2010-2025 The pygit2 contributors
|
|
2
2
|
#
|
|
3
3
|
# This file is free software; you can redistribute it and/or modify
|
|
4
4
|
# it under the terms of the GNU General Public License, version 2,
|
|
@@ -51,6 +51,7 @@ from .enums import (
|
|
|
51
51
|
MergeFavor,
|
|
52
52
|
MergeFileFlag,
|
|
53
53
|
MergeFlag,
|
|
54
|
+
ObjectType,
|
|
54
55
|
RepositoryOpenFlag,
|
|
55
56
|
RepositoryState,
|
|
56
57
|
)
|
|
@@ -129,6 +130,58 @@ class BaseRepository(_Repository):
|
|
|
129
130
|
|
|
130
131
|
return builder.written_objects_count
|
|
131
132
|
|
|
133
|
+
def hashfile(
|
|
134
|
+
self,
|
|
135
|
+
path: str,
|
|
136
|
+
object_type: ObjectType = ObjectType.BLOB,
|
|
137
|
+
as_path: typing.Optional[str] = None,
|
|
138
|
+
):
|
|
139
|
+
"""Calculate the hash of a file using repository filtering rules.
|
|
140
|
+
|
|
141
|
+
If you simply want to calculate the hash of a file on disk with no filters,
|
|
142
|
+
you can just use `pygit2.hashfile()`. However, if you want to hash a file
|
|
143
|
+
in the repository and you want to apply filtering rules (e.g. crlf filters)
|
|
144
|
+
before generating the SHA, then use this function.
|
|
145
|
+
|
|
146
|
+
Note: if the repository has `core.safecrlf` set to fail and the filtering
|
|
147
|
+
triggers that failure, then this function will raise an error and not
|
|
148
|
+
calculate the hash of the file.
|
|
149
|
+
|
|
150
|
+
Returns: Output value of calculated SHA (Oid)
|
|
151
|
+
|
|
152
|
+
Parameters:
|
|
153
|
+
|
|
154
|
+
path
|
|
155
|
+
Path to file on disk whose contents should be hashed. This may be
|
|
156
|
+
an absolute path or a relative path, in which case it will be treated
|
|
157
|
+
as a path within the working directory.
|
|
158
|
+
|
|
159
|
+
object_type
|
|
160
|
+
The object type to hash (e.g. enums.ObjectType.BLOB)
|
|
161
|
+
|
|
162
|
+
as_path
|
|
163
|
+
The path to use to look up filtering rules. If this is an empty string
|
|
164
|
+
then no filters will be applied when calculating the hash.
|
|
165
|
+
If this is `None` and the `path` parameter is a file within the
|
|
166
|
+
repository's working directory, then the `path` will be used.
|
|
167
|
+
"""
|
|
168
|
+
c_path = to_bytes(path)
|
|
169
|
+
|
|
170
|
+
if as_path is None:
|
|
171
|
+
c_as_path = ffi.NULL
|
|
172
|
+
else:
|
|
173
|
+
c_as_path = to_bytes(as_path)
|
|
174
|
+
|
|
175
|
+
c_oid = ffi.new('git_oid *')
|
|
176
|
+
|
|
177
|
+
err = C.git_repository_hashfile(
|
|
178
|
+
c_oid, self._repo, c_path, int(object_type), c_as_path
|
|
179
|
+
)
|
|
180
|
+
check_error(err)
|
|
181
|
+
|
|
182
|
+
oid = Oid(raw=bytes(ffi.buffer(c_oid.id)[:]))
|
|
183
|
+
return oid
|
|
184
|
+
|
|
132
185
|
def __iter__(self):
|
|
133
186
|
return iter(self.odb)
|
|
134
187
|
|