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.
Files changed (59) hide show
  1. {codespine-0.6.2 → codespine-0.6.3}/PKG-INFO +1 -1
  2. {codespine-0.6.2 → codespine-0.6.3}/codespine/__init__.py +1 -1
  3. {codespine-0.6.2 → codespine-0.6.3}/codespine/db/store.py +16 -1
  4. {codespine-0.6.2 → codespine-0.6.3}/codespine.egg-info/PKG-INFO +1 -1
  5. {codespine-0.6.2 → codespine-0.6.3}/pyproject.toml +1 -1
  6. {codespine-0.6.2 → codespine-0.6.3}/LICENSE +0 -0
  7. {codespine-0.6.2 → codespine-0.6.3}/README.md +0 -0
  8. {codespine-0.6.2 → codespine-0.6.3}/codespine/analysis/__init__.py +0 -0
  9. {codespine-0.6.2 → codespine-0.6.3}/codespine/analysis/community.py +0 -0
  10. {codespine-0.6.2 → codespine-0.6.3}/codespine/analysis/context.py +0 -0
  11. {codespine-0.6.2 → codespine-0.6.3}/codespine/analysis/coupling.py +0 -0
  12. {codespine-0.6.2 → codespine-0.6.3}/codespine/analysis/crossmodule.py +0 -0
  13. {codespine-0.6.2 → codespine-0.6.3}/codespine/analysis/deadcode.py +0 -0
  14. {codespine-0.6.2 → codespine-0.6.3}/codespine/analysis/flow.py +0 -0
  15. {codespine-0.6.2 → codespine-0.6.3}/codespine/analysis/impact.py +0 -0
  16. {codespine-0.6.2 → codespine-0.6.3}/codespine/cli.py +0 -0
  17. {codespine-0.6.2 → codespine-0.6.3}/codespine/config.py +0 -0
  18. {codespine-0.6.2 → codespine-0.6.3}/codespine/db/__init__.py +0 -0
  19. {codespine-0.6.2 → codespine-0.6.3}/codespine/db/schema.py +0 -0
  20. {codespine-0.6.2 → codespine-0.6.3}/codespine/diff/__init__.py +0 -0
  21. {codespine-0.6.2 → codespine-0.6.3}/codespine/diff/branch_diff.py +0 -0
  22. {codespine-0.6.2 → codespine-0.6.3}/codespine/indexer/__init__.py +0 -0
  23. {codespine-0.6.2 → codespine-0.6.3}/codespine/indexer/call_resolver.py +0 -0
  24. {codespine-0.6.2 → codespine-0.6.3}/codespine/indexer/engine.py +0 -0
  25. {codespine-0.6.2 → codespine-0.6.3}/codespine/indexer/java_parser.py +0 -0
  26. {codespine-0.6.2 → codespine-0.6.3}/codespine/indexer/symbol_builder.py +0 -0
  27. {codespine-0.6.2 → codespine-0.6.3}/codespine/mcp/__init__.py +0 -0
  28. {codespine-0.6.2 → codespine-0.6.3}/codespine/mcp/server.py +0 -0
  29. {codespine-0.6.2 → codespine-0.6.3}/codespine/noise/__init__.py +0 -0
  30. {codespine-0.6.2 → codespine-0.6.3}/codespine/noise/blocklist.py +0 -0
  31. {codespine-0.6.2 → codespine-0.6.3}/codespine/overlay/__init__.py +0 -0
  32. {codespine-0.6.2 → codespine-0.6.3}/codespine/overlay/git_state.py +0 -0
  33. {codespine-0.6.2 → codespine-0.6.3}/codespine/overlay/merge.py +0 -0
  34. {codespine-0.6.2 → codespine-0.6.3}/codespine/overlay/store.py +0 -0
  35. {codespine-0.6.2 → codespine-0.6.3}/codespine/search/__init__.py +0 -0
  36. {codespine-0.6.2 → codespine-0.6.3}/codespine/search/bm25.py +0 -0
  37. {codespine-0.6.2 → codespine-0.6.3}/codespine/search/fuzzy.py +0 -0
  38. {codespine-0.6.2 → codespine-0.6.3}/codespine/search/hybrid.py +0 -0
  39. {codespine-0.6.2 → codespine-0.6.3}/codespine/search/rrf.py +0 -0
  40. {codespine-0.6.2 → codespine-0.6.3}/codespine/search/vector.py +0 -0
  41. {codespine-0.6.2 → codespine-0.6.3}/codespine/watch/__init__.py +0 -0
  42. {codespine-0.6.2 → codespine-0.6.3}/codespine/watch/watcher.py +0 -0
  43. {codespine-0.6.2 → codespine-0.6.3}/codespine.egg-info/SOURCES.txt +0 -0
  44. {codespine-0.6.2 → codespine-0.6.3}/codespine.egg-info/dependency_links.txt +0 -0
  45. {codespine-0.6.2 → codespine-0.6.3}/codespine.egg-info/entry_points.txt +0 -0
  46. {codespine-0.6.2 → codespine-0.6.3}/codespine.egg-info/requires.txt +0 -0
  47. {codespine-0.6.2 → codespine-0.6.3}/codespine.egg-info/top_level.txt +0 -0
  48. {codespine-0.6.2 → codespine-0.6.3}/gindex.py +0 -0
  49. {codespine-0.6.2 → codespine-0.6.3}/setup.cfg +0 -0
  50. {codespine-0.6.2 → codespine-0.6.3}/tests/test_branch_diff_normalize.py +0 -0
  51. {codespine-0.6.2 → codespine-0.6.3}/tests/test_call_resolver.py +0 -0
  52. {codespine-0.6.2 → codespine-0.6.3}/tests/test_community_detection.py +0 -0
  53. {codespine-0.6.2 → codespine-0.6.3}/tests/test_deadcode.py +0 -0
  54. {codespine-0.6.2 → codespine-0.6.3}/tests/test_index_and_hybrid.py +0 -0
  55. {codespine-0.6.2 → codespine-0.6.3}/tests/test_java_parser.py +0 -0
  56. {codespine-0.6.2 → codespine-0.6.3}/tests/test_multimodule_index.py +0 -0
  57. {codespine-0.6.2 → codespine-0.6.3}/tests/test_overlay.py +0 -0
  58. {codespine-0.6.2 → codespine-0.6.3}/tests/test_search_ranking.py +0 -0
  59. {codespine-0.6.2 → codespine-0.6.3}/tests/test_store_recovery.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: codespine
3
- Version: 0.6.2
3
+ Version: 0.6.3
4
4
  Summary: Local Java code intelligence indexer backed by a graph database
5
5
  Author: CodeSpine contributors
6
6
  License: MIT License
@@ -1,4 +1,4 @@
1
1
  """CodeSpine package."""
2
2
 
3
3
  __all__ = ["__version__"]
4
- __version__ = "0.6.2"
4
+ __version__ = "0.6.3"
@@ -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
- frame = self.execute(query, params or {}).get_as_df()
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"))
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: codespine
3
- Version: 0.6.2
3
+ Version: 0.6.3
4
4
  Summary: Local Java code intelligence indexer backed by a graph database
5
5
  Author: CodeSpine contributors
6
6
  License: MIT License
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "codespine"
7
- version = "0.6.2"
7
+ version = "0.6.3"
8
8
  description = "Local Java code intelligence indexer backed by a graph database"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.10"
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes