bithuman: fail closed on Python versions the SDK has no build for - #6614
Merged
Conversation
requires-python was >=3.10 and the classifiers claimed 3.10 only, but bithuman 2.6+ requires >=3.11,<3.14. The wide dep range (>=0.5.25,<3) let a 3.10 install backtrack to bithuman 2.3.10 and succeed against a stale SDK instead of being refused, so raise the floor in requires-python and list the versions that work. The 3.14 marker keeps its own bound; with requires-python at >=3.11 its lower half is redundant.
u9g
force-pushed
the
fix/bithuman-python-314-lock
branch
from
July 30, 2026 12:52
cb16992 to
4480540
Compare
longcw
reviewed
Jul 30, 2026
| readme = "README.md" | ||
| license = "Apache-2.0" | ||
| requires-python = ">=3.10.0" | ||
| requires-python = ">=3.11" |
Contributor
There was a problem hiding this comment.
could you explain a bit why requires-python = ">=3.11" is needed?
Contributor
Author
There was a problem hiding this comment.
current bithuman (2.6.0/2.7.0/2.8.0) only have wheels for: cp311, cp312, cp313
2.3.10 includes wheels for: cp310, cp311, cp312, cp313, cp314
then starting >=2.3.11, they only ship cp311–cp313. idk what the difference is of if we are okay with 2.3.10, if we are I guess we can instead do python 3.10-3.14
u9g
commented
Jul 30, 2026
| dependencies = [ | ||
| "livekit-agents>=1.6.7", | ||
| "bithuman>=0.5.25,<3; python_version >= '3.11' and python_version < '3.14'", | ||
| "bithuman>=0.5.25,<3; python_version < '3.14'", |
Contributor
Author
There was a problem hiding this comment.
I made PIL, loguru and cv2 explicit deps, rather than implicit as they were before.
The install-time refusal on 3.10 is not worth a narrower floor than the rest of the workspace, so requires-python and the 3.10 classifier go back to what they were and the marker keeps both bounds. Both bounds are load-bearing at the current floor: 2.3.10 ships cp310 and cp314 wheels and declares no upper bound, so dropping either lets 3.10 or 3.14 resolve onto it rather than omitting bithuman.
The wide floor is load-bearing, not stale: 2.x dropped Windows, x86_64 macOS and macOS < 14, and those platforms resolve the 1.x line instead. 1.5.0 has every member avatar.py touches, inheriting interrupt/cleanup/get_first_frame from the sync base class.
longcw
approved these changes
Jul 31, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Rescoped: #6561 landed the marker on the plugin's own dependency while this was open, so the root
override-dependenciesapproach here is redundant. Rebased onto main; what's left is the metadata fix.requires-pythonwas>=3.10and the classifiers claimed 3.10 only, whilebithuman2.6+ requires>=3.11,<3.14. The wide dep range (>=0.5.25,<3) let a 3.10 install backtrack tobithuman==2.3.10(which ships cp310 wheels) and succeed against a stale SDK rather than being refused, so the floor moves intorequires-pythonand the classifiers list the versions that actually work.The
<3.14bound stays a marker: the virtual workspace root intersectsrequires-pythonover all members, so an upper bound here would cap the whole workspace.Verified: the built wheel reports
Requires-Python: >=3.11andRequires-Dist: bithuman<3,>=0.5.25; python_version < '3.14';uv sync --python 3.14 --all-extras --devresolves withbithumanabsent and the plugin still installed;--python 3.13installsbithuman==2.7.0;uv lockis a no-op.Not addressed: there are no Windows or macOS-x86_64
bithumanwheels, so installs fail there on every Python version. The>=0.5.25floor is also stale — it is what makes deep backtracks possible — but raising it is a user-facing compat change and belongs in its own PR.