Mercurial > repos > bcclaywell > argo_navis
comparison venv/lib/python2.7/site-packages/github/Issue.py @ 0:d67268158946 draft
planemo upload commit a3f181f5f126803c654b3a66dd4e83a48f7e203b
| author | bcclaywell |
|---|---|
| date | Mon, 12 Oct 2015 17:43:33 -0400 |
| parents | |
| children |
comparison
equal
deleted
inserted
replaced
| -1:000000000000 | 0:d67268158946 |
|---|---|
| 1 # -*- coding: utf-8 -*- | |
| 2 | |
| 3 # ########################## Copyrights and license ############################ | |
| 4 # # | |
| 5 # Copyright 2012 Andrew Bettison <andrewb@zip.com.au> # | |
| 6 # Copyright 2012 Philip Kimmey <philip@rover.com> # | |
| 7 # Copyright 2012 Vincent Jacques <vincent@vincent-jacques.net> # | |
| 8 # Copyright 2012 Zearin <zearin@gonk.net> # | |
| 9 # Copyright 2013 AKFish <akfish@gmail.com> # | |
| 10 # Copyright 2013 Stuart Glaser <stuglaser@gmail.com> # | |
| 11 # Copyright 2013 Vincent Jacques <vincent@vincent-jacques.net> # | |
| 12 # # | |
| 13 # This file is part of PyGithub. http://jacquev6.github.com/PyGithub/ # | |
| 14 # # | |
| 15 # PyGithub is free software: you can redistribute it and/or modify it under # | |
| 16 # the terms of the GNU Lesser General Public License as published by the Free # | |
| 17 # Software Foundation, either version 3 of the License, or (at your option) # | |
| 18 # any later version. # | |
| 19 # # | |
| 20 # PyGithub is distributed in the hope that it will be useful, but WITHOUT ANY # | |
| 21 # WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS # | |
| 22 # FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more # | |
| 23 # details. # | |
| 24 # # | |
| 25 # You should have received a copy of the GNU Lesser General Public License # | |
| 26 # along with PyGithub. If not, see <http://www.gnu.org/licenses/>. # | |
| 27 # # | |
| 28 # ############################################################################## | |
| 29 | |
| 30 import github.GithubObject | |
| 31 import github.PaginatedList | |
| 32 | |
| 33 import github.Repository | |
| 34 import github.IssueEvent | |
| 35 import github.Label | |
| 36 import github.NamedUser | |
| 37 import github.Milestone | |
| 38 import github.IssueComment | |
| 39 import github.IssuePullRequest | |
| 40 | |
| 41 | |
| 42 class Issue(github.GithubObject.CompletableGithubObject): | |
| 43 """ | |
| 44 This class represents Issues as returned for example by http://developer.github.com/v3/todo | |
| 45 """ | |
| 46 | |
| 47 @property | |
| 48 def assignee(self): | |
| 49 """ | |
| 50 :type: :class:`github.NamedUser.NamedUser` | |
| 51 """ | |
| 52 self._completeIfNotSet(self._assignee) | |
| 53 return self._assignee.value | |
| 54 | |
| 55 @property | |
| 56 def body(self): | |
| 57 """ | |
| 58 :type: string | |
| 59 """ | |
| 60 self._completeIfNotSet(self._body) | |
| 61 return self._body.value | |
| 62 | |
| 63 @property | |
| 64 def closed_at(self): | |
| 65 """ | |
| 66 :type: datetime.datetime | |
| 67 """ | |
| 68 self._completeIfNotSet(self._closed_at) | |
| 69 return self._closed_at.value | |
| 70 | |
| 71 @property | |
| 72 def closed_by(self): | |
| 73 """ | |
| 74 :type: :class:`github.NamedUser.NamedUser` | |
| 75 """ | |
| 76 self._completeIfNotSet(self._closed_by) | |
| 77 return self._closed_by.value | |
| 78 | |
| 79 @property | |
| 80 def comments(self): | |
| 81 """ | |
| 82 :type: integer | |
| 83 """ | |
| 84 self._completeIfNotSet(self._comments) | |
| 85 return self._comments.value | |
| 86 | |
| 87 @property | |
| 88 def comments_url(self): | |
| 89 """ | |
| 90 :type: string | |
| 91 """ | |
| 92 self._completeIfNotSet(self._comments_url) | |
| 93 return self._comments_url.value | |
| 94 | |
| 95 @property | |
| 96 def created_at(self): | |
| 97 """ | |
| 98 :type: datetime.datetime | |
| 99 """ | |
| 100 self._completeIfNotSet(self._created_at) | |
| 101 return self._created_at.value | |
| 102 | |
| 103 @property | |
| 104 def events_url(self): | |
| 105 """ | |
| 106 :type: string | |
| 107 """ | |
| 108 self._completeIfNotSet(self._events_url) | |
| 109 return self._events_url.value | |
| 110 | |
| 111 @property | |
| 112 def html_url(self): | |
| 113 """ | |
| 114 :type: string | |
| 115 """ | |
| 116 self._completeIfNotSet(self._html_url) | |
| 117 return self._html_url.value | |
| 118 | |
| 119 @property | |
| 120 def id(self): | |
| 121 """ | |
| 122 :type: integer | |
| 123 """ | |
| 124 self._completeIfNotSet(self._id) | |
| 125 return self._id.value | |
| 126 | |
| 127 @property | |
| 128 def labels(self): | |
| 129 """ | |
| 130 :type: list of :class:`github.Label.Label` | |
| 131 """ | |
| 132 self._completeIfNotSet(self._labels) | |
| 133 return self._labels.value | |
| 134 | |
| 135 @property | |
| 136 def labels_url(self): | |
| 137 """ | |
| 138 :type: string | |
| 139 """ | |
| 140 self._completeIfNotSet(self._labels_url) | |
| 141 return self._labels_url.value | |
| 142 | |
| 143 @property | |
| 144 def milestone(self): | |
| 145 """ | |
| 146 :type: :class:`github.Milestone.Milestone` | |
| 147 """ | |
| 148 self._completeIfNotSet(self._milestone) | |
| 149 return self._milestone.value | |
| 150 | |
| 151 @property | |
| 152 def number(self): | |
| 153 """ | |
| 154 :type: integer | |
| 155 """ | |
| 156 self._completeIfNotSet(self._number) | |
| 157 return self._number.value | |
| 158 | |
| 159 @property | |
| 160 def pull_request(self): | |
| 161 """ | |
| 162 :type: :class:`github.IssuePullRequest.IssuePullRequest` | |
| 163 """ | |
| 164 self._completeIfNotSet(self._pull_request) | |
| 165 return self._pull_request.value | |
| 166 | |
| 167 @property | |
| 168 def repository(self): | |
| 169 """ | |
| 170 :type: :class:`github.Repository.Repository` | |
| 171 """ | |
| 172 self._completeIfNotSet(self._repository) | |
| 173 if self._repository is github.GithubObject.NotSet: | |
| 174 # The repository was not set automatically, so it must be looked up by url. | |
| 175 repo_url = "/".join(self.url.split("/")[:-2]) | |
| 176 self._repository = github.GithubObject._ValuedAttribute(github.Repository.Repository(self._requester, self._headers, {'url': repo_url}, completed=False)) | |
| 177 return self._repository.value | |
| 178 | |
| 179 @property | |
| 180 def state(self): | |
| 181 """ | |
| 182 :type: string | |
| 183 """ | |
| 184 self._completeIfNotSet(self._state) | |
| 185 return self._state.value | |
| 186 | |
| 187 @property | |
| 188 def title(self): | |
| 189 """ | |
| 190 :type: string | |
| 191 """ | |
| 192 self._completeIfNotSet(self._title) | |
| 193 return self._title.value | |
| 194 | |
| 195 @property | |
| 196 def updated_at(self): | |
| 197 """ | |
| 198 :type: datetime.datetime | |
| 199 """ | |
| 200 self._completeIfNotSet(self._updated_at) | |
| 201 return self._updated_at.value | |
| 202 | |
| 203 @property | |
| 204 def url(self): | |
| 205 """ | |
| 206 :type: string | |
| 207 """ | |
| 208 self._completeIfNotSet(self._url) | |
| 209 return self._url.value | |
| 210 | |
| 211 @property | |
| 212 def user(self): | |
| 213 """ | |
| 214 :type: :class:`github.NamedUser.NamedUser` | |
| 215 """ | |
| 216 self._completeIfNotSet(self._user) | |
| 217 return self._user.value | |
| 218 | |
| 219 def add_to_labels(self, *labels): | |
| 220 """ | |
| 221 :calls: `POST /repos/:owner/:repo/issues/:number/labels <http://developer.github.com/v3/issues/labels>`_ | |
| 222 :param label: :class:`github.Label.Label` or string | |
| 223 :rtype: None | |
| 224 """ | |
| 225 assert all(isinstance(element, (github.Label.Label, str, unicode)) for element in labels), labels | |
| 226 post_parameters = [label.name if isinstance(label, github.Label.Label) else label for label in labels] | |
| 227 headers, data = self._requester.requestJsonAndCheck( | |
| 228 "POST", | |
| 229 self.url + "/labels", | |
| 230 input=post_parameters | |
| 231 ) | |
| 232 | |
| 233 def create_comment(self, body): | |
| 234 """ | |
| 235 :calls: `POST /repos/:owner/:repo/issues/:number/comments <http://developer.github.com/v3/issues/comments>`_ | |
| 236 :param body: string | |
| 237 :rtype: :class:`github.IssueComment.IssueComment` | |
| 238 """ | |
| 239 assert isinstance(body, (str, unicode)), body | |
| 240 post_parameters = { | |
| 241 "body": body, | |
| 242 } | |
| 243 headers, data = self._requester.requestJsonAndCheck( | |
| 244 "POST", | |
| 245 self.url + "/comments", | |
| 246 input=post_parameters | |
| 247 ) | |
| 248 return github.IssueComment.IssueComment(self._requester, headers, data, completed=True) | |
| 249 | |
| 250 def delete_labels(self): | |
| 251 """ | |
| 252 :calls: `DELETE /repos/:owner/:repo/issues/:number/labels <http://developer.github.com/v3/issues/labels>`_ | |
| 253 :rtype: None | |
| 254 """ | |
| 255 headers, data = self._requester.requestJsonAndCheck( | |
| 256 "DELETE", | |
| 257 self.url + "/labels" | |
| 258 ) | |
| 259 | |
| 260 def edit(self, title=github.GithubObject.NotSet, body=github.GithubObject.NotSet, assignee=github.GithubObject.NotSet, state=github.GithubObject.NotSet, milestone=github.GithubObject.NotSet, labels=github.GithubObject.NotSet): | |
| 261 """ | |
| 262 :calls: `PATCH /repos/:owner/:repo/issues/:number <http://developer.github.com/v3/issues>`_ | |
| 263 :param title: string | |
| 264 :param body: string | |
| 265 :param assignee: string or :class:`github.NamedUser.NamedUser` or None | |
| 266 :param state: string | |
| 267 :param milestone: :class:`github.Milestone.Milestone` or None | |
| 268 :param labels: list of string | |
| 269 :rtype: None | |
| 270 """ | |
| 271 assert title is github.GithubObject.NotSet or isinstance(title, (str, unicode)), title | |
| 272 assert body is github.GithubObject.NotSet or isinstance(body, (str, unicode)), body | |
| 273 assert assignee is github.GithubObject.NotSet or assignee is None or isinstance(assignee, github.NamedUser.NamedUser) or isinstance(assignee, (str, unicode)), assignee | |
| 274 assert state is github.GithubObject.NotSet or isinstance(state, (str, unicode)), state | |
| 275 assert milestone is github.GithubObject.NotSet or milestone is None or isinstance(milestone, github.Milestone.Milestone), milestone | |
| 276 assert labels is github.GithubObject.NotSet or all(isinstance(element, (str, unicode)) for element in labels), labels | |
| 277 post_parameters = dict() | |
| 278 if title is not github.GithubObject.NotSet: | |
| 279 post_parameters["title"] = title | |
| 280 if body is not github.GithubObject.NotSet: | |
| 281 post_parameters["body"] = body | |
| 282 if assignee is not github.GithubObject.NotSet: | |
| 283 if isinstance(assignee, (str, unicode)): | |
| 284 post_parameters["assignee"] = assignee | |
| 285 else: | |
| 286 post_parameters["assignee"] = assignee._identity if assignee else '' | |
| 287 if state is not github.GithubObject.NotSet: | |
| 288 post_parameters["state"] = state | |
| 289 if milestone is not github.GithubObject.NotSet: | |
| 290 post_parameters["milestone"] = milestone._identity if milestone else '' | |
| 291 if labels is not github.GithubObject.NotSet: | |
| 292 post_parameters["labels"] = labels | |
| 293 headers, data = self._requester.requestJsonAndCheck( | |
| 294 "PATCH", | |
| 295 self.url, | |
| 296 input=post_parameters | |
| 297 ) | |
| 298 self._useAttributes(data) | |
| 299 | |
| 300 def get_comment(self, id): | |
| 301 """ | |
| 302 :calls: `GET /repos/:owner/:repo/issues/comments/:id <http://developer.github.com/v3/issues/comments>`_ | |
| 303 :param id: integer | |
| 304 :rtype: :class:`github.IssueComment.IssueComment` | |
| 305 """ | |
| 306 assert isinstance(id, (int, long)), id | |
| 307 headers, data = self._requester.requestJsonAndCheck( | |
| 308 "GET", | |
| 309 self._parentUrl(self.url) + "/comments/" + str(id) | |
| 310 ) | |
| 311 return github.IssueComment.IssueComment(self._requester, headers, data, completed=True) | |
| 312 | |
| 313 def get_comments(self): | |
| 314 """ | |
| 315 :calls: `GET /repos/:owner/:repo/issues/:number/comments <http://developer.github.com/v3/issues/comments>`_ | |
| 316 :rtype: :class:`github.PaginatedList.PaginatedList` of :class:`github.IssueComment.IssueComment` | |
| 317 """ | |
| 318 return github.PaginatedList.PaginatedList( | |
| 319 github.IssueComment.IssueComment, | |
| 320 self._requester, | |
| 321 self.url + "/comments", | |
| 322 None | |
| 323 ) | |
| 324 | |
| 325 def get_events(self): | |
| 326 """ | |
| 327 :calls: `GET /repos/:owner/:repo/issues/:issue_number/events <http://developer.github.com/v3/issues/events>`_ | |
| 328 :rtype: :class:`github.PaginatedList.PaginatedList` of :class:`github.IssueEvent.IssueEvent` | |
| 329 """ | |
| 330 return github.PaginatedList.PaginatedList( | |
| 331 github.IssueEvent.IssueEvent, | |
| 332 self._requester, | |
| 333 self.url + "/events", | |
| 334 None | |
| 335 ) | |
| 336 | |
| 337 def get_labels(self): | |
| 338 """ | |
| 339 :calls: `GET /repos/:owner/:repo/issues/:number/labels <http://developer.github.com/v3/issues/labels>`_ | |
| 340 :rtype: :class:`github.PaginatedList.PaginatedList` of :class:`github.Label.Label` | |
| 341 """ | |
| 342 return github.PaginatedList.PaginatedList( | |
| 343 github.Label.Label, | |
| 344 self._requester, | |
| 345 self.url + "/labels", | |
| 346 None | |
| 347 ) | |
| 348 | |
| 349 def remove_from_labels(self, label): | |
| 350 """ | |
| 351 :calls: `DELETE /repos/:owner/:repo/issues/:number/labels/:name <http://developer.github.com/v3/issues/labels>`_ | |
| 352 :param label: :class:`github.Label.Label` or string | |
| 353 :rtype: None | |
| 354 """ | |
| 355 assert isinstance(label, (github.Label.Label, str, unicode)), label | |
| 356 if isinstance(label, github.Label.Label): | |
| 357 label = label._identity | |
| 358 headers, data = self._requester.requestJsonAndCheck( | |
| 359 "DELETE", | |
| 360 self.url + "/labels/" + label | |
| 361 ) | |
| 362 | |
| 363 def set_labels(self, *labels): | |
| 364 """ | |
| 365 :calls: `PUT /repos/:owner/:repo/issues/:number/labels <http://developer.github.com/v3/issues/labels>`_ | |
| 366 :param label: :class:`github.Label.Label` | |
| 367 :rtype: None | |
| 368 """ | |
| 369 assert all(isinstance(element, (github.Label.Label, str, unicode)) for element in labels), labels | |
| 370 post_parameters = [label.name if isinstance(label, github.Label.Label) else label for label in labels] | |
| 371 headers, data = self._requester.requestJsonAndCheck( | |
| 372 "PUT", | |
| 373 self.url + "/labels", | |
| 374 input=post_parameters | |
| 375 ) | |
| 376 | |
| 377 @property | |
| 378 def _identity(self): | |
| 379 return self.number | |
| 380 | |
| 381 def _initAttributes(self): | |
| 382 self._assignee = github.GithubObject.NotSet | |
| 383 self._body = github.GithubObject.NotSet | |
| 384 self._closed_at = github.GithubObject.NotSet | |
| 385 self._closed_by = github.GithubObject.NotSet | |
| 386 self._comments = github.GithubObject.NotSet | |
| 387 self._comments_url = github.GithubObject.NotSet | |
| 388 self._created_at = github.GithubObject.NotSet | |
| 389 self._events_url = github.GithubObject.NotSet | |
| 390 self._html_url = github.GithubObject.NotSet | |
| 391 self._id = github.GithubObject.NotSet | |
| 392 self._labels = github.GithubObject.NotSet | |
| 393 self._labels_url = github.GithubObject.NotSet | |
| 394 self._milestone = github.GithubObject.NotSet | |
| 395 self._number = github.GithubObject.NotSet | |
| 396 self._pull_request = github.GithubObject.NotSet | |
| 397 self._repository = github.GithubObject.NotSet | |
| 398 self._state = github.GithubObject.NotSet | |
| 399 self._title = github.GithubObject.NotSet | |
| 400 self._updated_at = github.GithubObject.NotSet | |
| 401 self._url = github.GithubObject.NotSet | |
| 402 self._user = github.GithubObject.NotSet | |
| 403 | |
| 404 def _useAttributes(self, attributes): | |
| 405 if "assignee" in attributes: # pragma no branch | |
| 406 self._assignee = self._makeClassAttribute(github.NamedUser.NamedUser, attributes["assignee"]) | |
| 407 if "body" in attributes: # pragma no branch | |
| 408 self._body = self._makeStringAttribute(attributes["body"]) | |
| 409 if "closed_at" in attributes: # pragma no branch | |
| 410 self._closed_at = self._makeDatetimeAttribute(attributes["closed_at"]) | |
| 411 if "closed_by" in attributes: # pragma no branch | |
| 412 self._closed_by = self._makeClassAttribute(github.NamedUser.NamedUser, attributes["closed_by"]) | |
| 413 if "comments" in attributes: # pragma no branch | |
| 414 self._comments = self._makeIntAttribute(attributes["comments"]) | |
| 415 if "comments_url" in attributes: # pragma no branch | |
| 416 self._comments_url = self._makeStringAttribute(attributes["comments_url"]) | |
| 417 if "created_at" in attributes: # pragma no branch | |
| 418 self._created_at = self._makeDatetimeAttribute(attributes["created_at"]) | |
| 419 if "events_url" in attributes: # pragma no branch | |
| 420 self._events_url = self._makeStringAttribute(attributes["events_url"]) | |
| 421 if "html_url" in attributes: # pragma no branch | |
| 422 self._html_url = self._makeStringAttribute(attributes["html_url"]) | |
| 423 if "id" in attributes: # pragma no branch | |
| 424 self._id = self._makeIntAttribute(attributes["id"]) | |
| 425 if "labels" in attributes: # pragma no branch | |
| 426 self._labels = self._makeListOfClassesAttribute(github.Label.Label, attributes["labels"]) | |
| 427 if "labels_url" in attributes: # pragma no branch | |
| 428 self._labels_url = self._makeStringAttribute(attributes["labels_url"]) | |
| 429 if "milestone" in attributes: # pragma no branch | |
| 430 self._milestone = self._makeClassAttribute(github.Milestone.Milestone, attributes["milestone"]) | |
| 431 if "number" in attributes: # pragma no branch | |
| 432 self._number = self._makeIntAttribute(attributes["number"]) | |
| 433 if "pull_request" in attributes: # pragma no branch | |
| 434 self._pull_request = self._makeClassAttribute(github.IssuePullRequest.IssuePullRequest, attributes["pull_request"]) | |
| 435 if "repository" in attributes: # pragma no branch | |
| 436 self._repository = self._makeClassAttribute(github.Repository.Repository, attributes["repository"]) | |
| 437 if "state" in attributes: # pragma no branch | |
| 438 self._state = self._makeStringAttribute(attributes["state"]) | |
| 439 if "title" in attributes: # pragma no branch | |
| 440 self._title = self._makeStringAttribute(attributes["title"]) | |
| 441 if "updated_at" in attributes: # pragma no branch | |
| 442 self._updated_at = self._makeDatetimeAttribute(attributes["updated_at"]) | |
| 443 if "url" in attributes: # pragma no branch | |
| 444 self._url = self._makeStringAttribute(attributes["url"]) | |
| 445 if "user" in attributes: # pragma no branch | |
| 446 self._user = self._makeClassAttribute(github.NamedUser.NamedUser, attributes["user"]) |
