|
28 | 28 | from .contents import Contents, validate_commmitter |
29 | 29 | from .deployment import Deployment |
30 | 30 | from .hook import Hook |
| 31 | +from ..licenses import License |
31 | 32 | from .pages import PagesBuild, PagesInfo |
32 | 33 | from .status import Status |
33 | 34 | from .stats import ContributorStats |
@@ -395,21 +396,26 @@ def branch(self, name): |
395 | 396 | json = None |
396 | 397 | if name: |
397 | 398 | url = self._build_url('branches', name, base_url=self._api) |
398 | | - json = self._json(self._get(url), 200) |
| 399 | + json = self._json(self._get(url, headers=Branch.PREVIEW_HEADERS), |
| 400 | + 200) |
399 | 401 | return self._instance_or_null(Branch, json) |
400 | 402 |
|
401 | | - def branches(self, number=-1, etag=None): |
| 403 | + def branches(self, number=-1, protected=False, etag=None): |
402 | 404 | r"""Iterate over the branches in this repository. |
403 | 405 |
|
404 | 406 | :param int number: (optional), number of branches to return. Default: |
405 | 407 | -1 returns all branches |
| 408 | + :param bool protected: (optional), True lists only protected branches. |
| 409 | + Default: False |
406 | 410 | :param str etag: (optional), ETag from a previous request to the same |
407 | 411 | endpoint |
408 | 412 | :returns: generator of |
409 | 413 | :class:`Branch <github3.repos.branch.Branch>`\ es |
410 | 414 | """ |
411 | 415 | url = self._build_url('branches', base_url=self._api) |
412 | | - return self._iter(int(number), url, Branch, etag=etag) |
| 416 | + params = {'protected': '1'} if protected else None |
| 417 | + return self._iter(int(number), url, Branch, params, etag=etag, |
| 418 | + headers=Branch.PREVIEW_HEADERS) |
413 | 419 |
|
414 | 420 | def code_frequency(self, number=-1, etag=None): |
415 | 421 | """Iterate over the code frequency per week. |
@@ -1410,6 +1416,15 @@ def latest_pages_build(self): |
1410 | 1416 | json = self._json(self._get(url), 200) |
1411 | 1417 | return self._instance_or_null(PagesBuild, json) |
1412 | 1418 |
|
| 1419 | + def license(self): |
| 1420 | + """Get the contents of a license for the repo |
| 1421 | +
|
| 1422 | + :returns: :class:`License <github3.licenses.License>` |
| 1423 | + """ |
| 1424 | + url = self._build_url('license', base_url=self._api) |
| 1425 | + json = self._json(self._get(url, headers=License.CUSTOM_HEADERS), 200) |
| 1426 | + return self._instance_or_null(License, json) |
| 1427 | + |
1413 | 1428 | @requires_auth |
1414 | 1429 | def mark_notifications(self, last_read=''): |
1415 | 1430 | """Mark all notifications in this repository as read. |
@@ -1653,6 +1668,31 @@ def release(self, id): |
1653 | 1668 | json = self._json(self._get(url), 200) |
1654 | 1669 | return self._instance_or_null(Release, json) |
1655 | 1670 |
|
| 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 | + |
| 1682 | + def release_from_tag(self, tag_name): |
| 1683 | + """Get a release by tag name. |
| 1684 | +
|
| 1685 | + release_from_tag() returns a release with specified tag |
| 1686 | + while release() returns a release with specified release id |
| 1687 | +
|
| 1688 | + :param str tag_name: (required) name of tag |
| 1689 | + :returns: :class:`Release <github3.repos.release.Release>` |
| 1690 | + """ |
| 1691 | + url = self._build_url('releases', 'tags', tag_name, |
| 1692 | + base_url=self._api) |
| 1693 | + json = self._json(self._get(url), 200) |
| 1694 | + return self._instance_or_null(Release, json) |
| 1695 | + |
1656 | 1696 | def releases(self, number=-1, etag=None): |
1657 | 1697 | r"""Iterate over releases for this repository. |
1658 | 1698 |
|
|
0 commit comments