hud-python 0.4.39__py3-none-any.whl → 0.4.41__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/agents/__init__.py CHANGED
@@ -2,14 +2,12 @@ from __future__ import annotations
2
2
 
3
3
  from .base import MCPAgent
4
4
  from .claude import ClaudeAgent
5
- from .lite_llm import LiteAgent
6
5
  from .openai import OperatorAgent
7
6
  from .openai_chat_generic import GenericOpenAIChatAgent
8
7
 
9
8
  __all__ = [
10
9
  "ClaudeAgent",
11
10
  "GenericOpenAIChatAgent",
12
- "LiteAgent",
13
11
  "MCPAgent",
14
12
  "OperatorAgent",
15
13
  ]
hud/agents/lite_llm.py CHANGED
@@ -63,7 +63,7 @@ class LiteAgent(GenericOpenAIChatAgent):
63
63
  messages: list[Any],
64
64
  tools: list[dict] | None,
65
65
  extra: dict[str, Any],
66
- ):
66
+ ) -> Any:
67
67
  return await litellm.acompletion(
68
68
  model=self.model_name,
69
69
  messages=messages,
@@ -177,16 +177,16 @@ class GenericOpenAIChatAgent(MCPAgent):
177
177
  messages: list[Any],
178
178
  tools: list[dict] | None,
179
179
  extra: dict[str, Any],
180
- ):
180
+ ) -> Any:
181
181
  if self.oai is None:
182
182
  raise ValueError("openai_client is required for GenericOpenAIChatAgent")
183
183
  # default transport = OpenAI SDK
184
184
  return await self.oai.chat.completions.create(
185
185
  model=self.model_name,
186
186
  messages=messages,
187
- tools=tools, # already ChatCompletionToolParam-shaped
187
+ tools=tools, # type: ignore ready ChatCompletionToolParam-shaped
188
188
  **extra,
189
- )
189
+ ) # type: ignore
190
190
 
191
191
  @instrument(
192
192
  span_type="agent",
@@ -204,7 +204,9 @@ class GenericOpenAIChatAgent(MCPAgent):
204
204
 
205
205
  try:
206
206
  response = await self._invoke_chat_completion(
207
- messages=messages, tools=tools, extra=extra
207
+ messages=messages,
208
+ tools=tools, # type: ignore
209
+ extra=extra,
208
210
  )
209
211
  except Exception as e:
210
212
  error_content = f"Error getting response {e}"
hud/cli/__init__.py CHANGED
@@ -1178,6 +1178,11 @@ def rl(
1178
1178
  "--vllm-gpu",
1179
1179
  help="Specific GPU for vLLM server",
1180
1180
  ),
1181
+ skip_vllm_startup: bool = typer.Option(
1182
+ False,
1183
+ "--skip-vllm-startup",
1184
+ help="Skip the vLLM server startup",
1185
+ ),
1181
1186
  ) -> None:
1182
1187
  """🎯 Run GRPO reinforcement learning training on tasks."""
1183
1188
  # Import from the rl module
@@ -1195,6 +1200,7 @@ def rl(
1195
1200
  ddp_gpus=ddp_gpus,
1196
1201
  vllm_gpu=vllm_gpu,
1197
1202
  yes=yes,
1203
+ skip_vllm_startup=skip_vllm_startup,
1198
1204
  )
1199
1205
 
1200
1206
 
hud/cli/flows/tasks.py CHANGED
@@ -212,14 +212,14 @@ def convert_tasks_to_remote(tasks_file: str) -> str:
212
212
  # Check if tasks already have remote URLs
213
213
  already_remote = _validate_tasks(tasks)
214
214
 
215
+ # If tasks already reference a remote MCP URL, do not require a local environment
216
+ # or attempt any image updates. Use the dataset as-is.
217
+ if already_remote:
218
+ return str(tasks_path)
219
+
215
220
  # Extract existing images from tasks
216
221
  existing_images = _extract_existing_images(tasks)
217
222
 
218
- # Load tasks (supports .json and .jsonl)
219
- if already_remote and not existing_images:
220
- # Tasks are remote but have no image references - just return as-is
221
- return str(tasks_path)
222
-
223
223
  # Locate environment
224
224
  env_dir = find_environment_dir(tasks_path)
225
225
  if not env_dir:
hud/cli/init.py CHANGED
@@ -85,9 +85,9 @@ def _prompt_for_preset() -> str:
85
85
  """Ask the user to choose a preset when not provided."""
86
86
  try:
87
87
  choices = [
88
- {"name": "blank", "message": "blank │ minimal template"},
89
- {"name": "deep-research", "message": "deep-research │ remote browser preset"},
90
- {"name": "browser", "message": "browser │ local browser preset"},
88
+ {"name": "blank", "message": "blank"},
89
+ {"name": "deep-research", "message": "deep-research"},
90
+ {"name": "browser", "message": "browser"},
91
91
  ]
92
92
  display_choices = [c["message"] for c in choices]
93
93
  selected = questionary.select(
hud/cli/rl/__init__.py CHANGED
@@ -78,10 +78,9 @@ def rl_command(
78
78
  "-y",
79
79
  help="Auto-accept all prompts and use defaults (lazy mode)",
80
80
  ),
81
- # Internal flag
82
81
  skip_vllm_startup: bool = typer.Option(
83
82
  False,
84
- hidden=True,
83
+ "--skip-vllm-startup",
85
84
  help="Skip local vLLM server startup (for internal use)",
86
85
  ),
87
86
  ) -> None:
@@ -13,6 +13,7 @@ from pathlib import Path
13
13
  from rich.console import Console
14
14
 
15
15
  from hud.cli.rl.celebrate import show_confetti_async
16
+ from hud.cli.rl.gpu_utils import adjust_config_for_ddp
16
17
  from hud.cli.rl.viewer import show_json_interactive
17
18
  from hud.cli.rl.wait_utils import wait_for_enter_cancel_or_change
18
19
  from hud.utils.hud_console import hud_console
@@ -347,6 +348,8 @@ def run_remote_training(
347
348
  yes=yes,
348
349
  )
349
350
 
351
+ config = adjust_config_for_ddp(config, int(num_gpus))
352
+
350
353
  # Use a short label for tasks (avoid full absolute paths)
351
354
  try:
352
355
  if tasks_file and Path(tasks_file).exists():
@@ -357,7 +360,7 @@ def run_remote_training(
357
360
  except Exception:
358
361
  tasks_label = str(tasks_file)
359
362
 
360
- config.job_name = f"RL {model_name} on {tasks_label}"
363
+ config.job_name = f"RL {tasks_label} | {model_name}"
361
364
 
362
365
  # Save config so user can review/edit externally
363
366
  temp_config_path = Path(f".rl_config_temp_{model_name}.json")
@@ -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.39"
8
+ assert hud.__version__ == "0.4.41"
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.39"
7
+ __version__ = "0.4.41"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: hud-python
3
- Version: 0.4.39
3
+ Version: 0.4.41
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
@@ -159,10 +159,10 @@ OSS RL environment + evals toolkit. Wrap software as environments, run benchmark
159
159
 
160
160
  ## Highlights
161
161
 
162
+ - 🎓 **[One-click RL](https://hud.so/models)** – Run `hud rl` to get a trained model on any environment.
162
163
  - 🚀 **[MCP environment skeleton](https://docs.hud.so/core-concepts/mcp-protocol)** – any agent can call any environment.
163
164
  - ⚡️ **[Live telemetry](https://hud.so)** – inspect every tool call, observation, and reward in real time.
164
165
  - 🗂️ **[Public benchmarks](https://hud.so/leaderboards)** – OSWorld-Verified, SheetBench-50, and more.
165
- - 🌱 **[Reinforcement learning built-in](rl/)** – Verifiers gym pipelines for GRPO on any environment.
166
166
  - 🌐 **[Cloud browsers](environments/remote_browser/)** – AnchorBrowser, Steel, BrowserBase integrations for browser automation.
167
167
  - 🛠️ **[Hot-reload dev loop](environments/README.md#phase-5-hot-reload-development-with-cursor-agent)** – `hud dev` for iterating on environments without rebuilds.
168
168
 
@@ -171,27 +171,46 @@ OSS RL environment + evals toolkit. Wrap software as environments, run benchmark
171
171
  ## Installation
172
172
 
173
173
  ```bash
174
- # Core installation - MCP servers, telemetry, basic tools for environment design
174
+ # SDK - MCP servers, telemetry, evaluation
175
175
  pip install hud-python
176
176
 
177
- # Agent installation - Adds AI providers, datasets
178
- pip install "hud-python[agent]"
179
-
180
- # CLI utilities
177
+ # CLI - RL pipeline, environment design
181
178
  uv tool install hud-python
182
179
  # uv tool update-shell
183
-
184
- # From source (latest)
185
- git clone https://github.com/hud-evals/hud-python
186
- pip install -e "hud-python[dev]"
187
180
  ```
188
181
 
189
182
  > See [docs.hud.so](https://docs.hud.so), or add docs to any MCP client:
190
183
  > `claude mcp add --transport http docs-hud https://docs.hud.so/mcp`
191
184
 
192
- ## Quickstart
185
+ Before starting, get your HUD_API_KEY at [hud.so](https://hud.so).
186
+
187
+
188
+ ## Quickstart: Training
189
+
190
+ RL using GRPO a Qwen2.5-VL model on any hud dataset:
191
+
192
+ ```bash
193
+ hud get hud-evals/basic-2048 # from HF
194
+ hud rl basic-2048.json
195
+ ```
196
+
197
+ > See [agent training docs](https://docs.hud.so/train-agents/quickstart)
193
198
 
194
- For a tutorial that explains the agent and evaluation design, run ([see quickstart docs](https://docs.hud.so/quickstart)):
199
+ Or make your own environment and dataset:
200
+
201
+ ```bash
202
+ hud init my-env && cd my-env
203
+ hud dev --interactive
204
+ # When ready to run:
205
+ hud rl
206
+ ```
207
+
208
+ > See [environment design docs](https://docs.hud.so/build-environments)
209
+
210
+
211
+ ## Quickstart: Evals
212
+
213
+ For a tutorial that explains the agent and evaluation design, run:
195
214
 
196
215
  ```python
197
216
  uvx hud-python quickstart
@@ -254,28 +273,30 @@ This is a Qwen‑2.5‑VL‑3B agent training a policy on the 2048-basic browser
254
273
  Train with the new interactive `hud rl` flow:
255
274
 
256
275
  ```bash
257
- # Install CLI with RL extras
258
- uv tool install "hud-python[rl]"
276
+ # Install CLI
277
+ uv tool install hud-python
259
278
 
260
279
  # Option A: Run directly from a HuggingFace dataset
261
280
  hud rl hud-evals/basic-2048
262
281
 
263
282
  # Option B: Download first, modify, then train
264
283
  hud get hud-evals/basic-2048
265
- hud rl basic-2048.jsonl
284
+ hud rl basic-2048.json
266
285
 
267
286
  # Optional: baseline evaluation
268
- hud eval basic-2048.jsonl
287
+ hud eval basic-2048.json
269
288
  ```
270
289
 
271
290
  Supports multi‑turn RL for both:
272
291
  - Language‑only models (e.g., `Qwen/Qwen2.5-7B-Instruct`)
273
292
  - Vision‑Language models (e.g., `Qwen/Qwen2.5-VL-3B-Instruct`)
274
293
 
275
- By default, `hud rl` provisions a persistant server and trainer in the cloud, streams telemetry to `hud.so`, and lets you monitor/manage models at `hud.so/models`. Use `--local` to run entirely on your machines (typically 2+ GPUs: one for vLLM, the rest for training).
294
+ By default, `hud rl` provisions a persistent server and trainer in the cloud, streams telemetry to `hud.so`, and lets you monitor/manage models at `hud.so/models`. Use `--local` to run entirely on your machines (typically 2+ GPUs: one for vLLM, the rest for training).
276
295
 
277
296
  Any HUD MCP environment and evaluation works with our RL pipeline (including remote configurations). See the guided docs: `https://docs.hud.so/train-agents/quickstart`.
278
297
 
298
+ Pricing: Hosted vLLM and training GPU rates are listed in the [Training Quickstart → Pricing](https://docs.hud.so/train-agents/quickstart#pricing). Manage billing at the [HUD billing dashboard](https://hud.so/project/billing).
299
+
279
300
  ## Benchmarking Agents
280
301
 
281
302
  This is Claude Computer Use running on our proprietary financial analyst benchmark [SheetBench-50](https://huggingface.co/datasets/hud-evals/SheetBench-50):
@@ -323,7 +344,7 @@ from hud.tools import HudComputerTool
323
344
  mcp = MCPServer("My Environment")
324
345
 
325
346
  # Add hud tools (see all tools: https://docs.hud.so/reference/tools)
326
- mcp.add_tool(HudComputerTool())
347
+ mcp.tool(HudComputerTool())
327
348
 
328
349
  # Or custom tools (see https://docs.hud.so/build-environments/adapting-software)
329
350
  @mcp.tool("launch_app"):
@@ -494,11 +515,10 @@ graph LR
494
515
 
495
516
  ## Roadmap
496
517
 
497
- - Merging our forks in to the main `mcp`, `mcp_use`, `verifiers` repositories
518
+ - Merging our forks in to the main `mcp`, `mcp_use` repositories
498
519
  - Helpers for building new environments (see [current guide](environments/README.md))
499
520
  - Integrations with every major agent framework
500
521
  - Evaluation environment registry
501
- - Native RL training to hud environments (see [current RL support](rl/))
502
522
  - MCP opentelemetry standard
503
523
 
504
524
  ## Contributing
@@ -509,7 +529,7 @@ Key areas:
509
529
  - [Environment examples](environments/) - Add new MCP environments
510
530
  - [Agent implementations](hud/agents/) - Add support for new LLM providers
511
531
  - [Tool library](hud/tools/) - Extend the built-in tool collection
512
- - [RL training](rl/) - Improve reinforcement learning pipelines
532
+ - [RL training](hud/rl/) - Improve reinforcement learning pipelines
513
533
 
514
534
  Thanks to all our contributors!
515
535
 
@@ -2,15 +2,15 @@ hud/__init__.py,sha256=JMDFUE1pP0J1Xl_miBdt7ERvoffZmTzSFe8yxz512A8,552
2
2
  hud/__main__.py,sha256=YR8Dq8OhINOsVfQ55PmRXXg4fEK84Rt_-rMtJ5rvhWo,145
3
3
  hud/settings.py,sha256=disObWa-DgXzoDcCDp3y1dTPaNsbR0IvoMJL9Eg4zyo,3947
4
4
  hud/types.py,sha256=pmPj_8emfMIfEY_fRS8NgIJ56kCsolWSqQjyCzXDaGY,11072
5
- hud/version.py,sha256=flrgOWFXASZxwL4kHKZAFtTEJht-AlcjaxwuVVcQ9us,105
6
- hud/agents/__init__.py,sha256=d-t5-PHHDoEFCuhv-IrpixCu7syvrjqSrDekQ0SdFiM,335
5
+ hud/version.py,sha256=C1Fy_xyAmtsGqUTTCdTCms68E9dj7ZaxR50aXhxj6cc,105
6
+ hud/agents/__init__.py,sha256=UoIkljWdbq4bM0LD-mSaw6w826EqdEjOk7r6glNYwYQ,286
7
7
  hud/agents/base.py,sha256=_u1zR3gXzZ1RlTCUYdMcvgHqdJBC4-AB1lZt0yBx8lg,35406
8
8
  hud/agents/claude.py,sha256=TGhm5gE2ltINDAdEsDxKuT9iGMQ5G87R6kmabU3KPt8,16101
9
9
  hud/agents/grounded_openai.py,sha256=U-FHjB2Nh1_o0gmlxY5F17lWJ3oHsNRIB2a7z-IKB64,11231
10
10
  hud/agents/langchain.py,sha256=1EgCy8jfjunsWxlPC5XfvfLS6_XZVrIF1ZjtHcrvhYw,9584
11
- hud/agents/lite_llm.py,sha256=Nv2o541Q2MpaopR3P7ICoRzl0eHMLz0VzKctUrEU5nc,2232
11
+ hud/agents/lite_llm.py,sha256=_3wbUiYCp7q8Vyu9rhaoJDvmb_bsyUsLYWP3iQJ2bHo,2239
12
12
  hud/agents/openai.py,sha256=O1xV1h1l-W8lmnmXqTYr5CwnmnaniMqOxAZbl2CTTng,14576
13
- hud/agents/openai_chat_generic.py,sha256=NDk_Bht_ePf8gfW1nuvlM6CXcntcRaJw4QzzAmxA6yc,12068
13
+ hud/agents/openai_chat_generic.py,sha256=RUfXDZSUbOXQ2leR4_8PGpqvUzz5PJOWeR3PTticKUY,12150
14
14
  hud/agents/misc/__init__.py,sha256=BYi4Ytp9b_vycpZFXnr5Oyw6ncKLNNGml8Jrb7bWUb4,136
15
15
  hud/agents/misc/response_agent.py,sha256=uMuRDkz5QgaMQliNzBRepond5sb7KyqIiKm3LstjVnw,3753
16
16
  hud/agents/tests/__init__.py,sha256=W-O-_4i34d9TTyEHV-O_q1Ai1gLhzwDaaPo02_TWQIY,34
@@ -19,7 +19,7 @@ hud/agents/tests/test_claude.py,sha256=0nZnfsbGoECvsLPdmaRnc9jVmrehVvc3kxeyiCQI2
19
19
  hud/agents/tests/test_client.py,sha256=uikgh6yhjPPX2RBU4XJQMz1mNox9uXjuwsP8t93id18,13337
20
20
  hud/agents/tests/test_grounded_openai_agent.py,sha256=VK8lUvHIjWicMX00VKPE-FZyjiJqTEhb80MuRRa9fVc,5437
21
21
  hud/agents/tests/test_openai.py,sha256=Npbdr0acgLExGLbrleXze-k3w9LHfmqzQjPk9TnjN68,7620
22
- hud/cli/__init__.py,sha256=urgZQiFle1i4InTOn6FmCK_KrpGYgkVppN3v2CM5YmQ,45409
22
+ hud/cli/__init__.py,sha256=v4602N3FWOXD2raK1h3APJXFshsCrJV8P3JFcK--IvM,45596
23
23
  hud/cli/__main__.py,sha256=fDH7XITyuDITwSDIVwRso06aouADO0CzTHKqp5TOwJE,143
24
24
  hud/cli/analyze.py,sha256=4u5oYfJMquOjT9PzzRTYVcTZDxDi0ilNP_g532_hpOU,14716
25
25
  hud/cli/build.py,sha256=h-4SAoe3j8Pth3mPYf26vh7q1Do5JADlvKKwkZrf2AU,19551
@@ -28,14 +28,14 @@ hud/cli/debug.py,sha256=jtFW8J5F_3rhq1Hf1_SkJ7aLS3wjnyIs_LsC8k5cnzc,14200
28
28
  hud/cli/dev.py,sha256=J0Q_ndHbQcXe64gMjXfqiccWYWpdiYWvTKbJhCAvlgI,30666
29
29
  hud/cli/eval.py,sha256=d1RouB3rxP3axca2sRblNWZMNvHGP1EugST5fCJ-7tc,25790
30
30
  hud/cli/get.py,sha256=sksKrdzBGZa7ZuSoQkc0haj-CvOGVSSikoVXeaUd3N4,6274
31
- hud/cli/init.py,sha256=2na19h0LxfGl35Z_uNOLNpjZrnhBkyltM-OOUkauopA,9793
31
+ hud/cli/init.py,sha256=YkWxkIDCnhnxGGpbm7IvYMcfDqWuO1X9wxDxE4k-9ew,9721
32
32
  hud/cli/list_func.py,sha256=EVi2Vc3Lb3glBNJxFx4MPnZknZ4xmuJz1OFg_dc8a_E,7177
33
33
  hud/cli/pull.py,sha256=XGEZ8n60tbzLQP_8d9h7XYmzyCW0e2-Rkr3_tLG7jvw,12449
34
34
  hud/cli/push.py,sha256=DsXFrMtWBZ-HUxt6VoLihpklk8JJIe2gy-GA4AMg6Kw,18805
35
35
  hud/cli/remove.py,sha256=8vGQyXDqgtjz85_vtusoIG8zurH4RHz6z8UMevQRYM4,6861
36
36
  hud/cli/flows/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
37
- hud/cli/flows/tasks.py,sha256=0vqTd-pAVEqXYZUp2hntSXMu9JuCJkKZzJQ3YZ1r3AE,14564
38
- hud/cli/rl/__init__.py,sha256=PuOOPr2Y7Xnn6e_DQHAZ_RzhfVOsKx_ikEFshQ5PeIg,5203
37
+ hud/cli/flows/tasks.py,sha256=d-RsIV0rvzBuYN6WR7AOId19wzEy0z7SSW9c5RnEaqQ,14564
38
+ hud/cli/rl/__init__.py,sha256=q0GIYRARpNkY8o1Sza5CjQq6cks_1W_SjGprybaCxq4,5193
39
39
  hud/cli/rl/celebrate.py,sha256=trGEJn3xebexlHwFVKPJKhRujVVV8sy7TQTJvRd2p9A,5947
40
40
  hud/cli/rl/config.py,sha256=VZ8fiOI22Aw6YTRk7gj1ozpF-TU7NK8QWQgWFwMbNs0,3235
41
41
  hud/cli/rl/display.py,sha256=hqJVGmO9csYinladhZwjF-GMvppYWngxDHajTyIJ_gM,5214
@@ -43,7 +43,7 @@ hud/cli/rl/gpu.py,sha256=peXS-NdUF5RyuSs0aZoCzGLboneBUpCy8f9f99WMrG0,2009
43
43
  hud/cli/rl/gpu_utils.py,sha256=H5ckPwgj5EVP3yJ5eVihR5R7Y6Gp6pt8ZUfWCCwcLG4,11072
44
44
  hud/cli/rl/local_runner.py,sha256=NFsNmRZ4nenPnb45ZtdsILeICKEq11wmpLwq9E-a8ZE,22614
45
45
  hud/cli/rl/presets.py,sha256=DzOO82xL5QyzdVtlX-Do1CODMvDz9ILMPapjU92jcZg,3051
46
- hud/cli/rl/remote_runner.py,sha256=UP1Y9LKTK7-RDc9wczAM15F_zdFi0atzgSceOmb2Vjc,17369
46
+ hud/cli/rl/remote_runner.py,sha256=FkFr6IOHLdmlNOZTqjaNBOCYyGm7Tf2BAT2YCWOoIGM,17486
47
47
  hud/cli/rl/rl_api.py,sha256=INJobvSa50ccR037u_GPsDa_9WboWyNwqEaoh9hcXj0,4306
48
48
  hud/cli/rl/viewer.py,sha256=ExQs1IX3T8x_9aBzc4JojZ779jmFvFTh7EjOYIHzYsU,4441
49
49
  hud/cli/rl/vllm.py,sha256=Gq_M6KsQArGz7FNIdemuM5mk16mu3xe8abpO2GCCuOE,6093
@@ -218,10 +218,10 @@ hud/utils/tests/test_init.py,sha256=2QLQSGgyP9wJhOvPCusm_zjJad0qApOZi1BXpxcdHXQ,
218
218
  hud/utils/tests/test_mcp.py,sha256=0pUa16mL-bqbZDXp5NHBnt1gO5o10BOg7zTMHZ1DNPM,4023
219
219
  hud/utils/tests/test_progress.py,sha256=QSF7Kpi03Ff_l3mAeqW9qs1nhK50j9vBiSobZq7T4f4,7394
220
220
  hud/utils/tests/test_telemetry.py,sha256=5jl7bEx8C8b-FfFUko5pf4UY-mPOR-9HaeL98dGtVHM,2781
221
- hud/utils/tests/test_version.py,sha256=iyWudJ6arOycIPna5CRotVVD0ojbFV-Rv2IkuIHEGX0,160
221
+ hud/utils/tests/test_version.py,sha256=Y5eL4qx41L0b6Ih_xxAcO_cnvcUmfISmHlut9W0haOA,160
222
222
  hud/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
223
- hud_python-0.4.39.dist-info/METADATA,sha256=8CRV9IMrjYFDVtKuT0k3GAzEQRP0MXXvMMWdvsWLpbE,21900
224
- hud_python-0.4.39.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
225
- hud_python-0.4.39.dist-info/entry_points.txt,sha256=jJbodNFg1m0-CDofe5AHvB4zKBq7sSdP97-ohaQ3ae4,63
226
- hud_python-0.4.39.dist-info/licenses/LICENSE,sha256=yIzBheVUf86FC1bztAcr7RYWWNxyd3B-UJQ3uddg1HA,1078
227
- hud_python-0.4.39.dist-info/RECORD,,
223
+ hud_python-0.4.41.dist-info/METADATA,sha256=Hx89Ngi8RmMOFtvMNF5y2m_1Y_lXI3C5dtTH_g4Fco0,22275
224
+ hud_python-0.4.41.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
225
+ hud_python-0.4.41.dist-info/entry_points.txt,sha256=jJbodNFg1m0-CDofe5AHvB4zKBq7sSdP97-ohaQ3ae4,63
226
+ hud_python-0.4.41.dist-info/licenses/LICENSE,sha256=yIzBheVUf86FC1bztAcr7RYWWNxyd3B-UJQ3uddg1HA,1078
227
+ hud_python-0.4.41.dist-info/RECORD,,