Skip to content

Commit 5ce7702

Browse files
committed
fix: nitpack and outside diff comments
1 parent dd5a01b commit 5ce7702

2 files changed

Lines changed: 23 additions & 5 deletions

File tree

models/parse_warnings.py

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
from __future__ import annotations
22

3-
from dataclasses import dataclass
3+
from dataclasses import dataclass, field
44

55

66
@dataclass
@@ -10,6 +10,7 @@ class ParseWarningCollector:
1010
composers_skipped: int = 0
1111
bubbles_skipped: int = 0
1212
composers_processing_failed: int = 0
13+
source_failures: list[dict] = field(default_factory=list)
1314

1415
def record_composer_skipped(self, count: int = 1) -> None:
1516
if count > 0:
@@ -24,12 +25,22 @@ def record_composer_processing_failure(self, count: int = 1) -> None:
2425
if count > 0:
2526
self.composers_processing_failed += count
2627

28+
def record_source_failure(self, exc: BaseException, source: str) -> None:
29+
"""Record a whole-source failure (e.g. the global storage DB is unreadable).
30+
31+
Distinct from per-item parse skips: signals that an entire data source
32+
could not be searched so the API can warn callers that results may be
33+
incomplete.
34+
"""
35+
self.source_failures.append({"source": source, "detail": str(exc)})
36+
2737
@property
2838
def has_warnings(self) -> bool:
2939
return (
3040
self.composers_skipped > 0
3141
or self.bubbles_skipped > 0
3242
or self.composers_processing_failed > 0
43+
or bool(self.source_failures)
3344
)
3445

3546
def to_api_list(self) -> list[dict]:
@@ -65,6 +76,12 @@ def to_api_list(self) -> list[dict]:
6576
f"{n} {noun} could not be fully assembled after parsing"
6677
),
6778
})
79+
for sf in self.source_failures:
80+
warnings.append({
81+
"type": "source_failure",
82+
"source": sf["source"],
83+
"detail": sf["detail"],
84+
})
6885
return warnings
6986

7087
def attach_to(self, payload: dict) -> dict:

services/search.py

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -26,10 +26,10 @@
2626
from pathlib import Path
2727

2828
__all__ = [
29+
"rank_results",
30+
"search_cli_sessions",
2931
"search_global_storage",
3032
"search_legacy_workspaces",
31-
"search_cli_sessions",
32-
"rank_results",
3333
]
3434
from models import Bubble, Composer, ParseWarningCollector, SchemaError
3535
from services.workspace_db import (
@@ -334,8 +334,9 @@ def search_global_storage(
334334
)
335335
parse_warnings.record_composer_processing_failure()
336336

337-
except Exception:
337+
except Exception as exc:
338338
_logger.exception("Error searching global storage")
339+
parse_warnings.record_source_failure(exc, source="global_storage")
339340

340341
return results
341342

@@ -568,7 +569,7 @@ def _ts(r: dict) -> float:
568569
t = r.get("timestamp", 0)
569570
if isinstance(t, str):
570571
try:
571-
# .timestamp() epoch-seconds; ×1000 → epoch-ms to match ints
572+
# .timestamp() -> epoch-seconds; x1000 -> epoch-ms to match ints
572573
return datetime.fromisoformat(t.replace("Z", "+00:00")).timestamp() * 1000
573574
except Exception:
574575
return 0.0

0 commit comments

Comments
 (0)