From 7145d4f72e087b58768c819b1ebedb96e63c1577 Mon Sep 17 00:00:00 2001 From: Jon Michael Aanes Date: Mon, 9 Jun 2025 13:37:38 +0200 Subject: [PATCH] Ruff after Claude Code --- aider_gitea/__init__.py | 4 ++ aider_gitea/__main__.py | 10 +++++ aider_gitea/gitea_client.py | 76 ++++++++++++++++++++++++++++++++++++- 3 files changed, 88 insertions(+), 2 deletions(-) diff --git a/aider_gitea/__init__.py b/aider_gitea/__init__.py index 9fe3f23..ebd4b57 100644 --- a/aider_gitea/__init__.py +++ b/aider_gitea/__init__.py @@ -156,6 +156,8 @@ class RepositoryConfig: owner: str repo: str base_branch: str + assignee: str | None = None + reviewer: str | None = None def repo_url(self) -> str: return f'{self.gitea_url}:{self.owner}/{self.repo}.git'.replace( @@ -506,6 +508,8 @@ def push_changes( head=branch_name, base=repository_config.base_branch, labels=['aider'], + assignee=repository_config.assignee, + reviewer=repository_config.reviewer, ) # Extract PR number and URL if available diff --git a/aider_gitea/__main__.py b/aider_gitea/__main__.py index e9ab35e..83bc582 100644 --- a/aider_gitea/__main__.py +++ b/aider_gitea/__main__.py @@ -55,6 +55,14 @@ def parse_args(): help='Model to use for evaluating code (overrides default)', default=None, ) + parser.add_argument( + '--assignee', + help='Username to assign as the assignee for created pull requests', + ) + parser.add_argument( + '--reviewer', + help='Username to assign as the reviewer for created pull requests', + ) return parser.parse_args() @@ -84,6 +92,8 @@ def main(): owner=args.owner, repo=repo, base_branch=args.base_branch, + assignee=args.assignee, + reviewer=args.reviewer, ) solve_issues_in_repository(repository_config, client, seen_issues_db) del repo diff --git a/aider_gitea/gitea_client.py b/aider_gitea/gitea_client.py index bf90768..75e3f4f 100644 --- a/aider_gitea/gitea_client.py +++ b/aider_gitea/gitea_client.py @@ -139,8 +139,10 @@ class GiteaClient: head: str, base: str, labels: list[str] = None, + assignee: str | None = None, + reviewer: str | None = None, ) -> dict: - """Create a pull request and optionally apply labels. + """Create a pull request and optionally apply labels, assignee, and reviewer. Args: owner (str): Owner of the repository. @@ -150,6 +152,8 @@ class GiteaClient: head (str): The name of the branch where changes are implemented. base (str): The name of the branch you want the changes pulled into. labels (list[str], optional): List of label names to apply to the pull request. + assignee (str, optional): Username to assign as the assignee. + reviewer (str, optional): Username to assign as the reviewer. Returns: dict: The created pull request data. @@ -183,7 +187,75 @@ class GiteaClient: # fallback to raise if we can’t find it response.raise_for_status() response.raise_for_status() - return response.json() + + pr_data = response.json() + pr_number = pr_data.get('number') + + # Assign assignee if specified + if assignee and pr_number: + self._assign_to_pull_request(owner, repo, pr_number, assignee) + + # Assign reviewer if specified + if reviewer and pr_number: + self._assign_reviewer_to_pull_request(owner, repo, pr_number, reviewer) + + return pr_data + + def _assign_to_pull_request( + self, + owner: str, + repo: str, + pr_number: int, + assignee: str, + ) -> None: + """Assign a user to a pull request. + + Args: + owner (str): Owner of the repository. + repo (str): Name of the repository. + pr_number (int): Pull request number. + assignee (str): Username to assign. + """ + url = f'{self.gitea_url}/repos/{owner}/{repo}/issues/{pr_number}/assignees' + json_data = {'assignees': [assignee]} + response = self.session.post(url, json=json_data) + if response.status_code != 201: + logger.warning( + 'Failed to assign user %s to PR #%s: %s', + assignee, + pr_number, + response.text, + ) + else: + logger.info('Assigned user %s to PR #%s', assignee, pr_number) + + def _assign_reviewer_to_pull_request( + self, + owner: str, + repo: str, + pr_number: int, + reviewer: str, + ) -> None: + """Assign a reviewer to a pull request. + + Args: + owner (str): Owner of the repository. + repo (str): Name of the repository. + pr_number (int): Pull request number. + reviewer (str): Username to assign as reviewer. + """ + url = f'{self.gitea_url}/repos/{owner}/{repo}/pulls/{pr_number}/requested_reviewers' + json_data = {'reviewers': [reviewer]} + response = self.session.post(url, json=json_data) + if response.status_code != 201: + logger.warning( + 'Failed to assign reviewer %s to PR #%s: %s', + reviewer, + pr_number, + response.text, + ) + else: + logger.info('Assigned reviewer %s to PR #%s', reviewer, pr_number) def get_failed_pipelines(self, owner: str, repo: str, pr_number: str) -> list[int]: """Fetch pipeline runs for a PR and return IDs of failed runs."""