tuieval 0.2.0.dev125__tar.gz → 0.2.0.dev126__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.dev125 → tuieval-0.2.0.dev126}/CHANGELOG.md +1 -0
- {tuieval-0.2.0.dev125 → tuieval-0.2.0.dev126}/PKG-INFO +1 -1
- {tuieval-0.2.0.dev125 → tuieval-0.2.0.dev126}/src/tuieval/_version.py +2 -2
- {tuieval-0.2.0.dev125 → tuieval-0.2.0.dev126}/src/tuieval/client.py +1 -1
- {tuieval-0.2.0.dev125 → tuieval-0.2.0.dev126}/src/tuieval/compare.py +2 -1
- {tuieval-0.2.0.dev125 → tuieval-0.2.0.dev126}/tests/test_tuieval.py +1 -1
- {tuieval-0.2.0.dev125 → tuieval-0.2.0.dev126}/.gitignore +0 -0
- {tuieval-0.2.0.dev125 → tuieval-0.2.0.dev126}/LICENSE +0 -0
- {tuieval-0.2.0.dev125 → tuieval-0.2.0.dev126}/README.md +0 -0
- {tuieval-0.2.0.dev125 → tuieval-0.2.0.dev126}/RELEASING.md +0 -0
- {tuieval-0.2.0.dev125 → tuieval-0.2.0.dev126}/docs/agent-packs.md +0 -0
- {tuieval-0.2.0.dev125 → tuieval-0.2.0.dev126}/docs/images/brand/README.md +0 -0
- {tuieval-0.2.0.dev125 → tuieval-0.2.0.dev126}/docs/images/brand/favicon.ico +0 -0
- {tuieval-0.2.0.dev125 → tuieval-0.2.0.dev126}/docs/images/brand/readme-header.png +0 -0
- {tuieval-0.2.0.dev125 → tuieval-0.2.0.dev126}/docs/images/brand/social-preview.png +0 -0
- {tuieval-0.2.0.dev125 → tuieval-0.2.0.dev126}/docs/images/brand/tuieval-icon-1024.png +0 -0
- {tuieval-0.2.0.dev125 → tuieval-0.2.0.dev126}/docs/images/brand/tuieval-icon-128.png +0 -0
- {tuieval-0.2.0.dev125 → tuieval-0.2.0.dev126}/docs/images/brand/tuieval-icon-16.png +0 -0
- {tuieval-0.2.0.dev125 → tuieval-0.2.0.dev126}/docs/images/brand/tuieval-icon-16.svg +0 -0
- {tuieval-0.2.0.dev125 → tuieval-0.2.0.dev126}/docs/images/brand/tuieval-icon-256.png +0 -0
- {tuieval-0.2.0.dev125 → tuieval-0.2.0.dev126}/docs/images/brand/tuieval-icon-32.png +0 -0
- {tuieval-0.2.0.dev125 → tuieval-0.2.0.dev126}/docs/images/brand/tuieval-icon-48.png +0 -0
- {tuieval-0.2.0.dev125 → tuieval-0.2.0.dev126}/docs/images/brand/tuieval-icon-512.png +0 -0
- {tuieval-0.2.0.dev125 → tuieval-0.2.0.dev126}/docs/images/brand/tuieval-icon-64.png +0 -0
- {tuieval-0.2.0.dev125 → tuieval-0.2.0.dev126}/docs/images/brand/tuieval-icon-animated.svg +0 -0
- {tuieval-0.2.0.dev125 → tuieval-0.2.0.dev126}/docs/images/brand/tuieval-icon.svg +0 -0
- {tuieval-0.2.0.dev125 → tuieval-0.2.0.dev126}/docs/images/tui-answer-reasoning.png +0 -0
- {tuieval-0.2.0.dev125 → tuieval-0.2.0.dev126}/docs/images/tui-run-reasoning.png +0 -0
- {tuieval-0.2.0.dev125 → tuieval-0.2.0.dev126}/docs/images/tui-setup.png +0 -0
- {tuieval-0.2.0.dev125 → tuieval-0.2.0.dev126}/docs/models.md +0 -0
- {tuieval-0.2.0.dev125 → tuieval-0.2.0.dev126}/docs/writing-packs.md +0 -0
- {tuieval-0.2.0.dev125 → tuieval-0.2.0.dev126}/pyproject.toml +0 -0
- {tuieval-0.2.0.dev125 → tuieval-0.2.0.dev126}/src/tuieval/__init__.py +0 -0
- {tuieval-0.2.0.dev125 → tuieval-0.2.0.dev126}/src/tuieval/__main__.py +0 -0
- {tuieval-0.2.0.dev125 → tuieval-0.2.0.dev126}/src/tuieval/agents.py +0 -0
- {tuieval-0.2.0.dev125 → tuieval-0.2.0.dev126}/src/tuieval/builtin.toml +0 -0
- {tuieval-0.2.0.dev125 → tuieval-0.2.0.dev126}/src/tuieval/cli.py +0 -0
- {tuieval-0.2.0.dev125 → tuieval-0.2.0.dev126}/src/tuieval/dates.py +0 -0
- {tuieval-0.2.0.dev125 → tuieval-0.2.0.dev126}/src/tuieval/doctor.py +0 -0
- {tuieval-0.2.0.dev125 → tuieval-0.2.0.dev126}/src/tuieval/engine.py +0 -0
- {tuieval-0.2.0.dev125 → tuieval-0.2.0.dev126}/src/tuieval/export.py +0 -0
- {tuieval-0.2.0.dev125 → tuieval-0.2.0.dev126}/src/tuieval/graders/__init__.py +0 -0
- {tuieval-0.2.0.dev125 → tuieval-0.2.0.dev126}/src/tuieval/graders/answer.py +0 -0
- {tuieval-0.2.0.dev125 → tuieval-0.2.0.dev126}/src/tuieval/graders/code.py +0 -0
- {tuieval-0.2.0.dev125 → tuieval-0.2.0.dev126}/src/tuieval/graders/rag.py +0 -0
- {tuieval-0.2.0.dev125 → tuieval-0.2.0.dev126}/src/tuieval/graders/reply.py +0 -0
- {tuieval-0.2.0.dev125 → tuieval-0.2.0.dev126}/src/tuieval/graders/tool_call.py +0 -0
- {tuieval-0.2.0.dev125 → tuieval-0.2.0.dev126}/src/tuieval/insights.py +0 -0
- {tuieval-0.2.0.dev125 → tuieval-0.2.0.dev126}/src/tuieval/logs.py +0 -0
- {tuieval-0.2.0.dev125 → tuieval-0.2.0.dev126}/src/tuieval/machines.py +0 -0
- {tuieval-0.2.0.dev125 → tuieval-0.2.0.dev126}/src/tuieval/onboard.py +0 -0
- {tuieval-0.2.0.dev125 → tuieval-0.2.0.dev126}/src/tuieval/packs.py +0 -0
- {tuieval-0.2.0.dev125 → tuieval-0.2.0.dev126}/src/tuieval/profiles.py +0 -0
- {tuieval-0.2.0.dev125 → tuieval-0.2.0.dev126}/src/tuieval/pta.py +0 -0
- {tuieval-0.2.0.dev125 → tuieval-0.2.0.dev126}/src/tuieval/remove.py +0 -0
- {tuieval-0.2.0.dev125 → tuieval-0.2.0.dev126}/src/tuieval/run_evals.py +0 -0
- {tuieval-0.2.0.dev125 → tuieval-0.2.0.dev126}/src/tuieval/scaffold.py +0 -0
- {tuieval-0.2.0.dev125 → tuieval-0.2.0.dev126}/src/tuieval/selftest.py +0 -0
- {tuieval-0.2.0.dev125 → tuieval-0.2.0.dev126}/src/tuieval/templates/models.toml +0 -0
- {tuieval-0.2.0.dev125 → tuieval-0.2.0.dev126}/src/tuieval/templates/packs/answer/pack.toml +0 -0
- {tuieval-0.2.0.dev125 → tuieval-0.2.0.dev126}/src/tuieval/templates/packs/answer/system.txt +0 -0
- {tuieval-0.2.0.dev125 → tuieval-0.2.0.dev126}/src/tuieval/templates/packs/answer/tests.yaml +0 -0
- {tuieval-0.2.0.dev125 → tuieval-0.2.0.dev126}/src/tuieval/templates/packs/code/pack.toml +0 -0
- {tuieval-0.2.0.dev125 → tuieval-0.2.0.dev126}/src/tuieval/templates/packs/code/system.txt +0 -0
- {tuieval-0.2.0.dev125 → tuieval-0.2.0.dev126}/src/tuieval/templates/packs/code/tests.yaml +0 -0
- {tuieval-0.2.0.dev125 → tuieval-0.2.0.dev126}/src/tuieval/templates/packs/rag/pack.toml +0 -0
- {tuieval-0.2.0.dev125 → tuieval-0.2.0.dev126}/src/tuieval/templates/packs/rag/system.txt +0 -0
- {tuieval-0.2.0.dev125 → tuieval-0.2.0.dev126}/src/tuieval/templates/packs/rag/tests.yaml +0 -0
- {tuieval-0.2.0.dev125 → tuieval-0.2.0.dev126}/src/tuieval/templates/packs/reply/pack.toml +0 -0
- {tuieval-0.2.0.dev125 → tuieval-0.2.0.dev126}/src/tuieval/templates/packs/reply/system.txt +0 -0
- {tuieval-0.2.0.dev125 → tuieval-0.2.0.dev126}/src/tuieval/templates/packs/reply/tests.yaml +0 -0
- {tuieval-0.2.0.dev125 → tuieval-0.2.0.dev126}/src/tuieval/templates/packs/tool_call/pack.toml +0 -0
- {tuieval-0.2.0.dev125 → tuieval-0.2.0.dev126}/src/tuieval/templates/packs/tool_call/system.txt +0 -0
- {tuieval-0.2.0.dev125 → tuieval-0.2.0.dev126}/src/tuieval/templates/packs/tool_call/tests.yaml +0 -0
- {tuieval-0.2.0.dev125 → tuieval-0.2.0.dev126}/src/tuieval/templates/packs/tool_call/tools.yaml +0 -0
- {tuieval-0.2.0.dev125 → tuieval-0.2.0.dev126}/src/tuieval/tui.py +0 -0
- {tuieval-0.2.0.dev125 → tuieval-0.2.0.dev126}/src/tuieval/tune.py +0 -0
- {tuieval-0.2.0.dev125 → tuieval-0.2.0.dev126}/src/tuieval/verdict.py +0 -0
- {tuieval-0.2.0.dev125 → tuieval-0.2.0.dev126}/src/tuieval/watch_proxy.py +0 -0
- {tuieval-0.2.0.dev125 → tuieval-0.2.0.dev126}/src/tuieval/workspace.py +0 -0
- {tuieval-0.2.0.dev125 → tuieval-0.2.0.dev126}/src/tuieval/yamlout.py +0 -0
- {tuieval-0.2.0.dev125 → tuieval-0.2.0.dev126}/tests/mock_server.py +0 -0
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
## Unreleased
|
|
4
4
|
|
|
5
|
+
- Fix: a request that runs out of time says `time limit: timed out after N s`, not `connection error`, and `tuieval compare` counts it against the model like the run does (it was left out as an error).
|
|
5
6
|
- Agent packs (`kind = "agent"`): each test is a small project with a task, worked on by a command-line agent you define in `[agents]`, using the model tuieval serves, and graded by the task's visible and hidden tests. Results show the agent's stats, diff and transcript; `tuieval compare` adds an Agent tasks table; `tuieval selftest` checks each task's reference and wrong fixes. See docs/agent-packs.md.
|
|
6
7
|
- Answers that used more tokens than the `max_tokens` sent (a provider that didn't stop them) are marked over budget: `(n over budget)` in the PTA index, an **over budget** column, `over` in Per question and a note in the answer view. `[defaults] over_budget = "fail"` fails them instead. Works on stored results.
|
|
7
8
|
- 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.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: tuieval
|
|
3
|
-
Version: 0.2.0.
|
|
3
|
+
Version: 0.2.0.dev126
|
|
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.dev126'
|
|
22
|
+
__version_tuple__ = version_tuple = (0, 2, 0, 'dev126')
|
|
23
23
|
|
|
24
24
|
__commit_id__ = commit_id = None
|
|
@@ -153,7 +153,7 @@ def stream_chat(base_url, body, on_delta=None, timeout=1800, stream=None, header
|
|
|
153
153
|
for raw in r:
|
|
154
154
|
now = time.time()
|
|
155
155
|
if now - start > timeout:
|
|
156
|
-
out["error"] = f"
|
|
156
|
+
out["error"] = f"time limit: timed out after {timeout:.0f} s in all"
|
|
157
157
|
break
|
|
158
158
|
if stall_s and out["ttft_s"] is not None and now - last > stall_s:
|
|
159
159
|
out["error"] = _stalled(stall_s)
|
|
@@ -49,7 +49,8 @@ def _load_native(data):
|
|
|
49
49
|
"model": m["label"], "suite": pack["name"], "test": f"{pack['name']}: {r['test']}",
|
|
50
50
|
"name": f"{pack['name']}: {r['description']}",
|
|
51
51
|
"ok": bool(r["pass"]), "score": float(r["score"]), "reason": r["reason"],
|
|
52
|
-
|
|
52
|
+
# a timeout is the model too slow (client.is_server_error), not an error; older results called it one
|
|
53
|
+
"error": r["reason"].startswith(("server returned", "connection error")) and "timed out" not in r["reason"],
|
|
53
54
|
"truncated": r.get("finish") == "length", "output": r.get("answer") or "",
|
|
54
55
|
# tokens past the max_tokens sent, which the provider didn't stop (client.mark_over_budget)
|
|
55
56
|
"over_budget": r.get("over_budget"),
|
|
@@ -3005,7 +3005,7 @@ class StallGuard(unittest.TestCase):
|
|
|
3005
3005
|
def test_keepalives_dont_outlast_the_timeout(self):
|
|
3006
3006
|
from tuieval import client
|
|
3007
3007
|
res, took = self.ask("--stall-before", "5", timeout=1, stall_s=1)
|
|
3008
|
-
self.
|
|
3008
|
+
self.assertTrue(res["error"].startswith("time limit: timed out"), res["error"])
|
|
3009
3009
|
self.assertFalse(client.is_server_error(res["error"])) # slow, like any timeout: counts
|
|
3010
3010
|
self.assertLess(took, 4)
|
|
3011
3011
|
|
|
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.dev125 → tuieval-0.2.0.dev126}/src/tuieval/templates/packs/tool_call/pack.toml
RENAMED
|
File without changes
|
{tuieval-0.2.0.dev125 → tuieval-0.2.0.dev126}/src/tuieval/templates/packs/tool_call/system.txt
RENAMED
|
File without changes
|
{tuieval-0.2.0.dev125 → tuieval-0.2.0.dev126}/src/tuieval/templates/packs/tool_call/tests.yaml
RENAMED
|
File without changes
|
{tuieval-0.2.0.dev125 → tuieval-0.2.0.dev126}/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
|
|
File without changes
|