diff --git a/ogr/abstract/pull_request.py b/ogr/abstract/pull_request.py index 8a20fc3d..8563534c 100644 --- a/ogr/abstract/pull_request.py +++ b/ogr/abstract/pull_request.py @@ -78,7 +78,9 @@ def created(self) -> datetime.datetime: @property def labels(self) -> Union[list["_abstract.PRLabel"], Iterable["_abstract.PRLabel"]]: - """Labels of the pull request.""" + """ + Labels of the pull request. Cached, may be outdated if modified externally. + """ raise NotImplementedError() @property diff --git a/ogr/services/github/pull_request.py b/ogr/services/github/pull_request.py index 0d778efa..025092ec 100644 --- a/ogr/services/github/pull_request.py +++ b/ogr/services/github/pull_request.py @@ -28,6 +28,7 @@ class GithubPullRequest(BasePullRequest): _raw_pr: _GithubPullRequest _target_project: "ogr_github.GithubProject" _source_project: "ogr_github.GithubProject" = None + _labels: list[PRLabel] = None @property def title(self) -> str: @@ -79,9 +80,12 @@ def created(self) -> datetime.datetime: @property def labels(self) -> list[PRLabel]: - return [ - GithubPRLabel(raw_label, self) for raw_label in self._raw_pr.get_labels() - ] + if not self._labels: + self._labels = [ + GithubPRLabel(raw_label, self) + for raw_label in self._raw_pr.get_labels() + ] + return self._labels @property def diff_url(self) -> str: @@ -265,6 +269,9 @@ def merge(self) -> "PullRequest": def add_label(self, *labels: str) -> None: for label in labels: self._raw_pr.add_to_labels(label) + self._labels = [ + GithubPRLabel(raw_label, self) for raw_label in self._raw_pr.get_labels() + ] def get_comment(self, comment_id: int) -> PRComment: return GithubPRComment(self._raw_pr.get_issue_comment(comment_id))