Spaces:
Running
Running
Upload folder using huggingface_hub
Browse files- README.md +2 -2
- client.py +2 -1
- pyproject.toml +1 -1
- server/app.py +12 -2
- uv.lock +62 -82
README.md
CHANGED
|
@@ -102,7 +102,7 @@ rollout_func = build_harness_rollout_func(
|
|
| 102 |
|
| 103 |
BrowserGym exposes `click`, `fill`, `send_keys`, `scroll`, and `noop` as MCP-style
|
| 104 |
tools while still translating them back into the underlying `BrowserGymAction`
|
| 105 |
-
strings. See [examples/browsergym_harness.py](https://github.com/
|
| 106 |
for a full TRL-oriented example.
|
| 107 |
|
| 108 |
### Available Tasks by Benchmark
|
|
@@ -592,4 +592,4 @@ browsergym_env/
|
|
| 592 |
- [WebArena Paper](https://arxiv.org/abs/2307.13854)
|
| 593 |
- [WebArena Website](https://webarena.dev/)
|
| 594 |
- [VisualWebArena Paper](https://jykoh.com/vwa)
|
| 595 |
-
- [OpenEnv Documentation](https://github.com/
|
|
|
|
| 102 |
|
| 103 |
BrowserGym exposes `click`, `fill`, `send_keys`, `scroll`, and `noop` as MCP-style
|
| 104 |
tools while still translating them back into the underlying `BrowserGymAction`
|
| 105 |
+
strings. See [examples/browsergym_harness.py](https://github.com/huggingface/OpenEnv/blob/main/examples/browsergym_harness.py)
|
| 106 |
for a full TRL-oriented example.
|
| 107 |
|
| 108 |
### Available Tasks by Benchmark
|
|
|
|
| 592 |
- [WebArena Paper](https://arxiv.org/abs/2307.13854)
|
| 593 |
- [WebArena Website](https://webarena.dev/)
|
| 594 |
- [VisualWebArena Paper](https://jykoh.com/vwa)
|
| 595 |
+
- [OpenEnv Documentation](https://github.com/huggingface/OpenEnv)
|
client.py
CHANGED
|
@@ -99,13 +99,14 @@ class BrowserGymEnv(
|
|
| 99 |
last_action_error=obs_data.get("last_action_error", False),
|
| 100 |
done=payload.get("done", False),
|
| 101 |
reward=payload.get("reward"),
|
| 102 |
-
metadata=obs_data.get("metadata", {}),
|
| 103 |
)
|
| 104 |
|
| 105 |
return StepResult(
|
| 106 |
observation=observation,
|
| 107 |
reward=payload.get("reward"),
|
| 108 |
done=payload.get("done", False),
|
|
|
|
| 109 |
)
|
| 110 |
|
| 111 |
def _parse_state(self, payload: Dict[str, Any]) -> BrowserGymState:
|
|
|
|
| 99 |
last_action_error=obs_data.get("last_action_error", False),
|
| 100 |
done=payload.get("done", False),
|
| 101 |
reward=payload.get("reward"),
|
| 102 |
+
metadata=payload.get("metadata", obs_data.get("metadata", {})),
|
| 103 |
)
|
| 104 |
|
| 105 |
return StepResult(
|
| 106 |
observation=observation,
|
| 107 |
reward=payload.get("reward"),
|
| 108 |
done=payload.get("done", False),
|
| 109 |
+
metadata=payload.get("metadata"),
|
| 110 |
)
|
| 111 |
|
| 112 |
def _parse_state(self, payload: Dict[str, Any]) -> BrowserGymState:
|
pyproject.toml
CHANGED
|
@@ -8,7 +8,7 @@ version = "0.1.0"
|
|
| 8 |
description = "BrowserGym Environment for OpenEnv - Web automation using Playwright"
|
| 9 |
requires-python = ">=3.10"
|
| 10 |
dependencies = [
|
| 11 |
-
"openenv
|
| 12 |
"browsergym-core==0.14.3",
|
| 13 |
"browsergym-miniwob==0.14.3",
|
| 14 |
"gymnasium>=0.29.0",
|
|
|
|
| 8 |
description = "BrowserGym Environment for OpenEnv - Web automation using Playwright"
|
| 9 |
requires-python = ">=3.10"
|
| 10 |
dependencies = [
|
| 11 |
+
"openenv[core]>=0.2.3",
|
| 12 |
"browsergym-core==0.14.3",
|
| 13 |
"browsergym-miniwob==0.14.3",
|
| 14 |
"gymnasium>=0.29.0",
|
server/app.py
CHANGED
|
@@ -1,6 +1,7 @@
|
|
| 1 |
"""FastAPI server for the BrowserGym environment."""
|
| 2 |
|
| 3 |
import os
|
|
|
|
| 4 |
from functools import partial
|
| 5 |
|
| 6 |
from browsergym_env.models import BrowserGymAction, BrowserGymObservation
|
|
@@ -14,7 +15,9 @@ headless = os.environ.get("BROWSERGYM_HEADLESS", "true").lower() == "true"
|
|
| 14 |
viewport_width = int(os.environ.get("BROWSERGYM_VIEWPORT_WIDTH", "1280"))
|
| 15 |
viewport_height = int(os.environ.get("BROWSERGYM_VIEWPORT_HEIGHT", "720"))
|
| 16 |
timeout = float(os.environ.get("BROWSERGYM_TIMEOUT", "10000"))
|
| 17 |
-
port = int(
|
|
|
|
|
|
|
| 18 |
|
| 19 |
max_concurrent = int(os.environ.get("MAX_CONCURRENT_ENVS", "8"))
|
| 20 |
|
|
@@ -39,7 +42,14 @@ def main():
|
|
| 39 |
"""Main entry point for running the server."""
|
| 40 |
import uvicorn
|
| 41 |
|
| 42 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 43 |
|
| 44 |
|
| 45 |
if __name__ == "__main__":
|
|
|
|
| 1 |
"""FastAPI server for the BrowserGym environment."""
|
| 2 |
|
| 3 |
import os
|
| 4 |
+
from contextlib import suppress
|
| 5 |
from functools import partial
|
| 6 |
|
| 7 |
from browsergym_env.models import BrowserGymAction, BrowserGymObservation
|
|
|
|
| 15 |
viewport_width = int(os.environ.get("BROWSERGYM_VIEWPORT_WIDTH", "1280"))
|
| 16 |
viewport_height = int(os.environ.get("BROWSERGYM_VIEWPORT_HEIGHT", "720"))
|
| 17 |
timeout = float(os.environ.get("BROWSERGYM_TIMEOUT", "10000"))
|
| 18 |
+
port = int(
|
| 19 |
+
os.environ.get("SBX_SERVICE_PORT", os.environ.get("BROWSERGYM_PORT", "8000"))
|
| 20 |
+
)
|
| 21 |
|
| 22 |
max_concurrent = int(os.environ.get("MAX_CONCURRENT_ENVS", "8"))
|
| 23 |
|
|
|
|
| 42 |
"""Main entry point for running the server."""
|
| 43 |
import uvicorn
|
| 44 |
|
| 45 |
+
if proxy_dir := os.environ.get("SBX_PROXY_DIR"):
|
| 46 |
+
socket_path = os.path.join(proxy_dir, f"{port}.sock")
|
| 47 |
+
os.makedirs(proxy_dir, exist_ok=True)
|
| 48 |
+
with suppress(FileNotFoundError):
|
| 49 |
+
os.unlink(socket_path)
|
| 50 |
+
uvicorn.run(app, uds=socket_path)
|
| 51 |
+
else:
|
| 52 |
+
uvicorn.run(app, host="0.0.0.0", port=port)
|
| 53 |
|
| 54 |
|
| 55 |
if __name__ == "__main__":
|
uv.lock
CHANGED
|
@@ -29,15 +29,6 @@ wheels = [
|
|
| 29 |
{ url = "https://files.pythonhosted.org/packages/50/25/da1f0b4dd970e52bf5a36c204c107e11a0c6d3ed195eba0bfbc664c312b2/aiofile-3.9.0-py3-none-any.whl", hash = "sha256:ce2f6c1571538cbdfa0143b04e16b208ecb0e9cb4148e528af8a640ed51cc8aa", size = 19539, upload-time = "2024-10-08T10:39:32.955Z" },
|
| 30 |
]
|
| 31 |
|
| 32 |
-
[[package]]
|
| 33 |
-
name = "aiofiles"
|
| 34 |
-
version = "24.1.0"
|
| 35 |
-
source = { registry = "https://pypi.org/simple" }
|
| 36 |
-
sdist = { url = "https://files.pythonhosted.org/packages/0b/03/a88171e277e8caa88a4c77808c20ebb04ba74cc4681bf1e9416c862de237/aiofiles-24.1.0.tar.gz", hash = "sha256:22a075c9e5a3810f0c2e48f3008c94d68c65d763b9b03857924c99e57355166c", size = 30247, upload-time = "2024-06-24T11:02:03.584Z" }
|
| 37 |
-
wheels = [
|
| 38 |
-
{ url = "https://files.pythonhosted.org/packages/a5/45/30bb92d442636f570cb5651bc661f52b610e2eec3f891a5dc3a4c3667db0/aiofiles-24.1.0-py3-none-any.whl", hash = "sha256:b4ec55f4195e3eb5d7abd1bf7e061763e864dd4954231fb8539a0ef8bb8260e5", size = 15896, upload-time = "2024-06-24T11:02:01.529Z" },
|
| 39 |
-
]
|
| 40 |
-
|
| 41 |
[[package]]
|
| 42 |
name = "annotated-doc"
|
| 43 |
version = "0.0.4"
|
|
@@ -919,15 +910,6 @@ wheels = [
|
|
| 919 |
{ url = "https://files.pythonhosted.org/packages/4f/67/684fa2d2de1e7504549d4ca457b4f854ccec3cd3be03bd86b33b599fbf58/fastmcp-3.2.0-py3-none-any.whl", hash = "sha256:e71aba3df16f86f546a4a9e513261d3233bcc92bef0dfa647bac3fa33623f681", size = 705550, upload-time = "2026-03-30T20:25:35.499Z" },
|
| 920 |
]
|
| 921 |
|
| 922 |
-
[[package]]
|
| 923 |
-
name = "ffmpy"
|
| 924 |
-
version = "1.0.0"
|
| 925 |
-
source = { registry = "https://pypi.org/simple" }
|
| 926 |
-
sdist = { url = "https://files.pythonhosted.org/packages/7d/d2/1c4c582d71bcc65c76fa69fab85de6257d50fdf6fd4a2317c53917e9a581/ffmpy-1.0.0.tar.gz", hash = "sha256:b12932e95435c8820f1cd041024402765f821971e4bae753b327fc02a6e12f8b", size = 5101, upload-time = "2025-11-11T06:24:23.856Z" }
|
| 927 |
-
wheels = [
|
| 928 |
-
{ url = "https://files.pythonhosted.org/packages/55/56/dd3669eccebb6d8ac81e624542ebd53fe6f08e1b8f2f8d50aeb7e3b83f99/ffmpy-1.0.0-py3-none-any.whl", hash = "sha256:5640e5f0fd03fb6236d0e119b16ccf6522db1c826fdf35dcb87087b60fd7504f", size = 5614, upload-time = "2025-11-11T06:24:22.818Z" },
|
| 929 |
-
]
|
| 930 |
-
|
| 931 |
[[package]]
|
| 932 |
name = "filelock"
|
| 933 |
version = "3.25.2"
|
|
@@ -948,15 +930,13 @@ wheels = [
|
|
| 948 |
|
| 949 |
[[package]]
|
| 950 |
name = "gradio"
|
| 951 |
-
version = "6.
|
| 952 |
source = { registry = "https://pypi.org/simple" }
|
| 953 |
dependencies = [
|
| 954 |
-
{ name = "aiofiles" },
|
| 955 |
{ name = "anyio" },
|
| 956 |
{ name = "audioop-lts", marker = "python_full_version >= '3.13'" },
|
| 957 |
{ name = "brotli" },
|
| 958 |
{ name = "fastapi" },
|
| 959 |
-
{ name = "ffmpy" },
|
| 960 |
{ name = "gradio-client" },
|
| 961 |
{ name = "groovy" },
|
| 962 |
{ name = "hf-gradio" },
|
|
@@ -984,14 +964,14 @@ dependencies = [
|
|
| 984 |
{ name = "typing-extensions" },
|
| 985 |
{ name = "uvicorn" },
|
| 986 |
]
|
| 987 |
-
sdist = { url = "https://files.pythonhosted.org/packages/
|
| 988 |
wheels = [
|
| 989 |
-
{ url = "https://files.pythonhosted.org/packages/
|
| 990 |
]
|
| 991 |
|
| 992 |
[[package]]
|
| 993 |
name = "gradio-client"
|
| 994 |
-
version = "2.
|
| 995 |
source = { registry = "https://pypi.org/simple" }
|
| 996 |
dependencies = [
|
| 997 |
{ name = "fsspec" },
|
|
@@ -1000,9 +980,9 @@ dependencies = [
|
|
| 1000 |
{ name = "packaging" },
|
| 1001 |
{ name = "typing-extensions" },
|
| 1002 |
]
|
| 1003 |
-
sdist = { url = "https://files.pythonhosted.org/packages/
|
| 1004 |
wheels = [
|
| 1005 |
-
{ url = "https://files.pythonhosted.org/packages/
|
| 1006 |
]
|
| 1007 |
|
| 1008 |
[[package]]
|
|
@@ -1076,15 +1056,15 @@ wheels = [
|
|
| 1076 |
|
| 1077 |
[[package]]
|
| 1078 |
name = "hf-gradio"
|
| 1079 |
-
version = "0.
|
| 1080 |
source = { registry = "https://pypi.org/simple" }
|
| 1081 |
dependencies = [
|
| 1082 |
{ name = "gradio-client" },
|
| 1083 |
{ name = "typer" },
|
| 1084 |
]
|
| 1085 |
-
sdist = { url = "https://files.pythonhosted.org/packages/
|
| 1086 |
wheels = [
|
| 1087 |
-
{ url = "https://files.pythonhosted.org/packages/
|
| 1088 |
]
|
| 1089 |
|
| 1090 |
[[package]]
|
|
@@ -2029,6 +2009,41 @@ wheels = [
|
|
| 2029 |
{ url = "https://files.pythonhosted.org/packages/12/cf/03675d8bd8ecbf4445504d8071adab19f5f993676795708e36402ab38263/openapi_pydantic-0.5.1-py3-none-any.whl", hash = "sha256:a3a09ef4586f5bd760a8df7f43028b60cafb6d9f61de2acba9574766255ab146", size = 96381, upload-time = "2025-01-08T19:29:25.275Z" },
|
| 2030 |
]
|
| 2031 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 2032 |
[[package]]
|
| 2033 |
name = "openenv-browsergym-env"
|
| 2034 |
version = "0.1.0"
|
|
@@ -2038,7 +2053,7 @@ dependencies = [
|
|
| 2038 |
{ name = "browsergym-miniwob" },
|
| 2039 |
{ name = "greenlet" },
|
| 2040 |
{ name = "gymnasium" },
|
| 2041 |
-
{ name = "openenv
|
| 2042 |
{ name = "pillow" },
|
| 2043 |
{ name = "playwright" },
|
| 2044 |
]
|
|
@@ -2057,7 +2072,7 @@ requires-dist = [
|
|
| 2057 |
{ name = "greenlet", specifier = "==3.0.3" },
|
| 2058 |
{ name = "gymnasium", specifier = ">=0.29.0" },
|
| 2059 |
{ name = "ipykernel", marker = "extra == 'dev'", specifier = ">=6.29.5" },
|
| 2060 |
-
{ name = "openenv
|
| 2061 |
{ name = "pillow", specifier = ">=10.0.0" },
|
| 2062 |
{ name = "playwright", specifier = "==1.44.0" },
|
| 2063 |
{ name = "pytest", marker = "extra == 'dev'", specifier = ">=9.0.3" },
|
|
@@ -2065,41 +2080,6 @@ requires-dist = [
|
|
| 2065 |
]
|
| 2066 |
provides-extras = ["dev"]
|
| 2067 |
|
| 2068 |
-
[[package]]
|
| 2069 |
-
name = "openenv-core"
|
| 2070 |
-
version = "0.2.3"
|
| 2071 |
-
source = { registry = "https://pypi.org/simple" }
|
| 2072 |
-
dependencies = [
|
| 2073 |
-
{ name = "fastapi" },
|
| 2074 |
-
{ name = "fastmcp" },
|
| 2075 |
-
{ name = "gradio" },
|
| 2076 |
-
{ name = "httpx" },
|
| 2077 |
-
{ name = "huggingface-hub" },
|
| 2078 |
-
{ name = "openai" },
|
| 2079 |
-
{ name = "pydantic" },
|
| 2080 |
-
{ name = "pyyaml" },
|
| 2081 |
-
{ name = "requests" },
|
| 2082 |
-
{ name = "rich" },
|
| 2083 |
-
{ name = "tomli" },
|
| 2084 |
-
{ name = "tomli-w" },
|
| 2085 |
-
{ name = "typer" },
|
| 2086 |
-
{ name = "uvicorn" },
|
| 2087 |
-
{ name = "websockets" },
|
| 2088 |
-
]
|
| 2089 |
-
sdist = { url = "https://files.pythonhosted.org/packages/93/f3/41a5ed932a2507438c985e9d959dcaa1a6c46f293995c064348c0e52dd40/openenv_core-0.2.3.tar.gz", hash = "sha256:48aefd774474556297ce012b80f2ceb271db51253d7fd0838e6e2dcc329db0c3", size = 146944, upload-time = "2026-03-28T18:56:28.415Z" }
|
| 2090 |
-
wheels = [
|
| 2091 |
-
{ url = "https://files.pythonhosted.org/packages/2f/22/38c339e370d198008f2c17ebdda1ae8f23bb4e1509dc7ae8eab6dc9b9cbe/openenv_core-0.2.3-py3-none-any.whl", hash = "sha256:f75a20c94452057a5f53a86e6d71a9f6a461524c3d6a865aa9344d257a92b795", size = 174557, upload-time = "2026-03-28T18:56:26.874Z" },
|
| 2092 |
-
]
|
| 2093 |
-
|
| 2094 |
-
[package.optional-dependencies]
|
| 2095 |
-
core = [
|
| 2096 |
-
{ name = "fastapi" },
|
| 2097 |
-
{ name = "pydantic" },
|
| 2098 |
-
{ name = "requests" },
|
| 2099 |
-
{ name = "uvicorn" },
|
| 2100 |
-
{ name = "websockets" },
|
| 2101 |
-
]
|
| 2102 |
-
|
| 2103 |
[[package]]
|
| 2104 |
name = "opentelemetry-api"
|
| 2105 |
version = "1.40.0"
|
|
@@ -3329,15 +3309,15 @@ wheels = [
|
|
| 3329 |
|
| 3330 |
[[package]]
|
| 3331 |
name = "starlette"
|
| 3332 |
-
version = "0.
|
| 3333 |
source = { registry = "https://pypi.org/simple" }
|
| 3334 |
dependencies = [
|
| 3335 |
{ name = "anyio" },
|
| 3336 |
{ name = "typing-extensions", marker = "python_full_version < '3.13'" },
|
| 3337 |
]
|
| 3338 |
-
sdist = { url = "https://files.pythonhosted.org/packages/
|
| 3339 |
wheels = [
|
| 3340 |
-
{ url = "https://files.pythonhosted.org/packages/
|
| 3341 |
]
|
| 3342 |
|
| 3343 |
[[package]]
|
|
@@ -3414,19 +3394,19 @@ wheels = [
|
|
| 3414 |
|
| 3415 |
[[package]]
|
| 3416 |
name = "tornado"
|
| 3417 |
-
version = "6.5.
|
| 3418 |
-
source = { registry = "https://pypi.org/simple" }
|
| 3419 |
-
sdist = { url = "https://files.pythonhosted.org/packages/
|
| 3420 |
-
wheels = [
|
| 3421 |
-
{ url = "https://files.pythonhosted.org/packages/
|
| 3422 |
-
{ url = "https://files.pythonhosted.org/packages/
|
| 3423 |
-
{ url = "https://files.pythonhosted.org/packages/
|
| 3424 |
-
{ url = "https://files.pythonhosted.org/packages/
|
| 3425 |
-
{ url = "https://files.pythonhosted.org/packages/
|
| 3426 |
-
{ url = "https://files.pythonhosted.org/packages/
|
| 3427 |
-
{ url = "https://files.pythonhosted.org/packages/
|
| 3428 |
-
{ url = "https://files.pythonhosted.org/packages/
|
| 3429 |
-
{ url = "https://files.pythonhosted.org/packages/
|
| 3430 |
]
|
| 3431 |
|
| 3432 |
[[package]]
|
|
|
|
| 29 |
{ url = "https://files.pythonhosted.org/packages/50/25/da1f0b4dd970e52bf5a36c204c107e11a0c6d3ed195eba0bfbc664c312b2/aiofile-3.9.0-py3-none-any.whl", hash = "sha256:ce2f6c1571538cbdfa0143b04e16b208ecb0e9cb4148e528af8a640ed51cc8aa", size = 19539, upload-time = "2024-10-08T10:39:32.955Z" },
|
| 30 |
]
|
| 31 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 32 |
[[package]]
|
| 33 |
name = "annotated-doc"
|
| 34 |
version = "0.0.4"
|
|
|
|
| 910 |
{ url = "https://files.pythonhosted.org/packages/4f/67/684fa2d2de1e7504549d4ca457b4f854ccec3cd3be03bd86b33b599fbf58/fastmcp-3.2.0-py3-none-any.whl", hash = "sha256:e71aba3df16f86f546a4a9e513261d3233bcc92bef0dfa647bac3fa33623f681", size = 705550, upload-time = "2026-03-30T20:25:35.499Z" },
|
| 911 |
]
|
| 912 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 913 |
[[package]]
|
| 914 |
name = "filelock"
|
| 915 |
version = "3.25.2"
|
|
|
|
| 930 |
|
| 931 |
[[package]]
|
| 932 |
name = "gradio"
|
| 933 |
+
version = "6.16.0"
|
| 934 |
source = { registry = "https://pypi.org/simple" }
|
| 935 |
dependencies = [
|
|
|
|
| 936 |
{ name = "anyio" },
|
| 937 |
{ name = "audioop-lts", marker = "python_full_version >= '3.13'" },
|
| 938 |
{ name = "brotli" },
|
| 939 |
{ name = "fastapi" },
|
|
|
|
| 940 |
{ name = "gradio-client" },
|
| 941 |
{ name = "groovy" },
|
| 942 |
{ name = "hf-gradio" },
|
|
|
|
| 964 |
{ name = "typing-extensions" },
|
| 965 |
{ name = "uvicorn" },
|
| 966 |
]
|
| 967 |
+
sdist = { url = "https://files.pythonhosted.org/packages/a3/26/44044687cdd16d0d9d9137c8f9d445eb68391b14583c82a6c2d528da952c/gradio-6.16.0.tar.gz", hash = "sha256:a48d03ffb436644265e4386388ad8a50ec183c8e1fdd3bae0548f7f229c474da", size = 36441812, upload-time = "2026-06-03T19:07:12.973Z" }
|
| 968 |
wheels = [
|
| 969 |
+
{ url = "https://files.pythonhosted.org/packages/2a/12/ac98683fa45d84c2c96c14acdb040aa746209089ea045c766f380549ecec/gradio-6.16.0-py3-none-any.whl", hash = "sha256:a5de01bf17336bf421d52af4b5dbd9fdbd530762c485067748456ccb797700bb", size = 20097732, upload-time = "2026-06-03T19:07:09.904Z" },
|
| 970 |
]
|
| 971 |
|
| 972 |
[[package]]
|
| 973 |
name = "gradio-client"
|
| 974 |
+
version = "2.5.0"
|
| 975 |
source = { registry = "https://pypi.org/simple" }
|
| 976 |
dependencies = [
|
| 977 |
{ name = "fsspec" },
|
|
|
|
| 980 |
{ name = "packaging" },
|
| 981 |
{ name = "typing-extensions" },
|
| 982 |
]
|
| 983 |
+
sdist = { url = "https://files.pythonhosted.org/packages/e8/e6/6b6029f5fe2ad7f1211105d530e34d991014c2cae463f9223033031cfc4f/gradio_client-2.5.0.tar.gz", hash = "sha256:4cde99bad62149595c30c90876ca2e405e3a13687ecf895474f3412cb476673d", size = 59013, upload-time = "2026-04-20T23:16:21.518Z" }
|
| 984 |
wheels = [
|
| 985 |
+
{ url = "https://files.pythonhosted.org/packages/78/81/0a861b8e1ff42960139c6cd4c7dd591292fa09ea1ae2d87677441cba4c00/gradio_client-2.5.0-py3-none-any.whl", hash = "sha256:d43e2179c29076292a76485ad7ed2e6eaa19d14ac58283bd7f5beabfe4ca958c", size = 59952, upload-time = "2026-04-20T23:16:20.186Z" },
|
| 986 |
]
|
| 987 |
|
| 988 |
[[package]]
|
|
|
|
| 1056 |
|
| 1057 |
[[package]]
|
| 1058 |
name = "hf-gradio"
|
| 1059 |
+
version = "0.4.1"
|
| 1060 |
source = { registry = "https://pypi.org/simple" }
|
| 1061 |
dependencies = [
|
| 1062 |
{ name = "gradio-client" },
|
| 1063 |
{ name = "typer" },
|
| 1064 |
]
|
| 1065 |
+
sdist = { url = "https://files.pythonhosted.org/packages/ce/86/c9694b7cfada5780e75769e60dc161a161f4dd7fc91b61db5e3a3338bef9/hf_gradio-0.4.1.tar.gz", hash = "sha256:a017d942618f0d495a58ee4563047fa04bef614c00e0cb789a9a6d0633cffa7b", size = 6560, upload-time = "2026-04-22T14:01:32.334Z" }
|
| 1066 |
wheels = [
|
| 1067 |
+
{ url = "https://files.pythonhosted.org/packages/30/2d/afff2ee87e75d8eb85c92bb8cf0e15b05c23c2ebd8fd8dec781d8601ed7f/hf_gradio-0.4.1-py3-none-any.whl", hash = "sha256:76b8cb8be6abe62d74c1ad2d35b42f0629db89aa9e1a8d033cecfe7c856eeab3", size = 4482, upload-time = "2026-04-17T19:53:31.827Z" },
|
| 1068 |
]
|
| 1069 |
|
| 1070 |
[[package]]
|
|
|
|
| 2009 |
{ url = "https://files.pythonhosted.org/packages/12/cf/03675d8bd8ecbf4445504d8071adab19f5f993676795708e36402ab38263/openapi_pydantic-0.5.1-py3-none-any.whl", hash = "sha256:a3a09ef4586f5bd760a8df7f43028b60cafb6d9f61de2acba9574766255ab146", size = 96381, upload-time = "2025-01-08T19:29:25.275Z" },
|
| 2010 |
]
|
| 2011 |
|
| 2012 |
+
[[package]]
|
| 2013 |
+
name = "openenv"
|
| 2014 |
+
version = "0.3.1"
|
| 2015 |
+
source = { registry = "https://pypi.org/simple" }
|
| 2016 |
+
dependencies = [
|
| 2017 |
+
{ name = "fastapi" },
|
| 2018 |
+
{ name = "fastmcp" },
|
| 2019 |
+
{ name = "gradio" },
|
| 2020 |
+
{ name = "httpx" },
|
| 2021 |
+
{ name = "huggingface-hub" },
|
| 2022 |
+
{ name = "openai" },
|
| 2023 |
+
{ name = "pydantic" },
|
| 2024 |
+
{ name = "pyyaml" },
|
| 2025 |
+
{ name = "requests" },
|
| 2026 |
+
{ name = "rich" },
|
| 2027 |
+
{ name = "tomli" },
|
| 2028 |
+
{ name = "tomli-w" },
|
| 2029 |
+
{ name = "typer" },
|
| 2030 |
+
{ name = "uvicorn" },
|
| 2031 |
+
{ name = "websockets" },
|
| 2032 |
+
]
|
| 2033 |
+
sdist = { url = "https://files.pythonhosted.org/packages/7a/16/12825046f4180173d8f845ad95ff7b7aac32486391d822df38d4e52b82df/openenv-0.3.1.tar.gz", hash = "sha256:9e99a08872c781c7c16d5ba214e532caf5cf29f2278eb9cc478544dc538f3918", size = 165346, upload-time = "2026-06-02T08:47:23.918Z" }
|
| 2034 |
+
wheels = [
|
| 2035 |
+
{ url = "https://files.pythonhosted.org/packages/cc/28/20af86f825054561c10eb31236e19835f79036fd4a9f600f529adef42b7b/openenv-0.3.1-py3-none-any.whl", hash = "sha256:9cad4b66c08a04fd9d9fe48d7b13cd31f8322b348ff24891646e4440e0b7468c", size = 194867, upload-time = "2026-06-02T08:47:22.469Z" },
|
| 2036 |
+
]
|
| 2037 |
+
|
| 2038 |
+
[package.optional-dependencies]
|
| 2039 |
+
core = [
|
| 2040 |
+
{ name = "fastapi" },
|
| 2041 |
+
{ name = "pydantic" },
|
| 2042 |
+
{ name = "requests" },
|
| 2043 |
+
{ name = "uvicorn" },
|
| 2044 |
+
{ name = "websockets" },
|
| 2045 |
+
]
|
| 2046 |
+
|
| 2047 |
[[package]]
|
| 2048 |
name = "openenv-browsergym-env"
|
| 2049 |
version = "0.1.0"
|
|
|
|
| 2053 |
{ name = "browsergym-miniwob" },
|
| 2054 |
{ name = "greenlet" },
|
| 2055 |
{ name = "gymnasium" },
|
| 2056 |
+
{ name = "openenv", extra = ["core"] },
|
| 2057 |
{ name = "pillow" },
|
| 2058 |
{ name = "playwright" },
|
| 2059 |
]
|
|
|
|
| 2072 |
{ name = "greenlet", specifier = "==3.0.3" },
|
| 2073 |
{ name = "gymnasium", specifier = ">=0.29.0" },
|
| 2074 |
{ name = "ipykernel", marker = "extra == 'dev'", specifier = ">=6.29.5" },
|
| 2075 |
+
{ name = "openenv", extras = ["core"], specifier = ">=0.2.3" },
|
| 2076 |
{ name = "pillow", specifier = ">=10.0.0" },
|
| 2077 |
{ name = "playwright", specifier = "==1.44.0" },
|
| 2078 |
{ name = "pytest", marker = "extra == 'dev'", specifier = ">=9.0.3" },
|
|
|
|
| 2080 |
]
|
| 2081 |
provides-extras = ["dev"]
|
| 2082 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 2083 |
[[package]]
|
| 2084 |
name = "opentelemetry-api"
|
| 2085 |
version = "1.40.0"
|
|
|
|
| 3309 |
|
| 3310 |
[[package]]
|
| 3311 |
name = "starlette"
|
| 3312 |
+
version = "1.0.1"
|
| 3313 |
source = { registry = "https://pypi.org/simple" }
|
| 3314 |
dependencies = [
|
| 3315 |
{ name = "anyio" },
|
| 3316 |
{ name = "typing-extensions", marker = "python_full_version < '3.13'" },
|
| 3317 |
]
|
| 3318 |
+
sdist = { url = "https://files.pythonhosted.org/packages/08/a3/84e821cc54b4ab50ae6dbc6ac3800a651b65ec35f045cc73785380654057/starlette-1.0.1.tar.gz", hash = "sha256:512399c5f1de7fac99c88572212ded9ddeddef2fb32afa82d724000e88b38f4f", size = 2659596, upload-time = "2026-05-21T21:58:58.433Z" }
|
| 3319 |
wheels = [
|
| 3320 |
+
{ url = "https://files.pythonhosted.org/packages/ec/e1/b2df4bc09a1e51ff664c1e17018a4274b42e5e9352e4a478ea540512dc88/starlette-1.0.1-py3-none-any.whl", hash = "sha256:7c0e69b2ee1c848bd54669d908500117a3ee13de603a21427e5c6fc1adf98dcd", size = 72802, upload-time = "2026-05-21T21:58:56.551Z" },
|
| 3321 |
]
|
| 3322 |
|
| 3323 |
[[package]]
|
|
|
|
| 3394 |
|
| 3395 |
[[package]]
|
| 3396 |
name = "tornado"
|
| 3397 |
+
version = "6.5.6"
|
| 3398 |
+
source = { registry = "https://pypi.org/simple" }
|
| 3399 |
+
sdist = { url = "https://files.pythonhosted.org/packages/50/57/6d7303a77ae439d9189108f76c0c4fd89ee5e2cc8387bffb55232565c4ed/tornado-6.5.6.tar.gz", hash = "sha256:9a365179fe8ff6b8766f602c0f67c185d778193e9bdd828b19f0b6ed7764177d", size = 518139, upload-time = "2026-05-27T15:35:54.646Z" }
|
| 3400 |
+
wheels = [
|
| 3401 |
+
{ url = "https://files.pythonhosted.org/packages/1b/0d/b4f481e18c5a51864e6d12b9a05ecf72919696680b747c958c3fc1f4fbae/tornado-6.5.6-cp39-abi3-macosx_10_9_universal2.whl", hash = "sha256:65fcfaafb079435c2c19dc9e07c0f1cf0fa9051759ed0a7d0a3ba7ea7f64919c", size = 447737, upload-time = "2026-05-27T15:35:38.122Z" },
|
| 3402 |
+
{ url = "https://files.pythonhosted.org/packages/9e/9c/5430c39fcab1144d35860f457b15e9c08b4bc7ac86764354204e983d6183/tornado-6.5.6-cp39-abi3-macosx_10_9_x86_64.whl", hash = "sha256:38bc01b4acacded2de63ae78023548e41ebe6fbed3ec05a796d7ae3ad893887e", size = 445899, upload-time = "2026-05-27T15:35:40.519Z" },
|
| 3403 |
+
{ url = "https://files.pythonhosted.org/packages/8b/79/fa7e14a2f939c807a8d30619b4eb604eab219601b78792516ebe22d40cf9/tornado-6.5.6-cp39-abi3-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:b942e6a137fda31ff54bf8e6e2c8d1c37f1f50583f3ed53fb840b53b9601d104", size = 448964, upload-time = "2026-05-27T15:35:42.106Z" },
|
| 3404 |
+
{ url = "https://files.pythonhosted.org/packages/a7/71/bd67d5f5199f937dafe03a49a37989f60f600ff6fef34c79412a829d97bd/tornado-6.5.6-cp39-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:8666946e70171b8c3f1fc9b7876fac492e84822c4c7f3746f4e8f8bc9ac92a79", size = 449935, upload-time = "2026-05-27T15:35:43.906Z" },
|
| 3405 |
+
{ url = "https://files.pythonhosted.org/packages/cc/a4/c24388c9cf5b3c3a513b56a158af9f23092c9a2810d789e294310797df21/tornado-6.5.6-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:1c34cfab7ad6d104f052f55de06d39bbafc5885cfeb4da688803308dbcfa90b7", size = 449767, upload-time = "2026-05-27T15:35:45.793Z" },
|
| 3406 |
+
{ url = "https://files.pythonhosted.org/packages/a5/eb/6a07ad550c3f7b37244bd0becdf293ec3d3e961783d8b720a97df50de1b2/tornado-6.5.6-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:385f35e4e22fb52551dfcda4cdc8c30c61c2c001aef5ddad99cdfe116952efd3", size = 449174, upload-time = "2026-05-27T15:35:47.485Z" },
|
| 3407 |
+
{ url = "https://files.pythonhosted.org/packages/bb/84/3469e098dccdb6763130e06aacd786bb4363fca7b590a55c101ddf34ed30/tornado-6.5.6-cp39-abi3-win32.whl", hash = "sha256:db475f1b67b2809b10bb16264829087724ca8d24fe4ed47f7b8675cae453ef86", size = 450230, upload-time = "2026-05-27T15:35:49.322Z" },
|
| 3408 |
+
{ url = "https://files.pythonhosted.org/packages/d2/3c/273a04e0b9dd9016f1685cca0c1c8795a71ac88a34a8c889a0b443483226/tornado-6.5.6-cp39-abi3-win_amd64.whl", hash = "sha256:6739bf1e8eb09230f1280ddbd3236f0309db70f2c551a8dbc40f62babdf82f79", size = 450667, upload-time = "2026-05-27T15:35:51.194Z" },
|
| 3409 |
+
{ url = "https://files.pythonhosted.org/packages/02/98/0cffe22a224f60c5fb1e3aa0b76f9da2e1ca78b0e9545e3d077c68ce60a7/tornado-6.5.6-cp39-abi3-win_arm64.whl", hash = "sha256:2543597b24a695d72338a9a77818362d72387c03ae173f1f169eadc5c91466ac", size = 449690, upload-time = "2026-05-27T15:35:52.902Z" },
|
| 3410 |
]
|
| 3411 |
|
| 3412 |
[[package]]
|