Skip to content
Merged
Show file tree
Hide file tree
Changes from 25 commits
Commits
Show all changes
29 commits
Select commit Hold shift + click to select a range
e9a56c6
ci: upgrade GitHub Actions for Node.js 24 compatibility (#1638)
ko3n1g Mar 30, 2026
6764266
Bump cryptogrpahy and update lockfile, also added min version for uv …
ayushdg Mar 30, 2026
7970ed5
Bump pygments from 2.19.2 to 2.20.0 (#1681)
dependabot[bot] Mar 31, 2026
d298119
Update token handling for classifiers (#1528)
sarahyurick Mar 25, 2026
8176af8
Llane/fern docs off main (#1647)
lbliii Apr 1, 2026
2c24668
chore: bump _code_freeze workflow to v0.86.0 (#1692)
ko3n1g Mar 31, 2026
10a24a2
Add ADV audio dependencies and restructure audio groups
shubhamNvidia Mar 26, 2026
562c70b
ci: Update coverage download path (#1707)
thomasdhc Apr 1, 2026
8583ba6
Merge upstream/main into pr/audio-dependencies
shubhamNvidia Mar 31, 2026
346a81d
Merge branch 'main' into pr/audio-dependencies
sarahyurick Apr 1, 2026
84182d3
feat(interleaved): Foundation IO improvements — schema utilities, bas…
VibhuJawa Apr 1, 2026
3ef40ac
Merge upstream/main into pr/audio-dependencies
shubhamNvidia Apr 1, 2026
b614a10
Add more args to fuzzy workflow (#1603)
ayushdg Apr 1, 2026
a1c0b8e
Improve `split_large_files` script (#1658)
sarahyurick Apr 1, 2026
31d4225
Merge branch 'pr/audio-dependencies' of https://github.com/shubhamNvi…
shubhamNvidia Apr 1, 2026
7d566ce
Add Nemotron VLM support in video captioning (#1160)
ronjer30 Apr 1, 2026
7219e3a
Bump pyopenssl from 22.0.0 to 26.0.0 (#1669)
dependabot[bot] Apr 2, 2026
2da2f6e
Fix Python 3.10 CI: cap onnxruntime<1.24, move torchcodec to audio_cu…
shubhamNvidia Apr 1, 2026
4efc912
Merge branch 'main' into pr/audio-dependencies
shubhamNvidia Apr 1, 2026
1758dcc
Merge remote-tracking branch 'upstream/main' into pr/audio-dependencies
shubhamNvidia Apr 2, 2026
c313422
regenerate uv.lock
shubhamNvidia Apr 2, 2026
47c1dbd
Merge upstream/main and resolve conflicts
shubhamNvidia Apr 2, 2026
5d6f6d8
Merge remote-tracking branch 'upstream/main' into pr/audio-dependencies
shubhamNvidia Apr 2, 2026
bf2ce78
Merge branch 'main' into pr/audio-dependencies
sarahyurick Apr 2, 2026
332e2c7
fix: remove redundant transformers override
shubhamNvidia Apr 2, 2026
ebb4187
Merge branch 'main' into pr/audio-dependencies
shubhamNvidia Apr 2, 2026
5ec3af4
Merge branch 'main' into pr/audio-dependencies
sarahyurick Apr 2, 2026
28cd599
fix: remove unused seaborn, move Cython and packaging to build deps
shubhamNvidia Apr 3, 2026
23a359b
Merge branch 'main' into pr/audio-dependencies
sarahyurick Apr 3, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 16 additions & 2 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -95,13 +95,27 @@ deduplication_cuda12 = [
"rapidsmpf-cu12==25.10.*",
]

audio_cpu = [
audio_common = [

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Why make a distinct group for audio common? Audio cuda inherits from audio cpu

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

audio_common exists because audio_cpu and audio_cuda12 need different onnxruntime packages (onnxruntime vs onnxruntime-gpu). If audio_cuda12 inherited from audio_cpu, both CPU and GPU versions of onnxruntime would be installed, which can cause conflicts. audio_common shares everything except the onnxruntime variant.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Gotcha!

"nemo_toolkit[asr]>=2.7.2",
"soundfile>=0.12.0",
# ADV (Audio DataVerse) Dependencies
"Cython",

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Cython is a build-time dependency, not a runtime dependency

Cython is a compiler/transpiler used at build time to generate C extensions — it is not a package that is imported at runtime. Listing it under [project.optional-dependencies] (runtime extras) is unconventional and may install an unnecessary compiler toolchain in production environments.

If it is genuinely needed at runtime (e.g. for a package that compiles extensions on first use), please add a comment explaining why. Otherwise, consider moving it to the [dependency-groups] build group or removing it from this group.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

This seems valid but I don't know enough about build vs import time, @shubhamNvidia do you know which package ends up needing this a build time thing?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Cython is a build-time dependency needed by some transitive deps of nemo_toolkit[asr] (like texterrors). It's not imported at runtime by our code. I can verify if it's still needed or if it can be removed.

"packaging",

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Same concern about this

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Cython and packaging: These are build-time prerequisites for nemo_toolkit[asr] — the [NeMo Sortformer model card] explicitly requires pip install Cython packaging before installing NeMo

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

They're not imported at runtime. I'll move them to [dependency-groups] build as suggested by @thomasdhc
seaborn: Not used anywhere, will remove.

"torchaudio",

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

P1 torchaudio version constraint missing

torchaudio releases are strictly coupled to specific torch versions (e.g., torchaudio==2.5.0 requires exactly torch==2.5.0). Installing an unpinned torchaudio alongside torch (which is already a base dependency with no upper-bound) can result in a version mismatch that raises an ImportError or produces incorrect audio processing behaviour at runtime.

Consider adding a version constraint that mirrors what nemo_toolkit[asr]==2.4.0 (already in audio_common) expects, or at minimum align it with the torch version that NeMo 2.4.0 requires.

Suggested change
"torchaudio",
"torchaudio>=2.5.0,<2.6.0",

(replace the version range with whatever NeMo 2.4.0 expects)

"seaborn>=0.11.2",

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

is this needed?

"onnx>=1.19.0",
"silero-vad",

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

silero-vad missing version constraint

silero-vad has undergone significant API changes across its release history (e.g., changes to the loading API and model interface between 0.3.x, 0.4.x, and 5.x). Without a version pin or at least a lower bound, a future installation could pull in an incompatible version and break the ADV pipeline silently at runtime.

Consider pinning or bounding the version to match the API your code relies on, e.g.:

Suggested change
"silero-vad",
"silero-vad>=4.0,<6",

]
Comment on lines +98 to +104

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

P2 audio_common is an installable extra without a required ONNX backend

audio_common is exposed as a public optional-dependency group, which means a user can run pip install "nemo-curator[audio_common]" and get a working import of nemo_curator audio modules — but will fail at runtime the moment any code path invokes ONNX inference, because neither onnxruntime nor onnxruntime-gpu is included.

If audio_common is intended as an internal base group only (consumed via nemo_curator[audio_cpu] or nemo_curator[audio_cuda12]), consider documenting that clearly with an inline comment, e.g.:

# Internal base group — do not install directly; use audio_cpu or audio_cuda12
audio_common = [
    ...
]

This prevents accidental misuse without requiring a structural change.

audio_cpu = [
"nemo_curator[audio_common]",
"onnxruntime>=1.20.1,<1.24",
]
audio_cuda12 = [
"nemo_curator[audio_cpu]",
"nemo_curator[audio_common]",
"nemo_curator[cuda12]",
"nvidia-cudnn-cu12",

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

nvidia-cudnn-cu12 missing version constraint

onnxruntime-gpu has strict cuDNN version requirements that vary by release. For example, onnxruntime-gpu 1.20.x requires cuDNN 8.x or 9.x at a specific minor version. Leaving nvidia-cudnn-cu12 unconstrained means a newer incompatible cuDNN release could be installed, causing silent runtime failures or missing symbol errors at import time.

Please add a version pin or at minimum an upper bound (e.g. nvidia-cudnn-cu12>=9.1,<10), matching what onnxruntime-gpu>=1.20.1 expects.

Suggested change
"nvidia-cudnn-cu12",
"nvidia-cudnn-cu12>=9.1,<10",

"onnxruntime-gpu>=1.20.1,<1.24",
"torchcodec",
]
Comment on lines +105 to 115

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

P2 onnxruntime and onnxruntime-gpu can be co-installed without conflict guard

audio_cpu installs onnxruntime (CPU-only) and audio_cuda12 installs onnxruntime-gpu. Both packages register the same top-level Python module (onnxruntime). If a user installs both extras together — e.g. pip install "nemo-curator[audio_cpu,audio_cuda12]" — both packages will be listed as requirements and the resolver may install either or both, causing a broken onnxruntime environment at import time.

The rest of this file's CUDA extras avoid this by having the CUDA variant include the CPU variant (e.g. text_cuda12 = ["nemo_curator[text_cpu]", ...]). The new audio extras deliberately break that pattern (correctly, to avoid the conflict), but without adding a [tool.uv.conflicts] entry to actively prevent the combination, the footgun remains.

Consider adding a conflicts declaration:

[tool.uv.conflicts]
audio = [
    { extra = "audio_cpu" },
    { extra = "audio_cuda12" },
]

This gives uv the information it needs to raise an error if a user tries to resolve both extras simultaneously, rather than silently producing a broken environment.


image_cpu = [
Expand Down
Loading
Loading