hud-python 0.4.8__py3-none-any.whl → 0.4.10__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/tools/response.py ADDED
@@ -0,0 +1,54 @@
1
+ from __future__ import annotations
2
+
3
+ from abc import abstractmethod
4
+ from typing import TYPE_CHECKING
5
+
6
+ from .base import BaseTool
7
+
8
+ if TYPE_CHECKING:
9
+ from mcp.types import ContentBlock
10
+
11
+
12
+ class ResponseTool(BaseTool):
13
+ """
14
+ Protocol for handling responses within environments.
15
+
16
+ This abstract tool defines the interface for response handling in environments.
17
+ Subclasses should implement the __call__ method to handle responses according
18
+ to their specific needs.
19
+
20
+ Example:
21
+ class MyEnvironmentResponseTool(ResponseTool):
22
+ async def __call__(
23
+ self,
24
+ response: str | None = None,
25
+ messages: list[ContentBlock] | None = None
26
+ ) -> list[ContentBlock]:
27
+ # Custom implementation for handling responses
28
+ from mcp.types import TextContent
29
+ blocks = []
30
+ if response:
31
+ # Process response according to environment needs
32
+ blocks.append(TextContent(text=f"[ENV] {response}", type="text"))
33
+ if messages:
34
+ # Process messages according to environment needs
35
+ blocks.extend(messages)
36
+ return blocks
37
+ """
38
+
39
+ @abstractmethod
40
+ async def __call__(
41
+ self,
42
+ response: str | None = None,
43
+ messages: list[ContentBlock] | None = None
44
+ ) -> list[ContentBlock]:
45
+ """Handle response or messages and return as ContentBlocks.
46
+
47
+ Args:
48
+ response: A single text response to handle
49
+ messages: A list of ContentBlock messages to handle
50
+
51
+ Returns:
52
+ List of ContentBlock containing the processed response(s)
53
+ """
54
+ raise NotImplementedError("Subclasses must implement __call__")
hud/utils/design.py CHANGED
@@ -93,6 +93,16 @@ class HUDDesign:
93
93
  """
94
94
  console = self._stderr_console if stderr else self._stdout_console
95
95
  console.print(f"[default not bold]{message}[/default not bold]")
96
+
97
+ def print(self, message: str, stderr: bool = True) -> None:
98
+ """Print a message.
99
+
100
+ Args:
101
+ message: The message to print
102
+ stderr: If True, output to stderr (default), otherwise stdout
103
+ """
104
+ console = self._stderr_console if stderr else self._stdout_console
105
+ console.print(message)
96
106
 
97
107
  def dim_info(self, label: str, value: str, stderr: bool = True) -> None:
98
108
  """Print dimmed info with a label.
hud/utils/mcp.py CHANGED
@@ -1,11 +1,14 @@
1
1
  from __future__ import annotations
2
2
 
3
+ import logging
3
4
  from typing import Any
4
5
 
5
6
  from pydantic import BaseModel, Field
6
7
 
7
8
  from hud.settings import settings
8
9
 
10
+ logger = logging.getLogger(__name__)
11
+
9
12
 
10
13
  class MCPConfigPatch(BaseModel):
11
14
  """Patch for MCP config."""
@@ -34,8 +37,13 @@ def patch_mcp_config(mcp_config: dict[str, dict[str, Any]], patch: MCPConfigPatc
34
37
  meta.setdefault(key, value)
35
38
 
36
39
 
37
- def setup_hud_telemetry(mcp_config: dict[str, dict[str, Any]], auto_trace: bool = True) -> None:
38
- """Setup telemetry for hud servers."""
40
+ def setup_hud_telemetry(mcp_config: dict[str, dict[str, Any]], auto_trace: bool = True) -> Any | None:
41
+ """Setup telemetry for hud servers.
42
+
43
+ Returns:
44
+ The auto-created trace context manager if one was created, None otherwise.
45
+ Caller is responsible for exiting the context manager.
46
+ """
39
47
  if not mcp_config:
40
48
  raise ValueError("Please run initialize() before setting up client-side telemetry")
41
49
 
@@ -43,6 +51,8 @@ def setup_hud_telemetry(mcp_config: dict[str, dict[str, Any]], auto_trace: bool
43
51
  from hud.telemetry import trace
44
52
 
45
53
  run_id = get_current_task_run_id()
54
+ auto_trace_cm = None
55
+
46
56
  if not run_id and auto_trace:
47
57
  auto_trace_cm = trace("My Trace")
48
58
  run_id = auto_trace_cm.__enter__()
@@ -53,3 +63,5 @@ def setup_hud_telemetry(mcp_config: dict[str, dict[str, Any]], auto_trace: bool
53
63
  mcp_config,
54
64
  MCPConfigPatch(headers={"Run-Id": run_id}, meta={"run_id": run_id}),
55
65
  )
66
+
67
+ return auto_trace_cm
@@ -5,4 +5,4 @@ def test_import():
5
5
  """Test that the package can be imported."""
6
6
  import hud
7
7
 
8
- assert hud.__version__ == "0.4.8"
8
+ assert hud.__version__ == "0.4.9"
hud/version.py CHANGED
@@ -4,4 +4,4 @@ Version information for the HUD SDK.
4
4
 
5
5
  from __future__ import annotations
6
6
 
7
- __version__ = "0.4.8"
7
+ __version__ = "0.4.10"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: hud-python
3
- Version: 0.4.8
3
+ Version: 0.4.10
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: fastmcp>=2.11.2
39
39
  Requires-Dist: httpx<1,>=0.23.0
40
40
  Requires-Dist: hud-mcp-python-sdk>=0.1.0
41
+ Requires-Dist: mcp>=1.13.1
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
@@ -61,6 +62,16 @@ Requires-Dist: langchain-anthropic; extra == 'agent'
61
62
  Requires-Dist: langchain-openai; extra == 'agent'
62
63
  Requires-Dist: numpy>=1.24.0; extra == 'agent'
63
64
  Requires-Dist: openai; extra == 'agent'
65
+ Provides-Extra: agents
66
+ Requires-Dist: anthropic; extra == 'agents'
67
+ Requires-Dist: datasets>=2.14.0; extra == 'agents'
68
+ Requires-Dist: dotenv>=0.9.9; extra == 'agents'
69
+ Requires-Dist: hud-mcp-use-python-sdk>=0.1.0; extra == 'agents'
70
+ Requires-Dist: langchain; extra == 'agents'
71
+ Requires-Dist: langchain-anthropic; extra == 'agents'
72
+ Requires-Dist: langchain-openai; extra == 'agents'
73
+ Requires-Dist: numpy>=1.24.0; extra == 'agents'
74
+ Requires-Dist: openai; extra == 'agents'
64
75
  Provides-Extra: dev
65
76
  Requires-Dist: aiodocker>=0.24.0; extra == 'dev'
66
77
  Requires-Dist: anthropic; extra == 'dev'
@@ -2,9 +2,9 @@ hud/__init__.py,sha256=BjAhZtsHbGN371Q8t3o4v4jltedkmDE85xW0yOILU9g,397
2
2
  hud/datasets.py,sha256=8lqC840kcNx01D2CcWZCd1j0eZTpepILmQrvohZIZYU,12056
3
3
  hud/settings.py,sha256=WIJDsyrfwBZGcaGT46YUOpW8xjBZl3siXXprd92ASAg,2039
4
4
  hud/types.py,sha256=pQWOPYXUZ2hhK0h-AHBc3DCj5tkbRXHqKZnsQQIcSFA,4237
5
- hud/version.py,sha256=n3MvdSsUHXIUcsZAI-DHe4308kLQjnfQJUJxlTqZcTk,104
5
+ hud/version.py,sha256=fCId9XSUqGmPeqkm5KoHmJPLovRyiN3C2SKIlWpF2dQ,105
6
6
  hud/agents/__init__.py,sha256=UoIkljWdbq4bM0LD-mSaw6w826EqdEjOk7r6glNYwYQ,286
7
- hud/agents/base.py,sha256=OdvuPMMZFGMft5PEkImjs_nWi-05hJyGJMBSOGbtxBo,22258
7
+ hud/agents/base.py,sha256=qN9D7hozC45lA6wAwKgCr0xH6FXTsxeX0Hg9ttV-HlM,24682
8
8
  hud/agents/claude.py,sha256=snbYFPW-KAkw4n9Rdz7dC2f46RuSHJKC53HPm8SucFM,14273
9
9
  hud/agents/langchain.py,sha256=_2ZJT1S1yREI0p2WSQkgcTmECaLXwnmSOURQrNXTxkk,9524
10
10
  hud/agents/openai.py,sha256=kHG73mohO4uru49qmQiygUFt0eDCGJU06weqIUwTO3Y,14323
@@ -16,35 +16,46 @@ hud/agents/tests/test_base.py,sha256=F39ajSqASGUbPyPoWSY9KARFav62qNTK74W11Tr1Tg4
16
16
  hud/agents/tests/test_claude.py,sha256=wqEKlzEvx8obz1sSm4NY0j-Zyt1qWNfDOmRqYIuAEd0,13069
17
17
  hud/agents/tests/test_client.py,sha256=Sk5bGZw2hL5GsVi2LMp9tsLngl5ZQ18pkpeeQmts0ao,13908
18
18
  hud/agents/tests/test_openai.py,sha256=VcAUMcmwWttOxy9CCSu8QFIvAHG8ZMLUdQMeP04oK9Q,9026
19
- hud/cli/__init__.py,sha256=IsP148YyCod5gC-CduIN6MGGCLsITBe-kEtzE4NqbLo,21734
19
+ hud/cli/__init__.py,sha256=quOlqQ5lHvDuR9JOTn2pePtR1sbG1rGB1_h6a2AFcDc,27925
20
20
  hud/cli/__main__.py,sha256=fDH7XITyuDITwSDIVwRso06aouADO0CzTHKqp5TOwJE,143
21
21
  hud/cli/analyze.py,sha256=G-tjT1xLPLcYhDhZEaI7TAIS0z0OACUksnGFoAWd2ag,14416
22
- hud/cli/analyze_metadata.py,sha256=Mgs_je-XbPulG6noRLRNXe3_3a1eb20Cvxz5OQJ2NeU,8262
23
- hud/cli/build.py,sha256=7GWBte4x6X24hZghEMC4Q0IBrBaFIf_eWZodkEHFba0,16693
22
+ hud/cli/analyze_metadata.py,sha256=jxhM8i3-OgDDcQsRH7KefMMNXBwUPbNdGJr-4HdQfnk,7816
23
+ hud/cli/build.py,sha256=eQG-nxgTzyLOCQsFyXzP4_SLh_IjZLtE60bmV9X9KH8,16909
24
24
  hud/cli/clone.py,sha256=AwVDIuhr8mHb1oT2Af2HrD25SiTdwATpE6zd93vzLgA,6099
25
25
  hud/cli/cursor.py,sha256=fy850p0rVp5k_1wwOCI7rK1SggbselJrywFInSQ2gio,3009
26
- hud/cli/debug.py,sha256=pa24bP4KVE0vdvrODuN57i2t8YDHxKJgwzXy7eD2tBE,13613
26
+ hud/cli/debug.py,sha256=kKGuv_KoX9oGFCKFkrfSAAvuGH1q7Rd7hGELig7tHQI,14159
27
27
  hud/cli/docker_utils.py,sha256=5k5sXtI4V5d4VWRJR6lzVRy_Hu8Wf1nLsmW-dBNW0cM,2695
28
+ hud/cli/env_utils.py,sha256=PTS93UyZgAXjmcR21DK4n49DGnRis_U_850ROfbMKpY,4235
29
+ hud/cli/eval.py,sha256=McIoMwSscmPzi2lOsaVtBULyL-uhGdt0870ZBjYx4zA,9414
28
30
  hud/cli/init.py,sha256=Jb9h4MJPMNiUhr9GmmJjwjjmGQQOOMG1GadXIEsvKKk,7702
29
31
  hud/cli/interactive.py,sha256=w1fAoefizNKqjcl5Fi5EgEsUdPpXKcCFuU-Z-S3CL9o,12863
30
- hud/cli/mcp_server.py,sha256=kqXlHPm7ABVtP_MTJON5OgUAeVcXRuM-NrqqjBWYgd0,28221
31
- hud/cli/pull.py,sha256=8caEpiCsvHHMsQ9K7QRfZ8dC5Zq3G_OLF5YrUGHUP6E,11721
32
- hud/cli/push.py,sha256=MBee7EtcrzAHzmVWneT7hvHV9aF_hgxVRPoc1U1Oi1c,15626
32
+ hud/cli/list_func.py,sha256=NKDwcipzrEYV28GqG3OJfeMjk5RzD2QBPL2Xx95rPPY,7002
33
+ hud/cli/mcp_server.py,sha256=cb73hHagmUqn0WmKbCYi26AGGZB9XhdxMoxvFnFhYgM,25501
34
+ hud/cli/pull.py,sha256=qVxJ4yJKUPVGWqrf4gyg6yucDsZGU3WhsNvyxitftqE,11976
35
+ hud/cli/push.py,sha256=vr0S-0pEcoyEuDoiqrNS8rwtRsAIqnmou8XVEE_jcqU,17879
36
+ hud/cli/registry.py,sha256=CNLI-e7EeMxND2MOz6uEIwbEbItURZcoMCZR_5L4Q50,4540
33
37
  hud/cli/remote_runner.py,sha256=X01x6DeVkyc9HgxVCGEZJxEhhVPvHpAMoeYR44R8_BQ,9405
34
- hud/cli/runner.py,sha256=ukEr6ZmD5rs-taoEBu0P_-hr275d-ZE5_WAR-dvSqrw,4888
38
+ hud/cli/remove.py,sha256=DGYtkgzWQHeoZo3BIDHPRc5PKipkwR2942TOJPFmWPc,6723
39
+ hud/cli/runner.py,sha256=XpZ_4Dc4P94WHW2vJtDyWoqJTNlR5yeyr79VVuGgCkU,4877
35
40
  hud/cli/utils.py,sha256=ZgjjKVPAa7dcfJ6SMBrdfZ63d1UnnhYC-zeh7gFBXsI,8841
36
41
  hud/cli/tests/__init__.py,sha256=ZrGVkmH7DHXGqOvjOSNGZeMYaFIRB2K8c6hwr8FPJ-8,68
37
42
  hud/cli/tests/test_analyze.py,sha256=1VGIjpvZXD6N4j2yRoVddug2jQ6tJn41NWw-ScAVztw,10971
43
+ hud/cli/tests/test_analyze_metadata.py,sha256=51It2mk50TD57IQZQ0yjeEuAs2qJDJ7OJO8n8D6fjHQ,10226
44
+ hud/cli/tests/test_build.py,sha256=9hAagR2mjK7k2AHJ5sH9cujpYGjPSSS4SBgY_yMw2B4,15264
38
45
  hud/cli/tests/test_cli_init.py,sha256=_H0bAn5_skJ91Zj8P5P_wtZoPWvrN7jMhPZvmnnf0n8,11289
39
46
  hud/cli/tests/test_cli_main.py,sha256=0wMho9p9NcGjp0jLiUtCQh_FYdbMaCJtSY3sBbSgPwA,697
40
47
  hud/cli/tests/test_clone.py,sha256=oC2mf-41QQVc7ODJkjrWbVPNMB2fDW3nZ6jY6w93gvQ,4458
41
48
  hud/cli/tests/test_cursor.py,sha256=cvQ6dudMGmY4LifaJKm9iRIRvqvbFwibZgowd5goWPY,9815
42
49
  hud/cli/tests/test_debug.py,sha256=FPKWeKgOSBXoMyRphb0Q52QiJSNbGAS40f9r3ZVSMBE,18028
50
+ hud/cli/tests/test_list_func.py,sha256=flmHwYZUhb-Wp2Z3Xu8jcnJwKb2PAWv5O5rh5VuisA4,10806
43
51
  hud/cli/tests/test_mcp_server.py,sha256=e5fh6AUcqdv0jp0rJ8VL-DdJ-1nNgS85N8Ua53ehdgo,4378
52
+ hud/cli/tests/test_pull.py,sha256=bKEC8S2KapiAvqzmw-AwY8e8oRQ39QD9wdAT5DIkdfQ,13475
53
+ hud/cli/tests/test_push.py,sha256=hJ0TgHVxpE0pcxqRBc0knxcPnz0qdEIcb9NKfbcN-7A,13362
54
+ hud/cli/tests/test_registry.py,sha256=t-QMk5pwqFJSfRJ3MaEdkfVlguDO9jlfr5MtC10-nfw,9765
44
55
  hud/cli/tests/test_utils.py,sha256=dKmHgyLtDEqKVXlvs5tyNHyHhpBlZHUpmJF-iUraBVM,13466
45
56
  hud/clients/README.md,sha256=XNE3mch95ozDgVqfwCGcrhlHY9CwT1GKfNANNboowto,3826
46
57
  hud/clients/__init__.py,sha256=bcPIa7dwH5ENsjh7CzjsJ84fm7Ma93NBc2lGfSjGAKM,328
47
- hud/clients/base.py,sha256=y2yH8H4-cefWiI3oey_YPKLpDM2OwZ-hgvpjoOpEb8c,13459
58
+ hud/clients/base.py,sha256=Usg8HegkJGyO1oZurwNx7MW-bBwdMpQ9t0fwz5jDe-A,14003
48
59
  hud/clients/fastmcp.py,sha256=--2PjAvY3R8pE6wEeoMp4fnx9hKV_ZNDtSABaV3I1RU,9386
49
60
  hud/clients/mcp_use.py,sha256=kezm9LXHEVHafTy7FPUP2GU6lpF29lVS7Qh39vIbdsg,11985
50
61
  hud/clients/tests/__init__.py,sha256=sKOtJFFa4mDIXh1U6O8ZUHjigE8CiRMQ2PzJTIBZuVE,33
@@ -81,11 +92,12 @@ hud/telemetry/instrument.py,sha256=m3u6YK02PTk39Jr4L3se7l-cYyKx0maCaqf5Z5JqWNA,1
81
92
  hud/telemetry/job.py,sha256=DSZU_yVpag4VOGkCC5egcjVYuZ02nuzMqFZCgJqcQvM,9998
82
93
  hud/telemetry/replay.py,sha256=YW17s314s5Wy6Rl8MXHqg1FU8EF9_XcHBMJI0rrkyS4,2306
83
94
  hud/telemetry/trace.py,sha256=gem9pcioNI71hLs18vNidv-7KAZBJAn35stjVvOu_Ic,2208
84
- hud/tools/__init__.py,sha256=f7M3MkPEgoUsNPanLBUJKA_Y3a30arPf5bHdIwyXQZU,905
95
+ hud/tools/__init__.py,sha256=dT-s4zs2B5GsOZ_K2tZZLKuSIp4u3RIvNYMJ_eUpkrE,960
85
96
  hud/tools/base.py,sha256=avk6dLHEmlOMfozTzga4SbjCuAN0n5zyLwIn6OfLN60,14984
86
97
  hud/tools/bash.py,sha256=LJViMGb3lTGBm_gequVVTM7ySh1Xh9bOOIZXU29Lmrw,5209
87
98
  hud/tools/edit.py,sha256=N0AYFXp07-vAJy2li7lvHOL6hfgJOU4LL3iLSZrbRWU,12745
88
99
  hud/tools/playwright.py,sha256=lF7NxyEu8YbB7tpmCoTf8p9HxIrejahC67x3Xs0Jjb4,15007
100
+ hud/tools/response.py,sha256=b4d3tNvqq6TEmvsMqrU_4j3Aoi3Otb8twm03_zldcWc,1804
89
101
  hud/tools/types.py,sha256=g-CWnUUDSxxIfUy54S1bpY1nfTzdYO1R_nPKYReABjQ,2734
90
102
  hud/tools/utils.py,sha256=bfVyYMcBOJvr1QdptCjVb6jaHVGIL5WUxmY59kzMekQ,1447
91
103
  hud/tools/computer/__init__.py,sha256=3tQBXPtGX0WPCwFXzEs3-duwg0rPEgj_0-K7aHskeQE,367
@@ -113,8 +125,8 @@ hud/tools/tests/test_tools.py,sha256=paz28V98Am-oR7MBJPDgY-BRV14HQo_0F6X5JIC8aic
113
125
  hud/tools/tests/test_utils.py,sha256=oYxEnLpSA5sEeYFGUTj74QRNv0AHP3AjmYYHXgIW0BY,5496
114
126
  hud/utils/__init__.py,sha256=ckuIzwqgTxkzASa04XTPsOu_TqsRYUKBWUYfcSi3Xnc,164
115
127
  hud/utils/async_utils.py,sha256=5cKrJcnaHV2eJNxeyx0r7fPcdPTDBK7kM9-nLaF51X4,2409
116
- hud/utils/design.py,sha256=8-GHAegyJelQMdSSnY-MKXks2m3GVYHSW2Dlf17-daM,8965
117
- hud/utils/mcp.py,sha256=SQgEemHpIc0LshA0ImZw4nMzPPn1SE6qEO0dpNLwxy4,1855
128
+ hud/utils/design.py,sha256=YuP7vOCcD9xPaoqBZxiIWh6XXXTBJJVxY9MmhGHuv6o,9319
129
+ hud/utils/mcp.py,sha256=QmLba99thF86_jPmXtds2S4f6ibxKcEpNYjINdq3Ous,2143
118
130
  hud/utils/progress.py,sha256=suikwFM8sdSfkV10nAOEaInDhG4XKgOSvFePg4jSj1A,5927
119
131
  hud/utils/telemetry.py,sha256=hrVIx2rUjSGyy9IVxTZ_3Jii83PiHjyFRd5ls2whimM,1863
120
132
  hud/utils/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -122,10 +134,10 @@ hud/utils/tests/test_async_utils.py,sha256=RkdSnYErRV3Jn7dfg6CPlcE1RSUL__2B627oI
122
134
  hud/utils/tests/test_init.py,sha256=2QLQSGgyP9wJhOvPCusm_zjJad0qApOZi1BXpxcdHXQ,383
123
135
  hud/utils/tests/test_progress.py,sha256=QSF7Kpi03Ff_l3mAeqW9qs1nhK50j9vBiSobZq7T4f4,7394
124
136
  hud/utils/tests/test_telemetry.py,sha256=5jl7bEx8C8b-FfFUko5pf4UY-mPOR-9HaeL98dGtVHM,2781
125
- hud/utils/tests/test_version.py,sha256=LgQ3W3Po_KoWylqy34yhOS13aoNeLOjnQgnRVcihRsk,159
137
+ hud/utils/tests/test_version.py,sha256=p1NDVLFIL3H7kqifOtrrrCIRPI9VACuj9MraQ91dZC8,159
126
138
  hud/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
127
- hud_python-0.4.8.dist-info/METADATA,sha256=OKPu4yjzHm8OaGJhgxwVcCVvLF3GGFKb46DTmz3XcEQ,19669
128
- hud_python-0.4.8.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
129
- hud_python-0.4.8.dist-info/entry_points.txt,sha256=jJbodNFg1m0-CDofe5AHvB4zKBq7sSdP97-ohaQ3ae4,63
130
- hud_python-0.4.8.dist-info/licenses/LICENSE,sha256=yIzBheVUf86FC1bztAcr7RYWWNxyd3B-UJQ3uddg1HA,1078
131
- hud_python-0.4.8.dist-info/RECORD,,
139
+ hud_python-0.4.10.dist-info/METADATA,sha256=AKm6cZ6KSk3iVfsbKE_060d2Hnz0qIDrom_U4q_nASI,20165
140
+ hud_python-0.4.10.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
141
+ hud_python-0.4.10.dist-info/entry_points.txt,sha256=jJbodNFg1m0-CDofe5AHvB4zKBq7sSdP97-ohaQ3ae4,63
142
+ hud_python-0.4.10.dist-info/licenses/LICENSE,sha256=yIzBheVUf86FC1bztAcr7RYWWNxyd3B-UJQ3uddg1HA,1078
143
+ hud_python-0.4.10.dist-info/RECORD,,