Repository navigation
Conversation
…ownloads hf_xet 1.3.2 fetches Xet xorb byte ranges directly from the HF CAS/CDN, ignoring the reconstruction manifest's per-xorb URLs, so a transparent HF_ENDPOINT proxy/cache is bypassed for the actual bytes. hf_xet 1.6.0 routes xorb fetches through the reconstruction URLs. hf_xet 1.6.0 requires huggingface_hub 1.32.0, so both are bumped together.
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.
The bug
The serverless worker base image ships huggingface_hub 1.6.0 + hf_xet 1.3.2 (pinned in
uv.lock). hf_xet 1.3.2 fetches Xet "xorb" byte ranges directly from the HuggingFace CAS/CDN — it ignores the file-reconstruction manifest's per-xorb URLs.This silently breaks any transparent HuggingFace proxy/cache configured via the standard
HF_ENDPOINTenv var. The worker correctly routes the hub API and the Xet reconstruction request throughHF_ENDPOINT, but then fetches the actual bytes straight from the CAS, bypassing the proxy entirely.Reproduction
Platform-independent — no Flash needed. Run a stock
huggingface_hub+hf_xetclient withHF_ENDPOINTpointed at a proxy that rewrites the reconstruction manifest's xorb URLs, and download a Xet-backed model:hf_xet==1.3.2(withhuggingface_hub==1.6.0): the proxy sees the reconstruction request but zero xorb-byte requests → bytes fetched direct from CAS.hf_xet==1.6.0(withhuggingface_hub==1.32.0): the proxy sees the xorb-byte requests → bytes flow through the proxy.Verified in a plain
python:3.12-slimcontainer both ways, and live on a Flash serverless CPU worker whose reported versions were exactly 1.3.2 / 1.6.0.Why both packages bump together
hf_xet==1.3.2is incompatible withhuggingface_hub==1.32.0(pip resolution conflict), andhf_xetis a transitive dependency ofhuggingface_hub. So the fix is a coupled upgrade: raisinghuggingface_hubto>=1.32.0pullshf_xet>=1.6.0.The fix
huggingface_hubfloor inpyproject.tomlfrom>=0.32.0to>=1.32.0(with a comment explaining the coupling) so the fix is durable and self-documenting —hf_xethas no direct entry to pin.uv.lockviauv lock --upgrade-package huggingface_hub --upgrade-package hf-xet.Resulting lock changes:
clickbumps becausehuggingface_hub1.32.0 adds a direct dependency on it; it is a required transitive consequence, not an unrelated change. (worker-flashalso updates 1.5.0 → 1.6.0 in the lock, syncing pre-existing drift against thepyprojectversion.)Verification
uv lockre-resolves cleanly;uv sync --frozeninstallshf-xet 1.6.0/huggingface-hub 1.32.0.293 passed.Co-Authored-By: Claude Opus 4.8 noreply@anthropic.com