Add Support for Check Runs (#1727)

* Add CheckRun object and stub file
* Add list of check runs endpoint for Commit
* Add get check run endpoint for Repository
* Add CheckRun test file and replay data files
* Add CheckRunAnnotation object and stub file
* Add create CheckRun API endpoint to Repository
* Update and add new tests for CheckRun endpoint:
This commit is contained in:
Dhruv Manilawala
2020-11-19 14:29:04 +11:00
committed by GitHub
parent 19e46bbf90
commit c77c06760e
24 changed files with 1491 additions and 0 deletions
+330
View File
@@ -0,0 +1,330 @@
# -*- coding: utf-8 -*-
############################ Copyrights and license ############################
# #
# Copyright 2020 Dhruv Manilawala <dhruvmanila@gmail.com> #
# #
# This file is part of PyGithub. #
# http://pygithub.readthedocs.io/ #
# #
# PyGithub is free software: you can redistribute it and/or modify it under #
# the terms of the GNU Lesser General Public License as published by the Free #
# Software Foundation, either version 3 of the License, or (at your option) #
# any later version. #
# #
# PyGithub is distributed in the hope that it will be useful, but WITHOUT ANY #
# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS #
# FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more #
# details. #
# #
# You should have received a copy of the GNU Lesser General Public License #
# along with PyGithub. If not, see <http://www.gnu.org/licenses/>. #
# #
################################################################################
import datetime
import github.CheckRunAnnotation
import github.CheckRunOutput
import github.GithubApp
import github.GithubObject
import github.PaginatedList
import github.PullRequest
class CheckRun(github.GithubObject.CompletableGithubObject):
"""
This class represents check runs.
The reference can be found here https://docs.github.com/en/rest/reference/checks#check-runs
"""
def __repr__(self):
return self.get__repr__(
{"id": self._id.value, "conclusion": self._conclusion.value}
)
@property
def app(self):
"""
:type: :class:`github.GithubApp.GithubApp`
"""
self._completeIfNotSet(self._app)
return self._app.value
@property
def check_suite_id(self):
"""
:type: integer
"""
self._completeIfNotSet(self._check_suite_id)
return self._check_suite_id.value
@property
def completed_at(self):
"""
:type: datetime.datetime
"""
self._completeIfNotSet(self._completed_at)
return self._completed_at.value
@property
def conclusion(self):
"""
:type: string
"""
self._completeIfNotSet(self._conclusion)
return self._conclusion.value
@property
def details_url(self):
"""
:type: string
"""
self._completeIfNotSet(self._details_url)
return self._details_url.value
@property
def external_id(self):
"""
:type: string
"""
self._completeIfNotSet(self._external_id)
return self._external_id.value
@property
def head_sha(self):
"""
:type: string
"""
self._completeIfNotSet(self._head_sha)
return self._head_sha.value
@property
def html_url(self):
"""
:type: string
"""
self._completeIfNotSet(self._html_url)
return self._html_url.value
@property
def id(self):
"""
:type: integer
"""
self._completeIfNotSet(self._id)
return self._id.value
@property
def name(self):
"""
:type: string
"""
self._completeIfNotSet(self._name)
return self._name.value
@property
def node_id(self):
"""
:type: string
"""
self._completeIfNotSet(self._node_id)
return self._node_id.value
@property
def output(self):
"""
:type: :class:`github.CheckRunOutput.CheckRunOutput`
"""
self._completeIfNotSet(self._output)
return self._output.value
@property
def pull_requests(self):
"""
:type: list of :class:`github.PullRequest.PullRequest`
"""
self._completeIfNotSet(self._pull_requests)
return self._pull_requests.value
@property
def started_at(self):
"""
:type: datetime.datetime
"""
self._completeIfNotSet(self._started_at)
return self._started_at.value
@property
def status(self):
"""
:type: string
"""
self._completeIfNotSet(self._status)
return self._status.value
@property
def url(self):
"""
:type: string
"""
self._completeIfNotSet(self._url)
return self._url.value
def get_annotations(self):
"""
:calls: `GET /repos/:owner/:repo/check-runs/:check_run_id/annotations <https://docs.github.com/en/rest/reference/checks#list-check-run-annotations>`_
:rtype: :class:`github.PaginatedList.PaginatedList` of :class:`github.CheckRunAnnotation.CheckRunAnnotation`
"""
return github.PaginatedList.PaginatedList(
github.CheckRunAnnotation.CheckRunAnnotation,
self._requester,
self.url + "/annotations",
None,
headers={"Accept": "application/vnd.github.v3+json"},
)
def edit(
self,
name=github.GithubObject.NotSet,
head_sha=github.GithubObject.NotSet,
details_url=github.GithubObject.NotSet,
external_id=github.GithubObject.NotSet,
status=github.GithubObject.NotSet,
started_at=github.GithubObject.NotSet,
conclusion=github.GithubObject.NotSet,
completed_at=github.GithubObject.NotSet,
output=github.GithubObject.NotSet,
actions=github.GithubObject.NotSet,
):
"""
:calls: `PATCH /repos/:owner/:repo/check-runs/:check_run_id <https://docs.github.com/en/rest/reference/checks#update-a-check-run>`_
:param name: string
:param head_sha: string
:param details_url: string
:param external_id: string
:param status: string
:param started_at: datetime.datetime
:param conclusion: string
:param completed_at: datetime.datetime
:param output: dict
:param actions: list of dict
:rtype: None
"""
assert name is github.GithubObject.NotSet or isinstance(name, str), name
assert head_sha is github.GithubObject.NotSet or isinstance(
head_sha, str
), head_sha
assert details_url is github.GithubObject.NotSet or isinstance(
details_url, str
), details_url
assert external_id is github.GithubObject.NotSet or isinstance(
external_id, str
), external_id
assert status is github.GithubObject.NotSet or isinstance(status, str), status
assert started_at is github.GithubObject.NotSet or isinstance(
started_at, datetime.datetime
), started_at
assert conclusion is github.GithubObject.NotSet or isinstance(
conclusion, str
), conclusion
assert completed_at is github.GithubObject.NotSet or isinstance(
completed_at, datetime.datetime
), completed_at
assert output is github.GithubObject.NotSet or isinstance(output, dict), output
assert actions is github.GithubObject.NotSet or all(
isinstance(element, dict) for element in actions
), actions
post_parameters = dict()
if name is not github.GithubObject.NotSet:
post_parameters["name"] = name
if head_sha is not github.GithubObject.NotSet:
post_parameters["head_sha"] = head_sha
if details_url is not github.GithubObject.NotSet:
post_parameters["details_url"] = details_url
if external_id is not github.GithubObject.NotSet:
post_parameters["external_id"] = external_id
if status is not github.GithubObject.NotSet:
post_parameters["status"] = status
if started_at is not github.GithubObject.NotSet:
post_parameters["started_at"] = started_at.strftime("%Y-%m-%dT%H:%M:%SZ")
if completed_at is not github.GithubObject.NotSet:
post_parameters["completed_at"] = completed_at.strftime(
"%Y-%m-%dT%H:%M:%SZ"
)
if conclusion is not github.GithubObject.NotSet:
post_parameters["conclusion"] = conclusion
if output is not github.GithubObject.NotSet:
post_parameters["output"] = output
if actions is not github.GithubObject.NotSet:
post_parameters["actions"] = actions
headers, data = self._requester.requestJsonAndCheck(
"PATCH", self.url, input=post_parameters
)
self._useAttributes(data)
def _initAttributes(self):
self._app = github.GithubObject.NotSet
self._check_suite_id = github.GithubObject.NotSet
self._completed_at = github.GithubObject.NotSet
self._conclusion = github.GithubObject.NotSet
self._details_url = github.GithubObject.NotSet
self._external_id = github.GithubObject.NotSet
self._head_sha = github.GithubObject.NotSet
self._html_url = github.GithubObject.NotSet
self._id = github.GithubObject.NotSet
self._name = github.GithubObject.NotSet
self._node_id = github.GithubObject.NotSet
self._output = github.GithubObject.NotSet
self._output = github.GithubObject.NotSet
self._pull_requests = github.GithubObject.NotSet
self._started_at = github.GithubObject.NotSet
self._status = github.GithubObject.NotSet
self._url = github.GithubObject.NotSet
def _useAttributes(self, attributes):
if "app" in attributes: # pragma no branch
self._app = self._makeClassAttribute(
github.GithubApp.GithubApp, attributes["app"]
)
# This only gives us a dictionary with `id` attribute of `check_suite`
if (
"check_suite" in attributes and "id" in attributes["check_suite"]
): # pragma no branch
self._check_suite_id = self._makeIntAttribute(
attributes["check_suite"]["id"]
)
if "completed_at" in attributes: # pragma no branch
self._completed_at = self._makeDatetimeAttribute(attributes["completed_at"])
if "conclusion" in attributes: # pragma no branch
self._conclusion = self._makeStringAttribute(attributes["conclusion"])
if "details_url" in attributes: # pragma no branch
self._details_url = self._makeStringAttribute(attributes["details_url"])
if "external_id" in attributes: # pragma no branch
self._external_id = self._makeStringAttribute(attributes["external_id"])
if "head_sha" in attributes: # pragma no branch
self._head_sha = self._makeStringAttribute(attributes["head_sha"])
if "html_url" in attributes: # pragma no branch
self._html_url = self._makeStringAttribute(attributes["html_url"])
if "id" in attributes: # pragma no branch
self._id = self._makeIntAttribute(attributes["id"])
if "name" in attributes: # pragma no branch
self._name = self._makeStringAttribute(attributes["name"])
if "node_id" in attributes: # pragma no branch
self._node_id = self._makeStringAttribute(attributes["node_id"])
if "output" in attributes: # pragma no branch
self._output = self._makeClassAttribute(
github.CheckRunOutput.CheckRunOutput, attributes["output"]
)
if "pull_requests" in attributes: # pragma no branch
self._pull_requests = self._makeListOfClassesAttribute(
github.PullRequest.PullRequest, attributes["pull_requests"]
)
if "started_at" in attributes: # pragma no branch
self._started_at = self._makeDatetimeAttribute(attributes["started_at"])
if "status" in attributes: # pragma no branch
self._status = self._makeStringAttribute(attributes["status"])
if "url" in attributes: # pragma no branch
self._url = self._makeStringAttribute(attributes["url"])
+62
View File
@@ -0,0 +1,62 @@
from datetime import datetime
from typing import Any, Dict, List, Union
from github.CheckRunAnnotation import CheckRunAnnotation
from github.CheckRunOutput import CheckRunOutput
from github.GithubApp import GithubApp
from github.GithubObject import CompletableGithubObject, _NotSetType
from github.PaginatedList import PaginatedList
from github.PullRequest import PullRequest
class CheckRun(CompletableGithubObject):
def __repr__(self) -> str: ...
def _initAttributes(self) -> None: ...
def _useAttributes(self, attributes: Dict[str, Any]) -> None: ...
def get_annotations(self) -> PaginatedList[CheckRunAnnotation]: ...
def edit(
self,
name: Union[_NotSetType, str] = ...,
head_sha: Union[_NotSetType, str] = ...,
details_url: Union[_NotSetType, str] = ...,
external_id: Union[_NotSetType, str] = ...,
status: Union[_NotSetType, str] = ...,
started_at: Union[_NotSetType, datetime] = ...,
conclusion: Union[_NotSetType, str] = ...,
completed_at: Union[_NotSetType, datetime] = ...,
output: Union[
_NotSetType, Dict[str, Union[str, List[Dict[str, Union[str, int]]]]]
] = ...,
actions: Union[_NotSetType, List[Dict[str, str]]] = ...,
) -> None: ...
@property
def app(self) -> GithubApp: ...
@property
def check_suite_id(self) -> int: ...
@property
def completed_at(self) -> datetime: ...
@property
def conclusion(self) -> str: ...
@property
def details_url(self) -> str: ...
@property
def external_id(self) -> str: ...
@property
def head_sha(self) -> str: ...
@property
def html_url(self) -> str: ...
@property
def id(self) -> int: ...
@property
def name(self) -> str: ...
@property
def node_id(self) -> str: ...
@property
def output(self) -> CheckRunOutput: ...
@property
def pull_requests(self) -> List[PullRequest]: ...
@property
def started_at(self) -> datetime: ...
@property
def status(self) -> str: ...
@property
def url(self) -> str: ...
+131
View File
@@ -0,0 +1,131 @@
# -*- coding: utf-8 -*-
############################ Copyrights and license ############################
# #
# Copyright 2020 Dhruv Manilawala <dhruvmanila@gmail.com> #
# #
# This file is part of PyGithub. #
# http://pygithub.readthedocs.io/ #
# #
# PyGithub is free software: you can redistribute it and/or modify it under #
# the terms of the GNU Lesser General Public License as published by the Free #
# Software Foundation, either version 3 of the License, or (at your option) #
# any later version. #
# #
# PyGithub is distributed in the hope that it will be useful, but WITHOUT ANY #
# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS #
# FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more #
# details. #
# #
# You should have received a copy of the GNU Lesser General Public License #
# along with PyGithub. If not, see <http://www.gnu.org/licenses/>. #
# #
################################################################################
import github.GithubObject
class CheckRunAnnotation(github.GithubObject.NonCompletableGithubObject):
"""
This class represents check run annotations.
The reference can be found here: https://docs.github.com/en/rest/reference/checks#list-check-run-annotations
"""
def __repr__(self):
return self.get__repr__({"title": self._title.value})
@property
def annotation_level(self):
"""
:type: string
"""
return self._annotation_level.value
@property
def end_column(self):
"""
:type: integer
"""
return self._end_column.value
@property
def end_line(self):
"""
:type: integer
"""
return self._end_line.value
@property
def message(self):
"""
:type: string
"""
return self._message.value
@property
def path(self):
"""
:type: string
"""
return self._path.value
@property
def raw_details(self):
"""
:type: string
"""
return self._raw_details.value
@property
def start_column(self):
"""
:type: integer
"""
return self._start_column.value
@property
def start_line(self):
"""
:type: integer
"""
return self._start_line.value
@property
def title(self):
"""
:type: string
"""
return self._title.value
def _initAttributes(self):
self._annotation_level = github.GithubObject.NotSet
self._end_column = github.GithubObject.NotSet
self._end_line = github.GithubObject.NotSet
self._message = github.GithubObject.NotSet
self._path = github.GithubObject.NotSet
self._raw_details = github.GithubObject.NotSet
self._start_column = github.GithubObject.NotSet
self._start_line = github.GithubObject.NotSet
self._title = github.GithubObject.NotSet
def _useAttributes(self, attributes):
if "annotation_level" in attributes: # pragma no branch
self._annotation_level = self._makeStringAttribute(
attributes["annotation_level"]
)
if "end_column" in attributes: # pragma no branch
self._end_column = self._makeIntAttribute(attributes["end_column"])
if "end_line" in attributes: # pragma no branch
self._end_line = self._makeIntAttribute(attributes["end_line"])
if "message" in attributes: # pragma no branch
self._message = self._makeStringAttribute(attributes["message"])
if "path" in attributes: # pragma no branch
self._path = self._makeStringAttribute(attributes["path"])
if "raw_details" in attributes: # pragma no branch
self._raw_details = self._makeStringAttribute(attributes["raw_details"])
if "start_column" in attributes: # pragma no branch
self._start_column = self._makeIntAttribute(attributes["start_column"])
if "start_line" in attributes: # pragma no branch
self._start_line = self._makeIntAttribute(attributes["start_line"])
if "title" in attributes: # pragma no branch
self._title = self._makeStringAttribute(attributes["title"])
+26
View File
@@ -0,0 +1,26 @@
from typing import Any, Dict
from github.GithubObject import NonCompletableGithubObject
class CheckRunAnnotation(NonCompletableGithubObject):
def __repr__(self) -> str: ...
def _initAttributes(self) -> None: ...
def _useAttributes(self, attributes: Dict[str, Any]) -> None: ...
@property
def annotation_level(self) -> str: ...
@property
def end_column(self) -> int: ...
@property
def end_line(self) -> int: ...
@property
def message(self) -> str: ...
@property
def path(self) -> str: ...
@property
def raw_details(self) -> str: ...
@property
def start_column(self) -> int: ...
@property
def start_line(self) -> int: ...
@property
def title(self) -> str: ...
+90
View File
@@ -0,0 +1,90 @@
# -*- coding: utf-8 -*-
############################ Copyrights and license ############################
# #
# Copyright 2020 Dhruv Manilawala <dhruvmanila@gmail.com> #
# #
# This file is part of PyGithub. #
# http://pygithub.readthedocs.io/ #
# #
# PyGithub is free software: you can redistribute it and/or modify it under #
# the terms of the GNU Lesser General Public License as published by the Free #
# Software Foundation, either version 3 of the License, or (at your option) #
# any later version. #
# #
# PyGithub is distributed in the hope that it will be useful, but WITHOUT ANY #
# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS #
# FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more #
# details. #
# #
# You should have received a copy of the GNU Lesser General Public License #
# along with PyGithub. If not, see <http://www.gnu.org/licenses/>. #
# #
################################################################################
import github.GithubObject
class CheckRunOutput(github.GithubObject.NonCompletableGithubObject):
"""This class represents the output of check run."""
def __repr__(self):
return self.get__repr__({"title": self._title.value})
@property
def annotations_count(self):
"""
:type: integer
"""
return self._annotations_count.value
@property
def annotations_url(self):
"""
:type: string
"""
return self._annotations_url.value
@property
def summary(self):
"""
:type: string
"""
return self._summary.value
@property
def text(self):
"""
:type: string
"""
return self._text.value
@property
def title(self):
"""
:type: string
"""
return self._title.value
def _initAttributes(self):
self._annotations_count = github.GithubObject.NotSet
self._annotations_url = github.GithubObject.NotSet
self._summary = github.GithubObject.NotSet
self._text = github.GithubObject.NotSet
self._title = github.GithubObject.NotSet
def _useAttributes(self, attributes):
if "annotations_count" in attributes: # pragma no branch
self._annotations_count = self._makeIntAttribute(
attributes["annotations_count"]
)
if "annotations_url" in attributes: # pragma no branch
self._annotations_url = self._makeStringAttribute(
attributes["annotations_url"]
)
if "summary" in attributes: # pragma no branch
self._summary = self._makeStringAttribute(attributes["summary"])
if "text" in attributes: # pragma no branch
self._text = self._makeStringAttribute(attributes["text"])
if "title" in attributes: # pragma no branch
self._title = self._makeStringAttribute(attributes["title"])
+18
View File
@@ -0,0 +1,18 @@
from typing import Any, Dict
from github.GithubObject import NonCompletableGithubObject
class CheckRunOutput(NonCompletableGithubObject):
def __repr__(self) -> str: ...
def _initAttributes(self) -> None: ...
def _useAttributes(self, attributes: Dict[str, Any]) -> None: ...
@property
def annotations_count(self) -> int: ...
@property
def annotations_url(self) -> str: ...
@property
def summary(self) -> str: ...
@property
def text(self) -> str: ...
@property
def title(self) -> str: ...
+35
View File
@@ -32,6 +32,7 @@
# #
################################################################################
import github.CheckRun
import github.CommitCombinedStatus
import github.CommitComment
import github.CommitStats
@@ -258,6 +259,40 @@ class Commit(github.GithubObject.CompletableGithubObject):
headers={"Accept": "application/vnd.github.groot-preview+json"},
)
def get_check_runs(
self,
check_name=github.GithubObject.NotSet,
status=github.GithubObject.NotSet,
filter=github.GithubObject.NotSet,
):
"""
:calls: `GET /repos/:owner/:repo/commits/:sha/check-runs <https://docs.github.com/en/rest/reference/checks#list-check-runs-for-a-git-reference>`_
:param check_name: string
:param status: string
:param filter: string
:rtype: :class:`github.PaginatedList.PaginatedList` of :class:`github.CheckRun.CheckRun`
"""
assert check_name is github.GithubObject.NotSet or isinstance(
check_name, str
), check_name
assert status is github.GithubObject.NotSet or isinstance(status, str), status
assert filter is github.GithubObject.NotSet or isinstance(filter, str), filter
url_parameters = dict()
if check_name is not github.GithubObject.NotSet:
url_parameters["check_name"] = check_name
if status is not github.GithubObject.NotSet:
url_parameters["status"] = status
if status is not github.GithubObject.NotSet:
url_parameters["filter"] = filter
return github.PaginatedList.PaginatedList(
github.CheckRun.CheckRun,
self._requester,
self.url + "/check-runs",
url_parameters,
headers={"Accept": "application/vnd.github.v3+json"},
list_item="check_runs",
)
@property
def _identity(self):
return self.sha
+7
View File
@@ -1,5 +1,6 @@
from typing import Any, Dict, List, Union
from github.CheckRun import CheckRun
from github.CommitCombinedStatus import CommitCombinedStatus
from github.CommitComment import CommitComment
from github.CommitStats import CommitStats
@@ -43,6 +44,12 @@ class Commit(CompletableGithubObject):
def get_combined_status(self) -> CommitCombinedStatus: ...
def get_comments(self) -> PaginatedList[GitCommit]: ...
def get_statuses(self) -> PaginatedList[CommitStatus]: ...
def get_check_runs(
self,
check_name: Union[_NotSetType, str] = ...,
status: Union[_NotSetType, str] = ...,
filter: Union[_NotSetType, str] = ...,
) -> PaginatedList[CheckRun]: ...
@property
def html_url(self) -> str: ...
@property
+93
View File
@@ -93,6 +93,7 @@ from base64 import b64encode
from deprecated import deprecated
import github.Branch
import github.CheckRun
import github.Clones
import github.Commit
import github.CommitComment
@@ -3453,6 +3454,98 @@ class Repository(github.GithubObject.CompletableGithubObject):
self._requester, resp_headers, data, completed=True
)
def create_check_run(
self,
name,
head_sha,
details_url=github.GithubObject.NotSet,
external_id=github.GithubObject.NotSet,
status=github.GithubObject.NotSet,
started_at=github.GithubObject.NotSet,
conclusion=github.GithubObject.NotSet,
completed_at=github.GithubObject.NotSet,
output=github.GithubObject.NotSet,
actions=github.GithubObject.NotSet,
):
"""
:calls: `POST /repos/:owner/:repo/check-runs <https://docs.github.com/en/rest/reference/checks#create-a-check-run>`_
:param name: string
:param head_sha: string
:param details_url: string
:param external_id: string
:param status: string
:param started_at: datetime.datetime
:param conclusion: string
:param completed_at: datetime.datetime
:param output: dict
:param actions: list of dict
:rtype: :class:`github.CheckRun.CheckRun`
"""
assert isinstance(name, str), name
assert isinstance(head_sha, str), head_sha
assert details_url is github.GithubObject.NotSet or isinstance(
details_url, str
), details_url
assert external_id is github.GithubObject.NotSet or isinstance(
external_id, str
), external_id
assert status is github.GithubObject.NotSet or isinstance(status, str), status
assert started_at is github.GithubObject.NotSet or isinstance(
started_at, datetime.datetime
), started_at
assert conclusion is github.GithubObject.NotSet or isinstance(
conclusion, str
), conclusion
assert completed_at is github.GithubObject.NotSet or isinstance(
completed_at, datetime.datetime
), completed_at
assert output is github.GithubObject.NotSet or isinstance(output, dict), output
assert actions is github.GithubObject.NotSet or all(
isinstance(element, dict) for element in actions
), actions
post_parameters = {
"name": name,
"head_sha": head_sha,
}
if details_url is not github.GithubObject.NotSet:
post_parameters["details_url"] = details_url
if external_id is not github.GithubObject.NotSet:
post_parameters["external_id"] = external_id
if status is not github.GithubObject.NotSet:
post_parameters["status"] = status
if started_at is not github.GithubObject.NotSet:
post_parameters["started_at"] = started_at.strftime("%Y-%m-%dT%H:%M:%SZ")
if completed_at is not github.GithubObject.NotSet:
post_parameters["completed_at"] = completed_at.strftime(
"%Y-%m-%dT%H:%M:%SZ"
)
if conclusion is not github.GithubObject.NotSet:
post_parameters["conclusion"] = conclusion
if output is not github.GithubObject.NotSet:
post_parameters["output"] = output
if actions is not github.GithubObject.NotSet:
post_parameters["actions"] = actions
headers, data = self._requester.requestJsonAndCheck(
"POST",
self.url + "/check-runs",
input=post_parameters,
)
return github.CheckRun.CheckRun(self._requester, headers, data, completed=True)
def get_check_run(self, check_run_id):
"""
:calls: `GET /repos/:owner/:repo/check-runs/:check_run_id <https://docs.github.com/en/rest/reference/checks#get-a-check-run>`_
:param check_run_id: int
:rtype: :class:`github.CheckRun.CheckRun`
"""
assert isinstance(check_run_id, int), check_run_id
headers, data = self._requester.requestJsonAndCheck(
"GET", self.url + "/check-runs/" + str(check_run_id)
)
return github.CheckRun.CheckRun(self._requester, headers, data, completed=True)
def _initAttributes(self):
self._allow_merge_commit = github.GithubObject.NotSet
self._allow_rebase_merge = github.GithubObject.NotSet
+15
View File
@@ -3,6 +3,7 @@ from typing import Any, Dict, List, Optional, Union, overload
from github.AuthenticatedUser import AuthenticatedUser
from github.Branch import Branch
from github.CheckRun import CheckRun
from github.Clones import Clones
from github.Commit import Commit
from github.CommitComment import CommitComment
@@ -98,6 +99,19 @@ class Repository(CompletableGithubObject):
def contents_url(self) -> str: ...
@property
def contributors_url(self) -> str: ...
def create_check_run(
self,
name: str = ...,
head_sha: str = ...,
details_url: Union[_NotSetType, str] = ...,
external_id: Union[_NotSetType, str] = ...,
status: Union[_NotSetType, str] = ...,
started_at: Union[_NotSetType, datetime] = ...,
conclusion: Union[_NotSetType, str] = ...,
completed_at: Union[_NotSetType, datetime] = ...,
output: Union[_NotSetType, Dict[str, Union[str, List[Dict[str, Union[str, int]]]]]] = ...,
actions: Union[_NotSetType, List[Dict[str, str]]] = ...,
) -> CheckRun: ...
def create_file(
self,
path: str,
@@ -254,6 +268,7 @@ class Repository(CompletableGithubObject):
def get_assignees(self) -> PaginatedList[NamedUser]: ...
def get_branch(self, branch: str) -> Branch: ...
def get_branches(self) -> PaginatedList[Branch]: ...
def get_check_run(self, check_run_id: int) -> CheckRun: ...
def get_clones_traffic(
self, per: Union[str, _NotSetType] = ...
) -> Dict[str, Union[int, List[Clones]]]: ...