fleet-python 0.2.113__tar.gz → 0.2.114__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.
- {fleet_python-0.2.113/fleet_python.egg-info → fleet_python-0.2.114}/PKG-INFO +1 -1
- {fleet_python-0.2.113 → fleet_python-0.2.114}/fleet/__init__.py +1 -1
- {fleet_python-0.2.113 → fleet_python-0.2.114}/fleet/_async/__init__.py +1 -1
- {fleet_python-0.2.113 → fleet_python-0.2.114}/fleet/_async/base.py +1 -1
- {fleet_python-0.2.113 → fleet_python-0.2.114}/fleet/_async/judge.py +2 -0
- {fleet_python-0.2.113 → fleet_python-0.2.114}/fleet/base.py +1 -1
- {fleet_python-0.2.113 → fleet_python-0.2.114}/fleet/judge.py +77 -0
- {fleet_python-0.2.113 → fleet_python-0.2.114/fleet_python.egg-info}/PKG-INFO +1 -1
- {fleet_python-0.2.113 → fleet_python-0.2.114}/pyproject.toml +1 -1
- {fleet_python-0.2.113 → fleet_python-0.2.114}/LICENSE +0 -0
- {fleet_python-0.2.113 → fleet_python-0.2.114}/README.md +0 -0
- {fleet_python-0.2.113 → fleet_python-0.2.114}/examples/diff_example.py +0 -0
- {fleet_python-0.2.113 → fleet_python-0.2.114}/examples/dsl_example.py +0 -0
- {fleet_python-0.2.113 → fleet_python-0.2.114}/examples/example.py +0 -0
- {fleet_python-0.2.113 → fleet_python-0.2.114}/examples/exampleResume.py +0 -0
- {fleet_python-0.2.113 → fleet_python-0.2.114}/examples/example_account.py +0 -0
- {fleet_python-0.2.113 → fleet_python-0.2.114}/examples/example_action_log.py +0 -0
- {fleet_python-0.2.113 → fleet_python-0.2.114}/examples/example_client.py +0 -0
- {fleet_python-0.2.113 → fleet_python-0.2.114}/examples/example_mcp_anthropic.py +0 -0
- {fleet_python-0.2.113 → fleet_python-0.2.114}/examples/example_mcp_openai.py +0 -0
- {fleet_python-0.2.113 → fleet_python-0.2.114}/examples/example_sync.py +0 -0
- {fleet_python-0.2.113 → fleet_python-0.2.114}/examples/example_task.py +0 -0
- {fleet_python-0.2.113 → fleet_python-0.2.114}/examples/example_tasks.py +0 -0
- {fleet_python-0.2.113 → fleet_python-0.2.114}/examples/example_verifier.py +0 -0
- {fleet_python-0.2.113 → fleet_python-0.2.114}/examples/export_tasks.py +0 -0
- {fleet_python-0.2.113 → fleet_python-0.2.114}/examples/export_tasks_filtered.py +0 -0
- {fleet_python-0.2.113 → fleet_python-0.2.114}/examples/fetch_tasks.py +0 -0
- {fleet_python-0.2.113 → fleet_python-0.2.114}/examples/gemini_example.py +0 -0
- {fleet_python-0.2.113 → fleet_python-0.2.114}/examples/import_tasks.py +0 -0
- {fleet_python-0.2.113 → fleet_python-0.2.114}/examples/iterate_verifiers.py +0 -0
- {fleet_python-0.2.113 → fleet_python-0.2.114}/examples/json_tasks_example.py +0 -0
- {fleet_python-0.2.113 → fleet_python-0.2.114}/examples/nova_act_example.py +0 -0
- {fleet_python-0.2.113 → fleet_python-0.2.114}/examples/openai_example.py +0 -0
- {fleet_python-0.2.113 → fleet_python-0.2.114}/examples/openai_simple_example.py +0 -0
- {fleet_python-0.2.113 → fleet_python-0.2.114}/examples/query_builder_example.py +0 -0
- {fleet_python-0.2.113 → fleet_python-0.2.114}/examples/quickstart.py +0 -0
- {fleet_python-0.2.113 → fleet_python-0.2.114}/examples/test_cdp_logging.py +0 -0
- {fleet_python-0.2.113 → fleet_python-0.2.114}/fleet/_async/client.py +0 -0
- {fleet_python-0.2.113 → fleet_python-0.2.114}/fleet/_async/env/__init__.py +0 -0
- {fleet_python-0.2.113 → fleet_python-0.2.114}/fleet/_async/env/client.py +0 -0
- {fleet_python-0.2.113 → fleet_python-0.2.114}/fleet/_async/exceptions.py +0 -0
- {fleet_python-0.2.113 → fleet_python-0.2.114}/fleet/_async/global_client.py +0 -0
- {fleet_python-0.2.113 → fleet_python-0.2.114}/fleet/_async/instance/__init__.py +0 -0
- {fleet_python-0.2.113 → fleet_python-0.2.114}/fleet/_async/instance/base.py +0 -0
- {fleet_python-0.2.113 → fleet_python-0.2.114}/fleet/_async/instance/client.py +0 -0
- {fleet_python-0.2.113 → fleet_python-0.2.114}/fleet/_async/models.py +0 -0
- {fleet_python-0.2.113 → fleet_python-0.2.114}/fleet/_async/resources/__init__.py +0 -0
- {fleet_python-0.2.113 → fleet_python-0.2.114}/fleet/_async/resources/api.py +0 -0
- {fleet_python-0.2.113 → fleet_python-0.2.114}/fleet/_async/resources/base.py +0 -0
- {fleet_python-0.2.113 → fleet_python-0.2.114}/fleet/_async/resources/browser.py +0 -0
- {fleet_python-0.2.113 → fleet_python-0.2.114}/fleet/_async/resources/filesystem.py +0 -0
- {fleet_python-0.2.113 → fleet_python-0.2.114}/fleet/_async/resources/mcp.py +0 -0
- {fleet_python-0.2.113 → fleet_python-0.2.114}/fleet/_async/resources/sqlite.py +0 -0
- {fleet_python-0.2.113 → fleet_python-0.2.114}/fleet/_async/tasks.py +0 -0
- {fleet_python-0.2.113 → fleet_python-0.2.114}/fleet/_async/verifiers/__init__.py +0 -0
- {fleet_python-0.2.113 → fleet_python-0.2.114}/fleet/_async/verifiers/bundler.py +0 -0
- {fleet_python-0.2.113 → fleet_python-0.2.114}/fleet/_async/verifiers/verifier.py +0 -0
- {fleet_python-0.2.113 → fleet_python-0.2.114}/fleet/agent/__init__.py +0 -0
- {fleet_python-0.2.113 → fleet_python-0.2.114}/fleet/agent/gemini_cua/Dockerfile +0 -0
- {fleet_python-0.2.113 → fleet_python-0.2.114}/fleet/agent/gemini_cua/__init__.py +0 -0
- {fleet_python-0.2.113 → fleet_python-0.2.114}/fleet/agent/gemini_cua/agent.py +0 -0
- {fleet_python-0.2.113 → fleet_python-0.2.114}/fleet/agent/gemini_cua/mcp/main.py +0 -0
- {fleet_python-0.2.113 → fleet_python-0.2.114}/fleet/agent/gemini_cua/mcp_server/__init__.py +0 -0
- {fleet_python-0.2.113 → fleet_python-0.2.114}/fleet/agent/gemini_cua/mcp_server/main.py +0 -0
- {fleet_python-0.2.113 → fleet_python-0.2.114}/fleet/agent/gemini_cua/mcp_server/tools.py +0 -0
- {fleet_python-0.2.113 → fleet_python-0.2.114}/fleet/agent/gemini_cua/requirements.txt +0 -0
- {fleet_python-0.2.113 → fleet_python-0.2.114}/fleet/agent/gemini_cua/start.sh +0 -0
- {fleet_python-0.2.113 → fleet_python-0.2.114}/fleet/agent/orchestrator.py +0 -0
- {fleet_python-0.2.113 → fleet_python-0.2.114}/fleet/agent/types.py +0 -0
- {fleet_python-0.2.113 → fleet_python-0.2.114}/fleet/agent/utils.py +0 -0
- {fleet_python-0.2.113 → fleet_python-0.2.114}/fleet/cli.py +0 -0
- {fleet_python-0.2.113 → fleet_python-0.2.114}/fleet/client.py +0 -0
- {fleet_python-0.2.113 → fleet_python-0.2.114}/fleet/config.py +0 -0
- {fleet_python-0.2.113 → fleet_python-0.2.114}/fleet/env/__init__.py +0 -0
- {fleet_python-0.2.113 → fleet_python-0.2.114}/fleet/env/client.py +0 -0
- {fleet_python-0.2.113 → fleet_python-0.2.114}/fleet/eval/__init__.py +0 -0
- {fleet_python-0.2.113 → fleet_python-0.2.114}/fleet/eval/uploader.py +0 -0
- {fleet_python-0.2.113 → fleet_python-0.2.114}/fleet/exceptions.py +0 -0
- {fleet_python-0.2.113 → fleet_python-0.2.114}/fleet/global_client.py +0 -0
- {fleet_python-0.2.113 → fleet_python-0.2.114}/fleet/instance/__init__.py +0 -0
- {fleet_python-0.2.113 → fleet_python-0.2.114}/fleet/instance/base.py +0 -0
- {fleet_python-0.2.113 → fleet_python-0.2.114}/fleet/instance/client.py +0 -0
- {fleet_python-0.2.113 → fleet_python-0.2.114}/fleet/instance/models.py +0 -0
- {fleet_python-0.2.113 → fleet_python-0.2.114}/fleet/models.py +0 -0
- {fleet_python-0.2.113 → fleet_python-0.2.114}/fleet/proxy/__init__.py +0 -0
- {fleet_python-0.2.113 → fleet_python-0.2.114}/fleet/proxy/proxy.py +0 -0
- {fleet_python-0.2.113 → fleet_python-0.2.114}/fleet/proxy/whitelist.py +0 -0
- {fleet_python-0.2.113 → fleet_python-0.2.114}/fleet/resources/__init__.py +0 -0
- {fleet_python-0.2.113 → fleet_python-0.2.114}/fleet/resources/api.py +0 -0
- {fleet_python-0.2.113 → fleet_python-0.2.114}/fleet/resources/base.py +0 -0
- {fleet_python-0.2.113 → fleet_python-0.2.114}/fleet/resources/browser.py +0 -0
- {fleet_python-0.2.113 → fleet_python-0.2.114}/fleet/resources/filesystem.py +0 -0
- {fleet_python-0.2.113 → fleet_python-0.2.114}/fleet/resources/mcp.py +0 -0
- {fleet_python-0.2.113 → fleet_python-0.2.114}/fleet/resources/sqlite.py +0 -0
- {fleet_python-0.2.113 → fleet_python-0.2.114}/fleet/tasks.py +0 -0
- {fleet_python-0.2.113 → fleet_python-0.2.114}/fleet/types.py +0 -0
- {fleet_python-0.2.113 → fleet_python-0.2.114}/fleet/utils/__init__.py +0 -0
- {fleet_python-0.2.113 → fleet_python-0.2.114}/fleet/utils/http_logging.py +0 -0
- {fleet_python-0.2.113 → fleet_python-0.2.114}/fleet/utils/logging.py +0 -0
- {fleet_python-0.2.113 → fleet_python-0.2.114}/fleet/utils/playwright.py +0 -0
- {fleet_python-0.2.113 → fleet_python-0.2.114}/fleet/verifiers/__init__.py +0 -0
- {fleet_python-0.2.113 → fleet_python-0.2.114}/fleet/verifiers/bundler.py +0 -0
- {fleet_python-0.2.113 → fleet_python-0.2.114}/fleet/verifiers/code.py +0 -0
- {fleet_python-0.2.113 → fleet_python-0.2.114}/fleet/verifiers/db.py +0 -0
- {fleet_python-0.2.113 → fleet_python-0.2.114}/fleet/verifiers/decorator.py +0 -0
- {fleet_python-0.2.113 → fleet_python-0.2.114}/fleet/verifiers/parse.py +0 -0
- {fleet_python-0.2.113 → fleet_python-0.2.114}/fleet/verifiers/sql_differ.py +0 -0
- {fleet_python-0.2.113 → fleet_python-0.2.114}/fleet/verifiers/verifier.py +0 -0
- {fleet_python-0.2.113 → fleet_python-0.2.114}/fleet_python.egg-info/SOURCES.txt +0 -0
- {fleet_python-0.2.113 → fleet_python-0.2.114}/fleet_python.egg-info/dependency_links.txt +0 -0
- {fleet_python-0.2.113 → fleet_python-0.2.114}/fleet_python.egg-info/entry_points.txt +0 -0
- {fleet_python-0.2.113 → fleet_python-0.2.114}/fleet_python.egg-info/requires.txt +0 -0
- {fleet_python-0.2.113 → fleet_python-0.2.114}/fleet_python.egg-info/top_level.txt +0 -0
- {fleet_python-0.2.113 → fleet_python-0.2.114}/scripts/fix_sync_imports.py +0 -0
- {fleet_python-0.2.113 → fleet_python-0.2.114}/scripts/unasync.py +0 -0
- {fleet_python-0.2.113 → fleet_python-0.2.114}/setup.cfg +0 -0
- {fleet_python-0.2.113 → fleet_python-0.2.114}/tests/__init__.py +0 -0
- {fleet_python-0.2.113 → fleet_python-0.2.114}/tests/test_app_method.py +0 -0
- {fleet_python-0.2.113 → fleet_python-0.2.114}/tests/test_expect_exactly.py +0 -0
- {fleet_python-0.2.113 → fleet_python-0.2.114}/tests/test_expect_only.py +0 -0
- {fleet_python-0.2.113 → fleet_python-0.2.114}/tests/test_instance_dispatch.py +0 -0
- {fleet_python-0.2.113 → fleet_python-0.2.114}/tests/test_sqlite_resource_dual_mode.py +0 -0
- {fleet_python-0.2.113 → fleet_python-0.2.114}/tests/test_sqlite_shared_memory_behavior.py +0 -0
- {fleet_python-0.2.113 → fleet_python-0.2.114}/tests/test_verifier_from_string.py +0 -0
|
@@ -15,6 +15,7 @@ from ..judge import (
|
|
|
15
15
|
_collect_image_from_env_async,
|
|
16
16
|
_guess_media_type,
|
|
17
17
|
_parse_grade_response,
|
|
18
|
+
_print_judge_call_start,
|
|
18
19
|
)
|
|
19
20
|
|
|
20
21
|
if TYPE_CHECKING:
|
|
@@ -117,5 +118,6 @@ class AsyncJudge:
|
|
|
117
118
|
task_id=task_id,
|
|
118
119
|
)
|
|
119
120
|
|
|
121
|
+
_print_judge_call_start(rubric, resolved_images, agentic, model)
|
|
120
122
|
response = await self._client.request("POST", "/v1/judge/grade", json=body)
|
|
121
123
|
return _parse_grade_response(response.json())
|
|
@@ -441,6 +441,12 @@ def _print_accumulators(data: dict) -> None:
|
|
|
441
441
|
print(json.dumps(grading_details))
|
|
442
442
|
print("<<< GRADING_DETAILS <<<")
|
|
443
443
|
|
|
444
|
+
golden_urls = acc.get("golden_urls")
|
|
445
|
+
if golden_urls:
|
|
446
|
+
print(">>> GOLDEN_URLS >>>")
|
|
447
|
+
print(json.dumps(golden_urls))
|
|
448
|
+
print("<<< GOLDEN_URLS <<<")
|
|
449
|
+
|
|
444
450
|
timing = acc.get("timing")
|
|
445
451
|
if timing:
|
|
446
452
|
print(
|
|
@@ -455,6 +461,34 @@ def _print_accumulators(data: dict) -> None:
|
|
|
455
461
|
# ---------------------------------------------------------------------------
|
|
456
462
|
|
|
457
463
|
|
|
464
|
+
def _print_judge_call_start(
|
|
465
|
+
rubric: Union[str, "Rubric"],
|
|
466
|
+
images: Optional[Dict[str, "Image"]],
|
|
467
|
+
agentic: bool,
|
|
468
|
+
model: Optional[str],
|
|
469
|
+
) -> None:
|
|
470
|
+
"""Print info when initiating a judge grading call."""
|
|
471
|
+
mode = "agentic" if agentic else "standard"
|
|
472
|
+
model_str = model or "default"
|
|
473
|
+
print(f"[C] Calling judge ({mode} mode, model={model_str})")
|
|
474
|
+
|
|
475
|
+
if isinstance(rubric, Rubric):
|
|
476
|
+
criteria_names = [c.name for c in rubric.criteria]
|
|
477
|
+
print(f"[C] Rubric: {len(rubric.criteria)} criteria ({', '.join(criteria_names)}), max={rubric.max_score}")
|
|
478
|
+
|
|
479
|
+
if images:
|
|
480
|
+
for label, img in images.items():
|
|
481
|
+
src = img.source
|
|
482
|
+
detail = ""
|
|
483
|
+
if img.url:
|
|
484
|
+
detail = f" url={img.url}"
|
|
485
|
+
elif img.filename:
|
|
486
|
+
detail = f" file={img.filename}"
|
|
487
|
+
print(f"[C] Image '{label}': source={src}{detail}")
|
|
488
|
+
else:
|
|
489
|
+
print("[C] No images provided")
|
|
490
|
+
|
|
491
|
+
|
|
458
492
|
def _build_grade_request(
|
|
459
493
|
instance_id: str,
|
|
460
494
|
rubric: Union[str, Rubric],
|
|
@@ -525,11 +559,53 @@ def _build_grade_request(
|
|
|
525
559
|
|
|
526
560
|
def _parse_grade_response(data: dict) -> JudgeResult:
|
|
527
561
|
"""Parse orchestrator response into JudgeResult and print accumulators."""
|
|
562
|
+
# Print detailed judge grading info
|
|
563
|
+
_print_judge_result(data)
|
|
528
564
|
_print_accumulators(data)
|
|
529
565
|
score = float(data.get("normalized_score", 0.0))
|
|
530
566
|
return JudgeResult(score, details=data)
|
|
531
567
|
|
|
532
568
|
|
|
569
|
+
def _print_judge_result(data: dict) -> None:
|
|
570
|
+
"""Print detailed judge grading result for verifier stdout capture."""
|
|
571
|
+
model = data.get("model_used", "unknown")
|
|
572
|
+
provider = data.get("provider_used", "unknown")
|
|
573
|
+
total = data.get("total_score", 0)
|
|
574
|
+
max_score = data.get("max_score", 0)
|
|
575
|
+
normalized = data.get("normalized_score", 0)
|
|
576
|
+
elapsed = (data.get("accumulators") or {}).get("elapsed_ms")
|
|
577
|
+
|
|
578
|
+
print(f"[C] Grading via {model} (provider={provider})")
|
|
579
|
+
if elapsed is not None:
|
|
580
|
+
print(f"[C] Judge call completed in {elapsed:.0f}ms")
|
|
581
|
+
|
|
582
|
+
criteria = data.get("criteria")
|
|
583
|
+
if criteria:
|
|
584
|
+
print(f"[C] Score: {total}/{max_score} ({normalized:.2f})")
|
|
585
|
+
for c in criteria:
|
|
586
|
+
name = c.get("name", "?")
|
|
587
|
+
cscore = c.get("score", "?")
|
|
588
|
+
cmax = c.get("max_score", "?")
|
|
589
|
+
reasoning = c.get("reasoning", "")
|
|
590
|
+
# Truncate long reasoning for stdout readability
|
|
591
|
+
if len(reasoning) > 200:
|
|
592
|
+
reasoning = reasoning[:200] + "..."
|
|
593
|
+
print(f"[C] {name}: {cscore}/{cmax} — {reasoning}")
|
|
594
|
+
else:
|
|
595
|
+
print(f"[C] Score: {normalized:.2f}")
|
|
596
|
+
|
|
597
|
+
feedback = data.get("feedback")
|
|
598
|
+
if feedback:
|
|
599
|
+
fb_display = feedback if len(feedback) <= 300 else feedback[:300] + "..."
|
|
600
|
+
print(f"[C] Feedback: {fb_display}")
|
|
601
|
+
|
|
602
|
+
# Print golden URLs if present in accumulators
|
|
603
|
+
golden_urls = (data.get("accumulators") or {}).get("golden_urls")
|
|
604
|
+
if golden_urls:
|
|
605
|
+
for url in golden_urls:
|
|
606
|
+
print(f"[C] Gold reference: {url}")
|
|
607
|
+
|
|
608
|
+
|
|
533
609
|
# ---------------------------------------------------------------------------
|
|
534
610
|
# Sync judge
|
|
535
611
|
# ---------------------------------------------------------------------------
|
|
@@ -599,5 +675,6 @@ class SyncJudge:
|
|
|
599
675
|
task_id=task_id,
|
|
600
676
|
)
|
|
601
677
|
|
|
678
|
+
_print_judge_call_start(rubric, images, agentic, model)
|
|
602
679
|
response = self._client.request("POST", "/v1/judge/grade", json=body)
|
|
603
680
|
return _parse_grade_response(response.json())
|
|
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
|
|
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
|