in sync/gh.py [0:0]
def _construct_check_data(self,
name: str,
commit_sha: Optional[str] = None,
check_id: Optional[int] = None,
url: Optional[str] = None,
external_id: Optional[str] = None,
status: Optional[str] = None,
started_at: Optional[datetime] = None,
conclusion: Optional[str] = None,
completed_at: Optional[datetime] = None,
output: Optional[Dict[str, str]] = None,
actions: Optional[Any] = None,
) -> Tuple[str, Dict[str, Any]]:
if check_id is not None and commit_sha is not None:
raise ValueError("Only one of check_id and commit_sha may be supplied")
if status is not None:
if status not in ("queued", "in_progress", "completed"):
raise ValueError("Invalid status %s" % status)
if started_at is not None:
started_at_text: Optional[str] = started_at.isoformat()
else:
started_at_text = None
if status == "completed" and conclusion is None:
raise ValueError("Got a completed status but no conclusion")
if conclusion is not None and completed_at is None:
raise ValueError("Got a conclusion but no completion time")
if conclusion is not None:
if conclusion not in ("success", "failure", "neutral", "cancelled",
"timed_out", "action_required"):
raise ValueError("Invalid conclusion %s" % conclusion)
if completed_at is not None:
completed_at_text = completed_at.isoformat()
if output is not None:
if "title" not in output:
raise ValueError("Output requires a title")
if "summary" not in output:
raise ValueError("Output requires a summary")
req_data: Dict[str, Any] = {
"name": name,
}
for (name, value) in [("head_sha", commit_sha),
("id", check_id),
("url", url),
("external_id", external_id),
("status", status),
("started_at", started_at_text),
("conclusion", conclusion),
("completed_at", completed_at_text),
("output", output),
("actions", actions)]:
req_data[name] = value
req_method = "POST" if check_id is None else "PATCH"
return req_method, req_data