tuieval 0.2.0.dev120__tar.gz → 0.2.0.dev121__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.
- {tuieval-0.2.0.dev120 → tuieval-0.2.0.dev121}/CHANGELOG.md +1 -0
- {tuieval-0.2.0.dev120 → tuieval-0.2.0.dev121}/PKG-INFO +1 -1
- {tuieval-0.2.0.dev120 → tuieval-0.2.0.dev121}/src/tuieval/_version.py +2 -2
- {tuieval-0.2.0.dev120 → tuieval-0.2.0.dev121}/src/tuieval/tui.py +5 -3
- {tuieval-0.2.0.dev120 → tuieval-0.2.0.dev121}/tests/test_tuieval.py +19 -1
- {tuieval-0.2.0.dev120 → tuieval-0.2.0.dev121}/.gitignore +0 -0
- {tuieval-0.2.0.dev120 → tuieval-0.2.0.dev121}/LICENSE +0 -0
- {tuieval-0.2.0.dev120 → tuieval-0.2.0.dev121}/README.md +0 -0
- {tuieval-0.2.0.dev120 → tuieval-0.2.0.dev121}/RELEASING.md +0 -0
- {tuieval-0.2.0.dev120 → tuieval-0.2.0.dev121}/docs/images/brand/README.md +0 -0
- {tuieval-0.2.0.dev120 → tuieval-0.2.0.dev121}/docs/images/brand/favicon.ico +0 -0
- {tuieval-0.2.0.dev120 → tuieval-0.2.0.dev121}/docs/images/brand/readme-header.png +0 -0
- {tuieval-0.2.0.dev120 → tuieval-0.2.0.dev121}/docs/images/brand/social-preview.png +0 -0
- {tuieval-0.2.0.dev120 → tuieval-0.2.0.dev121}/docs/images/brand/tuieval-icon-1024.png +0 -0
- {tuieval-0.2.0.dev120 → tuieval-0.2.0.dev121}/docs/images/brand/tuieval-icon-128.png +0 -0
- {tuieval-0.2.0.dev120 → tuieval-0.2.0.dev121}/docs/images/brand/tuieval-icon-16.png +0 -0
- {tuieval-0.2.0.dev120 → tuieval-0.2.0.dev121}/docs/images/brand/tuieval-icon-16.svg +0 -0
- {tuieval-0.2.0.dev120 → tuieval-0.2.0.dev121}/docs/images/brand/tuieval-icon-256.png +0 -0
- {tuieval-0.2.0.dev120 → tuieval-0.2.0.dev121}/docs/images/brand/tuieval-icon-32.png +0 -0
- {tuieval-0.2.0.dev120 → tuieval-0.2.0.dev121}/docs/images/brand/tuieval-icon-48.png +0 -0
- {tuieval-0.2.0.dev120 → tuieval-0.2.0.dev121}/docs/images/brand/tuieval-icon-512.png +0 -0
- {tuieval-0.2.0.dev120 → tuieval-0.2.0.dev121}/docs/images/brand/tuieval-icon-64.png +0 -0
- {tuieval-0.2.0.dev120 → tuieval-0.2.0.dev121}/docs/images/brand/tuieval-icon-animated.svg +0 -0
- {tuieval-0.2.0.dev120 → tuieval-0.2.0.dev121}/docs/images/brand/tuieval-icon.svg +0 -0
- {tuieval-0.2.0.dev120 → tuieval-0.2.0.dev121}/docs/images/tui-answer-reasoning.png +0 -0
- {tuieval-0.2.0.dev120 → tuieval-0.2.0.dev121}/docs/images/tui-run-reasoning.png +0 -0
- {tuieval-0.2.0.dev120 → tuieval-0.2.0.dev121}/docs/images/tui-setup.png +0 -0
- {tuieval-0.2.0.dev120 → tuieval-0.2.0.dev121}/docs/models.md +0 -0
- {tuieval-0.2.0.dev120 → tuieval-0.2.0.dev121}/docs/writing-packs.md +0 -0
- {tuieval-0.2.0.dev120 → tuieval-0.2.0.dev121}/pyproject.toml +0 -0
- {tuieval-0.2.0.dev120 → tuieval-0.2.0.dev121}/src/tuieval/__init__.py +0 -0
- {tuieval-0.2.0.dev120 → tuieval-0.2.0.dev121}/src/tuieval/__main__.py +0 -0
- {tuieval-0.2.0.dev120 → tuieval-0.2.0.dev121}/src/tuieval/builtin.toml +0 -0
- {tuieval-0.2.0.dev120 → tuieval-0.2.0.dev121}/src/tuieval/cli.py +0 -0
- {tuieval-0.2.0.dev120 → tuieval-0.2.0.dev121}/src/tuieval/client.py +0 -0
- {tuieval-0.2.0.dev120 → tuieval-0.2.0.dev121}/src/tuieval/compare.py +0 -0
- {tuieval-0.2.0.dev120 → tuieval-0.2.0.dev121}/src/tuieval/dates.py +0 -0
- {tuieval-0.2.0.dev120 → tuieval-0.2.0.dev121}/src/tuieval/doctor.py +0 -0
- {tuieval-0.2.0.dev120 → tuieval-0.2.0.dev121}/src/tuieval/engine.py +0 -0
- {tuieval-0.2.0.dev120 → tuieval-0.2.0.dev121}/src/tuieval/export.py +0 -0
- {tuieval-0.2.0.dev120 → tuieval-0.2.0.dev121}/src/tuieval/graders/__init__.py +0 -0
- {tuieval-0.2.0.dev120 → tuieval-0.2.0.dev121}/src/tuieval/graders/answer.py +0 -0
- {tuieval-0.2.0.dev120 → tuieval-0.2.0.dev121}/src/tuieval/graders/code.py +0 -0
- {tuieval-0.2.0.dev120 → tuieval-0.2.0.dev121}/src/tuieval/graders/rag.py +0 -0
- {tuieval-0.2.0.dev120 → tuieval-0.2.0.dev121}/src/tuieval/graders/reply.py +0 -0
- {tuieval-0.2.0.dev120 → tuieval-0.2.0.dev121}/src/tuieval/graders/tool_call.py +0 -0
- {tuieval-0.2.0.dev120 → tuieval-0.2.0.dev121}/src/tuieval/insights.py +0 -0
- {tuieval-0.2.0.dev120 → tuieval-0.2.0.dev121}/src/tuieval/logs.py +0 -0
- {tuieval-0.2.0.dev120 → tuieval-0.2.0.dev121}/src/tuieval/machines.py +0 -0
- {tuieval-0.2.0.dev120 → tuieval-0.2.0.dev121}/src/tuieval/onboard.py +0 -0
- {tuieval-0.2.0.dev120 → tuieval-0.2.0.dev121}/src/tuieval/packs.py +0 -0
- {tuieval-0.2.0.dev120 → tuieval-0.2.0.dev121}/src/tuieval/profiles.py +0 -0
- {tuieval-0.2.0.dev120 → tuieval-0.2.0.dev121}/src/tuieval/pta.py +0 -0
- {tuieval-0.2.0.dev120 → tuieval-0.2.0.dev121}/src/tuieval/remove.py +0 -0
- {tuieval-0.2.0.dev120 → tuieval-0.2.0.dev121}/src/tuieval/run_evals.py +0 -0
- {tuieval-0.2.0.dev120 → tuieval-0.2.0.dev121}/src/tuieval/scaffold.py +0 -0
- {tuieval-0.2.0.dev120 → tuieval-0.2.0.dev121}/src/tuieval/selftest.py +0 -0
- {tuieval-0.2.0.dev120 → tuieval-0.2.0.dev121}/src/tuieval/templates/models.toml +0 -0
- {tuieval-0.2.0.dev120 → tuieval-0.2.0.dev121}/src/tuieval/templates/packs/answer/pack.toml +0 -0
- {tuieval-0.2.0.dev120 → tuieval-0.2.0.dev121}/src/tuieval/templates/packs/answer/system.txt +0 -0
- {tuieval-0.2.0.dev120 → tuieval-0.2.0.dev121}/src/tuieval/templates/packs/answer/tests.yaml +0 -0
- {tuieval-0.2.0.dev120 → tuieval-0.2.0.dev121}/src/tuieval/templates/packs/code/pack.toml +0 -0
- {tuieval-0.2.0.dev120 → tuieval-0.2.0.dev121}/src/tuieval/templates/packs/code/system.txt +0 -0
- {tuieval-0.2.0.dev120 → tuieval-0.2.0.dev121}/src/tuieval/templates/packs/code/tests.yaml +0 -0
- {tuieval-0.2.0.dev120 → tuieval-0.2.0.dev121}/src/tuieval/templates/packs/rag/pack.toml +0 -0
- {tuieval-0.2.0.dev120 → tuieval-0.2.0.dev121}/src/tuieval/templates/packs/rag/system.txt +0 -0
- {tuieval-0.2.0.dev120 → tuieval-0.2.0.dev121}/src/tuieval/templates/packs/rag/tests.yaml +0 -0
- {tuieval-0.2.0.dev120 → tuieval-0.2.0.dev121}/src/tuieval/templates/packs/reply/pack.toml +0 -0
- {tuieval-0.2.0.dev120 → tuieval-0.2.0.dev121}/src/tuieval/templates/packs/reply/system.txt +0 -0
- {tuieval-0.2.0.dev120 → tuieval-0.2.0.dev121}/src/tuieval/templates/packs/reply/tests.yaml +0 -0
- {tuieval-0.2.0.dev120 → tuieval-0.2.0.dev121}/src/tuieval/templates/packs/tool_call/pack.toml +0 -0
- {tuieval-0.2.0.dev120 → tuieval-0.2.0.dev121}/src/tuieval/templates/packs/tool_call/system.txt +0 -0
- {tuieval-0.2.0.dev120 → tuieval-0.2.0.dev121}/src/tuieval/templates/packs/tool_call/tests.yaml +0 -0
- {tuieval-0.2.0.dev120 → tuieval-0.2.0.dev121}/src/tuieval/templates/packs/tool_call/tools.yaml +0 -0
- {tuieval-0.2.0.dev120 → tuieval-0.2.0.dev121}/src/tuieval/tune.py +0 -0
- {tuieval-0.2.0.dev120 → tuieval-0.2.0.dev121}/src/tuieval/verdict.py +0 -0
- {tuieval-0.2.0.dev120 → tuieval-0.2.0.dev121}/src/tuieval/watch_proxy.py +0 -0
- {tuieval-0.2.0.dev120 → tuieval-0.2.0.dev121}/src/tuieval/workspace.py +0 -0
- {tuieval-0.2.0.dev120 → tuieval-0.2.0.dev121}/src/tuieval/yamlout.py +0 -0
- {tuieval-0.2.0.dev120 → tuieval-0.2.0.dev121}/tests/mock_server.py +0 -0
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
## Unreleased
|
|
4
4
|
|
|
5
|
+
- Fix: Results → Per question opened the answers of the model one column to the right of the cell picked, and crashed on the last model's column.
|
|
5
6
|
- Fix: `v` on the run screen switches to the last model still running when the stream shows one that has finished.
|
|
6
7
|
- Setup opens with no models ticked: at launch, after New run, and after Back from a run or tune. Packs and options are still remembered.
|
|
7
8
|
- Tuning: a server that refuses the `ignore_eos` request field is asked again without it, so strict servers can be tuned; the profile notes that workload answers may end early.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: tuieval
|
|
3
|
-
Version: 0.2.0.
|
|
3
|
+
Version: 0.2.0.dev121
|
|
4
4
|
Summary: Evaluate local and frontier LLMs on your own questions: accuracy, speed, tokens and PASS/FAIL verdicts, in the terminal.
|
|
5
5
|
Project-URL: Homepage, https://github.com/ashe-wb/tuieval
|
|
6
6
|
Project-URL: Issues, https://github.com/ashe-wb/tuieval/issues
|
|
@@ -18,7 +18,7 @@ version_tuple: tuple[int | str, ...]
|
|
|
18
18
|
commit_id: str | None
|
|
19
19
|
__commit_id__: str | None
|
|
20
20
|
|
|
21
|
-
__version__ = version = '0.2.0.
|
|
22
|
-
__version_tuple__ = version_tuple = (0, 2, 0, '
|
|
21
|
+
__version__ = version = '0.2.0.dev121'
|
|
22
|
+
__version_tuple__ = version_tuple = (0, 2, 0, 'dev121')
|
|
23
23
|
|
|
24
24
|
__commit_id__ = commit_id = None
|
|
@@ -3296,7 +3296,7 @@ class ResultsScreen(Screen):
|
|
|
3296
3296
|
here = self.app.engine.machine().id
|
|
3297
3297
|
table = self.query_one("#per-question", DataTable)
|
|
3298
3298
|
table.clear(columns=True)
|
|
3299
|
-
table.add_columns(
|
|
3299
|
+
table.add_columns(*self.PQ_FIXED, *models)
|
|
3300
3300
|
self.pq_tests, self.pq_models = {}, models
|
|
3301
3301
|
for t in tests:
|
|
3302
3302
|
cells = []
|
|
@@ -3415,11 +3415,13 @@ class ResultsScreen(Screen):
|
|
|
3415
3415
|
return (f"{mark} {tok_s} {secs}" + (" [red]cut[/red]" if c["truncated"] else "")
|
|
3416
3416
|
+ (" [cyan]◐[/cyan]" if c["partial"] else ""))
|
|
3417
3417
|
|
|
3418
|
+
PQ_FIXED = ("Test", "Pack", "Level", "Added", "×tokens") # Per question's columns before the models
|
|
3419
|
+
|
|
3418
3420
|
@on(DataTable.CellSelected, "#per-question")
|
|
3419
3421
|
def per_question_selected(self, event):
|
|
3420
|
-
col = event.coordinate.column -
|
|
3422
|
+
col = event.coordinate.column - len(self.PQ_FIXED)
|
|
3421
3423
|
t = self.pq_tests.get(event.cell_key.row_key.value)
|
|
3422
|
-
if not t or col <
|
|
3424
|
+
if not t or not 0 <= col < len(self.pq_models):
|
|
3423
3425
|
self.notify("Pick a model's cell to open its answers.")
|
|
3424
3426
|
return
|
|
3425
3427
|
c = t["cells"].get(self.pq_models[col])
|
|
@@ -1761,7 +1761,23 @@ class PTAIndex(unittest.TestCase):
|
|
|
1761
1761
|
await pilot.pause(0.3)
|
|
1762
1762
|
s = app.screen
|
|
1763
1763
|
sorts["opened"] = s.entries[s.index]["record"]["test"]
|
|
1764
|
-
|
|
1764
|
+
s.dismiss()
|
|
1765
|
+
await pilot.pause(0.2)
|
|
1766
|
+
app.pq_models = set()
|
|
1767
|
+
app.screen.query_one("#pq-disagree").value = False
|
|
1768
|
+
app.screen.query_one(TabbedContent).active = "tab-per-question"
|
|
1769
|
+
app.screen.fill_per_question()
|
|
1770
|
+
await pilot.pause(0.3)
|
|
1771
|
+
opened = {}
|
|
1772
|
+
pq.focus()
|
|
1773
|
+
for col in range(5, len(pq.columns)): # each model's cell opens its own answers
|
|
1774
|
+
pq.move_cursor(row=0, column=col)
|
|
1775
|
+
await pilot.press("enter")
|
|
1776
|
+
await pilot.pause(0.3)
|
|
1777
|
+
opened[str(pq.ordered_columns[col].label.plain)] = app.screen.entries[0]["model"]
|
|
1778
|
+
app.screen.dismiss()
|
|
1779
|
+
await pilot.pause(0.2)
|
|
1780
|
+
print(json.dumps({"rows": rows, "bars": "P parsimony" in tri, "disagree": [both, alone], "opened": opened,
|
|
1765
1781
|
"tab": tab, "sorts": sorts, "fails": fails}))
|
|
1766
1782
|
asyncio.run(go())
|
|
1767
1783
|
""")
|
|
@@ -1771,6 +1787,8 @@ class PTAIndex(unittest.TestCase):
|
|
|
1771
1787
|
self.assertIsInstance(got, dict, got)
|
|
1772
1788
|
self.assertTrue(got["bars"])
|
|
1773
1789
|
self.assertEqual(got["disagree"], [4, 0])
|
|
1790
|
+
self.assertGreaterEqual(len(got["opened"]), 2)
|
|
1791
|
+
self.assertEqual(got["opened"], {m: m for m in got["opened"]}) # a cell opens its column's model
|
|
1774
1792
|
self.assertEqual(got["tab"], "tab-pta") # Results opens on the PTA index
|
|
1775
1793
|
self.assertEqual([(r[0], r[3]) for r in got["rows"]][0], ("good", "4/4"))
|
|
1776
1794
|
s = got["sorts"] # a click on a column name sorts by it, a second click reverses
|
|
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
|
|
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
|
{tuieval-0.2.0.dev120 → tuieval-0.2.0.dev121}/src/tuieval/templates/packs/tool_call/pack.toml
RENAMED
|
File without changes
|
{tuieval-0.2.0.dev120 → tuieval-0.2.0.dev121}/src/tuieval/templates/packs/tool_call/system.txt
RENAMED
|
File without changes
|
{tuieval-0.2.0.dev120 → tuieval-0.2.0.dev121}/src/tuieval/templates/packs/tool_call/tests.yaml
RENAMED
|
File without changes
|
{tuieval-0.2.0.dev120 → tuieval-0.2.0.dev121}/src/tuieval/templates/packs/tool_call/tools.yaml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|