Studio: correct anyio<4.14 comments to the real #6483 cause (#6581)

#6579 reworded these comments to attribute the failure to a half-resolved
install and claimed a clean 4.14 is fine on 3.13. That is wrong: #6483 is a
genuine anyio 4.14 + Python 3.13 regression. 4.14 added a per-task cancel
scope in its asyncio backend (TaskHandle/_run_coro) that gets exited in the
wrong task under starlette's collapsing task group, raising the cancel-scope
RuntimeError on streaming; 4.13 has no such code and is unaffected (the
reporter confirmed 4.13.0 fixes it). The TaskHandle ImportError is only the
secondary macOS-arm symptom from the mlx-vs-cap version fight. Comments only.
This commit is contained in:
Daniel Han 2026-06-23 05:50:53 -07:00 committed by GitHub
commit 1ffffc1cf1
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 11 additions and 12 deletions

View file

@ -56,7 +56,7 @@ httpx
httpcore
certifi
idna
anyio>=3.0,<4.14.0 # one consistent <4.14: 4.14's TaskHandle importers over a stale 4.13 _core/_tasks -> ImportError (#6483)
anyio>=3.0,<4.14.0 # 4.14 asyncio cancel-scope RuntimeError on Py3.13 streaming (#6483); 4.13 unaffected
sniffio
h11

View file

@ -13,11 +13,11 @@ fastmcp>=3.0.2
mcp>=1.24,<2
websockets>=15.0.1
# Keep anyio on one consistent <4.14 line. anyio 4.14 added TaskHandle (imported
# by __init__.py and the asyncio backend from _core/_tasks); a clean 4.14 is fine
# on 3.13. The real failure (#6483) is a half-resolved install: a stale 4.13
# _core/_tasks (no TaskHandle) under 4.14's importers raises ImportError and 500s
# the server. Global cap so later with-deps steps can't re-resolve it up.
# Cap anyio <4.14: 4.14's new asyncio per-task cancel scope (TaskHandle/_run_coro)
# gets exited in the wrong task on Python 3.13 under starlette's collapsing task
# group, raising "RuntimeError: ... exit a cancel scope that isn't the current
# task's" on streaming responses (#6483); 4.13 has no such code. Global cap so
# later with-deps steps can't re-resolve it up.
anyio<4.14.0
pandas==2.3.3

View file

@ -4,10 +4,9 @@
# happens at runtime via the side-car venvs.
transformers>=4.57.6
# mlx-vlm / mlx-lm pull anyio>=4.14, which fights the constraints.txt cap
# (anyio<4.14.0). The -c constraint loses that fight on macOS-arm, leaving a
# half-resolved anyio (4.14 importers over a stale 4.13 _core/_tasks with no
# TaskHandle) that ImportErrors and 500s the server (#6483; clean 4.14 is fine,
# it is the mix that breaks). An override wins the fight, so force one
# consistent <4.14 here too.
# mlx-vlm / mlx-lm pull anyio>=4.14, which fights the constraints.txt cap (needed
# for the 4.14 Python-3.13 streaming cancel-scope RuntimeError, #6483). The -c
# constraint loses that fight on macOS-arm, leaving a half-resolved 4.14/4.13
# anyio that also ImportErrors on TaskHandle and 500s the server. An override
# wins the fight, so force one consistent <4.14 here too.
anyio<4.14.0