Skip to content

Commit f6ab6c2

Browse files
committed
Merge branch 'main' into release/4.0
2 parents f87cdb4 + 134b68c commit f6ab6c2

File tree

6 files changed

+77
-17
lines changed

6 files changed

+77
-17
lines changed

AUTHORS.rst

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ Maintainer(s)
1212

1313
- Matt Chung (@itsmemattchung)
1414

15-
- Thiago A. (@staticdev)
15+
- Thiago (@staticdev)
1616

1717
Requests
1818
````````
@@ -218,3 +218,5 @@ Contributors
218218
- Petter Kvalvaag (@pettermk)
219219

220220
- Peter Küffner (@kuepe-sl)
221+
222+
- Andrew MacCormack (@amaccormack-lumira)

docs/source/release-notes/4.0.0.rst

Lines changed: 15 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,12 @@
1-
4.0.0: 2023-04-16
1+
4.0.0: 2023-04-17
22
-----------------
33

4+
Backwards Incompatible Changes
5+
``````````````````````````````
6+
7+
- repo.compare_commits doesn't use pagination (@amaccormack-lumira).
8+
See also gh-1137_
9+
410
Features Added
511
``````````````
612

@@ -14,15 +20,15 @@ Removal
1420

1521
- Remove support to EOL Python 3.6 (@staticdev). See also gh-1103_
1622

17-
Dependency Change
18-
`````````````````
19-
20-
- Bump the dev-requirements.txt (@offbyone). See also gh-1136_
21-
2223
Bug Fixes
2324
`````````
2425

25-
- Missing set permission for collaborators. See also gh-954_
26+
- Missing set permission for collaborators (@NargiT). See also gh-954_
27+
28+
Misc
29+
````
30+
31+
- Bump the dev-requirements.txt (@offbyone). See also gh-1136_
2632

2733
.. _gh-954:
2834
https://github.com/sigmavirus24/github3.py/issues/954
@@ -38,3 +44,5 @@ Bug Fixes
3844
https://github.com/sigmavirus24/github3.py/issues/1121
3945
.. _gh-1136:
4046
https://github.com/sigmavirus24/github3.py/pull/1136
47+
.. _gh-1137:
48+
https://github.com/sigmavirus24/github3.py/issues/1137

src/github3/repos/comparison.py

Lines changed: 33 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -24,10 +24,16 @@ class Comparison(models.GitHubCore):
2424
2525
The number of commits the head commit is behind the base.
2626
27-
.. attribute:: commits
27+
.. attribute:: original_commits
28+
29+
.. versionchanged:: 4.0.0
30+
2831
2932
A list of :class:`~github3.repos.commit.ShortCommit` objects
30-
representing the commits in the comparison.
33+
representing up to the first 250 commits in the comparison.
34+
35+
If a comparison has more than 250 commits, use the commits function
36+
to iterate over all available commits.
3137
3238
.. attribute:: diff_url
3339
@@ -64,19 +70,17 @@ def _update_attributes(self, compare):
6470
self.ahead_by = compare["ahead_by"]
6571
self.base_commit = commit.ShortCommit(compare["base_commit"], self)
6672
self.behind_by = compare["behind_by"]
67-
self.commits = compare["commits"]
68-
if self.commits:
69-
self.commits = [
70-
commit.ShortCommit(com, self) for com in self.commits
71-
]
73+
self.total_commits = compare["total_commits"]
74+
self.original_commits = [
75+
commit.ShortCommit(com, self) for com in compare["commits"]
76+
]
7277
self.diff_url = compare["diff_url"]
7378
self.files = compare["files"]
7479
self.html_url = compare["html_url"]
7580
self.patch_url = compare["patch_url"]
7681
self.permalink_url = compare["permalink_url"]
7782
self.status = compare["status"]
78-
self.total_commits = compare["total_commits"]
79-
self._uniq = self.commits
83+
self._uniq = self.original_commits
8084

8185
def _repr(self):
8286
return f"<Comparison of {self.total_commits} commits>"
@@ -106,3 +110,23 @@ def patch(self):
106110
self._api, headers={"Accept": "application/vnd.github.patch"}
107111
)
108112
return resp.content if self._boolean(resp, 200, 404) else b""
113+
114+
def commits(self, number=-1, etag=None):
115+
"""Iterate over the commits available for this comparison.
116+
117+
:param int number:
118+
(optional), Number of assets to return
119+
:param str etag:
120+
(optional), last ETag header sent
121+
:returns:
122+
generator of asset objects
123+
:rtype:
124+
:class:`~github3.repos.commit.ShortCommit`
125+
"""
126+
return self._iter(
127+
number,
128+
self._api,
129+
commit.ShortCommit,
130+
list_key="commits",
131+
etag=etag,
132+
)
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
{"http_interactions": [{"request": {"body": {"encoding": "utf-8", "string": ""}, "headers": {"User-Agent": ["github3.py/3.2.0"], "Accept-Encoding": ["gzip, deflate"], "Accept": ["application/vnd.github.v3.full+json"], "Connection": ["keep-alive"], "Accept-Charset": ["utf-8"], "Content-Type": ["application/json"]}, "method": "GET", "uri": "https://api.github.com/repos/sigmavirus24/github3.py"}, "response": {"body": {"encoding": "utf-8", "base64_string": "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", "string": ""}, "headers": {"Server": ["GitHub.com"], "Date": ["Fri, 14 Apr 2023 07:51:23 GMT"], "Content-Type": ["application/json; charset=utf-8"], "Cache-Control": ["public, max-age=60, s-maxage=60"], "Vary": ["Accept, Accept-Encoding, Accept, X-Requested-With"], "ETag": ["W/\"e7f859eeb6415cc98b087323f581a81f1367975559e620cd614130eaf4620b5c\""], "Last-Modified": ["Fri, 07 Apr 2023 08:35:54 GMT"], "X-GitHub-Media-Type": ["github.v3; param=full; format=json"], "x-github-api-version-selected": ["2022-11-28"], "Access-Control-Expose-Headers": ["ETag, Link, Location, Retry-After, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Used, X-RateLimit-Resource, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval, X-GitHub-Media-Type, X-GitHub-SSO, X-GitHub-Request-Id, Deprecation, Sunset"], "Access-Control-Allow-Origin": ["*"], "Strict-Transport-Security": ["max-age=31536000; includeSubdomains; preload"], "X-Frame-Options": ["deny"], "X-Content-Type-Options": ["nosniff"], "X-XSS-Protection": ["0"], "Referrer-Policy": ["origin-when-cross-origin, strict-origin-when-cross-origin"], "Content-Security-Policy": ["default-src 'none'"], "Content-Encoding": ["gzip"], "X-RateLimit-Limit": ["60"], "X-RateLimit-Remaining": ["59"], "X-RateLimit-Reset": ["1681462283"], "X-RateLimit-Resource": ["core"], "X-RateLimit-Used": ["1"], "Accept-Ranges": ["bytes"], "Content-Length": ["1500"], "X-GitHub-Request-Id": ["F1C9:F162:672DCE9:683978F:643905FB"]}, "status": {"code": 200, "message": "OK"}, "url": "https://api.github.com/repos/sigmavirus24/github3.py"}, "recorded_at": "2023-04-14T07:51:23"}, {"request": {"body": {"encoding": "utf-8", "string": ""}, "headers": {"User-Agent": ["github3.py/3.2.0"], "Accept-Encoding": ["gzip, deflate"], "Accept": ["application/vnd.github.v3.full+json"], "Connection": ["keep-alive"], "Accept-Charset": ["utf-8"], "Content-Type": ["application/json"]}, "method": "GET", "uri": "https://api.github.com/repos/sigmavirus24/github3.py/compare/a811e1a270f65eecb65755eca38d888cbefcb0a7...76dcc6cb4b9860034be81b7e58adc286a115aa97"}, "response": {"body": {"encoding": "utf-8", "base64_string": "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", "string": ""}, "headers": {"Server": ["GitHub.com"], "Date": ["Fri, 14 Apr 2023 07:51:24 GMT"], "Content-Type": ["application/json; charset=utf-8"], "Cache-Control": ["public, max-age=60, s-maxage=60"], "Vary": ["Accept, Accept-Encoding, Accept, X-Requested-With"], "ETag": ["W/\"673d766978b8249a24d20e6c78eb657330ccc84e09234d6d1a284935fcb3e0b6\""], "Last-Modified": ["Mon, 03 Dec 2012 01:14:19 GMT"], "X-GitHub-Media-Type": ["github.v3; param=full; format=json"], "x-github-api-version-selected": ["2022-11-28"], "Access-Control-Expose-Headers": ["ETag, Link, Location, Retry-After, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Used, X-RateLimit-Resource, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval, X-GitHub-Media-Type, X-GitHub-SSO, X-GitHub-Request-Id, Deprecation, Sunset"], "Access-Control-Allow-Origin": ["*"], "Strict-Transport-Security": ["max-age=31536000; includeSubdomains; preload"], "X-Frame-Options": ["deny"], "X-Content-Type-Options": ["nosniff"], "X-XSS-Protection": ["0"], "Referrer-Policy": ["origin-when-cross-origin, strict-origin-when-cross-origin"], "Content-Security-Policy": ["default-src 'none'"], "Content-Encoding": ["gzip"], "X-RateLimit-Limit": ["60"], "X-RateLimit-Remaining": ["58"], "X-RateLimit-Reset": ["1681462284"], "X-RateLimit-Resource": ["core"], "X-RateLimit-Used": ["2"], "Accept-Ranges": ["bytes"], "Content-Length": ["2184"], "X-GitHub-Request-Id": ["F1C9:F162:672DDAA:683986F:643905FC"]}, "status": {"code": 200, "message": "OK"}, "url": "https://api.github.com/repos/sigmavirus24/github3.py/compare/a811e1a270f65eecb65755eca38d888cbefcb0a7...76dcc6cb4b9860034be81b7e58adc286a115aa97"}, "recorded_at": "2023-04-14T07:51:24"}, {"request": {"body": {"encoding": "utf-8", "string": ""}, "headers": {"User-Agent": ["github3.py/3.2.0"], "Accept-Encoding": ["gzip, deflate"], "Accept": ["application/vnd.github.v3.full+json"], "Connection": ["keep-alive"], "Accept-Charset": ["utf-8"], "Content-Type": ["application/json"]}, "method": "GET", "uri": "https://api.github.com/repos/sigmavirus24/github3.py/compare/a811e1a270f65eecb65755eca38d888cbefcb0a7...76dcc6cb4b9860034be81b7e58adc286a115aa97?per_page=100"}, "response": {"body": {"encoding": "utf-8", "base64_string": "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", "string": ""}, "headers": {"Server": ["GitHub.com"], "Date": ["Fri, 14 Apr 2023 07:51:24 GMT"], "Content-Type": ["application/json; charset=utf-8"], "Cache-Control": ["public, max-age=60, s-maxage=60"], "Vary": ["Accept, Accept-Encoding, Accept, X-Requested-With"], "ETag": ["W/\"673d766978b8249a24d20e6c78eb657330ccc84e09234d6d1a284935fcb3e0b6\""], "Last-Modified": ["Mon, 03 Dec 2012 01:14:19 GMT"], "X-GitHub-Media-Type": ["github.v3; param=full; format=json"], "Link": ["<https://api.github.com/repositories/3710711/compare/a811e1a270f65eecb65755eca38d888cbefcb0a7...76dcc6cb4b9860034be81b7e58adc286a115aa97?per_page=100&page=1>; rel=\"first\""], "x-github-api-version-selected": ["2022-11-28"], "Access-Control-Expose-Headers": ["ETag, Link, Location, Retry-After, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Used, X-RateLimit-Resource, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval, X-GitHub-Media-Type, X-GitHub-SSO, X-GitHub-Request-Id, Deprecation, Sunset"], "Access-Control-Allow-Origin": ["*"], "Strict-Transport-Security": ["max-age=31536000; includeSubdomains; preload"], "X-Frame-Options": ["deny"], "X-Content-Type-Options": ["nosniff"], "X-XSS-Protection": ["0"], "Referrer-Policy": ["origin-when-cross-origin, strict-origin-when-cross-origin"], "Content-Security-Policy": ["default-src 'none'"], "Content-Encoding": ["gzip"], "X-RateLimit-Limit": ["60"], "X-RateLimit-Remaining": ["57"], "X-RateLimit-Reset": ["1681462283"], "X-RateLimit-Resource": ["core"], "X-RateLimit-Used": ["3"], "Accept-Ranges": ["bytes"], "Content-Length": ["2184"], "X-GitHub-Request-Id": ["F1C9:F162:672DF0A:68399C0:643905FC"]}, "status": {"code": 200, "message": "OK"}, "url": "https://api.github.com/repos/sigmavirus24/github3.py/compare/a811e1a270f65eecb65755eca38d888cbefcb0a7...76dcc6cb4b9860034be81b7e58adc286a115aa97?per_page=100"}, "recorded_at": "2023-04-14T07:51:24"}], "recorded_with": "betamax/0.8.1"}

tests/cassettes/Repository_compare_commits_large.json

Lines changed: 1 addition & 0 deletions
Large diffs are not rendered by default.

tests/integration/test_repos_repo.py

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -165,6 +165,30 @@ def test_compare_commits(self):
165165
comparison = repository.compare_commits(base, head)
166166
assert isinstance(comparison, github3.repos.comparison.Comparison)
167167

168+
def test_compare_commits_consistency(self):
169+
"""Test that Comparison commits matches original_commits"""
170+
cassette_name = self.cassette_name("compare_commits_consistency")
171+
with self.recorder.use_cassette(cassette_name):
172+
repository = self.gh.repository("sigmavirus24", "github3.py")
173+
base = "a811e1a270f65eecb65755eca38d888cbefcb0a7"
174+
head = "76dcc6cb4b9860034be81b7e58adc286a115aa97"
175+
comparison = repository.compare_commits(base, head)
176+
self.assertListEqual(
177+
list(comparison.commits()), comparison.original_commits
178+
)
179+
180+
def test_compare_commits_large(self):
181+
"""Test the ability to compare two commits with many changes."""
182+
cassette_name = self.cassette_name("compare_commits_large")
183+
with self.recorder.use_cassette(cassette_name):
184+
repository = self.gh.repository("sigmavirus24", "github3.py")
185+
base = "1.0.0"
186+
head = "3.2.0"
187+
comparison = repository.compare_commits(base, head)
188+
assert isinstance(comparison, github3.repos.comparison.Comparison)
189+
iter_count = sum(1 for _ in comparison.commits())
190+
assert comparison.total_commits == iter_count
191+
168192
def test_contributor_statistics(self):
169193
"""Test the ability to retrieve contributor statistics for a repo."""
170194
cassette_name = self.cassette_name("contributor_statistics")

0 commit comments

Comments
 (0)