MCPcopy Create free account
hub / github.com/ezyang/ghstack / _create_pull_request

Method _create_pull_request

src/ghstack/submit.py:1456–1544  ·  view source on GitHub ↗
(
        self,
        diff: ghstack.diff.Diff,
        base_diff_meta: Optional[DiffMeta],
        ghnum: GhNumber,
    )

Source from the content-addressed store, hash-verified

1454 return push_branches, base_branch
1455
1456 def _create_pull_request(
1457 self,
1458 diff: ghstack.diff.Diff,
1459 base_diff_meta: Optional[DiffMeta],
1460 ghnum: GhNumber,
1461 ) -> DiffWithGitHubMetadata:
1462 title, body = self._default_title_and_body(diff, None)
1463 head_ref = branch_head(self.username, ghnum)
1464
1465 if self.direct:
1466 if base_diff_meta is None:
1467 base_ref = self.base
1468 else:
1469 base_ref = branch_head(base_diff_meta.username, base_diff_meta.ghnum)
1470 else:
1471 base_ref = branch_base(self.username, ghnum)
1472
1473 # Time to open the PR
1474 # NB: GraphQL API does not support opening PRs
1475 r = self.github.post(
1476 "repos/{owner}/{repo}/pulls".format(
1477 owner=self.repo_owner, repo=self.repo_name
1478 ),
1479 title=title,
1480 head=head_ref,
1481 base=base_ref,
1482 body=body,
1483 maintainer_can_modify=True,
1484 draft=self.draft,
1485 )
1486 number = r["number"]
1487
1488 comment_id = None
1489 if self.direct:
1490 rc = self.github.post(
1491 f"repos/{self.repo_owner}/{self.repo_name}/issues/{number}/comments",
1492 body=f"{self.stack_header}:\n* (to be filled)",
1493 )
1494 comment_id = rc["id"]
1495
1496 # Add reviewers if specified
1497 if self.reviewer:
1498 reviewers = [r.strip() for r in self.reviewer.split(",") if r.strip()]
1499 if reviewers:
1500 try:
1501 self.github.post(
1502 f"repos/{self.repo_owner}/{self.repo_name}/pulls/{number}/requested_reviewers",
1503 reviewers=reviewers,
1504 )
1505 logging.info(f"Added reviewers: {', '.join(reviewers)}")
1506 except Exception as e:
1507 logging.warning(f"Failed to add reviewers: {e}")
1508
1509 # Add labels if specified
1510 if self.label:
1511 labels = [label.strip() for label in self.label.split(",") if label.strip()]
1512 if labels:
1513 try:

Callers 1

process_commitMethod · 0.95

Calls 6

branch_headFunction · 0.85
branch_baseFunction · 0.85
formatMethod · 0.80
postMethod · 0.45

Tested by

no test coverage detected