rag-your-code 1.4.1__tar.gz → 1.4.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 (51) hide show
  1. {rag_your_code-1.4.1/src/rag_your_code.egg-info → rag_your_code-1.4.2}/PKG-INFO +23 -18
  2. {rag_your_code-1.4.1 → rag_your_code-1.4.2}/README.md +22 -17
  3. {rag_your_code-1.4.1 → rag_your_code-1.4.2}/pyproject.toml +1 -1
  4. {rag_your_code-1.4.1 → rag_your_code-1.4.2/src/rag_your_code.egg-info}/PKG-INFO +23 -18
  5. {rag_your_code-1.4.1 → rag_your_code-1.4.2}/src/ragyourcode/__init__.py +1 -1
  6. {rag_your_code-1.4.1 → rag_your_code-1.4.2}/LICENSE +0 -0
  7. {rag_your_code-1.4.1 → rag_your_code-1.4.2}/setup.cfg +0 -0
  8. {rag_your_code-1.4.1 → rag_your_code-1.4.2}/src/rag_your_code.egg-info/SOURCES.txt +0 -0
  9. {rag_your_code-1.4.1 → rag_your_code-1.4.2}/src/rag_your_code.egg-info/dependency_links.txt +0 -0
  10. {rag_your_code-1.4.1 → rag_your_code-1.4.2}/src/rag_your_code.egg-info/entry_points.txt +0 -0
  11. {rag_your_code-1.4.1 → rag_your_code-1.4.2}/src/rag_your_code.egg-info/requires.txt +0 -0
  12. {rag_your_code-1.4.1 → rag_your_code-1.4.2}/src/rag_your_code.egg-info/top_level.txt +0 -0
  13. {rag_your_code-1.4.1 → rag_your_code-1.4.2}/src/ragyourcode/agentic.py +0 -0
  14. {rag_your_code-1.4.1 → rag_your_code-1.4.2}/src/ragyourcode/annotate.py +0 -0
  15. {rag_your_code-1.4.1 → rag_your_code-1.4.2}/src/ragyourcode/cli.py +0 -0
  16. {rag_your_code-1.4.1 → rag_your_code-1.4.2}/src/ragyourcode/config.py +0 -0
  17. {rag_your_code-1.4.1 → rag_your_code-1.4.2}/src/ragyourcode/descriptions.py +0 -0
  18. {rag_your_code-1.4.1 → rag_your_code-1.4.2}/src/ragyourcode/document.py +0 -0
  19. {rag_your_code-1.4.1 → rag_your_code-1.4.2}/src/ragyourcode/embeddings.py +0 -0
  20. {rag_your_code-1.4.1 → rag_your_code-1.4.2}/src/ragyourcode/graph.py +0 -0
  21. {rag_your_code-1.4.1 → rag_your_code-1.4.2}/src/ragyourcode/indexer.py +0 -0
  22. {rag_your_code-1.4.1 → rag_your_code-1.4.2}/src/ragyourcode/models.py +0 -0
  23. {rag_your_code-1.4.1 → rag_your_code-1.4.2}/src/ragyourcode/parser.py +0 -0
  24. {rag_your_code-1.4.1 → rag_your_code-1.4.2}/src/ragyourcode/providers.py +0 -0
  25. {rag_your_code-1.4.1 → rag_your_code-1.4.2}/src/ragyourcode/py.typed +0 -0
  26. {rag_your_code-1.4.1 → rag_your_code-1.4.2}/src/ragyourcode/search.py +0 -0
  27. {rag_your_code-1.4.1 → rag_your_code-1.4.2}/src/ragyourcode/workflow.py +0 -0
  28. {rag_your_code-1.4.1 → rag_your_code-1.4.2}/tests/test_absent_queries.py +0 -0
  29. {rag_your_code-1.4.1 → rag_your_code-1.4.2}/tests/test_agent_protocol.py +0 -0
  30. {rag_your_code-1.4.1 → rag_your_code-1.4.2}/tests/test_agentic.py +0 -0
  31. {rag_your_code-1.4.1 → rag_your_code-1.4.2}/tests/test_config.py +0 -0
  32. {rag_your_code-1.4.1 → rag_your_code-1.4.2}/tests/test_descriptions.py +0 -0
  33. {rag_your_code-1.4.1 → rag_your_code-1.4.2}/tests/test_doc_comments.py +0 -0
  34. {rag_your_code-1.4.1 → rag_your_code-1.4.2}/tests/test_document.py +0 -0
  35. {rag_your_code-1.4.1 → rag_your_code-1.4.2}/tests/test_e2e_cli.py +0 -0
  36. {rag_your_code-1.4.1 → rag_your_code-1.4.2}/tests/test_evidence.py +0 -0
  37. {rag_your_code-1.4.1 → rag_your_code-1.4.2}/tests/test_golden.py +0 -0
  38. {rag_your_code-1.4.1 → rag_your_code-1.4.2}/tests/test_graph_incremental.py +0 -0
  39. {rag_your_code-1.4.1 → rag_your_code-1.4.2}/tests/test_language_fixtures.py +0 -0
  40. {rag_your_code-1.4.1 → rag_your_code-1.4.2}/tests/test_large_repo.py +0 -0
  41. {rag_your_code-1.4.1 → rag_your_code-1.4.2}/tests/test_local_model.py +0 -0
  42. {rag_your_code-1.4.1 → rag_your_code-1.4.2}/tests/test_metadata.py +0 -0
  43. {rag_your_code-1.4.1 → rag_your_code-1.4.2}/tests/test_multilanguage.py +0 -0
  44. {rag_your_code-1.4.1 → rag_your_code-1.4.2}/tests/test_parser_edges.py +0 -0
  45. {rag_your_code-1.4.1 → rag_your_code-1.4.2}/tests/test_providers.py +0 -0
  46. {rag_your_code-1.4.1 → rag_your_code-1.4.2}/tests/test_ragyourcode.py +0 -0
  47. {rag_your_code-1.4.1 → rag_your_code-1.4.2}/tests/test_ranking.py +0 -0
  48. {rag_your_code-1.4.1 → rag_your_code-1.4.2}/tests/test_repo_queries.py +0 -0
  49. {rag_your_code-1.4.1 → rag_your_code-1.4.2}/tests/test_resilience.py +0 -0
  50. {rag_your_code-1.4.1 → rag_your_code-1.4.2}/tests/test_retrieval_correctness.py +0 -0
  51. {rag_your_code-1.4.1 → rag_your_code-1.4.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.4.1
3
+ Version: 1.4.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
@@ -467,19 +467,15 @@ Four qualifications, because the table would otherwise flatter both sides:
467
467
  `the` gets every file back in no order. It is also why Grep declines nine of
468
468
  the seventy questions here — those had no word left that this corpus does not
469
469
  use everywhere.
470
- - **Payload is counted in characters on both sides**, and 1.4.1 changed what
471
- fits in it. A generated description ends with the author's docstring so the
472
- docstring is searchable, and the source printed below it said the same thing
473
- again — 2,381 of 3,382 characters of prose header on Flask were a verbatim
474
- repeat of the code beneath. The block no longer prints what the code shows,
475
- and the same 12,000-character budget now carries **119 declarations instead
476
- of 92** there, 323 instead of 305 here. Grep
477
- hands back 18,600 characters per question it answers, unranked and without
478
- spans, against 10,300 here, ranked and capped by `search.max_chars` — a
479
- factor of 1.8. On Flask it is a factor of 5.5 — 47,200 characters against
480
- 8,600 — because a framework repeats its own vocabulary across many files and
481
- Grep has no way to rank what it finds. Both sides decline the same five of
482
- those 35 — and they are the five Chinese ones, all of them. A Chinese word is
470
+ - **Payload is counted in characters on both sides.** Grep hands back 18,600
471
+ characters per question it answers here, unranked and without spans, against
472
+ 10,300 ranked and capped by `search.max_chars` — a factor of 1.8, and 5.5 on
473
+ Flask, where a framework repeats its vocabulary across many files and Grep
474
+ cannot rank what it finds. 1.4.1 changed what fits in that cap: the block had
475
+ been reprinting the docstring the code below already showed, 2,381 of 3,382
476
+ characters of prose header on Flask, so the same budget now carries **119
477
+ declarations instead of 92** there and 323 instead of 305 here. Both sides
478
+ decline the same five of those 35 — the five Chinese ones, all of them. A Chinese word is
483
479
  not a substring of English source and it is not a token in an index built
484
480
  from English source, so on a repository written in one language the cold
485
481
  cross-language case is not this tool's failure but the corpus's.
@@ -560,10 +556,10 @@ against a pinned corpus:
560
556
  | **C** own, described | 581 `978a1d48a82a` | **0.443 / 0.614 / 0.507** | 0.429 / 0.600 / 0.500 |
561
557
  | **D** silence, own / foreign | as above | 0.967 / 0.833 | 0.967 / 0.833 |
562
558
 
563
- **Worse or identical on every ruler.** It is shipped anyway, as an extra nobody
564
- has to install, because it does one thing the hash cannot do at all and these
565
- rulers cannot see: reach a unit that shares no word with the question. The
566
- pairs the hash scores exactly zero:
559
+ **Worse or identical on every ruler.** The 581-unit stamps are the corpus both
560
+ arms shared, kept rather than refreshed — that is what a stamp is for. It ships
561
+ anyway because it does one thing the hash cannot and these rulers cannot see:
562
+ reach a unit sharing no word with the question. The pairs it scores zero on:
567
563
 
568
564
  | pair | signed hash | MiniLM |
569
565
  |---|---|---|
@@ -618,6 +614,14 @@ measured worse, so it stays off there.
618
614
  /reload-plugins
619
615
  ```
620
616
 
617
+ Updating needs the full id and a marketplace refresh first; the bare name is
618
+ refused with `Plugin "rag-your-code" not found`, which reads like it is gone:
619
+
620
+ ```bash
621
+ claude plugin marketplace update rag-your-code
622
+ claude plugin update rag-your-code@rag-your-code # then restart
623
+ ```
624
+
621
625
  Four commands and one skill. No hooks, no agents, no MCP server:
622
626
 
623
627
  | | |
@@ -765,6 +769,7 @@ Windows, plus a job that installs the built wheel into a clean environment and
765
769
  runs every documented command, and another that runs the skill's own install
766
770
  line verbatim.
767
771
 
772
+ - [docs/FLOW.md](docs/FLOW.md) — the whole thing in four diagrams
768
773
  - [docs/ARCHITECTURE.md](docs/ARCHITECTURE.md) — how each stage works and why
769
774
  - [docs/TESTING.md](docs/TESTING.md) — what the suites protect
770
775
  - [docs/ROADMAP.md](docs/ROADMAP.md) — what shipped, what was rejected and why
@@ -438,19 +438,15 @@ Four qualifications, because the table would otherwise flatter both sides:
438
438
  `the` gets every file back in no order. It is also why Grep declines nine of
439
439
  the seventy questions here — those had no word left that this corpus does not
440
440
  use everywhere.
441
- - **Payload is counted in characters on both sides**, and 1.4.1 changed what
442
- fits in it. A generated description ends with the author's docstring so the
443
- docstring is searchable, and the source printed below it said the same thing
444
- again — 2,381 of 3,382 characters of prose header on Flask were a verbatim
445
- repeat of the code beneath. The block no longer prints what the code shows,
446
- and the same 12,000-character budget now carries **119 declarations instead
447
- of 92** there, 323 instead of 305 here. Grep
448
- hands back 18,600 characters per question it answers, unranked and without
449
- spans, against 10,300 here, ranked and capped by `search.max_chars` — a
450
- factor of 1.8. On Flask it is a factor of 5.5 — 47,200 characters against
451
- 8,600 — because a framework repeats its own vocabulary across many files and
452
- Grep has no way to rank what it finds. Both sides decline the same five of
453
- those 35 — and they are the five Chinese ones, all of them. A Chinese word is
441
+ - **Payload is counted in characters on both sides.** Grep hands back 18,600
442
+ characters per question it answers here, unranked and without spans, against
443
+ 10,300 ranked and capped by `search.max_chars` — a factor of 1.8, and 5.5 on
444
+ Flask, where a framework repeats its vocabulary across many files and Grep
445
+ cannot rank what it finds. 1.4.1 changed what fits in that cap: the block had
446
+ been reprinting the docstring the code below already showed, 2,381 of 3,382
447
+ characters of prose header on Flask, so the same budget now carries **119
448
+ declarations instead of 92** there and 323 instead of 305 here. Both sides
449
+ decline the same five of those 35 — the five Chinese ones, all of them. A Chinese word is
454
450
  not a substring of English source and it is not a token in an index built
455
451
  from English source, so on a repository written in one language the cold
456
452
  cross-language case is not this tool's failure but the corpus's.
@@ -531,10 +527,10 @@ against a pinned corpus:
531
527
  | **C** own, described | 581 `978a1d48a82a` | **0.443 / 0.614 / 0.507** | 0.429 / 0.600 / 0.500 |
532
528
  | **D** silence, own / foreign | as above | 0.967 / 0.833 | 0.967 / 0.833 |
533
529
 
534
- **Worse or identical on every ruler.** It is shipped anyway, as an extra nobody
535
- has to install, because it does one thing the hash cannot do at all and these
536
- rulers cannot see: reach a unit that shares no word with the question. The
537
- pairs the hash scores exactly zero:
530
+ **Worse or identical on every ruler.** The 581-unit stamps are the corpus both
531
+ arms shared, kept rather than refreshed — that is what a stamp is for. It ships
532
+ anyway because it does one thing the hash cannot and these rulers cannot see:
533
+ reach a unit sharing no word with the question. The pairs it scores zero on:
538
534
 
539
535
  | pair | signed hash | MiniLM |
540
536
  |---|---|---|
@@ -589,6 +585,14 @@ measured worse, so it stays off there.
589
585
  /reload-plugins
590
586
  ```
591
587
 
588
+ Updating needs the full id and a marketplace refresh first; the bare name is
589
+ refused with `Plugin "rag-your-code" not found`, which reads like it is gone:
590
+
591
+ ```bash
592
+ claude plugin marketplace update rag-your-code
593
+ claude plugin update rag-your-code@rag-your-code # then restart
594
+ ```
595
+
592
596
  Four commands and one skill. No hooks, no agents, no MCP server:
593
597
 
594
598
  | | |
@@ -736,6 +740,7 @@ Windows, plus a job that installs the built wheel into a clean environment and
736
740
  runs every documented command, and another that runs the skill's own install
737
741
  line verbatim.
738
742
 
743
+ - [docs/FLOW.md](docs/FLOW.md) — the whole thing in four diagrams
739
744
  - [docs/ARCHITECTURE.md](docs/ARCHITECTURE.md) — how each stage works and why
740
745
  - [docs/TESTING.md](docs/TESTING.md) — what the suites protect
741
746
  - [docs/ROADMAP.md](docs/ROADMAP.md) — what shipped, what was rejected and why
@@ -6,7 +6,7 @@ build-backend = "setuptools.build_meta"
6
6
 
7
7
  [project]
8
8
  name = "rag-your-code"
9
- version = "1.4.1"
9
+ version = "1.4.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.4.1
3
+ Version: 1.4.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
@@ -467,19 +467,15 @@ Four qualifications, because the table would otherwise flatter both sides:
467
467
  `the` gets every file back in no order. It is also why Grep declines nine of
468
468
  the seventy questions here — those had no word left that this corpus does not
469
469
  use everywhere.
470
- - **Payload is counted in characters on both sides**, and 1.4.1 changed what
471
- fits in it. A generated description ends with the author's docstring so the
472
- docstring is searchable, and the source printed below it said the same thing
473
- again — 2,381 of 3,382 characters of prose header on Flask were a verbatim
474
- repeat of the code beneath. The block no longer prints what the code shows,
475
- and the same 12,000-character budget now carries **119 declarations instead
476
- of 92** there, 323 instead of 305 here. Grep
477
- hands back 18,600 characters per question it answers, unranked and without
478
- spans, against 10,300 here, ranked and capped by `search.max_chars` — a
479
- factor of 1.8. On Flask it is a factor of 5.5 — 47,200 characters against
480
- 8,600 — because a framework repeats its own vocabulary across many files and
481
- Grep has no way to rank what it finds. Both sides decline the same five of
482
- those 35 — and they are the five Chinese ones, all of them. A Chinese word is
470
+ - **Payload is counted in characters on both sides.** Grep hands back 18,600
471
+ characters per question it answers here, unranked and without spans, against
472
+ 10,300 ranked and capped by `search.max_chars` — a factor of 1.8, and 5.5 on
473
+ Flask, where a framework repeats its vocabulary across many files and Grep
474
+ cannot rank what it finds. 1.4.1 changed what fits in that cap: the block had
475
+ been reprinting the docstring the code below already showed, 2,381 of 3,382
476
+ characters of prose header on Flask, so the same budget now carries **119
477
+ declarations instead of 92** there and 323 instead of 305 here. Both sides
478
+ decline the same five of those 35 — the five Chinese ones, all of them. A Chinese word is
483
479
  not a substring of English source and it is not a token in an index built
484
480
  from English source, so on a repository written in one language the cold
485
481
  cross-language case is not this tool's failure but the corpus's.
@@ -560,10 +556,10 @@ against a pinned corpus:
560
556
  | **C** own, described | 581 `978a1d48a82a` | **0.443 / 0.614 / 0.507** | 0.429 / 0.600 / 0.500 |
561
557
  | **D** silence, own / foreign | as above | 0.967 / 0.833 | 0.967 / 0.833 |
562
558
 
563
- **Worse or identical on every ruler.** It is shipped anyway, as an extra nobody
564
- has to install, because it does one thing the hash cannot do at all and these
565
- rulers cannot see: reach a unit that shares no word with the question. The
566
- pairs the hash scores exactly zero:
559
+ **Worse or identical on every ruler.** The 581-unit stamps are the corpus both
560
+ arms shared, kept rather than refreshed — that is what a stamp is for. It ships
561
+ anyway because it does one thing the hash cannot and these rulers cannot see:
562
+ reach a unit sharing no word with the question. The pairs it scores zero on:
567
563
 
568
564
  | pair | signed hash | MiniLM |
569
565
  |---|---|---|
@@ -618,6 +614,14 @@ measured worse, so it stays off there.
618
614
  /reload-plugins
619
615
  ```
620
616
 
617
+ Updating needs the full id and a marketplace refresh first; the bare name is
618
+ refused with `Plugin "rag-your-code" not found`, which reads like it is gone:
619
+
620
+ ```bash
621
+ claude plugin marketplace update rag-your-code
622
+ claude plugin update rag-your-code@rag-your-code # then restart
623
+ ```
624
+
621
625
  Four commands and one skill. No hooks, no agents, no MCP server:
622
626
 
623
627
  | | |
@@ -765,6 +769,7 @@ Windows, plus a job that installs the built wheel into a clean environment and
765
769
  runs every documented command, and another that runs the skill's own install
766
770
  line verbatim.
767
771
 
772
+ - [docs/FLOW.md](docs/FLOW.md) — the whole thing in four diagrams
768
773
  - [docs/ARCHITECTURE.md](docs/ARCHITECTURE.md) — how each stage works and why
769
774
  - [docs/TESTING.md](docs/TESTING.md) — what the suites protect
770
775
  - [docs/ROADMAP.md](docs/ROADMAP.md) — what shipped, what was rejected and why
@@ -3,4 +3,4 @@
3
3
  from .models import CodeUnit, SearchResult
4
4
 
5
5
  __all__ = ["CodeUnit", "SearchResult"]
6
- __version__ = "1.4.1"
6
+ __version__ = "1.4.2"
File without changes
File without changes