fix: resolve CI linting errors - remove unused imports and update type annotations
Some checks failed
CI / test (3.10) (push) Has been cancelled
CI / test (3.11) (push) Has been cancelled
CI / test (3.12) (push) Has been cancelled
CI / lint (push) Has been cancelled
CI / build (push) Has been cancelled

This commit is contained in:
2026-02-02 14:39:09 +00:00
parent 4e81287aca
commit 7e4e1a68a8

View File

@@ -1,7 +1,6 @@
"""Data models for git diff parsing and analysis."""
from dataclasses import dataclass, field
from typing import Optional
@dataclass
@@ -16,6 +15,7 @@ class DiffHunk:
header: str = ""
def get_added_lines(self) -> list[tuple[int, str]]:
"""Return tuples of (line_number, content) for added lines."""
result = []
for i, line in enumerate(self.new_lines_content):
if line.startswith('+') and not line.startswith('+++'):
@@ -23,6 +23,7 @@ class DiffHunk:
return result
def get_removed_lines(self) -> list[tuple[int, str]]:
"""Return tuples of (line_number, content) for removed lines."""
result = []
for i, line in enumerate(self.old_lines_content):
if line.startswith('-') and not line.startswith('---'):
@@ -30,6 +31,7 @@ class DiffHunk:
return result
def get_modified_lines(self) -> list[tuple[int, str, str]]:
"""Return tuples of (old_line, old_content, new_content) for modified lines."""
result = []
added = self.get_added_lines()
removed = self.get_removed_lines()
@@ -44,36 +46,41 @@ class DiffHunk:
@dataclass
class DiffFile:
"""Represents a file in the diff with its changes."""
old_path: Optional[str]
new_path: Optional[str]
new_file_mode: Optional[str] = None
deleted_file_mode: Optional[str] = None
similarity_index: Optional[str] = None
rename_from: Optional[str] = None
rename_to: Optional[str] = None
old_path: str | None
new_path: str | None
new_file_mode: str | None = None
deleted_file_mode: str | None = None
similarity_index: str | None = None
rename_from: str | None = None
rename_to: str | None = None
hunks: list[DiffHunk] = field(default_factory=list)
change_type: str = "modify"
@property
def filename(self) -> str:
"""Get the current filename."""
if self.new_path:
return self.new_path
return self.old_path or ""
@property
def is_new(self) -> bool:
"""Check if this is a new file."""
return self.new_file_mode is not None or self.old_path in [None, "/dev/null"]
@property
def is_deleted(self) -> bool:
"""Check if this file was deleted."""
return self.deleted_file_mode is not None
@property
def is_rename(self) -> bool:
"""Check if this file was renamed."""
return self.rename_from is not None
@property
def extension(self) -> str:
"""Get the file extension."""
filename = self.filename
if '.' in filename:
return filename.rsplit('.', 1)[-1].lower()
@@ -84,7 +91,7 @@ class DiffFile:
class CodeChange:
"""Represents a code change with context."""
file: DiffFile
hunk: Optional[DiffHunk]
hunk: DiffHunk | None
old_code: str
new_code: str
language: str = "unknown"