refactor: replace Any types with specific types and update bad_code.md

- Replace Any with object or specific types across codebase
- Add ReviewRequest dataclass for PR review payloads
- Update bad_code.md: mark 5.1 (Any Type Overuse) as resolved
- Fix summary table with accurate counts and unresolved issues list
This commit is contained in:
meeks
2026-07-19 15:35:17 +02:00
parent aa9e8222a3
commit ae4e2d46ac
13 changed files with 326 additions and 169 deletions
+18 -11
View File
@@ -1,7 +1,8 @@
"""Pull Requests client for Gitea API operations."""
import logging
from typing import Any, Callable
from dataclasses import dataclass
from typing import Callable
import httpx
@@ -17,6 +18,12 @@ from .models import (
logger: logging.Logger = logging.getLogger("gitea.prs_client")
@dataclass
class ReviewRequest:
event: str
body: str
class PullRequestsClient:
"""HTTP client for Gitea Pull Requests API operations."""
@@ -288,7 +295,7 @@ class PullRequestsClient:
"""
try:
url = f"{self.base_url}/api/v1/repos/{owner}/{repo}/pulls/{pull_number}"
data: dict[str, Any] = {}
data: dict[str, str | None] = {}
if title is not None:
data["title"] = title
if body is not None:
@@ -322,7 +329,7 @@ class PullRequestsClient:
def approve_pr(
self, owner: str, repo: str, pr_number: int, comment: str
) -> dict[str, Any]:
) -> dict[str, object]:
"""Approve a pull request.
Args:
@@ -335,14 +342,14 @@ class PullRequestsClient:
The review response.
"""
url = f"{self.base_url}/api/v1/repos/{owner}/{repo}/pulls/{pr_number}/reviews"
data: dict[str, Any] = {"event": "APPROVED", "body": comment}
response = self.client.post(url, json=data)
review: ReviewRequest = ReviewRequest(event="APPROVED", body=comment)
response = self.client.post(url, json={"event": review.event, "body": review.body})
response.raise_for_status()
return response.json()
def request_changes_pr(
self, owner: str, repo: str, pr_number: int, comment: str
) -> dict[str, Any]:
) -> dict[str, object]:
"""Request changes on a pull request.
Args:
@@ -355,14 +362,14 @@ class PullRequestsClient:
The review response.
"""
url = f"{self.base_url}/api/v1/repos/{owner}/{repo}/pulls/{pr_number}/reviews"
data: dict[str, Any] = {"event": "REQUEST_CHANGES", "body": comment}
response = self.client.post(url, json=data)
review: ReviewRequest = ReviewRequest(event="REQUEST_CHANGES", body=comment)
response = self.client.post(url, json={"event": review.event, "body": review.body})
response.raise_for_status()
return response.json()
def get_pr_reviews(
self, owner: str, repo: str, pr_number: int
) -> list[dict[str, Any]]:
) -> list[dict[str, object]]:
"""Get reviews for a pull request.
Args:
@@ -382,7 +389,7 @@ class PullRequestsClient:
def dismiss_review_pr(
self, owner: str, repo: str, pr_number: int, review_id: int, message: str
) -> dict[str, Any]:
) -> dict[str, object]:
"""Dismiss a review on a pull request.
Args:
@@ -447,7 +454,7 @@ class PullRequestsClient:
url = (
f"{self.base_url}/api/v1/repos/{owner}/{repo}/pulls/{pull_number}/merge"
)
data: dict[str, Any] = {
data: dict[str, str] = {
"Do": style,
"MergeTitleField": title,
"MergeMessageField": message,