rag-your-code 1.5.1__tar.gz → 1.5.2__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 (52) hide show
  1. {rag_your_code-1.5.1/src/rag_your_code.egg-info → rag_your_code-1.5.2}/PKG-INFO +12 -16
  2. {rag_your_code-1.5.1 → rag_your_code-1.5.2}/README.md +11 -15
  3. {rag_your_code-1.5.1 → rag_your_code-1.5.2}/pyproject.toml +1 -1
  4. {rag_your_code-1.5.1 → rag_your_code-1.5.2/src/rag_your_code.egg-info}/PKG-INFO +12 -16
  5. {rag_your_code-1.5.1 → rag_your_code-1.5.2}/src/ragyourcode/__init__.py +1 -1
  6. {rag_your_code-1.5.1 → rag_your_code-1.5.2}/LICENSE +0 -0
  7. {rag_your_code-1.5.1 → rag_your_code-1.5.2}/setup.cfg +0 -0
  8. {rag_your_code-1.5.1 → rag_your_code-1.5.2}/src/rag_your_code.egg-info/SOURCES.txt +0 -0
  9. {rag_your_code-1.5.1 → rag_your_code-1.5.2}/src/rag_your_code.egg-info/dependency_links.txt +0 -0
  10. {rag_your_code-1.5.1 → rag_your_code-1.5.2}/src/rag_your_code.egg-info/entry_points.txt +0 -0
  11. {rag_your_code-1.5.1 → rag_your_code-1.5.2}/src/rag_your_code.egg-info/requires.txt +0 -0
  12. {rag_your_code-1.5.1 → rag_your_code-1.5.2}/src/rag_your_code.egg-info/top_level.txt +0 -0
  13. {rag_your_code-1.5.1 → rag_your_code-1.5.2}/src/ragyourcode/agentic.py +0 -0
  14. {rag_your_code-1.5.1 → rag_your_code-1.5.2}/src/ragyourcode/annotate.py +0 -0
  15. {rag_your_code-1.5.1 → rag_your_code-1.5.2}/src/ragyourcode/cli.py +0 -0
  16. {rag_your_code-1.5.1 → rag_your_code-1.5.2}/src/ragyourcode/config.py +0 -0
  17. {rag_your_code-1.5.1 → rag_your_code-1.5.2}/src/ragyourcode/descriptions.py +0 -0
  18. {rag_your_code-1.5.1 → rag_your_code-1.5.2}/src/ragyourcode/document.py +0 -0
  19. {rag_your_code-1.5.1 → rag_your_code-1.5.2}/src/ragyourcode/embeddings.py +0 -0
  20. {rag_your_code-1.5.1 → rag_your_code-1.5.2}/src/ragyourcode/graph.py +0 -0
  21. {rag_your_code-1.5.1 → rag_your_code-1.5.2}/src/ragyourcode/indexer.py +0 -0
  22. {rag_your_code-1.5.1 → rag_your_code-1.5.2}/src/ragyourcode/models.py +0 -0
  23. {rag_your_code-1.5.1 → rag_your_code-1.5.2}/src/ragyourcode/parser.py +0 -0
  24. {rag_your_code-1.5.1 → rag_your_code-1.5.2}/src/ragyourcode/providers.py +0 -0
  25. {rag_your_code-1.5.1 → rag_your_code-1.5.2}/src/ragyourcode/py.typed +0 -0
  26. {rag_your_code-1.5.1 → rag_your_code-1.5.2}/src/ragyourcode/search.py +0 -0
  27. {rag_your_code-1.5.1 → rag_your_code-1.5.2}/src/ragyourcode/workflow.py +0 -0
  28. {rag_your_code-1.5.1 → rag_your_code-1.5.2}/tests/test_absent_queries.py +0 -0
  29. {rag_your_code-1.5.1 → rag_your_code-1.5.2}/tests/test_agent_protocol.py +0 -0
  30. {rag_your_code-1.5.1 → rag_your_code-1.5.2}/tests/test_agentic.py +0 -0
  31. {rag_your_code-1.5.1 → rag_your_code-1.5.2}/tests/test_config.py +0 -0
  32. {rag_your_code-1.5.1 → rag_your_code-1.5.2}/tests/test_descriptions.py +0 -0
  33. {rag_your_code-1.5.1 → rag_your_code-1.5.2}/tests/test_diagrams.py +0 -0
  34. {rag_your_code-1.5.1 → rag_your_code-1.5.2}/tests/test_doc_comments.py +0 -0
  35. {rag_your_code-1.5.1 → rag_your_code-1.5.2}/tests/test_document.py +0 -0
  36. {rag_your_code-1.5.1 → rag_your_code-1.5.2}/tests/test_e2e_cli.py +0 -0
  37. {rag_your_code-1.5.1 → rag_your_code-1.5.2}/tests/test_evidence.py +0 -0
  38. {rag_your_code-1.5.1 → rag_your_code-1.5.2}/tests/test_golden.py +0 -0
  39. {rag_your_code-1.5.1 → rag_your_code-1.5.2}/tests/test_graph_incremental.py +0 -0
  40. {rag_your_code-1.5.1 → rag_your_code-1.5.2}/tests/test_language_fixtures.py +0 -0
  41. {rag_your_code-1.5.1 → rag_your_code-1.5.2}/tests/test_large_repo.py +0 -0
  42. {rag_your_code-1.5.1 → rag_your_code-1.5.2}/tests/test_local_model.py +0 -0
  43. {rag_your_code-1.5.1 → rag_your_code-1.5.2}/tests/test_metadata.py +0 -0
  44. {rag_your_code-1.5.1 → rag_your_code-1.5.2}/tests/test_multilanguage.py +0 -0
  45. {rag_your_code-1.5.1 → rag_your_code-1.5.2}/tests/test_parser_edges.py +0 -0
  46. {rag_your_code-1.5.1 → rag_your_code-1.5.2}/tests/test_providers.py +0 -0
  47. {rag_your_code-1.5.1 → rag_your_code-1.5.2}/tests/test_ragyourcode.py +0 -0
  48. {rag_your_code-1.5.1 → rag_your_code-1.5.2}/tests/test_ranking.py +0 -0
  49. {rag_your_code-1.5.1 → rag_your_code-1.5.2}/tests/test_repo_queries.py +0 -0
  50. {rag_your_code-1.5.1 → rag_your_code-1.5.2}/tests/test_resilience.py +0 -0
  51. {rag_your_code-1.5.1 → rag_your_code-1.5.2}/tests/test_retrieval_correctness.py +0 -0
  52. {rag_your_code-1.5.1 → rag_your_code-1.5.2}/tests/test_workflow.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: rag-your-code
3
- Version: 1.5.1
3
+ Version: 1.5.2
4
4
  Summary: A local, explainable RAG index for codebases and coding agents
5
5
  Author: rag-your-code contributors
6
6
  License-Expression: MIT
@@ -366,18 +366,14 @@ a default can have.
366
366
  | refusing an unanswerable query | **0.016 ms** | 0.015 – 0.018 |
367
367
  | refusal cheaper than answering by | **~44×** | 40 – 47 |
368
368
 
369
- *Idle* is load-bearing: the same corpus at the same commit measured 0.99 ms
370
- median while a coverage run was in progress and 0.49 ms once it finished.
371
- This row read 0.49 ms in 1.5.0 at 601 units; a corpus 0.5% larger cannot
372
- explain 40%, and a repeat run here read 0.69 ms — the machine moved, not the code.
373
-
374
- Two significant figures and a spread, because that is the precision this has.
375
- Across five releases on the same idle machine the median has landed from 0.49
376
- to 1.44 ms and p95 from 0.85 to 7.34 ms — a band wider than any change the code
377
- has made to it. Releases before 1.3.0 published `0.83 ms / p95 1.68 ms` to
378
- three figures from an uncommitted script; both sit inside that band, which is
379
- the point — unfalsifiable rather than wrong. Refusal is cheap structurally: an
380
- unanswerable query touches only its distinctive words' posting lists, never ranking.
369
+ *Idle* is load-bearing, and nothing in the report can see whether it was: the
370
+ same corpus at the same commit measures about twice this median while another
371
+ job is running. Two significant figures and a spread, because across releases
372
+ that spread has been wider than any change the code has made to this number —
373
+ which is why the row ships with its range and its corpus stamp rather than to
374
+ three figures. Refusal is cheap structurally, not by tuning: an unanswerable
375
+ query touches only its distinctive words' posting lists and never reaches
376
+ ranking.
381
377
 
382
378
  **Scale**, synthetic 10,000-unit repository (500 files), re-measured in 1.5.0
383
379
  — the previous row of figures was optimistic by more than noise:
@@ -733,9 +729,9 @@ long description cost one graded question and a short one cost three;
733
729
  appending the docstring to every description instead cost the 1.5.0 corpus
734
730
  0.443 → 0.414 hit@1. `describe.skip` records the decision.
735
731
 
736
- **The vectors are 72.1% of the index and earn at most two questions** under the
737
- default embedder — 74.8% Flask, 79.7% cobra. Ablating costs A one, gains B one
738
- and C two at hit@3, moves E none; that storage is what an optional model needs.
732
+ **The vectors are 72.1% of the index and earn at most two questions** on any
733
+ ruler, in either direction, under the default embedder — 74.8% Flask, 79.7%
734
+ cobra. Kept: that same storage is what an optional model needs.
739
735
 
740
736
  **`search.vector_recall` scans every vector per query** — under a semantic
741
737
  embedder. The default hash never widens at all. Affordable at the measured
@@ -336,18 +336,14 @@ a default can have.
336
336
  | refusing an unanswerable query | **0.016 ms** | 0.015 – 0.018 |
337
337
  | refusal cheaper than answering by | **~44×** | 40 – 47 |
338
338
 
339
- *Idle* is load-bearing: the same corpus at the same commit measured 0.99 ms
340
- median while a coverage run was in progress and 0.49 ms once it finished.
341
- This row read 0.49 ms in 1.5.0 at 601 units; a corpus 0.5% larger cannot
342
- explain 40%, and a repeat run here read 0.69 ms — the machine moved, not the code.
343
-
344
- Two significant figures and a spread, because that is the precision this has.
345
- Across five releases on the same idle machine the median has landed from 0.49
346
- to 1.44 ms and p95 from 0.85 to 7.34 ms — a band wider than any change the code
347
- has made to it. Releases before 1.3.0 published `0.83 ms / p95 1.68 ms` to
348
- three figures from an uncommitted script; both sit inside that band, which is
349
- the point — unfalsifiable rather than wrong. Refusal is cheap structurally: an
350
- unanswerable query touches only its distinctive words' posting lists, never ranking.
339
+ *Idle* is load-bearing, and nothing in the report can see whether it was: the
340
+ same corpus at the same commit measures about twice this median while another
341
+ job is running. Two significant figures and a spread, because across releases
342
+ that spread has been wider than any change the code has made to this number —
343
+ which is why the row ships with its range and its corpus stamp rather than to
344
+ three figures. Refusal is cheap structurally, not by tuning: an unanswerable
345
+ query touches only its distinctive words' posting lists and never reaches
346
+ ranking.
351
347
 
352
348
  **Scale**, synthetic 10,000-unit repository (500 files), re-measured in 1.5.0
353
349
  — the previous row of figures was optimistic by more than noise:
@@ -703,9 +699,9 @@ long description cost one graded question and a short one cost three;
703
699
  appending the docstring to every description instead cost the 1.5.0 corpus
704
700
  0.443 → 0.414 hit@1. `describe.skip` records the decision.
705
701
 
706
- **The vectors are 72.1% of the index and earn at most two questions** under the
707
- default embedder — 74.8% Flask, 79.7% cobra. Ablating costs A one, gains B one
708
- and C two at hit@3, moves E none; that storage is what an optional model needs.
702
+ **The vectors are 72.1% of the index and earn at most two questions** on any
703
+ ruler, in either direction, under the default embedder — 74.8% Flask, 79.7%
704
+ cobra. Kept: that same storage is what an optional model needs.
709
705
 
710
706
  **`search.vector_recall` scans every vector per query** — under a semantic
711
707
  embedder. The default hash never widens at all. Affordable at the measured
@@ -6,7 +6,7 @@ build-backend = "setuptools.build_meta"
6
6
 
7
7
  [project]
8
8
  name = "rag-your-code"
9
- version = "1.5.1"
9
+ version = "1.5.2"
10
10
  description = "A local, explainable RAG index for codebases and coding agents"
11
11
  readme = "README.md"
12
12
  requires-python = ">=3.10"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: rag-your-code
3
- Version: 1.5.1
3
+ Version: 1.5.2
4
4
  Summary: A local, explainable RAG index for codebases and coding agents
5
5
  Author: rag-your-code contributors
6
6
  License-Expression: MIT
@@ -366,18 +366,14 @@ a default can have.
366
366
  | refusing an unanswerable query | **0.016 ms** | 0.015 – 0.018 |
367
367
  | refusal cheaper than answering by | **~44×** | 40 – 47 |
368
368
 
369
- *Idle* is load-bearing: the same corpus at the same commit measured 0.99 ms
370
- median while a coverage run was in progress and 0.49 ms once it finished.
371
- This row read 0.49 ms in 1.5.0 at 601 units; a corpus 0.5% larger cannot
372
- explain 40%, and a repeat run here read 0.69 ms — the machine moved, not the code.
373
-
374
- Two significant figures and a spread, because that is the precision this has.
375
- Across five releases on the same idle machine the median has landed from 0.49
376
- to 1.44 ms and p95 from 0.85 to 7.34 ms — a band wider than any change the code
377
- has made to it. Releases before 1.3.0 published `0.83 ms / p95 1.68 ms` to
378
- three figures from an uncommitted script; both sit inside that band, which is
379
- the point — unfalsifiable rather than wrong. Refusal is cheap structurally: an
380
- unanswerable query touches only its distinctive words' posting lists, never ranking.
369
+ *Idle* is load-bearing, and nothing in the report can see whether it was: the
370
+ same corpus at the same commit measures about twice this median while another
371
+ job is running. Two significant figures and a spread, because across releases
372
+ that spread has been wider than any change the code has made to this number —
373
+ which is why the row ships with its range and its corpus stamp rather than to
374
+ three figures. Refusal is cheap structurally, not by tuning: an unanswerable
375
+ query touches only its distinctive words' posting lists and never reaches
376
+ ranking.
381
377
 
382
378
  **Scale**, synthetic 10,000-unit repository (500 files), re-measured in 1.5.0
383
379
  — the previous row of figures was optimistic by more than noise:
@@ -733,9 +729,9 @@ long description cost one graded question and a short one cost three;
733
729
  appending the docstring to every description instead cost the 1.5.0 corpus
734
730
  0.443 → 0.414 hit@1. `describe.skip` records the decision.
735
731
 
736
- **The vectors are 72.1% of the index and earn at most two questions** under the
737
- default embedder — 74.8% Flask, 79.7% cobra. Ablating costs A one, gains B one
738
- and C two at hit@3, moves E none; that storage is what an optional model needs.
732
+ **The vectors are 72.1% of the index and earn at most two questions** on any
733
+ ruler, in either direction, under the default embedder — 74.8% Flask, 79.7%
734
+ cobra. Kept: that same storage is what an optional model needs.
739
735
 
740
736
  **`search.vector_recall` scans every vector per query** — under a semantic
741
737
  embedder. The default hash never widens at all. Affordable at the measured
@@ -3,4 +3,4 @@
3
3
  from .models import CodeUnit, SearchResult
4
4
 
5
5
  __all__ = ["CodeUnit", "SearchResult"]
6
- __version__ = "1.5.1"
6
+ __version__ = "1.5.2"
File without changes
File without changes