def _construct_check_data()

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