refactor(sdm): Global pass with refined 'External Only' SDM tags. Pruned redundant internal references and fixed indentation logic in injector. Verified full project compilation.
This commit is contained in:
+25
-9
@@ -4,14 +4,18 @@ from pathlib import Path
|
||||
from typing import Optional, Dict
|
||||
|
||||
def get_file_hash(content: str) -> str:
|
||||
"""Returns SHA256 hash of the content."""
|
||||
"""
|
||||
Returns SHA256 hash of the content.
|
||||
[C: tests/test_summary_cache.py:test_get_file_hash, tests/test_summary_cache.py:test_summary_cache]
|
||||
"""
|
||||
return hashlib.sha256(content.encode("utf-8")).hexdigest()
|
||||
|
||||
class SummaryCache:
|
||||
"""
|
||||
A hash-based cache for file summaries to avoid redundant processing.
|
||||
Invalidates when content hash changes.
|
||||
"""
|
||||
|
||||
A hash-based cache for file summaries to avoid redundant processing.
|
||||
Invalidates when content hash changes.
|
||||
"""
|
||||
def __init__(self, cache_file: Optional[str] = None, max_entries: int = 1000):
|
||||
if cache_file:
|
||||
self.cache_file = Path(cache_file)
|
||||
@@ -23,7 +27,10 @@ class SummaryCache:
|
||||
self.load()
|
||||
|
||||
def load(self) -> None:
|
||||
"""Loads cache from disk."""
|
||||
"""
|
||||
Loads cache from disk.
|
||||
[C: src/tool_presets.py:ToolPresetManager._read_raw, src/workspace_manager.py:WorkspaceManager._load_file, tests/test_gui_phase3.py:test_create_track, tests/test_history_management.py:test_save_separation, tests/test_saved_presets_sim.py:test_preset_manager_modal, tests/test_session_logging.py:test_open_session_creates_subdir_and_registry, tests/test_visual_sim_gui_ux.py:test_gui_track_creation]
|
||||
"""
|
||||
if self.cache_file.exists():
|
||||
try:
|
||||
with open(self.cache_file, "r", encoding="utf-8") as f:
|
||||
@@ -41,7 +48,10 @@ class SummaryCache:
|
||||
pass
|
||||
|
||||
def get_summary(self, file_path: str, content_hash: str) -> Optional[str]:
|
||||
"""Returns cached summary if hash matches, otherwise None."""
|
||||
"""
|
||||
Returns cached summary if hash matches, otherwise None.
|
||||
[C: tests/test_summary_cache.py:test_summary_cache, tests/test_summary_cache.py:test_summary_cache_lru]
|
||||
"""
|
||||
entry = self.cache.get(file_path)
|
||||
if entry and entry.get("hash") == content_hash:
|
||||
# LRU: move to end
|
||||
@@ -51,7 +61,10 @@ class SummaryCache:
|
||||
return None
|
||||
|
||||
def set_summary(self, file_path: str, content_hash: str, summary: str) -> None:
|
||||
"""Stores summary in cache and saves to disk."""
|
||||
"""
|
||||
Stores summary in cache and saves to disk.
|
||||
[C: tests/test_summary_cache.py:test_summary_cache, tests/test_summary_cache.py:test_summary_cache_lru]
|
||||
"""
|
||||
if file_path in self.cache:
|
||||
self.cache.pop(file_path)
|
||||
self.cache[file_path] = {
|
||||
@@ -66,7 +79,10 @@ class SummaryCache:
|
||||
self.save()
|
||||
|
||||
def clear(self) -> None:
|
||||
"""Clears the cache both in-memory and on disk."""
|
||||
"""
|
||||
Clears the cache both in-memory and on disk.
|
||||
[C: tests/conftest.py:reset_ai_client]
|
||||
"""
|
||||
self.cache.clear()
|
||||
if self.cache_file.exists():
|
||||
try:
|
||||
@@ -85,4 +101,4 @@ class SummaryCache:
|
||||
return {
|
||||
"entries": len(self.cache),
|
||||
"size_bytes": size_bytes
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user