benchkit-cli 0.2.0__tar.gz → 0.2.1__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 (191) hide show
  1. {benchkit_cli-0.2.0/src/benchkit_cli.egg-info → benchkit_cli-0.2.1}/PKG-INFO +1 -1
  2. {benchkit_cli-0.2.0 → benchkit_cli-0.2.1}/pyproject.toml +1 -1
  3. {benchkit_cli-0.2.0 → benchkit_cli-0.2.1}/src/benchkit/benchmarks/patcheval.py +21 -4
  4. {benchkit_cli-0.2.0 → benchkit_cli-0.2.1/src/benchkit_cli.egg-info}/PKG-INFO +1 -1
  5. {benchkit_cli-0.2.0 → benchkit_cli-0.2.1}/tests/test_patcheval.py +26 -1
  6. {benchkit_cli-0.2.0 → benchkit_cli-0.2.1}/LICENSE +0 -0
  7. {benchkit_cli-0.2.0 → benchkit_cli-0.2.1}/README.md +0 -0
  8. {benchkit_cli-0.2.0 → benchkit_cli-0.2.1}/setup.cfg +0 -0
  9. {benchkit_cli-0.2.0 → benchkit_cli-0.2.1}/src/benchkit/__init__.py +0 -0
  10. {benchkit_cli-0.2.0 → benchkit_cli-0.2.1}/src/benchkit/_pi_proxy.py +0 -0
  11. {benchkit_cli-0.2.0 → benchkit_cli-0.2.1}/src/benchkit/answer_key_guard.ts +0 -0
  12. {benchkit_cli-0.2.0 → benchkit_cli-0.2.1}/src/benchkit/artifacts.py +0 -0
  13. {benchkit_cli-0.2.0 → benchkit_cli-0.2.1}/src/benchkit/benchmarks/__init__.py +0 -0
  14. {benchkit_cli-0.2.0 → benchkit_cli-0.2.1}/src/benchkit/benchmarks/aider_polyglot.py +0 -0
  15. {benchkit_cli-0.2.0 → benchkit_cli-0.2.1}/src/benchkit/benchmarks/arc.py +0 -0
  16. {benchkit_cli-0.2.0 → benchkit_cli-0.2.1}/src/benchkit/benchmarks/banking77.py +0 -0
  17. {benchkit_cli-0.2.0 → benchkit_cli-0.2.1}/src/benchkit/benchmarks/base.py +0 -0
  18. {benchkit_cli-0.2.0 → benchkit_cli-0.2.1}/src/benchkit/benchmarks/boolq.py +0 -0
  19. {benchkit_cli-0.2.0 → benchkit_cli-0.2.1}/src/benchkit/benchmarks/chartqa.py +0 -0
  20. {benchkit_cli-0.2.0 → benchkit_cli-0.2.1}/src/benchkit/benchmarks/code_verifier.py +0 -0
  21. {benchkit_cli-0.2.0 → benchkit_cli-0.2.1}/src/benchkit/benchmarks/cruxeval.py +0 -0
  22. {benchkit_cli-0.2.0 → benchkit_cli-0.2.1}/src/benchkit/benchmarks/downloads.py +0 -0
  23. {benchkit_cli-0.2.0 → benchkit_cli-0.2.1}/src/benchkit/benchmarks/evalplus.py +0 -0
  24. {benchkit_cli-0.2.0 → benchkit_cli-0.2.1}/src/benchkit/benchmarks/git_surgery.py +0 -0
  25. {benchkit_cli-0.2.0 → benchkit_cli-0.2.1}/src/benchkit/benchmarks/gpqa.py +0 -0
  26. {benchkit_cli-0.2.0 → benchkit_cli-0.2.1}/src/benchkit/benchmarks/gsm8k.py +0 -0
  27. {benchkit_cli-0.2.0 → benchkit_cli-0.2.1}/src/benchkit/benchmarks/hellaswag.py +0 -0
  28. {benchkit_cli-0.2.0 → benchkit_cli-0.2.1}/src/benchkit/benchmarks/humaneval.py +0 -0
  29. {benchkit_cli-0.2.0 → benchkit_cli-0.2.1}/src/benchkit/benchmarks/ifeval.py +0 -0
  30. {benchkit_cli-0.2.0 → benchkit_cli-0.2.1}/src/benchkit/benchmarks/ifeval_instructions.py +0 -0
  31. {benchkit_cli-0.2.0 → benchkit_cli-0.2.1}/src/benchkit/benchmarks/mbpp.py +0 -0
  32. {benchkit_cli-0.2.0 → benchkit_cli-0.2.1}/src/benchkit/benchmarks/mc_arena.py +0 -0
  33. {benchkit_cli-0.2.0 → benchkit_cli-0.2.1}/src/benchkit/benchmarks/mcq.py +0 -0
  34. {benchkit_cli-0.2.0 → benchkit_cli-0.2.1}/src/benchkit/benchmarks/medfailbench.py +0 -0
  35. {benchkit_cli-0.2.0 → benchkit_cli-0.2.1}/src/benchkit/benchmarks/mmlu.py +0 -0
  36. {benchkit_cli-0.2.0 → benchkit_cli-0.2.1}/src/benchkit/benchmarks/mmlu_pro.py +0 -0
  37. {benchkit_cli-0.2.0 → benchkit_cli-0.2.1}/src/benchkit/benchmarks/mmvp.py +0 -0
  38. {benchkit_cli-0.2.0 → benchkit_cli-0.2.1}/src/benchkit/benchmarks/ocrbench.py +0 -0
  39. {benchkit_cli-0.2.0 → benchkit_cli-0.2.1}/src/benchkit/benchmarks/openbookqa.py +0 -0
  40. {benchkit_cli-0.2.0 → benchkit_cli-0.2.1}/src/benchkit/benchmarks/piqa.py +0 -0
  41. {benchkit_cli-0.2.0 → benchkit_cli-0.2.1}/src/benchkit/benchmarks/ruler.py +0 -0
  42. {benchkit_cli-0.2.0 → benchkit_cli-0.2.1}/src/benchkit/benchmarks/ruler_generator.py +0 -0
  43. {benchkit_cli-0.2.0 → benchkit_cli-0.2.1}/src/benchkit/benchmarks/sanity.py +0 -0
  44. {benchkit_cli-0.2.0 → benchkit_cli-0.2.1}/src/benchkit/benchmarks/treejs_arena.py +0 -0
  45. {benchkit_cli-0.2.0 → benchkit_cli-0.2.1}/src/benchkit/benchmarks/truthfulqa.py +0 -0
  46. {benchkit_cli-0.2.0 → benchkit_cli-0.2.1}/src/benchkit/benchmarks/utils.py +0 -0
  47. {benchkit_cli-0.2.0 → benchkit_cli-0.2.1}/src/benchkit/benchmarks/vision.py +0 -0
  48. {benchkit_cli-0.2.0 → benchkit_cli-0.2.1}/src/benchkit/benchmarks/vstar.py +0 -0
  49. {benchkit_cli-0.2.0 → benchkit_cli-0.2.1}/src/benchkit/benchmarks/winogrande.py +0 -0
  50. {benchkit_cli-0.2.0 → benchkit_cli-0.2.1}/src/benchkit/benchmarks/xstest.py +0 -0
  51. {benchkit_cli-0.2.0 → benchkit_cli-0.2.1}/src/benchkit/browser.py +0 -0
  52. {benchkit_cli-0.2.0 → benchkit_cli-0.2.1}/src/benchkit/catalog.py +0 -0
  53. {benchkit_cli-0.2.0 → benchkit_cli-0.2.1}/src/benchkit/cli.py +0 -0
  54. {benchkit_cli-0.2.0 → benchkit_cli-0.2.1}/src/benchkit/client.py +0 -0
  55. {benchkit_cli-0.2.0 → benchkit_cli-0.2.1}/src/benchkit/config.py +0 -0
  56. {benchkit_cli-0.2.0 → benchkit_cli-0.2.1}/src/benchkit/controls.py +0 -0
  57. {benchkit_cli-0.2.0 → benchkit_cli-0.2.1}/src/benchkit/datasets/MMLU_LICENSE.txt +0 -0
  58. {benchkit_cli-0.2.0 → benchkit_cli-0.2.1}/src/benchkit/datasets/README.md +0 -0
  59. {benchkit_cli-0.2.0 → benchkit_cli-0.2.1}/src/benchkit/datasets/arc_challenge.jsonl +0 -0
  60. {benchkit_cli-0.2.0 → benchkit_cli-0.2.1}/src/benchkit/datasets/banking77.jsonl +0 -0
  61. {benchkit_cli-0.2.0 → benchkit_cli-0.2.1}/src/benchkit/datasets/banking77_intents.json +0 -0
  62. {benchkit_cli-0.2.0 → benchkit_cli-0.2.1}/src/benchkit/datasets/boolq.jsonl +0 -0
  63. {benchkit_cli-0.2.0 → benchkit_cli-0.2.1}/src/benchkit/datasets/code_verifier.jsonl +0 -0
  64. {benchkit_cli-0.2.0 → benchkit_cli-0.2.1}/src/benchkit/datasets/cruxeval.jsonl +0 -0
  65. {benchkit_cli-0.2.0 → benchkit_cli-0.2.1}/src/benchkit/datasets/gpqa_diamond.jsonl +0 -0
  66. {benchkit_cli-0.2.0 → benchkit_cli-0.2.1}/src/benchkit/datasets/gsm8k.jsonl +0 -0
  67. {benchkit_cli-0.2.0 → benchkit_cli-0.2.1}/src/benchkit/datasets/hellaswag.jsonl +0 -0
  68. {benchkit_cli-0.2.0 → benchkit_cli-0.2.1}/src/benchkit/datasets/humaneval.jsonl +0 -0
  69. {benchkit_cli-0.2.0 → benchkit_cli-0.2.1}/src/benchkit/datasets/ifeval.jsonl +0 -0
  70. {benchkit_cli-0.2.0 → benchkit_cli-0.2.1}/src/benchkit/datasets/mbpp.jsonl +0 -0
  71. {benchkit_cli-0.2.0 → benchkit_cli-0.2.1}/src/benchkit/datasets/mc_blocks_1_20_1.jsonl +0 -0
  72. {benchkit_cli-0.2.0 → benchkit_cli-0.2.1}/src/benchkit/datasets/medfailbench_hard30.jsonl +0 -0
  73. {benchkit_cli-0.2.0 → benchkit_cli-0.2.1}/src/benchkit/datasets/medfailbench_hard30.md +0 -0
  74. {benchkit_cli-0.2.0 → benchkit_cli-0.2.1}/src/benchkit/datasets/openbookqa.jsonl +0 -0
  75. {benchkit_cli-0.2.0 → benchkit_cli-0.2.1}/src/benchkit/datasets/piqa.jsonl +0 -0
  76. {benchkit_cli-0.2.0 → benchkit_cli-0.2.1}/src/benchkit/datasets/sanity_code.jsonl +0 -0
  77. {benchkit_cli-0.2.0 → benchkit_cli-0.2.1}/src/benchkit/datasets/truthfulqa.jsonl +0 -0
  78. {benchkit_cli-0.2.0 → benchkit_cli-0.2.1}/src/benchkit/datasets/winogrande.jsonl +0 -0
  79. {benchkit_cli-0.2.0 → benchkit_cli-0.2.1}/src/benchkit/datasets/xstest.csv +0 -0
  80. {benchkit_cli-0.2.0 → benchkit_cli-0.2.1}/src/benchkit/decision.py +0 -0
  81. {benchkit_cli-0.2.0 → benchkit_cli-0.2.1}/src/benchkit/demo.py +0 -0
  82. {benchkit_cli-0.2.0 → benchkit_cli-0.2.1}/src/benchkit/dockerfiles.py +0 -0
  83. {benchkit_cli-0.2.0 → benchkit_cli-0.2.1}/src/benchkit/engine.py +0 -0
  84. {benchkit_cli-0.2.0 → benchkit_cli-0.2.1}/src/benchkit/evaluation.py +0 -0
  85. {benchkit_cli-0.2.0 → benchkit_cli-0.2.1}/src/benchkit/events.py +0 -0
  86. {benchkit_cli-0.2.0 → benchkit_cli-0.2.1}/src/benchkit/executor.py +0 -0
  87. {benchkit_cli-0.2.0 → benchkit_cli-0.2.1}/src/benchkit/git_surgery/backport-release-stack/setup.sh +0 -0
  88. {benchkit_cli-0.2.0 → benchkit_cli-0.2.1}/src/benchkit/git_surgery/backport-release-stack/verify.sh +0 -0
  89. {benchkit_cli-0.2.0 → benchkit_cli-0.2.1}/src/benchkit/git_surgery/bisect-the-regression/setup.sh +0 -0
  90. {benchkit_cli-0.2.0 → benchkit_cli-0.2.1}/src/benchkit/git_surgery/bisect-the-regression/verify.sh +0 -0
  91. {benchkit_cli-0.2.0 → benchkit_cli-0.2.1}/src/benchkit/git_surgery/rebase-conflict-chain/setup.sh +0 -0
  92. {benchkit_cli-0.2.0 → benchkit_cli-0.2.1}/src/benchkit/git_surgery/rebase-conflict-chain/verify.sh +0 -0
  93. {benchkit_cli-0.2.0 → benchkit_cli-0.2.1}/src/benchkit/git_surgery/recover-complex-stash/setup.sh +0 -0
  94. {benchkit_cli-0.2.0 → benchkit_cli-0.2.1}/src/benchkit/git_surgery/recover-complex-stash/verify.sh +0 -0
  95. {benchkit_cli-0.2.0 → benchkit_cli-0.2.1}/src/benchkit/git_surgery/recover-lost-work/setup.sh +0 -0
  96. {benchkit_cli-0.2.0 → benchkit_cli-0.2.1}/src/benchkit/git_surgery/recover-lost-work/verify.sh +0 -0
  97. {benchkit_cli-0.2.0 → benchkit_cli-0.2.1}/src/benchkit/git_surgery/repair-force-pushed-remote/setup.sh +0 -0
  98. {benchkit_cli-0.2.0 → benchkit_cli-0.2.1}/src/benchkit/git_surgery/repair-force-pushed-remote/verify.sh +0 -0
  99. {benchkit_cli-0.2.0 → benchkit_cli-0.2.1}/src/benchkit/git_surgery/revert-merge-with-followups/setup.sh +0 -0
  100. {benchkit_cli-0.2.0 → benchkit_cli-0.2.1}/src/benchkit/git_surgery/revert-merge-with-followups/verify.sh +0 -0
  101. {benchkit_cli-0.2.0 → benchkit_cli-0.2.1}/src/benchkit/git_surgery/secret-in-history/README.md +0 -0
  102. {benchkit_cli-0.2.0 → benchkit_cli-0.2.1}/src/benchkit/git_surgery/secret-in-history/setup.sh +0 -0
  103. {benchkit_cli-0.2.0 → benchkit_cli-0.2.1}/src/benchkit/git_surgery/secret-in-history/verify.sh +0 -0
  104. {benchkit_cli-0.2.0 → benchkit_cli-0.2.1}/src/benchkit/git_surgery/split-the-mega-commit/setup.sh +0 -0
  105. {benchkit_cli-0.2.0 → benchkit_cli-0.2.1}/src/benchkit/git_surgery/split-the-mega-commit/verify.sh +0 -0
  106. {benchkit_cli-0.2.0 → benchkit_cli-0.2.1}/src/benchkit/git_surgery/untangle-nested-submodules/setup.sh +0 -0
  107. {benchkit_cli-0.2.0 → benchkit_cli-0.2.1}/src/benchkit/git_surgery/untangle-nested-submodules/verify.sh +0 -0
  108. {benchkit_cli-0.2.0 → benchkit_cli-0.2.1}/src/benchkit/history.py +0 -0
  109. {benchkit_cli-0.2.0 → benchkit_cli-0.2.1}/src/benchkit/jobs.py +0 -0
  110. {benchkit_cli-0.2.0 → benchkit_cli-0.2.1}/src/benchkit/leakage.py +0 -0
  111. {benchkit_cli-0.2.0 → benchkit_cli-0.2.1}/src/benchkit/looping.py +0 -0
  112. {benchkit_cli-0.2.0 → benchkit_cli-0.2.1}/src/benchkit/mc_render.py +0 -0
  113. {benchkit_cli-0.2.0 → benchkit_cli-0.2.1}/src/benchkit/mc_viewer/dist/atlas.png +0 -0
  114. {benchkit_cli-0.2.0 → benchkit_cli-0.2.1}/src/benchkit/mc_viewer/dist/blockStates.json.gz +0 -0
  115. {benchkit_cli-0.2.0 → benchkit_cli-0.2.1}/src/benchkit/mc_viewer/dist/version.json +0 -0
  116. {benchkit_cli-0.2.0 → benchkit_cli-0.2.1}/src/benchkit/mc_viewer/dist/viewer.html +0 -0
  117. {benchkit_cli-0.2.0 → benchkit_cli-0.2.1}/src/benchkit/mc_viewer/dist/viewer.js +0 -0
  118. {benchkit_cli-0.2.0 → benchkit_cli-0.2.1}/src/benchkit/mc_viewer/dist/viewer.js.LICENSE.txt +0 -0
  119. {benchkit_cli-0.2.0 → benchkit_cli-0.2.1}/src/benchkit/mc_viewer/dist/worker.js +0 -0
  120. {benchkit_cli-0.2.0 → benchkit_cli-0.2.1}/src/benchkit/mc_viewer/dist/worker.js.LICENSE.txt +0 -0
  121. {benchkit_cli-0.2.0 → benchkit_cli-0.2.1}/src/benchkit/metrics.py +0 -0
  122. {benchkit_cli-0.2.0 → benchkit_cli-0.2.1}/src/benchkit/ollama.py +0 -0
  123. {benchkit_cli-0.2.0 → benchkit_cli-0.2.1}/src/benchkit/perf.py +0 -0
  124. {benchkit_cli-0.2.0 → benchkit_cli-0.2.1}/src/benchkit/perf_report.py +0 -0
  125. {benchkit_cli-0.2.0 → benchkit_cli-0.2.1}/src/benchkit/perturbations.py +0 -0
  126. {benchkit_cli-0.2.0 → benchkit_cli-0.2.1}/src/benchkit/pi_agent.py +0 -0
  127. {benchkit_cli-0.2.0 → benchkit_cli-0.2.1}/src/benchkit/pi_package/package-lock.json +0 -0
  128. {benchkit_cli-0.2.0 → benchkit_cli-0.2.1}/src/benchkit/pi_package/package.json +0 -0
  129. {benchkit_cli-0.2.0 → benchkit_cli-0.2.1}/src/benchkit/report.py +0 -0
  130. {benchkit_cli-0.2.0 → benchkit_cli-0.2.1}/src/benchkit/report_markdown.py +0 -0
  131. {benchkit_cli-0.2.0 → benchkit_cli-0.2.1}/src/benchkit/results.py +0 -0
  132. {benchkit_cli-0.2.0 → benchkit_cli-0.2.1}/src/benchkit/retry.py +0 -0
  133. {benchkit_cli-0.2.0 → benchkit_cli-0.2.1}/src/benchkit/runner.py +0 -0
  134. {benchkit_cli-0.2.0 → benchkit_cli-0.2.1}/src/benchkit/sandbox.py +0 -0
  135. {benchkit_cli-0.2.0 → benchkit_cli-0.2.1}/src/benchkit/template_check.py +0 -0
  136. {benchkit_cli-0.2.0 → benchkit_cli-0.2.1}/src/benchkit/templates/arena.html +0 -0
  137. {benchkit_cli-0.2.0 → benchkit_cli-0.2.1}/src/benchkit/templates/history.html +0 -0
  138. {benchkit_cli-0.2.0 → benchkit_cli-0.2.1}/src/benchkit/templates/perf.html +0 -0
  139. {benchkit_cli-0.2.0 → benchkit_cli-0.2.1}/src/benchkit/templates/report.html +0 -0
  140. {benchkit_cli-0.2.0 → benchkit_cli-0.2.1}/src/benchkit/tui/__init__.py +0 -0
  141. {benchkit_cli-0.2.0 → benchkit_cli-0.2.1}/src/benchkit/tui/app.py +0 -0
  142. {benchkit_cli-0.2.0 → benchkit_cli-0.2.1}/src/benchkit/tui/app.tcss +0 -0
  143. {benchkit_cli-0.2.0 → benchkit_cli-0.2.1}/src/benchkit/tui/formatting.py +0 -0
  144. {benchkit_cli-0.2.0 → benchkit_cli-0.2.1}/src/benchkit/tui/screens/__init__.py +0 -0
  145. {benchkit_cli-0.2.0 → benchkit_cli-0.2.1}/src/benchkit/tui/screens/connect.py +0 -0
  146. {benchkit_cli-0.2.0 → benchkit_cli-0.2.1}/src/benchkit/tui/screens/detail.py +0 -0
  147. {benchkit_cli-0.2.0 → benchkit_cli-0.2.1}/src/benchkit/tui/screens/help.py +0 -0
  148. {benchkit_cli-0.2.0 → benchkit_cli-0.2.1}/src/benchkit/tui/screens/modals.py +0 -0
  149. {benchkit_cli-0.2.0 → benchkit_cli-0.2.1}/src/benchkit/tui/screens/results.py +0 -0
  150. {benchkit_cli-0.2.0 → benchkit_cli-0.2.1}/src/benchkit/tui/screens/run.py +0 -0
  151. {benchkit_cli-0.2.0 → benchkit_cli-0.2.1}/src/benchkit/tui/screens/setup.py +0 -0
  152. {benchkit_cli-0.2.0 → benchkit_cli-0.2.1}/src/benchkit/tui/theme.py +0 -0
  153. {benchkit_cli-0.2.0 → benchkit_cli-0.2.1}/src/benchkit/tui/widgets.py +0 -0
  154. {benchkit_cli-0.2.0 → benchkit_cli-0.2.1}/src/benchkit_cli.egg-info/SOURCES.txt +0 -0
  155. {benchkit_cli-0.2.0 → benchkit_cli-0.2.1}/src/benchkit_cli.egg-info/dependency_links.txt +0 -0
  156. {benchkit_cli-0.2.0 → benchkit_cli-0.2.1}/src/benchkit_cli.egg-info/entry_points.txt +0 -0
  157. {benchkit_cli-0.2.0 → benchkit_cli-0.2.1}/src/benchkit_cli.egg-info/requires.txt +0 -0
  158. {benchkit_cli-0.2.0 → benchkit_cli-0.2.1}/src/benchkit_cli.egg-info/top_level.txt +0 -0
  159. {benchkit_cli-0.2.0 → benchkit_cli-0.2.1}/tests/test_aider_polyglot.py +0 -0
  160. {benchkit_cli-0.2.0 → benchkit_cli-0.2.1}/tests/test_banking77.py +0 -0
  161. {benchkit_cli-0.2.0 → benchkit_cli-0.2.1}/tests/test_code_verifier.py +0 -0
  162. {benchkit_cli-0.2.0 → benchkit_cli-0.2.1}/tests/test_concurrency.py +0 -0
  163. {benchkit_cli-0.2.0 → benchkit_cli-0.2.1}/tests/test_config.py +0 -0
  164. {benchkit_cli-0.2.0 → benchkit_cli-0.2.1}/tests/test_cruxeval.py +0 -0
  165. {benchkit_cli-0.2.0 → benchkit_cli-0.2.1}/tests/test_datasets.py +0 -0
  166. {benchkit_cli-0.2.0 → benchkit_cli-0.2.1}/tests/test_decision.py +0 -0
  167. {benchkit_cli-0.2.0 → benchkit_cli-0.2.1}/tests/test_evalplus.py +0 -0
  168. {benchkit_cli-0.2.0 → benchkit_cli-0.2.1}/tests/test_git_surgery.py +0 -0
  169. {benchkit_cli-0.2.0 → benchkit_cli-0.2.1}/tests/test_gsm8k.py +0 -0
  170. {benchkit_cli-0.2.0 → benchkit_cli-0.2.1}/tests/test_history.py +0 -0
  171. {benchkit_cli-0.2.0 → benchkit_cli-0.2.1}/tests/test_humaneval.py +0 -0
  172. {benchkit_cli-0.2.0 → benchkit_cli-0.2.1}/tests/test_looping.py +0 -0
  173. {benchkit_cli-0.2.0 → benchkit_cli-0.2.1}/tests/test_mc_arena.py +0 -0
  174. {benchkit_cli-0.2.0 → benchkit_cli-0.2.1}/tests/test_mcq.py +0 -0
  175. {benchkit_cli-0.2.0 → benchkit_cli-0.2.1}/tests/test_medfailbench.py +0 -0
  176. {benchkit_cli-0.2.0 → benchkit_cli-0.2.1}/tests/test_medfailbench_real_outputs.py +0 -0
  177. {benchkit_cli-0.2.0 → benchkit_cli-0.2.1}/tests/test_medfailbench_real_outputs_escalation.py +0 -0
  178. {benchkit_cli-0.2.0 → benchkit_cli-0.2.1}/tests/test_medfailbench_scoring_distortion.py +0 -0
  179. {benchkit_cli-0.2.0 → benchkit_cli-0.2.1}/tests/test_perturbations.py +0 -0
  180. {benchkit_cli-0.2.0 → benchkit_cli-0.2.1}/tests/test_pi_harness.py +0 -0
  181. {benchkit_cli-0.2.0 → benchkit_cli-0.2.1}/tests/test_repair.py +0 -0
  182. {benchkit_cli-0.2.0 → benchkit_cli-0.2.1}/tests/test_report.py +0 -0
  183. {benchkit_cli-0.2.0 → benchkit_cli-0.2.1}/tests/test_retry.py +0 -0
  184. {benchkit_cli-0.2.0 → benchkit_cli-0.2.1}/tests/test_ruler.py +0 -0
  185. {benchkit_cli-0.2.0 → benchkit_cli-0.2.1}/tests/test_runner.py +0 -0
  186. {benchkit_cli-0.2.0 → benchkit_cli-0.2.1}/tests/test_sanity.py +0 -0
  187. {benchkit_cli-0.2.0 → benchkit_cli-0.2.1}/tests/test_treejs_arena.py +0 -0
  188. {benchkit_cli-0.2.0 → benchkit_cli-0.2.1}/tests/test_unload.py +0 -0
  189. {benchkit_cli-0.2.0 → benchkit_cli-0.2.1}/tests/test_utils.py +0 -0
  190. {benchkit_cli-0.2.0 → benchkit_cli-0.2.1}/tests/test_vision.py +0 -0
  191. {benchkit_cli-0.2.0 → benchkit_cli-0.2.1}/tests/test_xstest.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: benchkit-cli
3
- Version: 0.2.0
3
+ Version: 0.2.1
4
4
  Summary: Benchmark your local LLMs with real eval suites
5
5
  License-Expression: Apache-2.0
6
6
  Requires-Python: >=3.11
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "benchkit-cli"
3
- version = "0.2.0"
3
+ version = "0.2.1"
4
4
  description = "Benchmark your local LLMs with real eval suites"
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.11"
@@ -39,8 +39,10 @@ _RELEASE_FILE = "dataset.json"
39
39
  # files tasks.jsonl names are fetched (not the miner that built it), and every
40
40
  # task pins its source archive and hidden tests by sha256, which load_tasks
41
41
  # verifies, so a bad or moved upstream file fails loudly instead of scoring.
42
+ # The revision is a pinned commit: a cache fetched from any other revision is
43
+ # fetched again, so an errata release never grades with stale hidden tests.
42
44
  _HF_DATASET = "DogukanUrker/PatchEval"
43
- _HF_REVISION = "main"
45
+ _HF_REVISION = "13c6964b497f6f118bf5af51a2b1b39cc2d612e6"
44
46
  _RELEASE = "pilot-20"
45
47
  _COMPLETE = ".complete"
46
48
  _FETCH_LOCK = threading.Lock()
@@ -178,11 +180,19 @@ def _dataset_dir() -> Path:
178
180
  return _configured_root() or _cache_dir()
179
181
 
180
182
 
183
+ def _cached_revision_matches(root: Path) -> bool:
184
+ try:
185
+ marker = (root / _COMPLETE).read_text(encoding="utf-8")
186
+ except OSError:
187
+ return False
188
+ return marker.strip() == _HF_REVISION
189
+
190
+
181
191
  def _dataset_installed() -> bool:
182
192
  configured = _configured_root()
183
193
  if configured is not None:
184
194
  return (configured / _RELEASE_FILE).is_file()
185
- return (_cache_dir() / _COMPLETE).is_file()
195
+ return _cached_revision_matches(_cache_dir())
186
196
 
187
197
 
188
198
  def _fetch_release(progress: Progress | None = None) -> Path:
@@ -192,8 +202,9 @@ def _fetch_release(progress: Progress | None = None) -> Path:
192
202
  return configured
193
203
  root = _cache_dir()
194
204
  with _FETCH_LOCK:
195
- if (root / _COMPLETE).is_file():
205
+ if _cached_revision_matches(root):
196
206
  return root
207
+ (root / _COMPLETE).unlink(missing_ok=True)
197
208
  root.mkdir(parents=True, exist_ok=True)
198
209
  done = 0
199
210
  with vision._http_client() as client:
@@ -724,6 +735,7 @@ class PatchEval:
724
735
  def __init__(self, dataset_root: Path | None = None) -> None:
725
736
  self.dataset_root = dataset_root
726
737
  self.release = "unloaded"
738
+ self.revision: int | None = None
727
739
 
728
740
  def _root(self) -> Path:
729
741
  return (self.dataset_root or _fetch_release()).resolve()
@@ -753,6 +765,8 @@ class PatchEval:
753
765
  f"PatchEval dataset must use schema_version {_SCHEMA_VERSION}"
754
766
  )
755
767
  self.release = str(release.get("release") or "unknown")
768
+ revision = release.get("revision")
769
+ self.revision = revision if isinstance(revision, int) else None
756
770
  try:
757
771
  records = [
758
772
  json.loads(line)
@@ -774,7 +788,10 @@ class PatchEval:
774
788
  return [Task(spec.id, "", {"spec": spec}) for spec in specs]
775
789
 
776
790
  def result_metadata(self, _variant: str | None) -> dict:
777
- return {"dataset_release": self.release}
791
+ metadata: dict = {"dataset_release": self.release}
792
+ if self.revision is not None:
793
+ metadata["dataset_revision"] = self.revision
794
+ return metadata
778
795
 
779
796
  def build_prompt(self, task: Task) -> str:
780
797
  spec = self._spec(task)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: benchkit-cli
3
- Version: 0.2.0
3
+ Version: 0.2.1
4
4
  Summary: Benchmark your local LLMs with real eval suites
5
5
  License-Expression: Apache-2.0
6
6
  Requires-Python: >=3.11
@@ -20,7 +20,9 @@ import pytest
20
20
  from benchkit import catalog
21
21
  from benchkit.benchmarks import vision
22
22
  from benchkit.benchmarks.patcheval import (
23
+ _COMPLETE,
23
24
  _GENERIC_REPAIR,
25
+ _HF_REVISION,
24
26
  PatchEval,
25
27
  _grade_once,
26
28
  _trusted_patch,
@@ -139,6 +141,7 @@ class PatchEvalTests(unittest.TestCase):
139
141
  self.assertEqual(
140
142
  benchmark.result_metadata(None), {"dataset_release": "pilot-20"}
141
143
  )
144
+
142
145
  prompt = benchmark.build_prompt(tasks[0])
143
146
  self.assertEqual(
144
147
  prompt,
@@ -150,6 +153,20 @@ class PatchEvalTests(unittest.TestCase):
150
153
  self.assertNotIn("benchmark", prompt.lower())
151
154
  self.assertNotIn("hidden", prompt.lower())
152
155
 
156
+ def test_records_the_dataset_revision_when_the_release_has_one(self) -> None:
157
+ with tempfile.TemporaryDirectory() as directory:
158
+ root = Path(directory)
159
+ _dataset(root)
160
+ release = json.loads((root / "dataset.json").read_text("utf-8"))
161
+ release["revision"] = 2
162
+ (root / "dataset.json").write_text(json.dumps(release), "utf-8")
163
+ benchmark = PatchEval(root)
164
+ benchmark.load_tasks()
165
+ self.assertEqual(
166
+ benchmark.result_metadata(None),
167
+ {"dataset_release": "pilot-20", "dataset_revision": 2},
168
+ )
169
+
153
170
  def test_rejects_unvalidated_tasks(self) -> None:
154
171
  with tempfile.TemporaryDirectory() as directory:
155
172
  root = Path(directory)
@@ -716,7 +733,7 @@ def test_patcheval_fetches_its_release_and_verifies_it(cache, tmp_path, monkeypa
716
733
  seen: list[str] = []
717
734
 
718
735
  def serve(request: httpx.Request) -> httpx.Response:
719
- prefix = "/datasets/DogukanUrker/PatchEval/resolve/main/"
736
+ prefix = f"/datasets/DogukanUrker/PatchEval/resolve/{_HF_REVISION}/"
720
737
  name = request.url.path.removeprefix(prefix)
721
738
  seen.append(name)
722
739
  path = release / name
@@ -744,6 +761,14 @@ def test_patcheval_fetches_its_release_and_verifies_it(cache, tmp_path, monkeypa
744
761
  catalog.install("patcheval")
745
762
  assert len(seen) == 4 # cached
746
763
 
764
+ # A cache from another revision (an older errata) is fetched again.
765
+ (cache / "patcheval" / "pilot-20" / _COMPLETE).write_text("main\n")
766
+ assert catalog.status("patcheval").installable
767
+ catalog.install("patcheval")
768
+ assert len(seen) == 8
769
+ marker = (cache / "patcheval" / "pilot-20" / _COMPLETE).read_text()
770
+ assert marker == _HF_REVISION + "\n"
771
+
747
772
 
748
773
  def test_patcheval_rejects_paths_outside_its_cache(cache, monkeypatch):
749
774
  monkeypatch.delenv("BENCHKIT_PATCHEVAL_DATASET", raising=False)
File without changes
File without changes
File without changes