fix: resolve CI linting and type checking errors
Some checks failed
CI / test (push) Has been cancelled

This commit is contained in:
2026-02-04 05:57:52 +00:00
parent 8fffa89be8
commit 8d48b3da87

View File

@@ -4,11 +4,10 @@ import os
import re import re
import time import time
from dataclasses import dataclass, field from dataclasses import dataclass, field
from typing import Any, Dict, List, Optional from typing import Any, Optional
from github import Github from github import Github
from github.Issue import Issue from github.Issue import Issue
from github.Label import Label
@dataclass @dataclass
@@ -29,25 +28,25 @@ class IssueData:
title: str title: str
body: str body: str
body_html: str body_html: str
labels: List[str] labels: list[str]
state: str state: str
url: str url: str
repository: str repository: str
author: str author: str
created_at: str created_at: str
updated_at: str updated_at: str
checklist: List[ChecklistItem] = field(default_factory=list) checklist: list[ChecklistItem] = field(default_factory=list)
requirements: List[str] = field(default_factory=list) requirements: list[str] = field(default_factory=list)
acceptance_criteria: List[str] = field(default_factory=list) acceptance_criteria: list[str] = field(default_factory=list)
suggested_files: List[str] = field(default_factory=list) suggested_files: list[str] = field(default_factory=list)
suggested_directories: List[str] = field(default_factory=list) suggested_directories: list[str] = field(default_factory=list)
metadata: Dict[str, Any] = field(default_factory=dict) metadata: dict[str, Any] = field(default_factory=dict)
def get_todo_items(self) -> List[str]: def get_todo_items(self) -> list[str]:
"""Get all todo items from checklist.""" """Get all todo items from checklist."""
return [item.text for item in self.checklist if not item.completed] return [item.text for item in self.checklist if not item.completed]
def get_completed_items(self) -> List[str]: def get_completed_items(self) -> list[str]:
"""Get completed checklist items.""" """Get completed checklist items."""
return [item.text for item in self.checklist if item.completed] return [item.text for item in self.checklist if item.completed]
@@ -109,6 +108,7 @@ class IssueParser:
time.sleep(60 * (attempt + 1)) time.sleep(60 * (attempt + 1))
else: else:
raise raise
raise ValueError(f"Failed to fetch issue after {max_retries} retries")
def _extract_issue_data(self, issue: Issue, repository: str) -> IssueData: def _extract_issue_data(self, issue: Issue, repository: str) -> IssueData:
"""Extract structured data from a GitHub issue. """Extract structured data from a GitHub issue.
@@ -147,7 +147,7 @@ class IssueParser:
suggested_directories=suggested_directories, suggested_directories=suggested_directories,
) )
def _parse_checklist(self, body: str) -> List[ChecklistItem]: def _parse_checklist(self, body: str) -> list[ChecklistItem]:
"""Parse markdown checklist items from issue body. """Parse markdown checklist items from issue body.
Args: Args:
@@ -156,24 +156,21 @@ class IssueParser:
Returns: Returns:
List of ChecklistItem objects. List of ChecklistItem objects.
""" """
checklist = [] checklist: list[ChecklistItem] = []
if not body: if not body:
return checklist return checklist
lines = body.split("\n") lines = body.split("\n")
in_checklist = False current_category: str | None = None
current_category = None
for i, line in enumerate(lines): for i, line in enumerate(lines):
category_match = re.match(r"^\s*(?:###|##|#)\s+(.+)", line) category_match = re.match(r"^\s*(?:###|##|#)\s+(.+)", line)
if category_match: if category_match:
current_category = category_match.group(1) current_category = category_match.group(1)
in_checklist = False
continue continue
checklist_match = re.match(r"^\s*[-*]\s+\[([ xX])\]\s+(.+)$", line) checklist_match = re.match(r"^\s*[-*]\s+\[([ xX])\]\s+(.+)$", line)
if checklist_match: if checklist_match:
in_checklist = True
checked = checklist_match.group(1).lower() == "x" checked = checklist_match.group(1).lower() == "x"
text = checklist_match.group(2).strip() text = checklist_match.group(2).strip()
checklist.append( checklist.append(
@@ -187,7 +184,7 @@ class IssueParser:
return checklist return checklist
def _parse_requirements(self, body: str) -> List[str]: def _parse_requirements(self, body: str) -> list[str]:
"""Parse requirements from issue body. """Parse requirements from issue body.
Args: Args:
@@ -196,7 +193,7 @@ class IssueParser:
Returns: Returns:
List of requirement strings. List of requirement strings.
""" """
requirements = [] requirements: list[str] = []
if not body: if not body:
return requirements return requirements
@@ -216,7 +213,7 @@ class IssueParser:
return requirements return requirements
def _parse_acceptance_criteria(self, body: str) -> List[str]: def _parse_acceptance_criteria(self, body: str) -> list[str]:
"""Parse acceptance criteria from issue body. """Parse acceptance criteria from issue body.
Args: Args:
@@ -225,7 +222,7 @@ class IssueParser:
Returns: Returns:
List of acceptance criteria strings. List of acceptance criteria strings.
""" """
criteria = [] criteria: list[str] = []
if not body: if not body:
return criteria return criteria
@@ -245,7 +242,7 @@ class IssueParser:
return criteria return criteria
def _parse_file_paths(self, body: str) -> List[str]: def _parse_file_paths(self, body: str) -> list[str]:
"""Parse suggested file paths from issue body. """Parse suggested file paths from issue body.
Args: Args:
@@ -254,7 +251,7 @@ class IssueParser:
Returns: Returns:
List of file path strings. List of file path strings.
""" """
files = [] files: list[str] = []
if not body: if not body:
return files return files
@@ -271,7 +268,7 @@ class IssueParser:
return list(set(files)) return list(set(files))
def _parse_directory_paths(self, body: str) -> List[str]: def _parse_directory_paths(self, body: str) -> list[str]:
"""Parse suggested directory paths from issue body. """Parse suggested directory paths from issue body.
Args: Args:
@@ -280,7 +277,7 @@ class IssueParser:
Returns: Returns:
List of directory path strings. List of directory path strings.
""" """
directories = [] directories: list[str] = []
if not body: if not body:
return directories return directories