Summary
Request to lift the numpy<2.0.0 upper cap added in #1117 so that nuscenes-devkit can be installed in environments that depend on numpy>=2.x.
The cap currently lives at setup/requirements/requirements_base.txt:
Why this matters now
The cap was added in #1117 to work around a transitive ABI break: a module compiled against NumPy 1.x couldn't import under NumPy 2.x without being rebuilt. That was the right call in September 2024 when most of the scientific-Python ecosystem hadn't yet released NumPy-2-compatible wheels.
A year-and-change later, NumPy 2.x wheels are widely available across the existing direct dependencies in requirements_base.txt:
| Package |
NumPy 2.x support landed in |
Current requirements_base.txt lower bound |
| matplotlib |
3.8.0 (Sep 2023) |
>=3.6.0 |
| opencv-python-headless |
4.10.x (Jun 2024) |
>=4.5.4.58 |
| scipy |
1.13.0 (Apr 2024) |
(no pin) |
| Shapely |
2.0.4 (Apr 2024) |
~=2.0.3 |
| pyquaternion |
pure-Python, no compiled deps |
>=0.9.5 |
| scikit-learn |
1.5.0 (May 2024) |
(no pin) |
| descartes |
pure-Python |
(no pin) |
| Pillow |
every recent release |
>6.2.1 |
Because every direct dep already has a NumPy-2-compatible release at or above its current lower bound, simply removing the upper cap should let pip resolve a working environment on NumPy 2.x without any further changes to lower bounds. The tracking extra (motmetrics==1.4.0, pandas>=0.24) is similarly fine — motmetrics 1.4.0 and pandas 2.2.2+ both work with NumPy 2.x.
Concrete user impact
Downstream packages that legitimately want NumPy 2.x can't co-install nuscenes-devkit. A common example is trackeval (HOTA / CLEAR / Identity tracking metrics, JonathonLuiten/TrackEval and its PyPI republish). The current PyPI trackeval==1.3.0 declares:
numpy>=2.0.2; python_version=='3.9'
numpy>=2.2.6; python_version=='3.10'
numpy>=2.3.2; python_version>='3.11'
Combined with nuscenes-devkit's numpy<2.0.0, the intersection is empty on any Python ≥ 3.9 and pip refuses to resolve. The runtime is actually fine (forcing both packages together with numpy==1.26.4 works), so the conflict is purely a metadata one — but it still blocks clean pip install in CI for any project that needs both libraries.
Proposed change
Replace
with
in setup/requirements/requirements_base.txt.
If you'd prefer a more conservative bump (e.g. numpy>=1.22.0,<3.0.0) to leave room for a future NumPy 3.x review, that also unblocks the resolver while keeping a forward-compat guardrail.
Thanks for maintaining this!
Summary
Request to lift the
numpy<2.0.0upper cap added in #1117 so thatnuscenes-devkitcan be installed in environments that depend onnumpy>=2.x.The cap currently lives at
setup/requirements/requirements_base.txt:Why this matters now
The cap was added in #1117 to work around a transitive ABI break: a module compiled against NumPy 1.x couldn't import under NumPy 2.x without being rebuilt. That was the right call in September 2024 when most of the scientific-Python ecosystem hadn't yet released NumPy-2-compatible wheels.
A year-and-change later, NumPy 2.x wheels are widely available across the existing direct dependencies in
requirements_base.txt:requirements_base.txtlower bound>=3.6.0>=4.5.4.58~=2.0.3>=0.9.5>6.2.1Because every direct dep already has a NumPy-2-compatible release at or above its current lower bound, simply removing the upper cap should let pip resolve a working environment on NumPy 2.x without any further changes to lower bounds. The
trackingextra (motmetrics==1.4.0,pandas>=0.24) is similarly fine —motmetrics 1.4.0andpandas 2.2.2+both work with NumPy 2.x.Concrete user impact
Downstream packages that legitimately want NumPy 2.x can't co-install
nuscenes-devkit. A common example istrackeval(HOTA / CLEAR / Identity tracking metrics, JonathonLuiten/TrackEval and its PyPI republish). The current PyPItrackeval==1.3.0declares:Combined with
nuscenes-devkit'snumpy<2.0.0, the intersection is empty on any Python ≥ 3.9 and pip refuses to resolve. The runtime is actually fine (forcing both packages together withnumpy==1.26.4works), so the conflict is purely a metadata one — but it still blocks cleanpip installin CI for any project that needs both libraries.Proposed change
Replace
with
in
setup/requirements/requirements_base.txt.If you'd prefer a more conservative bump (e.g.
numpy>=1.22.0,<3.0.0) to leave room for a future NumPy 3.x review, that also unblocks the resolver while keeping a forward-compat guardrail.Thanks for maintaining this!