8000 Issue 483: Define method to get latest release · pythonthings/github3.py@ad594a4 · GitHub
[go: up one dir, main page]

Skip to content

Commit ad594a4

Browse files
committed
Issue 483: Define method to get latest release
1 parent 6fcfbd6 commit ad594a4

File tree

4 files changed

+30
-0
lines changed

4 files changed

+30
-0
lines changed

github3/repos/repo.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1668,6 +1668,17 @@ def release(self, id):
16681668
json = self._json(self._get(url), 200)
16691669
return self._instance_or_null(Release, json)
16701670

1671+
def release_latest(self):
1672+
"""Get the latest release.
1673+
1674+
Draft releases and prereleases are not returned by this endpoint.
1675+
1676+
:returns: :class:`Release <github3.repos.release.Release>`
1677+
"""
1678+
url = self._build_url('releases', 'latest', base_url=self._api)
1679+
json = self._json(self._get(url), 200)
1680+
return self._instance_or_null(Release, json)
1681+
16711682
def release_from_tag(self, tag_name):
16721683
"""Get a release by tag name.
16731684
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
{"http_interactions": [{"recorded_at": "2015-11-18T01:10:08", "request": {"method": "GET", "uri": "https://api.github.com/repos/sigmavirus24/github3.py", "body": {"string": "", "encoding": "utf-8"}, "headers": {"Connection": "keep-alive", "Accept-Charset": "utf-8", "User-Agent": "github3.py/1.0.0a2", "Accept": "application/vnd.github.v3.full+json", "Accept-Encoding": "gzip, deflate", "Content-Type": "application/json"}}, "response": {"status": {"code": 200, "message": "OK"}, "url": "https://api.github.com/repos/sigmavirus24/github3.py", "body": {"base64_string": "H4sIAAAAAAAAA62YTY+rNhSG/0rEtpk4JJOZFOnq3q7a7u5iuukmMuCANYCRbRJl0Pz3vrYhQKrmY9xNlBCfx6+PzzHnuA14GkTr13D5GobzoKIlC6Ig4zpv4vWiPgXzYN8Uxa77Q/GspAcuG7V6JpNR4lgxGURtUIiMV2CMh4Jiplk9L7fr5TygB6qp3DWywLhc61pFhLiHauGojWIyEZVmlV4koiQNccbfD9/WoGWyYxhsgAcXrJp3HGcMmCIXgnJdFhcS3NTW5GLwXhSFOIJyKfrWRORsaTxpKbzKvkiBZUuEzhl8hyV9GkdwpR8XZa1abKDSO54ajsKGSJY+LKyzgyyz/58tkawWFtjEKpG81lxUjwucWIMmZEYr/kG/RoO1AsRIe1yKtYI1OyAWHzd3Zi2pJT/Q5GRcI1nC+AHO/iLywh5EfapN2v6FoDCu55rtaFqaNNzTQrHPeWCn1xhkH8yRdfdG/zTNU3beVUz486RzUc0KHksqT7O9kDOOnJV7miBWZ0ccIzOE6+x3rv9o4tlvP/88mOzFuPezkquZa50/ScapHEO6sSdXEUhPACDpnZ28OMa+Jfjs8ilBqtNYSKrFrUPjusAJqCXjnyaWNKOll3ALACgXws+TFgAQV6phd4X29YVbjiJ9/lRNGbsj756suY52BGilCud8xZiXB8+QlvSnMtKhSnI/bM9oiftmd5tmXlKNPTBxIWIvDl6UxEJaonLq3kN656vOUA1jApVs7y3VMM5QLT3328o0kDMSL0GNrffS2TNI23m0oFXW0MyPeoZg182rOqMfN4uY67kzUIA0FZrkceN/yA0co9TVDsh3P5cOmAFqC5LrZc4NB4wKG+uCsuS36oLrxA4xCfv/AWvi9BJtft8uY27LNYyWDGeyO/Q7uo93u1O/1zmeo2sHvEKiZ5D2l5rq3JxcmKqmkvmI7hCkjSmKrcVi0eaM2rK6ZNIzgx0BKCqTHFWjj862Z6DqKam21freyExRvReCpl6+PUMAdNvoo9URxvtfow/1EmgBY2LJC6a0qPzO2IEyZldC8z1P7ulYrqfbBNR+V7xK2JwWxRxRq3nCEceotc0uouBkfh5yBCwD1wCuUykYQtrL65I5Rktcp5lIhkYk3VGNBmK1DFdPy/VTuH4Lf40222iz/hsraep0MmbzFIZP4eYtDKPlKnremjF1o/IRxg15fQtfok0YbVZmCE7ALgTxDVcM+MS1xr/6+1FLYW4NYKhUPhj+GMyi/7j/6MySArF0EfT3z3m4fC3dNoXUXJSsRpnQ3aScV7muTwt4OkX7lYpELdADE7My/oGhL6/b1aQgSERTYT+eV8/z4Eg1ale8escP+0Li3PSZqanauTQNIi0b01XiyXAMjB4e+Tsfek+MMpJVb+a6uG66cLPFucmlFN0NUYW0xQ1Azaputl7YBhdWrn+LrNFoSIAgGFbSLSxle9oUeufqaawkRSNQiBpLqZg+ohPsyRY3rkI6bauXz38AM6rsFjETAAA=", "string": "", "encoding": "utf-8"}, "headers": {"Server": "GitHub.com", "Content-Encoding": "gzip", "Strict-Transport-Security": "max-age=31536000; includeSubdomains; preload", "Last-Modified": "Sun, 15 Nov 2015 11:02:48 GMT", "Access-Control-Allow-Origin": "*", "X-GitHub-Media-Type": "github.v3; param=full; format=json", "X-Content-Type-Options": "nosniff", "Status": "200 OK", "X-RateLimit-Remaining": "59", "Date": "Wed, 18 Nov 2015 01:04:45 GMT", "ETag": "W/\"667ec47706d2c6c591b8b9201fd193b2\"", "Transfer-Encoding": "chunked", "Cache-Control": "public, max-age=60, s-maxage=60", "Vary": "Accept", "X-Served-By": "065b43cd9674091fec48a221b420fbb3", "X-Frame-Options": "deny", "Content-Security-Policy": "default-src 'none'", "X-GitHub-Request-Id": "C60D86B5:146C9:2265146D:564BCEAD", "Access-Control-Allow-Credentials": "true", "X-RateLimit-Reset": "1447812285", "X-RateLimit-Limit": "60", "Content-Type": "application/json; charset=utf-8", "X-XSS-Protection": "1; mode=block", "Access-Control-Expose-Headers": "ETag, Link, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval"}}}, {"recorded_at": "2015-11-18T01:10:09", "request": {"method": "GET", "uri": "https://api.github.com/repos/sigmavirus24/github3.py/releases/latest", "body": {"string": "", "encoding": "utf-8"}, "headers": {"Connection": "keep-alive", "Accept-Charset": "utf-8", "User-Agent": "github3.py/1.0.0a2", "Accept": "application/vnd.github.v3.full+json", "Accept-Encoding": "gzip, deflate", "Content-Type": "application/json"}}, "response": {"status": {"code": 200, "message": "OK"}, "url": "https://api.github.com/repos/sigmavirus24/github3.py/releases/latest", "body": {"base64_string": "H4sIAAAAAAAAA+2WwY7bIBCG34VzEmNsN4mlal+ivbSqLGxjm4oAApw0a+XdO2Anu/Gudpu0Ui97S2DmYzzM/MyAeiNQjjrntM2jiGq+arnr+nJVqV1kmFY2srzd0T03vSVpNO4mK32EXcGoZTZapwSvt2iBqLXM2eLfMaORCOheC0XrGXpctHeHPOGHB0l3bCFoycQJzurcTsxOepaUd9PhaBvh1XaVAIrXKB/Ts0CwXviDIN/nbUdNy1wBud5xx20HWxmhSZNghrOqSZOUbDK2Xmfb9bbBcRPTTZJlON3SNcBHmOyFWKDa0MahvKHCMriI3nXKoHxAQrVcAvZ51FNcJMWbBIPxnkIc81sLi+fU9paZSknHpAuF0Uej88P+s//K1kwM/7nI39ZbVeVh11V1U87BuFFCqANQ5kFfl+/Lg6KL54XCZXsnBTyHSLmOQe7gk3zltNy+V/+vBBW8Bmgt6wpee46F3Bs2L/dZd75CmvwgrIOEiIbQwQHYl7YyXDuu5O1Zu/IGmjItlfyR3kcDbwuQIC43pz54gTfbQy3e7j66DZE2fE+ro0+NYRXje0j2nciZPxDdUfsm/wpF4VPPHStovfNtGNrztEDasEk9Ly1bGUYdREGhixHBcbqM4yXOvmCSx1mekG+A0n0pQCXmVmTrrVKcE+ytJs3Mvw9v9+EfqvuIixKSfCIE8L7Hxz9nBYKy90+GfxSWQdmW+kjgT7KUSrIllcfVoRPgGhR2Uoig55CgD42aieGHRn1oFEjbf9eo6b0vJjWjWgteBcmPflolvbI5UCxo53EMY3UQu0dYiXG6yWIYSuAZCmNbpXoJuhbDtPGqzk0KluZZ4hWs1/VLLXyyybxNadQBBLa4nHE9c9wysJ0R49T2bMR9S81OP/xEZ0oq5rPiTUP0hLgMjI9c/y1yQlyQpaqPhZ9pUT7OimHBsV9wI08L4+/Tby2FAd8SDAAA", "string": "", "encoding": "utf-8"}, "headers": {"Server": "GitHub.com", "Content-Encoding": "gzip", "Strict-Transport-Security": "max-age=31536000; includeSubdomains; preload", "Last-Modified": "Sat, 29 Nov 2014 02:40:20 GMT", "Access-Control-Allow-Origin": "*", "X-GitHub-Media-Type": "github.v3; param=full; format=json", "X-Content-Type-Options": "nosniff", "Status": "200 OK", "X-RateLimit-Remaining": "58", "Date": "Wed, 18 Nov 2015 01:04:45 GMT", "ETag": "W/\"3d9bdcaa2ca10a6d31a7d076c19d4e25\"", "Transfer-Encoding": "chunked", "Cache-Control": "public, max-age=60, s-maxage=60", "Vary": "Accept", "X-Served-By": "bae57931a6fe678a3dffe9be8e7819c8", "X-Frame-Options": "deny", "Content-Security-Policy": "default-src 'none'", "X-GitHub-Request-Id": "C60D86B5:146C9:22651495:564BCEAD", "Access-Control-Allow-Credentials": "true", "X-RateLimit-Reset": "1447812285", "X-RateLimit-Limit": "60", "Content-Type": "application/json; charset=utf-8", "X-XSS-Protection": "1; mode=block", "Access-Control-Expose-Headers": "ETag, Link, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval"}}}], "recorded_with": "betamax/0.5.1"}

tests/integration/test_repos_repo.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -453,6 +453,16 @@ def test_release(self):
453453

454454
assert isinstance(release, github3.repos.release.Release)
455455

456+
def test_release_latest(self):
457+
"""Test the ability to retrieve the latest release."""
458+
cassette_name = self.cassette_name('release_latest')
459+
with self.recorder.use_cassette(cassette_name):
460+
repository = self.gh.repository('sigmavirus24', 'github3.py')
461+
assert repository is not None
462+
release = repository.release_latest()
463+
464+
assert isinstance(release, github3.repos.release.Release)
465+
456466
def test_release_from_tag(self):
457467
"""Test the ability to retrieve a release by tag name"""
458468
cassette_name = self.cassette_name('release_from_tag')

tests/unit/test_repos_repo.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -341,6 +341,14 @@ def test_pages(self):
341341

342342
self.session.get.assert_called_once_with(url_for('pages'))
343343

344+
def test_release_latest(self):
345+
"""Test the request for retrieving the latest release"""
346+
self.instance.release_latest()
347+
348+
self.session.get.assert_called_once_with(
349+
url_for('releases/latest')
350+
)
351+
344352
def test_release_from_tag(self):
345353
"""Test the request for retrieving release by tag name"""
346354
self.instance.release_from_tag('v1.0.0')

0 commit comments

Comments
 (0)
0