@@ -124,13 +124,14 @@ def status(self):
124124class PullRequest (GitHubCore ):
125125"""The :class:`PullRequest <PullRequest>` object."""
126126def __init__ (self ,pull ,session = None ):
127- super (PullRequest ,self ).__init__ (session )
127+ super (PullRequest ,self ).__init__ (pull , session )
128128self ._update_ (pull )
129129
130130def __repr__ (self ):
131131return '<Pull Request [#%d]>' % self ._num
132132
133133def _update_ (self ,pull ):
134+ self ._json_data = pull
134135self ._api = pull .get ('url' )
135136self ._base = PullDestination (pull .get ('base' ),'Base' )
136137self ._body = pull .get ('body' )
@@ -175,15 +176,15 @@ def _update_(self, pull):
175176self ._mergeable = pull .get ('mergeable' )
176177self ._mergedby = None
177178if pull .get ('merged_by' ):
178- self ._mergedby = User (pull .get ('merged_by' ),self . _session )
179+ self ._mergedby = User (pull .get ('merged_by' ),self )
179180self ._num = pull .get ('number' )
180181self ._patch_url = pull .get ('patch_url' )
181182self ._state = pull .get ('state' )
182183self ._title = pull .get ('title' )
183184self ._updated = self ._strptime (pull .get ('updated_at' ))
184185self ._user = None
185186if pull .get ('user' ):
186- self ._user = User (pull .get ('user' ),self . _session )
187+ self ._user = User (pull .get ('user' ),self )
187188
188189@property
189190def base (self ):
@@ -237,8 +238,8 @@ def is_merged(self):
237238
238239 :returns: bool
239240 """
240- url = self ._api + '/ merge'
241- return self ._session . get (url ). status_code == 204
241+ url = self ._build_url ( ' merge', base_url = self . _api )
242+ return self ._boolean ( self . _get (url ), 204 , 404 )
242243
243244@property
244245def issue_url (self ):
@@ -255,30 +256,29 @@ def list_comments(self):
255256
256257 :returns: list of :class:`ReviewComment <ReviewComment>`\ s
257258 """
258- url = self ._api + '/comments'
259- json = self ._get (url )
260- ses = self ._session
261- return [ReviewComment (comment ,ses )for comment in json ]
259+ url = self ._build_url ('comments' ,base_url = self ._api )
260+ json = self ._json (self ._get (url ),200 )
261+ return [ReviewComment (comment ,self )for comment in json ]
262262
263263def list_commits (self ):
264264"""List the commits on this pull request.
265265
266266 :returns: list of :class:`Commit <github3.git.Commit>`\ s
267267 """
268- url = self ._api + '/commits'
269- json = self ._get (url )
270- ses = self ._session
271- return [Commit (commit ,ses )for commit in json ]
268+ url = self ._build_url ('commits' ,base_url = self ._api )
269+ json = self ._json (self ._get (url ),200 )
270+ return [Commit (commit ,self )for commit in json ]
272271
273272def list_files (self ):
274273"""List the files associated with this pull request.
275274
276275 :returns: list of :class:`PullFile <PullFile>`\ s
277276 """
278- url = self ._api + '/ files'
279- json = self ._get (url )
277+ url = self ._build_url ( ' files', base_url = self . _api )
278+ json = self ._json ( self . _get (url ), 200 )
280279return [PullFile (f )for f in json ]
281280
281+ @GitHubCore .requires_auth
282282def merge (self ,commit_message = '' ):
283283"""Merge this pull request.
284284
@@ -287,11 +287,11 @@ def merge(self, commit_message=''):
287287 :type commit_message: str
288288 :returns: bool
289289 """
290- data = {'commit_message' :commit_message }if commit_message else None
291- url = self ._api + '/merge'
290+ data = None
291+ if commit_message :
292+ data = dumps ({'commit_message' :commit_message })
293+ url = self ._build_url ('merge' ,base_url = self ._api )
292294resp = self ._put (url ,data )
293- if resp .status_code == 200 :
294- return resp .json ['merged' ]
295295return resp .json ['merged' ]
296296
297297@property
@@ -324,6 +324,7 @@ def title(self):
324324"""The title of the request"""
325325return self ._title
326326
327+ @GitHubCore .requires_auth
327328def update (self ,title = '' ,body = '' ,state = '' ):
328329"""Update this pull request.
329330
@@ -336,7 +337,7 @@ def update(self, title='', body='', state=''):
336337 :returns: bool
337338 """
338339data = dumps ({'title' :title ,'body' :body ,'state' :state })
339- json = self ._patch (self ._api ,data )
340+ json = self ._json ( self . _patch (self ._api ,data ), 200 )
340341if json :
341342self ._update_ (json )
342343return True