codespine 0.6.2__tar.gz → 0.6.3__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {codespine-0.6.2 → codespine-0.6.3}/PKG-INFO +1 -1
- {codespine-0.6.2 → codespine-0.6.3}/codespine/__init__.py +1 -1
- {codespine-0.6.2 → codespine-0.6.3}/codespine/db/store.py +16 -1
- {codespine-0.6.2 → codespine-0.6.3}/codespine.egg-info/PKG-INFO +1 -1
- {codespine-0.6.2 → codespine-0.6.3}/pyproject.toml +1 -1
- {codespine-0.6.2 → codespine-0.6.3}/LICENSE +0 -0
- {codespine-0.6.2 → codespine-0.6.3}/README.md +0 -0
- {codespine-0.6.2 → codespine-0.6.3}/codespine/analysis/__init__.py +0 -0
- {codespine-0.6.2 → codespine-0.6.3}/codespine/analysis/community.py +0 -0
- {codespine-0.6.2 → codespine-0.6.3}/codespine/analysis/context.py +0 -0
- {codespine-0.6.2 → codespine-0.6.3}/codespine/analysis/coupling.py +0 -0
- {codespine-0.6.2 → codespine-0.6.3}/codespine/analysis/crossmodule.py +0 -0
- {codespine-0.6.2 → codespine-0.6.3}/codespine/analysis/deadcode.py +0 -0
- {codespine-0.6.2 → codespine-0.6.3}/codespine/analysis/flow.py +0 -0
- {codespine-0.6.2 → codespine-0.6.3}/codespine/analysis/impact.py +0 -0
- {codespine-0.6.2 → codespine-0.6.3}/codespine/cli.py +0 -0
- {codespine-0.6.2 → codespine-0.6.3}/codespine/config.py +0 -0
- {codespine-0.6.2 → codespine-0.6.3}/codespine/db/__init__.py +0 -0
- {codespine-0.6.2 → codespine-0.6.3}/codespine/db/schema.py +0 -0
- {codespine-0.6.2 → codespine-0.6.3}/codespine/diff/__init__.py +0 -0
- {codespine-0.6.2 → codespine-0.6.3}/codespine/diff/branch_diff.py +0 -0
- {codespine-0.6.2 → codespine-0.6.3}/codespine/indexer/__init__.py +0 -0
- {codespine-0.6.2 → codespine-0.6.3}/codespine/indexer/call_resolver.py +0 -0
- {codespine-0.6.2 → codespine-0.6.3}/codespine/indexer/engine.py +0 -0
- {codespine-0.6.2 → codespine-0.6.3}/codespine/indexer/java_parser.py +0 -0
- {codespine-0.6.2 → codespine-0.6.3}/codespine/indexer/symbol_builder.py +0 -0
- {codespine-0.6.2 → codespine-0.6.3}/codespine/mcp/__init__.py +0 -0
- {codespine-0.6.2 → codespine-0.6.3}/codespine/mcp/server.py +0 -0
- {codespine-0.6.2 → codespine-0.6.3}/codespine/noise/__init__.py +0 -0
- {codespine-0.6.2 → codespine-0.6.3}/codespine/noise/blocklist.py +0 -0
- {codespine-0.6.2 → codespine-0.6.3}/codespine/overlay/__init__.py +0 -0
- {codespine-0.6.2 → codespine-0.6.3}/codespine/overlay/git_state.py +0 -0
- {codespine-0.6.2 → codespine-0.6.3}/codespine/overlay/merge.py +0 -0
- {codespine-0.6.2 → codespine-0.6.3}/codespine/overlay/store.py +0 -0
- {codespine-0.6.2 → codespine-0.6.3}/codespine/search/__init__.py +0 -0
- {codespine-0.6.2 → codespine-0.6.3}/codespine/search/bm25.py +0 -0
- {codespine-0.6.2 → codespine-0.6.3}/codespine/search/fuzzy.py +0 -0
- {codespine-0.6.2 → codespine-0.6.3}/codespine/search/hybrid.py +0 -0
- {codespine-0.6.2 → codespine-0.6.3}/codespine/search/rrf.py +0 -0
- {codespine-0.6.2 → codespine-0.6.3}/codespine/search/vector.py +0 -0
- {codespine-0.6.2 → codespine-0.6.3}/codespine/watch/__init__.py +0 -0
- {codespine-0.6.2 → codespine-0.6.3}/codespine/watch/watcher.py +0 -0
- {codespine-0.6.2 → codespine-0.6.3}/codespine.egg-info/SOURCES.txt +0 -0
- {codespine-0.6.2 → codespine-0.6.3}/codespine.egg-info/dependency_links.txt +0 -0
- {codespine-0.6.2 → codespine-0.6.3}/codespine.egg-info/entry_points.txt +0 -0
- {codespine-0.6.2 → codespine-0.6.3}/codespine.egg-info/requires.txt +0 -0
- {codespine-0.6.2 → codespine-0.6.3}/codespine.egg-info/top_level.txt +0 -0
- {codespine-0.6.2 → codespine-0.6.3}/gindex.py +0 -0
- {codespine-0.6.2 → codespine-0.6.3}/setup.cfg +0 -0
- {codespine-0.6.2 → codespine-0.6.3}/tests/test_branch_diff_normalize.py +0 -0
- {codespine-0.6.2 → codespine-0.6.3}/tests/test_call_resolver.py +0 -0
- {codespine-0.6.2 → codespine-0.6.3}/tests/test_community_detection.py +0 -0
- {codespine-0.6.2 → codespine-0.6.3}/tests/test_deadcode.py +0 -0
- {codespine-0.6.2 → codespine-0.6.3}/tests/test_index_and_hybrid.py +0 -0
- {codespine-0.6.2 → codespine-0.6.3}/tests/test_java_parser.py +0 -0
- {codespine-0.6.2 → codespine-0.6.3}/tests/test_multimodule_index.py +0 -0
- {codespine-0.6.2 → codespine-0.6.3}/tests/test_overlay.py +0 -0
- {codespine-0.6.2 → codespine-0.6.3}/tests/test_search_ranking.py +0 -0
- {codespine-0.6.2 → codespine-0.6.3}/tests/test_store_recovery.py +0 -0
|
@@ -604,6 +604,13 @@ class GraphStore:
|
|
|
604
604
|
self.db = kuzu.Database(path)
|
|
605
605
|
self._tls = threading.local()
|
|
606
606
|
ensure_schema(self._conn())
|
|
607
|
+
# Force Kuzu to flush the WAL to the main data files so that a
|
|
608
|
+
# subsequent read-only open (stats, MCP snapshot) can see the schema
|
|
609
|
+
# without needing WAL replay (which read-only mode cannot do).
|
|
610
|
+
try:
|
|
611
|
+
self._conn().execute("CHECKPOINT")
|
|
612
|
+
except Exception:
|
|
613
|
+
pass
|
|
607
614
|
|
|
608
615
|
def set_community(self, community_id: str, label: str, cohesion: float, symbol_ids: list[str]) -> None:
|
|
609
616
|
self.execute(
|
|
@@ -692,7 +699,15 @@ class GraphStore:
|
|
|
692
699
|
return False
|
|
693
700
|
|
|
694
701
|
def query_records(self, query: str, params: dict[str, Any] | None = None) -> list[dict[str, Any]]:
|
|
695
|
-
|
|
702
|
+
try:
|
|
703
|
+
frame = self.execute(query, params or {}).get_as_df()
|
|
704
|
+
except RuntimeError as exc:
|
|
705
|
+
# In read-only mode the DB may have been cleared but the schema
|
|
706
|
+
# hasn't been flushed from WAL, or the DB is brand-new. Return
|
|
707
|
+
# an empty result instead of crashing callers (stats, MCP, etc.).
|
|
708
|
+
if self.read_only and "does not exist" in str(exc).lower():
|
|
709
|
+
return []
|
|
710
|
+
raise
|
|
696
711
|
if frame.empty:
|
|
697
712
|
return []
|
|
698
713
|
return json.loads(frame.to_json(orient="records"))
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|