Skip to content

[ci, build] fix: unblock testpypi publish — drop direct git URL dep, bump CI template to v0.94.1#15659

Merged
ko3n1g merged 3 commits into
mainfrom
ko3n1g/ci/twine-verbose
May 4, 2026
Merged

[ci, build] fix: unblock testpypi publish — drop direct git URL dep, bump CI template to v0.94.1#15659
ko3n1g merged 3 commits into
mainfrom
ko3n1g/ci/twine-verbose

Conversation

@ko3n1g
Copy link
Copy Markdown
Contributor

@ko3n1g ko3n1g commented May 4, 2026

Claude summary

The TestPyPI publish job has failed on every push to main since 2026-04-23 with 400 Bad Request from https://test.pypi.org/legacy/.

Cause. PyPI/TestPyPI rejects any project whose metadata declares a direct URL/VCS dependency (PEP 508 pkg @ <url> form). requirements/requirements_speechlm2.txt (introduced 2026-04-23 in #15447) contained:

nemo_automodel @ git+https://github.com/NVIDIA-NeMo/Automodel.git@9eccbb6102a260efd7cbdffa890fc57b94f94528

With --verbose enabled, TestPyPI surfaces the actual response:

400 Can't have direct dependency: nemo_automodel @ ...fa890fc57b94f94528 ; extra == "speechlm2-only"

Fix.

  1. Keep nemo_automodel as a tracked dependency, just not in the wheel metadata. Remove the nemo_automodel @ git+... line from requirements/requirements_speechlm2.txt (which feeds extras_require['speechlm2-only'] via setup.py, and is therefore baked into wheel metadata) and instead pin the commit in requirements/manifest.json alongside the other VCS deps.
  2. Override-install the pinned commit in the GitHub CI image. docker/common/install_dep.sh extra (invoked by docker/Dockerfile.ci, which is what GitHub CI builds) reads the pinned ref from manifest.json and adds nemo_automodel @ git+<repo>@<ref> to its pip install step. Net effect: the published wheel has clean metadata, but every CI image still gets the exact same nemo_automodel commit.
  3. Surface future twine errors directly. Bump _build_test_publish_wheel from v0.22.3v0.94.1 (the newer reusable workflow already passes --verbose --skip-existing to twine upload). Add workflow_dispatch: so the workflow can be triggered for testing without waiting on a push to main.

Layout after this PR:

Where What
requirements/manifest.jsonvcs-dependencies.nemo_automodel Pinned repo + ref (single source of truth)
docker/common/install_dep.shextra() Reads manifest, override-installs nemo_automodel @ git+<repo>@<ref>
requirements/requirements_speechlm2.txt flashoptim + a comment pointing to the manifest/install_dep entry

Verification. Re-triggered on this branch via workflow_dispatch; all jobs green. https://test.pypi.org/simple/nemo-toolkit/ now returns 200 (was 404).

…ce twine errors

Bumps the reusable workflow ref from v0.22.3 to v0.94.1, which adds
`--verbose --skip-existing` to the `twine upload` invocation. The
PyPi wheel publish job has been failing on every push to main since
2026-04-23 with a bare `HTTPError: 400 Bad Request from
https://test.pypi.org/legacy/` and no body, because v0.22.3 does not
pass `--verbose` to twine. Bumping unblocks diagnosis.

Also adds a `workflow_dispatch:` trigger so this workflow can be
fired manually for testing without merging to main.

Signed-off-by: oliver könig <okoenig@nvidia.com>
PyPI/TestPyPI rejects projects whose metadata declares any direct URL or
VCS dependency (PEP 508 `pkg @ <url>` form). The line

    nemo_automodel @ git+https://github.com/NVIDIA-NeMo/Automodel.git@<sha>

introduced in #15447 caused every wheel publish since 2026-04-23 to fail
with `400 Can't have direct dependency: nemo_automodel @ ... ; extra ==
"speechlm2-only"`. Removing the line so the wheel can be uploaded.

Signed-off-by: oliver könig <okoenig@nvidia.com>
@ko3n1g ko3n1g requested a review from pzelasko May 4, 2026 11:50
@ko3n1g ko3n1g changed the title [ci] fix: bump _build_test_publish_wheel template to v0.94.1 to surface twine errors [ci, build] fix: unblock testpypi publish — drop direct git URL dep, bump CI template to v0.94.1 May 4, 2026
@ko3n1g ko3n1g enabled auto-merge (squash) May 4, 2026 11:53
@@ -1,2 +1 @@
nemo_automodel @ git+https://github.com/NVIDIA-NeMo/Automodel.git@9eccbb6102a260efd7cbdffa890fc57b94f94528 # version with relaxed pytorch constraints
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We should leave automodel here? or pin to a specific version that included this commit?

…ead of wheel metadata

PyPI/TestPyPI rejects wheels whose metadata declares a direct git URL
dependency (PEP 508 `pkg @ <url>` form) with `400 Can't have direct
dependency`. The previous fix dropped the `nemo_automodel @ git+...`
line from `requirements_speechlm2.txt` entirely, but speechlm2 still
needs it at runtime.

Track the pinned commit in `requirements/manifest.json` alongside the
other VCS deps and have `docker/common/install_dep.sh extra` (invoked
by `docker/Dockerfile.ci`) override-install it. The wheel metadata
stays clean, the GitHub CI image still has the right `nemo_automodel`
commit, and `requirements_speechlm2.txt` documents where the dep lives.

Signed-off-by: oliver könig <okoenig@nvidia.com>
@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented May 4, 2026

[🤖]: Hi @ko3n1g 👋,

We wanted to let you know that a CICD pipeline for this PR just finished successfully.

So it might be time to merge this PR or get some approvals.

@ko3n1g ko3n1g merged commit 96c00d8 into main May 4, 2026
148 checks passed
@ko3n1g ko3n1g deleted the ko3n1g/ci/twine-verbose branch May 4, 2026 15:36
ko3n1g added a commit that referenced this pull request May 4, 2026
…5662)

Restore nemo_automodel as a plain PyPI dependency in
requirements/requirements_speechlm2.txt. It was unintentionally dropped
in #15659 along with the direct git URL form that was blocking
PyPI/TestPyPI publish (`400 Can't have direct dependency`). The plain
name avoids that failure mode while keeping the runtime dep declared
where users expect it.

Signed-off-by: oliver könig <okoenig@nvidia.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants