Continue the PR #1899 (#2386)

* A property to access the `assets` field of release (#1898)

... in order to avoid extra requests.

<https://github.com/PyGithub/PyGithub/issues/1898>

* Remove comment to comply the review

* Add tests for GitRelease.assets

---------

Co-authored-by: green-green-avk <45503261+green-green-avk@users.noreply.github.com>
This commit is contained in:
Mikhail f. Shiryaev
2023-01-31 07:44:16 +08:00
committed by GitHub
co-authored by green-green-avk
parent 6c53e5442a
commit 7cf3dfc18e
3 changed files with 21 additions and 0 deletions
+13
View File
@@ -170,6 +170,14 @@ class GitRelease(github.GithubObject.CompletableGithubObject):
self._completeIfNotSet(self._zipball_url)
return self._zipball_url.value
@property
def assets(self):
"""
:type: list of :class:`github.GitReleaseAsset.GitReleaseAsset`
"""
self._completeIfNotSet(self._assets)
return self._assets.value
def delete_release(self):
"""
:calls: `DELETE /repos/{owner}/{repo}/releases/{release_id} <https://docs.github.com/en/rest/reference/repos#delete-a-release>`_
@@ -333,6 +341,7 @@ class GitRelease(github.GithubObject.CompletableGithubObject):
self._published_at = github.GithubObject.NotSet
self._tarball_url = github.GithubObject.NotSet
self._zipball_url = github.GithubObject.NotSet
self._assets = github.GithubObject.NotSet
def _useAttributes(self, attributes):
if "id" in attributes:
@@ -369,3 +378,7 @@ class GitRelease(github.GithubObject.CompletableGithubObject):
self._tarball_url = self._makeStringAttribute(attributes["tarball_url"])
if "zipball_url" in attributes:
self._zipball_url = self._makeStringAttribute(attributes["zipball_url"])
if "assets" in attributes:
self._assets = self._makeListOfClassesAttribute(
github.GitReleaseAsset.GitReleaseAsset, attributes["assets"]
)
+2
View File
@@ -11,6 +11,8 @@ class GitRelease(CompletableGithubObject):
def _initAttributes(self) -> None: ...
def _useAttributes(self, attributes: Dict[str, Any]) -> None: ...
@property
def assets(self) -> list[GitReleaseAsset]: ...
@property
def author(self) -> NamedUser: ...
@property
def body(self) -> str: ...
+6
View File
@@ -156,6 +156,12 @@ class GitRelease(Framework.TestCase):
),
)
self.assertEqual(repr(release), 'GitRelease(title="Test")')
self.assertEqual(len(release.assets), 1)
self.assertEqual(
repr(release.assets[0]),
'GitReleaseAsset(url="https://api.github.com/repos/'
f'{user}/{repo_name}/releases/assets/{release.raw_data["assets"][0]["id"]}")',
)
def testGetRelease(self):
release_by_id = self.release