Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
113 changes: 54 additions & 59 deletions backend/issuescout/scanner/engine.py
Original file line number Diff line number Diff line change
Expand Up @@ -63,27 +63,23 @@ async def scan_repository(
progress_callback: ProgressCallback | None = None,
) -> ScanResult:

try:
context = await self.fetcher.fetch_context(
owner,
repo,
)
finally:
await self.fetcher.close()

issues = context.issues
context = await self.fetcher.fetch_context(
owner,
repo,
)

processed = 0
try:
issues = context.issues

total = len(issues)
processed = 0
total = len(issues)

if progress_callback is not None:
progress_callback(
processed,
total,
)
if progress_callback is not None:
progress_callback(
processed,
total,
)

try:
results = await asyncio.gather(
*[
self._detect_linked_pr(
Expand All @@ -97,53 +93,52 @@ async def scan_repository(
for issue_number, linked_pr in results:
context.linked_pr_cache[issue_number] = linked_pr

finally:
await self.detector.close()

summaries = []
summaries = []

for issue in issues:
results = await self.pipeline.run(
context,
issue,
)
for issue in issues:
results = await self.pipeline.run(
context,
issue,
)

if not all(result.passed for result in results):
continue
if not all(result.passed for result in results):
continue

linked_pr = context.linked_pr_cache.get(
issue.number,
)
linked_pr = context.linked_pr_cache.get(
issue.number,
)

summaries.append(
IssueSummary(
number=issue.number,
title=issue.title,
assigned=issue.assigned,
assignee=issue.assignee,
confidence=self.confidence.calculate(
results,
),
linked_pr_number=(
linked_pr.number if linked_pr is not None else None
),
linked_pr_title=(
linked_pr.title if linked_pr is not None else None
),
summaries.append(
IssueSummary(
number=issue.number,
title=issue.title,
assigned=issue.assigned,
assignee=issue.assignee,
confidence=self.confidence.calculate(results),
linked_pr_number=(
linked_pr.number if linked_pr is not None else None
),
linked_pr_title=(
linked_pr.title if linked_pr is not None else None
),
)
)
)

processed += 1
processed += 1

if progress_callback is not None:
progress_callback(
processed,
total,
)
if progress_callback is not None:
progress_callback(
processed,
total,
)

return ScanResult(
repository=f"{owner}/{repo}",
total_issues=len(summaries),
available_issues=len(summaries),
issues=summaries,
)
return ScanResult(
repository=f"{owner}/{repo}",
total_issues=len(summaries),
available_issues=len(summaries),
issues=summaries,
)

finally:
await self.detector.close()
await self.fetcher.close()
Loading