hud-python 0.4.19__py3-none-any.whl → 0.4.21__py3-none-any.whl
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.
Potentially problematic release.
This version of hud-python might be problematic. Click here for more details.
- hud/__init__.py +7 -0
- hud/agents/base.py +40 -10
- hud/agents/claude.py +44 -25
- hud/agents/tests/test_client.py +6 -27
- hud/cli/__init__.py +50 -20
- hud/cli/build.py +3 -44
- hud/cli/eval.py +25 -6
- hud/cli/init.py +4 -4
- hud/cli/push.py +3 -1
- hud/cli/tests/test_push.py +6 -6
- hud/clients/__init__.py +3 -2
- hud/clients/base.py +25 -26
- hud/clients/mcp_use.py +44 -22
- hud/datasets/task.py +11 -2
- hud/native/__init__.py +6 -0
- hud/native/comparator.py +546 -0
- hud/native/tests/__init__.py +1 -0
- hud/native/tests/test_comparator.py +539 -0
- hud/native/tests/test_native_init.py +79 -0
- hud/otel/instrumentation.py +0 -2
- hud/server/server.py +9 -2
- hud/shared/exceptions.py +204 -31
- hud/shared/hints.py +177 -0
- hud/shared/requests.py +15 -3
- hud/shared/tests/test_exceptions.py +385 -144
- hud/tools/__init__.py +2 -0
- hud/tools/playwright.py +1 -1
- hud/tools/submit.py +66 -0
- hud/types.py +33 -5
- hud/utils/design.py +57 -0
- hud/utils/mcp.py +6 -0
- hud/utils/pretty_errors.py +68 -0
- hud/utils/tests/test_version.py +1 -1
- hud/version.py +1 -1
- {hud_python-0.4.19.dist-info → hud_python-0.4.21.dist-info}/METADATA +2 -4
- {hud_python-0.4.19.dist-info → hud_python-0.4.21.dist-info}/RECORD +39 -31
- {hud_python-0.4.19.dist-info → hud_python-0.4.21.dist-info}/WHEEL +0 -0
- {hud_python-0.4.19.dist-info → hud_python-0.4.21.dist-info}/entry_points.txt +0 -0
- {hud_python-0.4.19.dist-info → hud_python-0.4.21.dist-info}/licenses/LICENSE +0 -0
hud/types.py
CHANGED
|
@@ -15,7 +15,20 @@ class MCPToolCall(CallToolRequestParams):
|
|
|
15
15
|
id: str = Field(default_factory=lambda: str(uuid.uuid4())) # Unique identifier for reference
|
|
16
16
|
|
|
17
17
|
def __str__(self) -> str:
|
|
18
|
-
"""Format tool call
|
|
18
|
+
"""Format tool call as plain text."""
|
|
19
|
+
args_str = ""
|
|
20
|
+
if self.arguments:
|
|
21
|
+
try:
|
|
22
|
+
args_str = json.dumps(self.arguments, separators=(",", ":"))
|
|
23
|
+
if len(args_str) > 60:
|
|
24
|
+
args_str = args_str[:57] + "..."
|
|
25
|
+
except (TypeError, ValueError):
|
|
26
|
+
args_str = str(self.arguments)[:60]
|
|
27
|
+
|
|
28
|
+
return f"→ {self.name}({args_str})"
|
|
29
|
+
|
|
30
|
+
def __rich__(self) -> str:
|
|
31
|
+
"""Rich representation with color formatting."""
|
|
19
32
|
from hud.utils.design import design
|
|
20
33
|
|
|
21
34
|
return design.format_tool_call(self.name, self.arguments)
|
|
@@ -24,10 +37,8 @@ class MCPToolCall(CallToolRequestParams):
|
|
|
24
37
|
class MCPToolResult(CallToolResult):
|
|
25
38
|
"""A tool result."""
|
|
26
39
|
|
|
27
|
-
def
|
|
28
|
-
"""
|
|
29
|
-
from hud.utils.design import design
|
|
30
|
-
|
|
40
|
+
def _get_content_summary(self) -> str:
|
|
41
|
+
"""Extract a summary of the content."""
|
|
31
42
|
# Extract content summary
|
|
32
43
|
content_summary = ""
|
|
33
44
|
if self.content:
|
|
@@ -49,6 +60,23 @@ class MCPToolResult(CallToolResult):
|
|
|
49
60
|
except (TypeError, ValueError):
|
|
50
61
|
content_summary = str(self.structuredContent)
|
|
51
62
|
|
|
63
|
+
return content_summary
|
|
64
|
+
|
|
65
|
+
def __str__(self) -> str:
|
|
66
|
+
"""Format tool result as plain text for compatibility."""
|
|
67
|
+
content_summary = self._get_content_summary()
|
|
68
|
+
|
|
69
|
+
# Plain text format with unicode symbols
|
|
70
|
+
if self.isError:
|
|
71
|
+
return f"✗ {content_summary}"
|
|
72
|
+
else:
|
|
73
|
+
return f"✓ {content_summary}"
|
|
74
|
+
|
|
75
|
+
def __rich__(self) -> str:
|
|
76
|
+
"""Rich representation with color formatting."""
|
|
77
|
+
from hud.utils.design import design
|
|
78
|
+
|
|
79
|
+
content_summary = self._get_content_summary()
|
|
52
80
|
return design.format_tool_result(content_summary, self.isError)
|
|
53
81
|
|
|
54
82
|
|
hud/utils/design.py
CHANGED
|
@@ -257,6 +257,63 @@ class HUDDesign:
|
|
|
257
257
|
else:
|
|
258
258
|
console.print(f" [cyan]{command}[/cyan]")
|
|
259
259
|
|
|
260
|
+
# Exception rendering utilities
|
|
261
|
+
def render_support_hint(self, stderr: bool = True) -> None:
|
|
262
|
+
"""Render a standard support message for users encountering issues."""
|
|
263
|
+
support = (
|
|
264
|
+
"If this looks like an issue with the sdk, please make a github issue at "
|
|
265
|
+
"https://github.com/hud-evals/hud-python/issues"
|
|
266
|
+
)
|
|
267
|
+
self.info(support, stderr=stderr)
|
|
268
|
+
|
|
269
|
+
def render_exception(self, error: BaseException, *, stderr: bool = True) -> None:
|
|
270
|
+
"""Render exceptions consistently using the HUD design system.
|
|
271
|
+
|
|
272
|
+
- Shows exception type and message
|
|
273
|
+
- Displays structured hints if present on the exception (e.g., HudException.hints)
|
|
274
|
+
- Prints a link to open an issue for SDK problems
|
|
275
|
+
"""
|
|
276
|
+
try:
|
|
277
|
+
from hud.shared.exceptions import HudRequestError # lazy import
|
|
278
|
+
except Exception:
|
|
279
|
+
# Keep type available for isinstance guards below without import-time dependency
|
|
280
|
+
HudRequestError = tuple() # type: ignore
|
|
281
|
+
|
|
282
|
+
# Header with exception type
|
|
283
|
+
ex_type = type(error).__name__
|
|
284
|
+
message = getattr(error, "message", "") or str(error) or ex_type
|
|
285
|
+
self.error(f"{ex_type}: {message}", stderr=stderr)
|
|
286
|
+
|
|
287
|
+
# Specialized details for request errors
|
|
288
|
+
if isinstance(error, HudRequestError): # type: ignore[arg-type]
|
|
289
|
+
details: dict[str, str] = {}
|
|
290
|
+
status_code = getattr(error, "status_code", None)
|
|
291
|
+
if status_code is not None:
|
|
292
|
+
details["Status"] = str(status_code)
|
|
293
|
+
response_text = getattr(error, "response_text", None)
|
|
294
|
+
if response_text:
|
|
295
|
+
# Limit very long responses
|
|
296
|
+
trimmed = response_text[:500] + ("..." if len(response_text) > 500 else "")
|
|
297
|
+
details["Response"] = trimmed
|
|
298
|
+
response_json = getattr(error, "response_json", None)
|
|
299
|
+
if response_json and not details.get("Response"):
|
|
300
|
+
details["Response JSON"] = str(response_json)
|
|
301
|
+
if details:
|
|
302
|
+
self.key_value_table(details, show_header=False, stderr=stderr)
|
|
303
|
+
|
|
304
|
+
# Structured hints, if available
|
|
305
|
+
hints = getattr(error, "hints", None)
|
|
306
|
+
if hints:
|
|
307
|
+
try:
|
|
308
|
+
from hud.shared.hints import render_hints # lazy import
|
|
309
|
+
|
|
310
|
+
render_hints(hints, design=self)
|
|
311
|
+
except Exception as render_error:
|
|
312
|
+
self.debug(f"Failed to render hints: {render_error}")
|
|
313
|
+
|
|
314
|
+
# Standard support hint
|
|
315
|
+
self.render_support_hint(stderr=stderr)
|
|
316
|
+
|
|
260
317
|
@property
|
|
261
318
|
def console(self) -> Console:
|
|
262
319
|
"""Get the stderr console for direct access when needed."""
|
hud/utils/mcp.py
CHANGED
|
@@ -76,4 +76,10 @@ def setup_hud_telemetry(
|
|
|
76
76
|
MCPConfigPatch(headers={"Run-Id": run_id}, meta={"run_id": run_id}),
|
|
77
77
|
)
|
|
78
78
|
|
|
79
|
+
if settings.api_key:
|
|
80
|
+
patch_mcp_config(
|
|
81
|
+
mcp_config,
|
|
82
|
+
MCPConfigPatch(headers={"Authorization": f"Bearer {settings.api_key}"}),
|
|
83
|
+
)
|
|
84
|
+
|
|
79
85
|
return auto_trace_cm
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
import asyncio
|
|
4
|
+
import logging
|
|
5
|
+
import sys
|
|
6
|
+
from typing import Any
|
|
7
|
+
|
|
8
|
+
from hud.utils.design import design
|
|
9
|
+
|
|
10
|
+
logger = logging.getLogger(__name__)
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
def _render_and_fallback(exc_type: type[BaseException], value: BaseException, tb: Any) -> None:
|
|
14
|
+
"""Render exceptions via HUD design, then delegate to default excepthook.
|
|
15
|
+
|
|
16
|
+
Only formats for HudException family or when running in a TTY; otherwise,
|
|
17
|
+
defers to the default handler to avoid swallowing useful tracebacks in code.
|
|
18
|
+
"""
|
|
19
|
+
# First, print the full traceback
|
|
20
|
+
sys.__excepthook__(exc_type, value, tb)
|
|
21
|
+
|
|
22
|
+
# Then print our formatted error
|
|
23
|
+
try:
|
|
24
|
+
from hud.shared.exceptions import HudException # lazy import
|
|
25
|
+
|
|
26
|
+
if isinstance(value, HudException):
|
|
27
|
+
# Flush stderr to ensure traceback is printed first
|
|
28
|
+
sys.stderr.flush()
|
|
29
|
+
# Add separator and render our formatted error
|
|
30
|
+
design.console.print("")
|
|
31
|
+
design.render_exception(value)
|
|
32
|
+
except Exception:
|
|
33
|
+
# If rendering fails for any reason, silently continue
|
|
34
|
+
logger.warning("Failed to render exception: %s, %s, %s", exc_type, value, tb)
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
def _async_exception_handler(loop: asyncio.AbstractEventLoop, context: dict[str, Any]) -> None:
|
|
38
|
+
exc = context.get("exception")
|
|
39
|
+
msg = context.get("message")
|
|
40
|
+
try:
|
|
41
|
+
if exc is not None:
|
|
42
|
+
design.render_exception(exc)
|
|
43
|
+
elif msg:
|
|
44
|
+
design.error(msg)
|
|
45
|
+
design.render_support_hint()
|
|
46
|
+
except Exception:
|
|
47
|
+
logger.warning("Failed to render exception: %s, %s, %s", exc, msg, context)
|
|
48
|
+
|
|
49
|
+
# Delegate to default handler
|
|
50
|
+
loop.default_exception_handler(context)
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
def install_pretty_errors() -> None:
|
|
54
|
+
"""Install global pretty error handlers for sync and async exceptions."""
|
|
55
|
+
sys.excepthook = _render_and_fallback
|
|
56
|
+
try:
|
|
57
|
+
# Try to get the running loop first
|
|
58
|
+
loop = asyncio.get_running_loop()
|
|
59
|
+
loop.set_exception_handler(_async_exception_handler)
|
|
60
|
+
except RuntimeError:
|
|
61
|
+
# No running loop, try to create one
|
|
62
|
+
try:
|
|
63
|
+
loop = asyncio.new_event_loop()
|
|
64
|
+
loop.set_exception_handler(_async_exception_handler)
|
|
65
|
+
except Exception:
|
|
66
|
+
logger.warning("No running loop, could not set exception handler")
|
|
67
|
+
except Exception:
|
|
68
|
+
logger.warning("No running loop, could not set exception handler")
|
hud/utils/tests/test_version.py
CHANGED
hud/version.py
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: hud-python
|
|
3
|
-
Version: 0.4.
|
|
3
|
+
Version: 0.4.21
|
|
4
4
|
Summary: SDK for the HUD platform.
|
|
5
5
|
Project-URL: Homepage, https://github.com/hud-evals/hud-python
|
|
6
6
|
Project-URL: Bug Tracker, https://github.com/hud-evals/hud-python/issues
|
|
@@ -38,6 +38,7 @@ Requires-Python: <3.14,>=3.11
|
|
|
38
38
|
Requires-Dist: httpx<1,>=0.23.0
|
|
39
39
|
Requires-Dist: hud-fastmcp-python-sdk>=0.1.2
|
|
40
40
|
Requires-Dist: hud-mcp-python-sdk>=3.13.2
|
|
41
|
+
Requires-Dist: hud-mcp-use-python-sdk>=2.3.16
|
|
41
42
|
Requires-Dist: opentelemetry-api>=1.34.1
|
|
42
43
|
Requires-Dist: opentelemetry-exporter-otlp-proto-http>=1.34.1
|
|
43
44
|
Requires-Dist: opentelemetry-instrumentation-mcp>=0.44.1
|
|
@@ -56,7 +57,6 @@ Provides-Extra: agent
|
|
|
56
57
|
Requires-Dist: anthropic; extra == 'agent'
|
|
57
58
|
Requires-Dist: datasets>=2.14.0; extra == 'agent'
|
|
58
59
|
Requires-Dist: dotenv>=0.9.9; extra == 'agent'
|
|
59
|
-
Requires-Dist: hud-mcp-use-python-sdk>=2.3.13; extra == 'agent'
|
|
60
60
|
Requires-Dist: ipykernel; extra == 'agent'
|
|
61
61
|
Requires-Dist: ipython<9; extra == 'agent'
|
|
62
62
|
Requires-Dist: jupyter-client; extra == 'agent'
|
|
@@ -70,7 +70,6 @@ Provides-Extra: agents
|
|
|
70
70
|
Requires-Dist: anthropic; extra == 'agents'
|
|
71
71
|
Requires-Dist: datasets>=2.14.0; extra == 'agents'
|
|
72
72
|
Requires-Dist: dotenv>=0.9.9; extra == 'agents'
|
|
73
|
-
Requires-Dist: hud-mcp-use-python-sdk>=2.3.13; extra == 'agents'
|
|
74
73
|
Requires-Dist: ipykernel; extra == 'agents'
|
|
75
74
|
Requires-Dist: ipython<9; extra == 'agents'
|
|
76
75
|
Requires-Dist: jupyter-client; extra == 'agents'
|
|
@@ -85,7 +84,6 @@ Requires-Dist: aiodocker>=0.24.0; extra == 'dev'
|
|
|
85
84
|
Requires-Dist: anthropic; extra == 'dev'
|
|
86
85
|
Requires-Dist: datasets>=2.14.0; extra == 'dev'
|
|
87
86
|
Requires-Dist: dotenv>=0.9.9; extra == 'dev'
|
|
88
|
-
Requires-Dist: hud-mcp-use-python-sdk>=2.3.13; extra == 'dev'
|
|
89
87
|
Requires-Dist: inspect-ai>=0.3.80; extra == 'dev'
|
|
90
88
|
Requires-Dist: ipykernel; extra == 'dev'
|
|
91
89
|
Requires-Dist: ipython<9; extra == 'dev'
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
hud/__init__.py,sha256=
|
|
1
|
+
hud/__init__.py,sha256=KU7G-_Mj6Mjf7trXA6X0ufN6QUmqhVi19NKbnNIvD74,532
|
|
2
2
|
hud/__main__.py,sha256=YR8Dq8OhINOsVfQ55PmRXXg4fEK84Rt_-rMtJ5rvhWo,145
|
|
3
3
|
hud/settings.py,sha256=q9aZiHjvbL4oLE-N8AttTW4rmzS8zPMnsca-iMGyEGc,2362
|
|
4
|
-
hud/types.py,sha256=
|
|
5
|
-
hud/version.py,sha256=
|
|
4
|
+
hud/types.py,sha256=DDK7-jcoI0iZbyIOfXlGJy9MpHAGcw_4napLs-v-8vY,6077
|
|
5
|
+
hud/version.py,sha256=888JgQ-gt1NqBeShBZC3JqfOBDr4dkkOuQ33EZpv7yA,105
|
|
6
6
|
hud/agents/__init__.py,sha256=UoIkljWdbq4bM0LD-mSaw6w826EqdEjOk7r6glNYwYQ,286
|
|
7
|
-
hud/agents/base.py,sha256=
|
|
8
|
-
hud/agents/claude.py,sha256=
|
|
7
|
+
hud/agents/base.py,sha256=2kZ8KOuNk_RQGqE7MvdMPm_jrlAkiaNNBz1tEW0Uxpg,30937
|
|
8
|
+
hud/agents/claude.py,sha256=upWnGGwLz88k8i6zg0A6l1rK7DSTwJEU8pRevnR3irc,15314
|
|
9
9
|
hud/agents/langchain.py,sha256=1EgCy8jfjunsWxlPC5XfvfLS6_XZVrIF1ZjtHcrvhYw,9584
|
|
10
10
|
hud/agents/openai.py,sha256=tvFYsZ5yaoLkfjMnHe-COxRttMsLRXBLPdSqgeipQRk,14257
|
|
11
11
|
hud/agents/openai_chat_generic.py,sha256=PQAD4GGE6sHs8R95qpgDBHEbSOJ7WXCYGYFmd3Nic1g,10628
|
|
@@ -14,21 +14,21 @@ hud/agents/misc/response_agent.py,sha256=pnaomb4H-QJm1YKU3tC1YnZXxOlDbTHIXaIH-6N
|
|
|
14
14
|
hud/agents/tests/__init__.py,sha256=W-O-_4i34d9TTyEHV-O_q1Ai1gLhzwDaaPo02_TWQIY,34
|
|
15
15
|
hud/agents/tests/test_base.py,sha256=F39ajSqASGUbPyPoWSY9KARFav62qNTK74W11Tr1Tg4,28970
|
|
16
16
|
hud/agents/tests/test_claude.py,sha256=wqEKlzEvx8obz1sSm4NY0j-Zyt1qWNfDOmRqYIuAEd0,13069
|
|
17
|
-
hud/agents/tests/test_client.py,sha256=
|
|
17
|
+
hud/agents/tests/test_client.py,sha256=fZoT22awa-Q84kAZ0CGiFGLNDEjBQ75rf6lImmVDsoQ,13120
|
|
18
18
|
hud/agents/tests/test_openai.py,sha256=lhHowQyLp09oDVwBUjUECoPeH01F16i4O9YIHeugK6E,7028
|
|
19
|
-
hud/cli/__init__.py,sha256=
|
|
19
|
+
hud/cli/__init__.py,sha256=W4McbKAvs8cMIYlruzjV8Z_nxkmOK9ktYWP-WBnD6xo,35804
|
|
20
20
|
hud/cli/__main__.py,sha256=fDH7XITyuDITwSDIVwRso06aouADO0CzTHKqp5TOwJE,143
|
|
21
21
|
hud/cli/analyze.py,sha256=DngDPM53DHZn8gFndz8d7hCIOUwB4tqtYEii6AGFIZk,14393
|
|
22
|
-
hud/cli/build.py,sha256=
|
|
22
|
+
hud/cli/build.py,sha256=_3rNFhNDNAChE95Ou5AqblVfD6QlUwKtcpgrPFChuq8,17742
|
|
23
23
|
hud/cli/clone.py,sha256=AwVDIuhr8mHb1oT2Af2HrD25SiTdwATpE6zd93vzLgA,6099
|
|
24
24
|
hud/cli/debug.py,sha256=FNzg9-_ZzUJA1nJfubmop7_2OT5mqnWsdpZyi4AVSXA,14163
|
|
25
25
|
hud/cli/dev.py,sha256=R7YJWIZCUURXzs8ovOCF9V1FwOhsAJT5D3mZQkFmTI4,31134
|
|
26
|
-
hud/cli/eval.py,sha256=
|
|
26
|
+
hud/cli/eval.py,sha256=v_uvzkS-J_dsxzVqszPkotOfUsNoq501-Ygdqi9BhKA,15770
|
|
27
27
|
hud/cli/hf.py,sha256=EYWL-fEN9SS2QJYU7iIBXs0qa9JIvmMWOMh9a8Ewt9s,15179
|
|
28
|
-
hud/cli/init.py,sha256=
|
|
28
|
+
hud/cli/init.py,sha256=7Yqp3gUVmK-vVE_6A9RKhZlSTlwxxb2ylJn1H22TYSY,19573
|
|
29
29
|
hud/cli/list_func.py,sha256=ENxLL4X5uuqAASWZdQuI0k-tEzmlhUn5LATgz3QPQqQ,7065
|
|
30
30
|
hud/cli/pull.py,sha256=JHwCwUwRO0Nzbgm9mkjsz6EpxbxgwQVhgNSY64nNZ-s,11969
|
|
31
|
-
hud/cli/push.py,sha256=
|
|
31
|
+
hud/cli/push.py,sha256=KFuykjmBVTInjEKmV7BaMwu9n6BYT9GUgkzZ9J7r6gQ,17966
|
|
32
32
|
hud/cli/remove.py,sha256=USAvB6pbMA3jd19xUtLEBiMsklVTEfE2Maw9nYcpSAE,6619
|
|
33
33
|
hud/cli/rl/README.md,sha256=3pqRZMrnwD-lJwWGCCNZNhGdZG6zyydLBOer0e8BkLw,5983
|
|
34
34
|
hud/cli/rl/__init__.py,sha256=g_Crqn5o0m9xANrTOkQZENWVlwHAV6MWiobte-FfqiY,3412
|
|
@@ -50,7 +50,7 @@ hud/cli/tests/test_list_func.py,sha256=pkG4TtJJBMi9Xk8KBNFBlGcam7kwz01IRsjfQBL2P
|
|
|
50
50
|
hud/cli/tests/test_main_module.py,sha256=6RhwCcdRSN2uQV6-adti40ZcLd3u-mPR1ai6wL64c6Y,1105
|
|
51
51
|
hud/cli/tests/test_mcp_server.py,sha256=wLFkDOR22FuBe3kIdYeLG7H81HHiorKB8kXRubftLpU,4316
|
|
52
52
|
hud/cli/tests/test_pull.py,sha256=7wHxdf_rN3LDmo554-S63WT6eoYUquwDWpjgoy_f1eQ,12923
|
|
53
|
-
hud/cli/tests/test_push.py,sha256=
|
|
53
|
+
hud/cli/tests/test_push.py,sha256=ixuqb39Q1A-GJGjnELYifIYBU9lIWCM1q7s_gjUEhYE,12709
|
|
54
54
|
hud/cli/tests/test_registry.py,sha256=mTfgr6fkY5ygRnSgbVU7988QRQKdpEKUpWmQicGnHGs,9461
|
|
55
55
|
hud/cli/tests/test_utils.py,sha256=_oa2lTvgqJxXe0Mtovxb8x-Sug-f6oJJKvG67r5pFtA,13474
|
|
56
56
|
hud/cli/utils/__init__.py,sha256=L6s0oNzY2LugGp9faodCPnjzM-ZUorUH05-HmYOq5hY,35
|
|
@@ -65,10 +65,10 @@ hud/cli/utils/remote_runner.py,sha256=50Fqp7LG9dwiDyNM-LspNiKrSHmEo00C_Iuu5jg9mX
|
|
|
65
65
|
hud/cli/utils/runner.py,sha256=qZI1lFNZIFn6d919awUkMtjQ36TfhAvyqGRzQmkal8c,4269
|
|
66
66
|
hud/cli/utils/server.py,sha256=uSx2DjG5vX-PFoD8zNH-gBHbkTNSHveFSVdAfmp09Tc,7341
|
|
67
67
|
hud/clients/README.md,sha256=XNE3mch95ozDgVqfwCGcrhlHY9CwT1GKfNANNboowto,3826
|
|
68
|
-
hud/clients/__init__.py,sha256=
|
|
69
|
-
hud/clients/base.py,sha256=
|
|
68
|
+
hud/clients/__init__.py,sha256=N5M_gZv4nP7dLRwpAiaqqaxyaLieGW6397FszeG7JGw,364
|
|
69
|
+
hud/clients/base.py,sha256=vt9mRMZwZg2DtVxQmccR_VZZGamXhx3dvlFJPulbOd8,14131
|
|
70
70
|
hud/clients/fastmcp.py,sha256=KJGi8bmds0Q6rHnkTXb_Hw9ZqWmSo0OfjW05SSuyEJU,9182
|
|
71
|
-
hud/clients/mcp_use.py,sha256=
|
|
71
|
+
hud/clients/mcp_use.py,sha256=fKG_yRM-GlucQbd7f4aYF2Go0kSjwApHqO3DhbIPG04,13034
|
|
72
72
|
hud/clients/tests/__init__.py,sha256=sKOtJFFa4mDIXh1U6O8ZUHjigE8CiRMQ2PzJTIBZuVE,33
|
|
73
73
|
hud/clients/tests/test_client_integration.py,sha256=kohU6jfCNfwSnAushHeB1_CmDlRfQc7VBL0GEdJYSeI,4198
|
|
74
74
|
hud/clients/tests/test_fastmcp.py,sha256=4q3TzDjuieTZa89taiNJIrzbUncNkYOG4MaubypA21k,13030
|
|
@@ -76,33 +76,39 @@ hud/clients/tests/test_protocol.py,sha256=aK4CS4g3j1D5jPo83ykzZuHUvcZFAulYtIq9T9
|
|
|
76
76
|
hud/clients/utils/__init__.py,sha256=ucYJqOVpEsN-D9OFE2YTNLG628MgxcZAzfYhnbzx02k,32
|
|
77
77
|
hud/clients/utils/retry_transport.py,sha256=Rsq25eiKKt_pM1bas78QEZvO0illK97X_3opmaS3A3w,6809
|
|
78
78
|
hud/datasets/__init__.py,sha256=74T4mrjELKtE04XkZKwU8QAJcg2wjqXLqRO9s4GlPr4,678
|
|
79
|
-
hud/datasets/task.py,sha256=
|
|
79
|
+
hud/datasets/task.py,sha256=bDVLy4EOBfjiU4i8hrFqcQ3dc077vzVNRXIbyNXFnp8,3916
|
|
80
80
|
hud/datasets/utils.py,sha256=3hKvZTkZuCRkTeITB86nNdA1dtHZAqFfAdSPMtcTUhs,4275
|
|
81
81
|
hud/datasets/execution/__init__.py,sha256=4m1AEpMQaUSJFVN_iAXvY6zFttVgZKwE6oQtC0Rrk7U,330
|
|
82
82
|
hud/datasets/execution/parallel.py,sha256=4aL1XpS3vOBqZjgs0vrMZJ4eAoi86Td8C-m5SUtVxMs,25231
|
|
83
83
|
hud/datasets/execution/runner.py,sha256=EEvb90vvAqFXXx8NyVKLfK5p-gtsfJqiFJAoqSjyfXg,4695
|
|
84
84
|
hud/misc/__init__.py,sha256=m_pprQQ-G-Y0Sd0NEiR8MtAMbElnuFZ2OWT8TXrw7c4,43
|
|
85
85
|
hud/misc/claude_plays_pokemon.py,sha256=IthAkjDVr2Q-GNvX-QLJyMzN7-0pHqqJbagGNv2m7yo,10453
|
|
86
|
+
hud/native/__init__.py,sha256=TqM0KaiQnDb2Nv1zOgpEMiLVq8JPd4j_aaK4rUZ0IiA,232
|
|
87
|
+
hud/native/comparator.py,sha256=A16wFGINLHPyuD23e8sEYxhRwWCUBYzYLb6TpvzJG9c,18297
|
|
88
|
+
hud/native/tests/__init__.py,sha256=gBTLMm6w5f6D-02Se2WleYsEEYyFt95JDcFzp3C2L_k,40
|
|
89
|
+
hud/native/tests/test_comparator.py,sha256=x1gFLXEDRIiJhH8tg5Rd3ptY-modYaHgSm6-hCJ1EdY,18568
|
|
90
|
+
hud/native/tests/test_native_init.py,sha256=Is8fcDZimp1Oi2Bv4zavqM3KrpS86_DUXFnqc0AsCH0,2736
|
|
86
91
|
hud/otel/__init__.py,sha256=ii17ayoWiS5vAhA7UAmZ8TkmP52gs2pWyHsD46-uYbE,1003
|
|
87
92
|
hud/otel/collector.py,sha256=jLZymZ8r7xt2VDuWexfbnT7PY1-0aiyLMgjBy8KDY1M,4497
|
|
88
93
|
hud/otel/config.py,sha256=6np_C2UXhtKHHjY41HQxZElua2Eh_EUCBiRB_YuiSuc,6249
|
|
89
94
|
hud/otel/context.py,sha256=C9MvO99cRSNNDEDC7ehO3eoTPnb6J7AemUYvEp57yEU,17774
|
|
90
95
|
hud/otel/exporters.py,sha256=RLAjWa8b2DJEU21740Idq4fmeIuabLEqGGUspcFDcH4,14331
|
|
91
|
-
hud/otel/instrumentation.py,sha256=
|
|
96
|
+
hud/otel/instrumentation.py,sha256=bBWxQ5vkiP-2WZ_2ztR5LAw0Wu02SZNKUgs5f-rU-ro,3734
|
|
92
97
|
hud/otel/processors.py,sha256=-gGRbwifplcExDQBLfx_9tqWreDImULJNcENgO9q7VU,4700
|
|
93
98
|
hud/otel/tests/__init__.py,sha256=VNJKBMaxTtbn7trW-1Ph50zCvCok_wTSGcI1HD6GOLA,43
|
|
94
99
|
hud/otel/tests/test_processors.py,sha256=np0R4ssd9j6LJSJykJ5bNjl0POwNYNhgb7BqOZHwcMY,6778
|
|
95
100
|
hud/server/__init__.py,sha256=8LUwgsXO8xiViWP7uImDwcOsWLu01r5F4r8U8qH3rSY,91
|
|
96
101
|
hud/server/context.py,sha256=6bCdSzv1FGyItu9472HbbYef279H7QuMGJDR8EtYg5Y,3210
|
|
97
102
|
hud/server/low_level.py,sha256=XYs2pOJ9kN4OcJ6ahDmXM5mWkzq5wJLpKFInUYrWEok,4701
|
|
98
|
-
hud/server/server.py,sha256=
|
|
103
|
+
hud/server/server.py,sha256=w32-A0iRu4TIaHpWm2lBx7kIf8CcpaMbBKRrEn6GyKk,10026
|
|
99
104
|
hud/server/helper/__init__.py,sha256=ZxO8VP3RZEBBp-q65VixuhzQgqEPSVzW0hEY9J9QqDA,116
|
|
100
105
|
hud/server/tests/__init__.py,sha256=eEYYkxX5Hz9woXVOBJ2H2_CQoEih0vH6nRt3sH2Z8v8,49
|
|
101
106
|
hud/shared/__init__.py,sha256=IPxPCqtPLguryN-nBq78Sakypw2bRiE2iHv3SXG8YRk,139
|
|
102
|
-
hud/shared/exceptions.py,sha256=
|
|
103
|
-
hud/shared/
|
|
107
|
+
hud/shared/exceptions.py,sha256=dhmt5KMciQ2fmV-yqXtTNO868k-WzuZae6w7dOk3M44,12144
|
|
108
|
+
hud/shared/hints.py,sha256=UdJyGmizk0fz8QZqkRJVvQGlxalBsEzumu7h9pP_2kA,5009
|
|
109
|
+
hud/shared/requests.py,sha256=HWrPp7nBSK4jhv9wqZdFiNrVaaxV0vWS8fcgGtoztBc,9479
|
|
104
110
|
hud/shared/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
105
|
-
hud/shared/tests/test_exceptions.py,sha256=
|
|
111
|
+
hud/shared/tests/test_exceptions.py,sha256=bCKGqw2RwBmlGIMNpddzyfnWAOQwSIYB76r6iaBE2is,15761
|
|
106
112
|
hud/shared/tests/test_requests.py,sha256=nKFcSN1sjrOouVU2xik9lE5Wxapy3EWsO8iIXrM_Sts,9114
|
|
107
113
|
hud/telemetry/__init__.py,sha256=pPqkq4XekqJEkzwoCwGHGAv1NcytZ55yIB1aLxBpo6U,663
|
|
108
114
|
hud/telemetry/instrument.py,sha256=m3u6YK02PTk39Jr4L3se7l-cYyKx0maCaqf5Z5JqWNA,14096
|
|
@@ -112,12 +118,13 @@ hud/telemetry/trace.py,sha256=gem9pcioNI71hLs18vNidv-7KAZBJAn35stjVvOu_Ic,2208
|
|
|
112
118
|
hud/telemetry/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
113
119
|
hud/telemetry/tests/test_replay.py,sha256=eREc6qgSJDRT1pOPdyhiEoEJ9H2yT1ospaU1RvTKlvg,1328
|
|
114
120
|
hud/telemetry/tests/test_trace.py,sha256=uKPjVqJ7kSWhiLXxMVQjQ3PcuKM-ryNs38LNaJanByg,2477
|
|
115
|
-
hud/tools/__init__.py,sha256=
|
|
121
|
+
hud/tools/__init__.py,sha256=i6lE0GxYcPnlLLd-55ryCCHo7o9anC4RfqkuYFXvzMQ,1009
|
|
116
122
|
hud/tools/base.py,sha256=4qm5LS3SAkrq_lyfToWYCN9tNvTHohKJNH2siHkE364,15824
|
|
117
123
|
hud/tools/bash.py,sha256=LJViMGb3lTGBm_gequVVTM7ySh1Xh9bOOIZXU29Lmrw,5209
|
|
118
124
|
hud/tools/edit.py,sha256=N0AYFXp07-vAJy2li7lvHOL6hfgJOU4LL3iLSZrbRWU,12745
|
|
119
|
-
hud/tools/playwright.py,sha256=
|
|
125
|
+
hud/tools/playwright.py,sha256=iyMrQ-ZKyeFia2fBp0yguXswTcXfGqdZcTXXCfUupFU,14988
|
|
120
126
|
hud/tools/response.py,sha256=t6Oc8NM4u951A1XMCBaIkFyu3VNEQ8dcWURyTygfZmA,2228
|
|
127
|
+
hud/tools/submit.py,sha256=hJG2G3Oex4fz_3CsAUVhOhAA56UvDMhquB29xCT-C3M,1973
|
|
121
128
|
hud/tools/types.py,sha256=g-CWnUUDSxxIfUy54S1bpY1nfTzdYO1R_nPKYReABjQ,2734
|
|
122
129
|
hud/tools/utils.py,sha256=bfVyYMcBOJvr1QdptCjVb6jaHVGIL5WUxmY59kzMekQ,1447
|
|
123
130
|
hud/tools/computer/__init__.py,sha256=3tQBXPtGX0WPCwFXzEs3-duwg0rPEgj_0-K7aHskeQE,367
|
|
@@ -147,8 +154,9 @@ hud/tools/tests/test_tools_init.py,sha256=qbUCNWbswlkbsSJR-CBnRk_h_l1CLasRffIhp8
|
|
|
147
154
|
hud/tools/tests/test_utils.py,sha256=oYxEnLpSA5sEeYFGUTj74QRNv0AHP3AjmYYHXgIW0BY,5496
|
|
148
155
|
hud/utils/__init__.py,sha256=ckuIzwqgTxkzASa04XTPsOu_TqsRYUKBWUYfcSi3Xnc,164
|
|
149
156
|
hud/utils/async_utils.py,sha256=5cKrJcnaHV2eJNxeyx0r7fPcdPTDBK7kM9-nLaF51X4,2409
|
|
150
|
-
hud/utils/design.py,sha256=
|
|
151
|
-
hud/utils/mcp.py,sha256=
|
|
157
|
+
hud/utils/design.py,sha256=Ymz29qdgqmnXCupDmASCqgkoW8fS6_cg5COXiFUUl50,17621
|
|
158
|
+
hud/utils/mcp.py,sha256=jvCWb5MXlMMObhrbYoiTlI-L9HNkEjLVx8GJ-HbdQ7U,2626
|
|
159
|
+
hud/utils/pretty_errors.py,sha256=M4mEzzyB-ZbqbX8KQmlBTtoc2q7OBKzFYvkXgVBcj6o,2395
|
|
152
160
|
hud/utils/progress.py,sha256=suikwFM8sdSfkV10nAOEaInDhG4XKgOSvFePg4jSj1A,5927
|
|
153
161
|
hud/utils/telemetry.py,sha256=hrVIx2rUjSGyy9IVxTZ_3Jii83PiHjyFRd5ls2whimM,1863
|
|
154
162
|
hud/utils/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -157,10 +165,10 @@ hud/utils/tests/test_init.py,sha256=2QLQSGgyP9wJhOvPCusm_zjJad0qApOZi1BXpxcdHXQ,
|
|
|
157
165
|
hud/utils/tests/test_mcp.py,sha256=0pUa16mL-bqbZDXp5NHBnt1gO5o10BOg7zTMHZ1DNPM,4023
|
|
158
166
|
hud/utils/tests/test_progress.py,sha256=QSF7Kpi03Ff_l3mAeqW9qs1nhK50j9vBiSobZq7T4f4,7394
|
|
159
167
|
hud/utils/tests/test_telemetry.py,sha256=5jl7bEx8C8b-FfFUko5pf4UY-mPOR-9HaeL98dGtVHM,2781
|
|
160
|
-
hud/utils/tests/test_version.py,sha256=
|
|
168
|
+
hud/utils/tests/test_version.py,sha256=5ReSod83u8tP-ZJBhZwzeY-rFMhIy8Mpt-zP-v7YeEA,160
|
|
161
169
|
hud/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
162
|
-
hud_python-0.4.
|
|
163
|
-
hud_python-0.4.
|
|
164
|
-
hud_python-0.4.
|
|
165
|
-
hud_python-0.4.
|
|
166
|
-
hud_python-0.4.
|
|
170
|
+
hud_python-0.4.21.dist-info/METADATA,sha256=Np2Ririw3UDdAAiaOIa0QSyDdYdjjAypm25ZoSK8KPg,20142
|
|
171
|
+
hud_python-0.4.21.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
|
172
|
+
hud_python-0.4.21.dist-info/entry_points.txt,sha256=jJbodNFg1m0-CDofe5AHvB4zKBq7sSdP97-ohaQ3ae4,63
|
|
173
|
+
hud_python-0.4.21.dist-info/licenses/LICENSE,sha256=yIzBheVUf86FC1bztAcr7RYWWNxyd3B-UJQ3uddg1HA,1078
|
|
174
|
+
hud_python-0.4.21.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|