tuieval 0.2.0.dev33__tar.gz → 0.2.0.dev34__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.dev33 → tuieval-0.2.0.dev34}/PKG-INFO +1 -1
- {tuieval-0.2.0.dev33 → tuieval-0.2.0.dev34}/src/tuieval/_version.py +2 -2
- {tuieval-0.2.0.dev33 → tuieval-0.2.0.dev34}/src/tuieval/tui.py +7 -6
- {tuieval-0.2.0.dev33 → tuieval-0.2.0.dev34}/tests/test_tuieval.py +19 -0
- {tuieval-0.2.0.dev33 → tuieval-0.2.0.dev34}/.gitignore +0 -0
- {tuieval-0.2.0.dev33 → tuieval-0.2.0.dev34}/CHANGELOG.md +0 -0
- {tuieval-0.2.0.dev33 → tuieval-0.2.0.dev34}/LICENSE +0 -0
- {tuieval-0.2.0.dev33 → tuieval-0.2.0.dev34}/README.md +0 -0
- {tuieval-0.2.0.dev33 → tuieval-0.2.0.dev34}/RELEASING.md +0 -0
- {tuieval-0.2.0.dev33 → tuieval-0.2.0.dev34}/docs/images/brand/README.md +0 -0
- {tuieval-0.2.0.dev33 → tuieval-0.2.0.dev34}/docs/images/brand/favicon.ico +0 -0
- {tuieval-0.2.0.dev33 → tuieval-0.2.0.dev34}/docs/images/brand/readme-header.png +0 -0
- {tuieval-0.2.0.dev33 → tuieval-0.2.0.dev34}/docs/images/brand/social-preview.png +0 -0
- {tuieval-0.2.0.dev33 → tuieval-0.2.0.dev34}/docs/images/brand/tuieval-icon-1024.png +0 -0
- {tuieval-0.2.0.dev33 → tuieval-0.2.0.dev34}/docs/images/brand/tuieval-icon-128.png +0 -0
- {tuieval-0.2.0.dev33 → tuieval-0.2.0.dev34}/docs/images/brand/tuieval-icon-16.png +0 -0
- {tuieval-0.2.0.dev33 → tuieval-0.2.0.dev34}/docs/images/brand/tuieval-icon-16.svg +0 -0
- {tuieval-0.2.0.dev33 → tuieval-0.2.0.dev34}/docs/images/brand/tuieval-icon-256.png +0 -0
- {tuieval-0.2.0.dev33 → tuieval-0.2.0.dev34}/docs/images/brand/tuieval-icon-32.png +0 -0
- {tuieval-0.2.0.dev33 → tuieval-0.2.0.dev34}/docs/images/brand/tuieval-icon-48.png +0 -0
- {tuieval-0.2.0.dev33 → tuieval-0.2.0.dev34}/docs/images/brand/tuieval-icon-512.png +0 -0
- {tuieval-0.2.0.dev33 → tuieval-0.2.0.dev34}/docs/images/brand/tuieval-icon-64.png +0 -0
- {tuieval-0.2.0.dev33 → tuieval-0.2.0.dev34}/docs/images/brand/tuieval-icon-animated.svg +0 -0
- {tuieval-0.2.0.dev33 → tuieval-0.2.0.dev34}/docs/images/brand/tuieval-icon.svg +0 -0
- {tuieval-0.2.0.dev33 → tuieval-0.2.0.dev34}/docs/images/tui-setup.png +0 -0
- {tuieval-0.2.0.dev33 → tuieval-0.2.0.dev34}/docs/models.md +0 -0
- {tuieval-0.2.0.dev33 → tuieval-0.2.0.dev34}/docs/writing-packs.md +0 -0
- {tuieval-0.2.0.dev33 → tuieval-0.2.0.dev34}/pyproject.toml +0 -0
- {tuieval-0.2.0.dev33 → tuieval-0.2.0.dev34}/src/tuieval/__init__.py +0 -0
- {tuieval-0.2.0.dev33 → tuieval-0.2.0.dev34}/src/tuieval/__main__.py +0 -0
- {tuieval-0.2.0.dev33 → tuieval-0.2.0.dev34}/src/tuieval/builtin.toml +0 -0
- {tuieval-0.2.0.dev33 → tuieval-0.2.0.dev34}/src/tuieval/cli.py +0 -0
- {tuieval-0.2.0.dev33 → tuieval-0.2.0.dev34}/src/tuieval/client.py +0 -0
- {tuieval-0.2.0.dev33 → tuieval-0.2.0.dev34}/src/tuieval/compare.py +0 -0
- {tuieval-0.2.0.dev33 → tuieval-0.2.0.dev34}/src/tuieval/doctor.py +0 -0
- {tuieval-0.2.0.dev33 → tuieval-0.2.0.dev34}/src/tuieval/engine.py +0 -0
- {tuieval-0.2.0.dev33 → tuieval-0.2.0.dev34}/src/tuieval/export.py +0 -0
- {tuieval-0.2.0.dev33 → tuieval-0.2.0.dev34}/src/tuieval/graders/__init__.py +0 -0
- {tuieval-0.2.0.dev33 → tuieval-0.2.0.dev34}/src/tuieval/graders/answer.py +0 -0
- {tuieval-0.2.0.dev33 → tuieval-0.2.0.dev34}/src/tuieval/graders/code.py +0 -0
- {tuieval-0.2.0.dev33 → tuieval-0.2.0.dev34}/src/tuieval/graders/rag.py +0 -0
- {tuieval-0.2.0.dev33 → tuieval-0.2.0.dev34}/src/tuieval/graders/reply.py +0 -0
- {tuieval-0.2.0.dev33 → tuieval-0.2.0.dev34}/src/tuieval/graders/tool_call.py +0 -0
- {tuieval-0.2.0.dev33 → tuieval-0.2.0.dev34}/src/tuieval/machines.py +0 -0
- {tuieval-0.2.0.dev33 → tuieval-0.2.0.dev34}/src/tuieval/onboard.py +0 -0
- {tuieval-0.2.0.dev33 → tuieval-0.2.0.dev34}/src/tuieval/packs.py +0 -0
- {tuieval-0.2.0.dev33 → tuieval-0.2.0.dev34}/src/tuieval/profiles.py +0 -0
- {tuieval-0.2.0.dev33 → tuieval-0.2.0.dev34}/src/tuieval/remove.py +0 -0
- {tuieval-0.2.0.dev33 → tuieval-0.2.0.dev34}/src/tuieval/run_evals.py +0 -0
- {tuieval-0.2.0.dev33 → tuieval-0.2.0.dev34}/src/tuieval/scaffold.py +0 -0
- {tuieval-0.2.0.dev33 → tuieval-0.2.0.dev34}/src/tuieval/selftest.py +0 -0
- {tuieval-0.2.0.dev33 → tuieval-0.2.0.dev34}/src/tuieval/templates/models.toml +0 -0
- {tuieval-0.2.0.dev33 → tuieval-0.2.0.dev34}/src/tuieval/templates/packs/answer/pack.toml +0 -0
- {tuieval-0.2.0.dev33 → tuieval-0.2.0.dev34}/src/tuieval/templates/packs/answer/system.txt +0 -0
- {tuieval-0.2.0.dev33 → tuieval-0.2.0.dev34}/src/tuieval/templates/packs/answer/tests.yaml +0 -0
- {tuieval-0.2.0.dev33 → tuieval-0.2.0.dev34}/src/tuieval/templates/packs/code/pack.toml +0 -0
- {tuieval-0.2.0.dev33 → tuieval-0.2.0.dev34}/src/tuieval/templates/packs/code/system.txt +0 -0
- {tuieval-0.2.0.dev33 → tuieval-0.2.0.dev34}/src/tuieval/templates/packs/code/tests.yaml +0 -0
- {tuieval-0.2.0.dev33 → tuieval-0.2.0.dev34}/src/tuieval/templates/packs/rag/pack.toml +0 -0
- {tuieval-0.2.0.dev33 → tuieval-0.2.0.dev34}/src/tuieval/templates/packs/rag/system.txt +0 -0
- {tuieval-0.2.0.dev33 → tuieval-0.2.0.dev34}/src/tuieval/templates/packs/rag/tests.yaml +0 -0
- {tuieval-0.2.0.dev33 → tuieval-0.2.0.dev34}/src/tuieval/templates/packs/reply/pack.toml +0 -0
- {tuieval-0.2.0.dev33 → tuieval-0.2.0.dev34}/src/tuieval/templates/packs/reply/system.txt +0 -0
- {tuieval-0.2.0.dev33 → tuieval-0.2.0.dev34}/src/tuieval/templates/packs/reply/tests.yaml +0 -0
- {tuieval-0.2.0.dev33 → tuieval-0.2.0.dev34}/src/tuieval/templates/packs/tool_call/pack.toml +0 -0
- {tuieval-0.2.0.dev33 → tuieval-0.2.0.dev34}/src/tuieval/templates/packs/tool_call/system.txt +0 -0
- {tuieval-0.2.0.dev33 → tuieval-0.2.0.dev34}/src/tuieval/templates/packs/tool_call/tests.yaml +0 -0
- {tuieval-0.2.0.dev33 → tuieval-0.2.0.dev34}/src/tuieval/templates/packs/tool_call/tools.yaml +0 -0
- {tuieval-0.2.0.dev33 → tuieval-0.2.0.dev34}/src/tuieval/tune.py +0 -0
- {tuieval-0.2.0.dev33 → tuieval-0.2.0.dev34}/src/tuieval/verdict.py +0 -0
- {tuieval-0.2.0.dev33 → tuieval-0.2.0.dev34}/src/tuieval/watch_proxy.py +0 -0
- {tuieval-0.2.0.dev33 → tuieval-0.2.0.dev34}/src/tuieval/workspace.py +0 -0
- {tuieval-0.2.0.dev33 → tuieval-0.2.0.dev34}/src/tuieval/yamlout.py +0 -0
- {tuieval-0.2.0.dev33 → tuieval-0.2.0.dev34}/tests/mock_server.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: tuieval
|
|
3
|
-
Version: 0.2.0.
|
|
3
|
+
Version: 0.2.0.dev34
|
|
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.dev34'
|
|
22
|
+
__version_tuple__ = version_tuple = (0, 2, 0, 'dev34')
|
|
23
23
|
|
|
24
24
|
__commit_id__ = commit_id = None
|
|
@@ -10,9 +10,10 @@ Run screen: live reasoning and answer, per-test ✓/✗, TTFT and tokens/s, p
|
|
|
10
10
|
k skips the current model, c cancels everything, f pauses auto-scroll.
|
|
11
11
|
r shows results at any time (also mid-run); n starts a new run when it ends.
|
|
12
12
|
Enter on a Recent results row shows that answer in full.
|
|
13
|
-
Results:
|
|
14
|
-
|
|
15
|
-
Per question cell shows the answer: grading and checks, reasoning,
|
|
13
|
+
Results: opens on Per question, which compares each model's tokens and seconds on the same
|
|
14
|
+
question. ctrl+r reloads (it also reloads when a run's pack finishes). Enter on a
|
|
15
|
+
Failures row or a Per question cell shows the answer: grading and checks, reasoning,
|
|
16
|
+
answer, question.
|
|
16
17
|
Answer detail: [ and ] step to the previous/next answer; esc/q close.
|
|
17
18
|
Anywhere: esc/q go back (q quits only on Setup), ctrl+q quits, w lists this session's runs and
|
|
18
19
|
tunes. Leaving a live run or tune keeps it going; the header shows its progress.
|
|
@@ -315,8 +316,8 @@ with the model's reasoning and answer as they stream, then recent results with t
|
|
|
315
316
|
v with several models at a time: stream the next one (k skips the one streaming)""",
|
|
316
317
|
"ResultsScreen": """[b]Results[/b]
|
|
317
318
|
|
|
318
|
-
|
|
319
|
-
it's INCONCLUSIVE. The other tabs are the evidence:
|
|
319
|
+
Opens on [b]Per question[/b]. [b]Production readiness[/b] gives one verdict per model and use case,
|
|
320
|
+
and what's missing when it's INCONCLUSIVE. The other tabs are the evidence:
|
|
320
321
|
Scorecard accuracy, critical failures and truncation per model and pack
|
|
321
322
|
Speed & tokens time and tokens per answer (★ = nothing beats it on both accuracy and time)
|
|
322
323
|
Per question every question, model by model
|
|
@@ -2324,7 +2325,7 @@ class ResultsScreen(Screen):
|
|
|
2324
2325
|
yield Static(id="results-info")
|
|
2325
2326
|
if self.smoke_dir:
|
|
2326
2327
|
yield Button("Show this Smoke run's results", id="toggle-smoke")
|
|
2327
|
-
with TabbedContent():
|
|
2328
|
+
with TabbedContent(initial="tab-per-question"):
|
|
2328
2329
|
with TabPane("Production readiness"):
|
|
2329
2330
|
yield Static(id="readiness-short")
|
|
2330
2331
|
yield Static(self.READINESS_HELP, id="readiness-help")
|
|
@@ -733,6 +733,25 @@ class FirstRun(unittest.TestCase):
|
|
|
733
733
|
env=dict(os.environ, TUIEVAL_HOME=self.ws, TUIEVAL_DETECT_PORTS=""), timeout=60).stdout.strip()
|
|
734
734
|
self.assertEqual(out, "['first'] ['my-model'] smoke False") # tuning shows once something has run
|
|
735
735
|
|
|
736
|
+
def test_results_open_on_per_question(self):
|
|
737
|
+
tuieval(self.ws, "add", "my-model", "--server", "local")
|
|
738
|
+
code = textwrap.dedent("""
|
|
739
|
+
import asyncio
|
|
740
|
+
from tuieval.tui import EvalsApp
|
|
741
|
+
from textual.widgets import TabbedContent
|
|
742
|
+
async def go():
|
|
743
|
+
app = EvalsApp({})
|
|
744
|
+
async with app.run_test(size=(140, 40)) as pilot:
|
|
745
|
+
await pilot.pause()
|
|
746
|
+
await pilot.press("r")
|
|
747
|
+
await pilot.pause()
|
|
748
|
+
print(type(app.screen).__name__, app.screen.query_one(TabbedContent).active)
|
|
749
|
+
asyncio.run(go())
|
|
750
|
+
""")
|
|
751
|
+
out = subprocess.run([sys.executable, "-c", code], capture_output=True, text=True,
|
|
752
|
+
env=dict(os.environ, TUIEVAL_HOME=self.ws, TUIEVAL_DETECT_PORTS=""), timeout=60).stdout.strip()
|
|
753
|
+
self.assertEqual(out, "ResultsScreen tab-per-question")
|
|
754
|
+
|
|
736
755
|
def test_doctor(self):
|
|
737
756
|
tuieval(self.ws, "add", "mock", "--server", "local", "--label", "wanted")
|
|
738
757
|
p = tuieval(self.ws, "doctor", check=False, ports=self.port)
|
|
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.dev33 → tuieval-0.2.0.dev34}/src/tuieval/templates/packs/tool_call/system.txt
RENAMED
|
File without changes
|
{tuieval-0.2.0.dev33 → tuieval-0.2.0.dev34}/src/tuieval/templates/packs/tool_call/tests.yaml
RENAMED
|
File without changes
|
{tuieval-0.2.0.dev33 → tuieval-0.2.0.dev34}/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
|