pip: add the amd and huggingfacenotorch extras, and guard against unpublishable metadata (#7583)
* pip: add the amd and huggingfacenotorch extras, and guard against unpublishable metadata * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * pip: restore the rich, audio and flash-attn dependencies main declares * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * Parse the guard tests' requirements instead of pattern matching them The direct-URL check matched the substring " @ https://", but PEP 508 allows any whitespace around the @ and the scheme is case insensitive, so flash-attn@https://... and flash-attn @ HTTPS://... are both direct references the check waved through - the exact upload failure it exists to catch. Ask packaging: Requirement.url is set for every spelling. The extras cross-reference used a lowercase regex, but project names and extra names are both case and separator insensitive (PEP 503, PEP 685), so pip honours Unsloth[Rocm72_Torch2100] while the regex never looked at it. Parse and canonicalize both sides instead. * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * pip: gate the torchcodec extras to platforms with a wheel torchcodec publishes no sdist and only manylinux_2_28_x86_64, macosx_*_arm64 and win_amd64 wheels, so on Linux aarch64, Windows ARM64 and Intel Mac there is nothing for pip to resolve and the whole install fails before the user gets an environment. Wiring audio-torch210 into the cu*-torch2100 extras made that reachable from those extras too. Gate on the platforms that have a wheel, matching PLATFORM_LACKS_TORCHCODEC_WHEEL in studio/install_python_stack.py. Also record why the amd and huggingfacenotorch extras cannot be torch-free on this branch: extras are additive to the base dependencies, which deliberately carry the full runtime here so a bare pip install works. --------- Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> Co-authored-by: unslothai <unslothai@gmail.com>
This commit is contained in:
parent
0d320c5b56
commit
e3052ed7d2
3 changed files with 248 additions and 2 deletions
|
|
@ -45,15 +45,22 @@ def _stub_torch(monkeypatch, version: str):
|
|||
|
||||
|
||||
def test_torch210_extras_bundle_audio_torch210():
|
||||
"""The ROCm extras pin torch from the AMD wheel index, which PyPI rejects as a
|
||||
direct reference, so this branch does not carry them. Check whichever torch 2.10
|
||||
extras it does define, and require at least one."""
|
||||
text = PYPROJECT.read_text(encoding = "utf-8")
|
||||
checked = 0
|
||||
for extra in (
|
||||
"cu128-torch2100",
|
||||
"cu126-ampere-torch2100",
|
||||
"rocm72-torch2100",
|
||||
):
|
||||
match = re.search(rf"^{extra} = \[(.*?)^\]", text, re.MULTILINE | re.DOTALL)
|
||||
assert match is not None, extra
|
||||
assert "unsloth[audio-torch210]" in match.group(1)
|
||||
if match is None:
|
||||
continue
|
||||
assert "unsloth[audio-torch210]" in match.group(1), extra
|
||||
checked += 1
|
||||
assert checked, "no torch 2.10 extra found to check"
|
||||
|
||||
|
||||
def test_torchcodec_matrix_matches_notebook_validator():
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue