Skip to content

Commit

Permalink
Update attributes available on Pull Requests
Browse files Browse the repository at this point in the history
This ensures that all documented attributes are available on Pull
Request related objects.
  • Loading branch information
sigmavirus24 committed Oct 31, 2021
1 parent f51abc4 commit d57c987
Show file tree
Hide file tree
Showing 36 changed files with 853 additions and 186 deletions.
23 changes: 22 additions & 1 deletion src/github3/pulls.py
Expand Up @@ -195,6 +195,7 @@ def _update_attributes(self, pull):
from . import orgs

self._api = pull["url"]
self.active_lock_reason = pull["active_lock_reason"]
self.assignee = pull["assignee"]
if self.assignee is not None:
self.assignee = users.ShortUser(self.assignee, self)
Expand All @@ -213,6 +214,7 @@ def _update_attributes(self, pull):
self.id = pull["id"]
self.issue_url = pull["issue_url"]
self.links = pull["_links"]
self.locked = pull["locked"]
self.merge_commit_sha = pull["merge_commit_sha"]
self.merged_at = self._strptime(pull["merged_at"])
self.number = pull["number"]
Expand Down Expand Up @@ -710,9 +712,12 @@ class PullRequest(_PullRequest):
def _update_attributes(self, pull):
super()._update_attributes(pull)
self.additions_count = pull["additions"]
self.deletions_count = pull["deletions"]
self.auto_merge = pull["auto_merge"]
self.author_association = pull["author_association"]
self.comments_count = pull["comments"]
self.commits_count = pull["commits"]
self.deletions_count = pull["deletions"]
self.draft = pull["draft"]
self.mergeable = pull["mergeable"]
self.mergeable_state = pull["mergeable_state"]
self.merged = pull["merged"]
Expand All @@ -721,6 +726,22 @@ def _update_attributes(self, pull):
self.merged_by = users.ShortUser(self.merged_by, self)
self.review_comments_count = pull["review_comments"]

requested_teams = pull["requested_teams"]
self.requested_teams = []
if requested_teams:
from . import orgs

self.requested_teams = [
orgs.ShortTeam(team, self) for team in requested_teams
]

requested_reviewers = pull["requested_reviewers"]
self.requested_reviewers = []
if requested_reviewers:
self.requested_reviewers = [
users.ShortUser(user, self) for user in requested_reviewers
]


class ShortPullRequest(_PullRequest):
"""Object for the shortened representation of a PullRequest.
Expand Down
2 changes: 1 addition & 1 deletion tests/cassettes/GitHub_pull_request.json
@@ -1 +1 @@
{"http_interactions": [{"request": {"headers": {"User-Agent": "github3.py/1.0.0a4", "Content-Type": "application/json", "Accept-Encoding": "gzip, deflate", "Accept": "application/vnd.github.v3.full+json", "Accept-Charset": "utf-8", "Connection": "keep-alive"}, "uri": "https://api.github.com/repos/sigmavirus24/github3.py/pulls/119", "body": {"string": "", "encoding": "utf-8"}, "method": "GET"}, "recorded_at": "2017-02-10T22:20:32", "response": {"headers": {"Cache-Control": "public, max-age=60, s-maxage=60", "X-RateLimit-Limit": "60", "Vary": "Accept", "X-Content-Type-Options": "nosniff", "Date": "Fri, 10 Feb 2017 22:20:32 GMT", "X-RateLimit-Remaining": "59", "Content-Type": "application/json; charset=utf-8", "Server": "GitHub.com", "X-XSS-Protection": "1; mode=block", "Access-Control-Allow-Origin": "*", "Transfer-Encoding": "chunked", "X-RateLimit-Reset": "1486768832", "X-GitHub-Request-Id": "B90D:5521:24107F6:2D51AEF:589E3CAF", "ETag": "W/\"465de9f3c428855d927731e3a10753de\"", "Content-Security-Policy": "default-src 'none'", "X-Served-By": "c6c65e5196703428e7641f7d1e9bc353", "Content-Encoding": "gzip", "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", "Status": "200 OK", "X-Frame-Options": "deny", "Last-Modified": "Wed, 01 Feb 2017 16:19:51 GMT", "Strict-Transport-Security": "max-age=31536000; includeSubdomains; preload", "X-GitHub-Media-Type": "github.v3; param=full; format=json"}, "url": "https://api.github.com/repos/sigmavirus24/github3.py/pulls/119", "status": {"message": "OK", "code": 200}, "body": {"string": "", "encoding": "utf-8", "base64_string": "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"}}}], "recorded_with": "betamax/0.8.0"}
{"http_interactions": [{"request": {"body": {"encoding": "utf-8", "string": ""}, "headers": {"User-Agent": ["github3.py/3.0.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/pulls/119"}, "response": {"body": {"encoding": "utf-8", "base64_string": "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", "string": ""}, "headers": {"Server": ["GitHub.com"], "Date": ["Sun, 31 Oct 2021 00:35:37 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/\"c23c9d7093f65f10fd04b46f573ce9d248d358ab2b7bdf03f04ceb80d7365d77\""], "Last-Modified": ["Sat, 30 Oct 2021 19:31:07 GMT"], "X-GitHub-Media-Type": ["github.v3; param=full; format=json"], "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, 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": ["1635644136"], "X-RateLimit-Resource": ["core"], "X-RateLimit-Used": ["1"], "Accept-Ranges": ["bytes"], "Content-Length": ["2937"], "X-GitHub-Request-Id": ["E120:2F70:A7F981:13E9F4E:617DE4D8"]}, "status": {"code": 200, "message": "OK"}, "url": "https://api.github.com/repos/sigmavirus24/github3.py/pulls/119"}, "recorded_at": "2021-10-31T00:35:37"}], "recorded_with": "betamax/0.8.1"}

0 comments on commit d57c987

Please sign in to comment.