1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
|
from pygithub3.exceptions import BadRequest, NotFound
from pygithub3.services.base import Service, MimeTypeMixin
from .comments import Comments
class PullRequests(Service, MimeTypeMixin):
"""Consume `Pull Request API <http://developer.github.com/v3/pulls/>`_"""
def __init__(self, **config):
self.comments = Comments(**config)
super(PullRequests, self).__init__(**config)
def list(self, user=None, repo=None):
"""List all of the pull requests for a repo
:param str user: Username
:param str repo: Repository
"""
return self._get_result(
self.make_request('pull_requests.list', user=user, repo=repo)
)
def get(self, number, user=None, repo=None):
"""Get a single pull request
:param str number: The number of the pull request to get
:param str user: Username
:param str repo: Repository
"""
return self._get(
self.make_request('pull_requests.get', number=number, user=user,
repo=repo)
)
def create(self, body, user=None, repo=None):
"""Create a pull request
:param dict body: Data for the new pull request
:param str user: Username
:param str repo: Repository
"""
return self._post(
self.make_request('pull_requests.create', body=body, user=user,
repo=repo)
)
def update(self, number, body, user=None, repo=None):
"""Update a pull request
:param str number: The number of the the pull request to update
:param dict body: The data to update the pull request with
:param str user: Username
:param str repo: Repository
"""
return self._patch(
self.make_request('pull_requests.update', number=number,
body=body, user=user, repo=repo)
)
def list_commits(self, number, user=None, repo=None):
"""List the commits for a pull request
:param str number: The number of the pull request to list commits for
:param str user: Username
:param str repo: Repository
"""
return self._get_result(
self.make_request('pull_requests.list_commits', number=number,
user=user, repo=repo)
)
def list_files(self, number, user=None, repo=None):
"""List the files for a pull request
:param str number: The number of the pull request to list files for
:param str user: Username
:param str repo: Repository
"""
return self._get_result(
self.make_request('pull_requests.list_files', number=number,
user=user, repo=repo)
)
def merge_status(self, number, user=None, repo=None):
"""Gets whether a pull request has been merged or not.
:param str number: The pull request to check
:param str user: Username
:param str repo: Repository
"""
return self._bool(
self.make_request('pull_requests.merge_status', number=number,
user=user, repo=repo)
)
def merge(self, number, message='', user=None, repo=None):
"""Merge a pull request.
:param str number: The pull request to merge
:param str user: Username
:param str repo: Repository
This currently raises an HTTP 405 error if the request is not
mergable.
"""
body = {'commit_message': message}
return self._put(
self.make_request('pull_requests.merge', number=number,
body=body, user=user, repo=repo)
)
|