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
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
|
# -*- encoding: utf-8 -*-
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
:returns: A :doc:`result`
.. note::
Remember :ref:`config precedence`
"""
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
.. note::
Remember :ref:`config precedence`
"""
return self._get(
self.make_request('pull_requests.get', number=number, user=user,
repo=repo)
)
def create(self, data, user=None, repo=None):
"""Create a pull request
:param dict data: Input. See `github pullrequests doc`_
:param str user: Username
:param str repo: Repository
.. note::
Remember :ref:`config precedence`
"""
return self._post(
self.make_request('pull_requests.create', body=data, user=user,
repo=repo)
)
def update(self, number, data, user=None, repo=None):
"""Update a pull request
:param str number: The number of the the pull request to update
:param dict data: Input. See `github pullrequests doc`_
:param str user: Username
:param str repo: Repository
.. note::
Remember :ref:`config precedence`
"""
return self._patch(
self.make_request('pull_requests.update', number=number,
body=data, 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
:returns: A :doc:`result`
.. note::
Remember :ref:`config precedence`
"""
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
:returns: A :doc:`result`
.. note::
Remember :ref:`config precedence`
"""
return self._get_result(
self.make_request('pull_requests.list_files', number=number,
user=user, repo=repo)
)
def is_merged(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
.. note::
Remember :ref:`config precedence`
"""
return self._bool(
self.make_request('pull_requests.is_merged', 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 message: Message of pull request
:param str user: Username
:param str repo: Repository
.. note::
Remember :ref:`config precedence`
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)
)
|