(
self,
diff: ghstack.diff.Diff,
base_diff_meta: Optional[DiffMeta],
ghnum: GhNumber,
)
| 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: |
no test coverage detected