fix(notion-search): tighten cache type hints + deterministic TTL=0
Code review polish: - Type hints: List → List[Dict[str, Any]] for cache_get return and cache_put results parameter, since rerank produces dict-shaped entries. - TTL=0 short-circuits to None deterministically. Previously the test for ttl_seconds=0 passed only because clock motion between cache_put and cache_get made `time.time() - cached_at > 0` true. Now the semantics match the docstring intent. 8/8 tests still pass. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -6,7 +6,7 @@ import hashlib
|
|||||||
import json
|
import json
|
||||||
import time
|
import time
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
from typing import List, Optional
|
from typing import Any, Dict, List, Optional
|
||||||
|
|
||||||
DEFAULT_CACHE_DIR = Path.home() / ".cache" / "notion-search"
|
DEFAULT_CACHE_DIR = Path.home() / ".cache" / "notion-search"
|
||||||
DEFAULT_TTL_SECONDS = 86400 # 24 hours
|
DEFAULT_TTL_SECONDS = 86400 # 24 hours
|
||||||
@@ -23,11 +23,15 @@ def cache_get(
|
|||||||
*,
|
*,
|
||||||
cache_dir: Path = DEFAULT_CACHE_DIR,
|
cache_dir: Path = DEFAULT_CACHE_DIR,
|
||||||
ttl_seconds: int = DEFAULT_TTL_SECONDS,
|
ttl_seconds: int = DEFAULT_TTL_SECONDS,
|
||||||
) -> Optional[List]:
|
) -> Optional[List[Dict[str, Any]]]:
|
||||||
"""Return cached results if file exists and is fresh, else None.
|
"""Return cached results if file exists and is fresh, else None.
|
||||||
|
|
||||||
Corrupted cache files are silently treated as misses (and removed).
|
Corrupted cache files are silently treated as misses (and removed).
|
||||||
|
`ttl_seconds <= 0` always returns None (deterministic "always expired").
|
||||||
"""
|
"""
|
||||||
|
if ttl_seconds <= 0:
|
||||||
|
return None
|
||||||
|
|
||||||
key = _cache_key(query, candidate_ids)
|
key = _cache_key(query, candidate_ids)
|
||||||
path = cache_dir / f"{key}.json"
|
path = cache_dir / f"{key}.json"
|
||||||
if not path.exists():
|
if not path.exists():
|
||||||
@@ -52,7 +56,7 @@ def cache_get(
|
|||||||
def cache_put(
|
def cache_put(
|
||||||
query: str,
|
query: str,
|
||||||
candidate_ids: List[str],
|
candidate_ids: List[str],
|
||||||
results: List,
|
results: List[Dict[str, Any]],
|
||||||
*,
|
*,
|
||||||
cache_dir: Path = DEFAULT_CACHE_DIR,
|
cache_dir: Path = DEFAULT_CACHE_DIR,
|
||||||
) -> None:
|
) -> None:
|
||||||
|
|||||||
Reference in New Issue
Block a user