Ruff after aider
All checks were successful
Run Python tests (through Pytest) / Test (push) Successful in 25s
Verify Python project can be installed, loaded and have version checked / Test (push) Successful in 22s

This commit is contained in:
Jon Michael Aanes 2025-04-15 23:35:59 +02:00
parent 6aa2a3fcc4
commit 3fa44e08d8
4 changed files with 42 additions and 40 deletions

View File

@ -243,19 +243,21 @@ def push_changes(
base=base_branch,
labels=['aider'],
)
# Extract PR number and URL if available
pr_number = None
pr_url = None
if pr_response and isinstance(pr_response, dict):
pr_number = str(pr_response.get('number'))
pr_url = pr_response.get('html_url')
# Store PR information in the database if available
if seen_issues_db and issue_text and pr_number and pr_url:
seen_issues_db.update_pr_info(issue_text, pr_number, pr_url)
logger.info('Stored PR #%s information for issue #%s', pr_number, issue_number)
logger.info(
'Stored PR #%s information for issue #%s', pr_number, issue_number,
)
return True, pr_number, pr_url
@ -379,7 +381,7 @@ def solve_issue_in_repository(
# Create issue_text for database tracking
issue_text = f'{issue_title}\n{issue_description}'
# Push changes
success, pr_number, pr_url = push_changes(
tmpdirname,
@ -393,7 +395,7 @@ def solve_issue_in_repository(
seen_issues_db,
issue_text,
)
return success

View File

@ -7,7 +7,6 @@ store information about seen issues and their associated pull requests for effic
import sqlite3
from hashlib import sha256
from typing import Optional, Tuple
DEFAULT_DB_PATH = 'output/seen_issues.db'
@ -16,8 +15,8 @@ class SeenIssuesDB:
"""Database handler for tracking processed issues and pull requests.
This class manages a SQLite database that stores information about issues that have
already been processed and their associated pull requests. It provides methods to mark
issues as seen, check if an issue has been seen before, and retrieve pull request
already been processed and their associated pull requests. It provides methods to mark
issues as seen, check if an issue has been seen before, and retrieve pull request
information for an issue.
Attributes:
@ -49,7 +48,13 @@ class SeenIssuesDB:
)
""")
def mark_as_seen(self, issue_text: str, issue_number: str = None, pr_number: str = None, pr_url: str = None):
def mark_as_seen(
self,
issue_text: str,
issue_number: str = None,
pr_number: str = None,
pr_url: str = None,
):
"""Mark an issue as seen in the database.
Computes a hash of the issue text and stores it in the database along with pull request information.
@ -86,7 +91,7 @@ class SeenIssuesDB:
)
return cursor.fetchone() is not None
def get_pr_info(self, issue_text: str) -> Optional[Tuple[str, str]]:
def get_pr_info(self, issue_text: str) -> tuple[str, str] | None:
"""Get pull request information for an issue.
Args:

View File

@ -1,8 +1,5 @@
import os
import tempfile
from pathlib import Path
import pytest
from aider_gitea.seen_issues_db import SeenIssuesDB
@ -12,12 +9,12 @@ class TestSeenIssuesDBPRInfo:
# Create a temporary database file
self.db_fd, self.db_path = tempfile.mkstemp()
self.db = SeenIssuesDB(self.db_path)
# Test data
self.issue_text = "Test issue title\nTest issue description"
self.issue_number = "123"
self.pr_number = "456"
self.pr_url = "https://gitea.example.com/owner/repo/pulls/456"
self.issue_text = 'Test issue title\nTest issue description'
self.issue_number = '123'
self.pr_number = '456'
self.pr_url = 'https://gitea.example.com/owner/repo/pulls/456'
def teardown_method(self):
# Close and remove the temporary database
@ -28,15 +25,15 @@ class TestSeenIssuesDBPRInfo:
def test_mark_as_seen_with_pr_info(self):
# Mark an issue as seen with PR info
self.db.mark_as_seen(
self.issue_text,
self.issue_text,
issue_number=self.issue_number,
pr_number=self.pr_number,
pr_url=self.pr_url
pr_number=self.pr_number,
pr_url=self.pr_url,
)
# Verify the issue is marked as seen
assert self.db.has_seen(self.issue_text)
# Verify PR info is stored correctly
pr_info = self.db.get_pr_info(self.issue_text)
assert pr_info is not None
@ -46,20 +43,16 @@ class TestSeenIssuesDBPRInfo:
def test_update_pr_info(self):
# First mark the issue as seen without PR info
self.db.mark_as_seen(self.issue_text, issue_number=self.issue_number)
# Verify no PR info is available
assert self.db.get_pr_info(self.issue_text) == (None, None)
# Update with PR info
updated = self.db.update_pr_info(
self.issue_text,
self.pr_number,
self.pr_url
)
updated = self.db.update_pr_info(self.issue_text, self.pr_number, self.pr_url)
# Verify update was successful
assert updated
# Verify PR info is now available
pr_info = self.db.get_pr_info(self.issue_text)
assert pr_info[0] == self.pr_number
@ -68,17 +61,15 @@ class TestSeenIssuesDBPRInfo:
def test_update_nonexistent_issue(self):
# Try to update PR info for an issue that doesn't exist
updated = self.db.update_pr_info(
"Nonexistent issue",
self.pr_number,
self.pr_url
'Nonexistent issue', self.pr_number, self.pr_url,
)
# Verify update failed
assert not updated
def test_get_pr_info_nonexistent(self):
# Try to get PR info for an issue that doesn't exist
pr_info = self.db.get_pr_info("Nonexistent issue")
pr_info = self.db.get_pr_info('Nonexistent issue')
# Verify no PR info is available
assert pr_info is None

View File

@ -32,7 +32,11 @@ class TestSolveIssueInRepository:
):
# Setup mocks
mock_run_cmd.return_value = True
mock_push_changes.return_value = (True, '456', 'https://gitea.example.com/test-owner/test-repo/pulls/456')
mock_push_changes.return_value = (
True,
'456',
'https://gitea.example.com/test-owner/test-repo/pulls/456',
)
# Mock subprocess.run to return different commit hashes and file changes
mock_subprocess_run.side_effect = [