chore: update requirements files for latest possible python versions#3739
Conversation
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files🚀 New features to boost your workflow:
|
|
The documentation preview is ready to be viewed at http://preview.awkward-array.org.s3-website.us-east-1.amazonaws.com/PR3739 |
|
Since Ianna is on vacation and it's a non-controversial change, I'd say you can go ahead and merge it. |
ianna
left a comment
There was a problem hiding this comment.
Both pandas and pyarrow frequently introduce breaking changes, especially around I/O behavior, column projection, and nested data handling. These changes can affect not only our documentation builds, but also our tests, examples, user workflows, and downstream integrations. To avoid unexpected breakages across the entire project, I suggest we take a more cautious approach to version bumps: pin or tightly constrain these dependencies, and test upgrades thoroughly before adopting them. This will help maintain stability and reproducibility across the whole ecosystem.
| jax[cpu]>=0.2.15;sys_platform != "win32" | ||
| numba>=0.50.0;sys_platform != "win32" and python_version < "3.14" | ||
| numexpr>=2.7 | ||
| pandas>=0.24.0;sys_platform != "win32" | ||
| pyarrow>=12.0.0;sys_platform != "win32" |
There was a problem hiding this comment.
@ikrommyd - have you checked which versions of the packages are pulled in with these relaxed conditions? Thanks.
There was a problem hiding this comment.
Well the latest on my system naturally. So that would be pyarrow 22 for example.
There was a problem hiding this comment.
The restriction was only on the Python version, not on package versions. These were just in place because there where no wheels for 3.13/3.14 at the time, so it made sense to remove them. We could additionally add an upper bound on package versions if you think they are needed.
There was a problem hiding this comment.
Yeah for 3.15 I guess for when that comes out. We will touch this file again to remove the numba restriction too so it can be done then.
There was a problem hiding this comment.
The restriction was only on the Python version, not on package versions. These were just in place because there where no wheels for 3.13/3.14 at the time, so it made sense to remove them. We could additionally add an upper bound on package versions if you think they are needed.
That was my question - have the changes been tested locally? Thanks.
There was a problem hiding this comment.
Yeah, locally, and most importantly, they're also being tested in the CI. We added this so that the integration tests (which I'm working on in scikit-hep/integration-tests#13) were a bit more comprehensive.
There was a problem hiding this comment.
Here's the log with 3.13 and then with 3.14 for reference if you want it on fresh environments.
~ via v0.56.0
❯ uv venv -p3.13
Using CPython 3.13.9 interpreter at: /opt/homebrew/opt/python@3.13/bin/python3.13
Creating virtual environment at: .venv
Activate with: source .venv/bin/activate
~ via v0.56.0
❯ source .venv/bin/activate
~ via v3.13.9 (iason) via v0.56.0
❯ cd awkward
/Users/iason/work/pyhep_dev/awkward
awkward on main [?] is v2.8.10 via v3.13.9 (iason)
❯ uv pip install -r requirements-test-full.txt
Using Python 3.13.9 environment at: /Users/iason/.venv
Resolved 31 packages in 1.13s
Prepared 7 packages in 6.26s
Installed 31 packages in 245ms
+ awkward==2.8.10
+ awkward-cpp==50
+ coverage==7.12.0
+ cramjam==2.11.0
+ execnet==2.1.2
+ fsspec==2025.10.0
+ iniconfig==2.3.0
+ jax==0.8.1
+ jaxlib==0.8.1
+ llvmlite==0.45.1
+ ml-dtypes==0.5.4
+ numba==0.62.1
+ numexpr==2.14.1
+ numpy==2.3.5
+ opt-einsum==3.4.0
+ packaging==25.0
+ pandas==2.3.3
+ pluggy==1.6.0
+ pyarrow==22.0.0
+ pygments==2.19.2
+ pytest==9.0.1
+ pytest-cov==7.0.0
+ pytest-xdist==3.8.0
+ python-dateutil==2.9.0.post0
+ pytz==2025.2
+ safetensors==0.7.0
+ scipy==1.16.3
+ six==1.17.0
+ tzdata==2025.2
+ uproot==5.6.8
+ xxhash==3.6.0
awkward on main [?] is v2.8.10 via v3.13.9 (iason) took 7s
❯ deactivate
awkward on main [?] is v2.8.10 via v3.14.0
❯ cd
~ via v0.56.0
❯ rm -rf .venv
~ via v0.56.0
❯ uv venv -p3.14
Using CPython 3.14.0 interpreter at: /opt/homebrew/opt/python@3.14/bin/python3.14
Creating virtual environment at: .venv
Activate with: source .venv/bin/activate
~ via v0.56.0
❯ source .venv/bin/activate
~ via v3.14.0 (iason) via v0.56.0
❯ cd awkward
/Users/iason/work/pyhep_dev/awkward
awkward on main [?] is v2.8.10 via v3.14.0 (iason)
❯ uv pip install -r requirements-test-full.txt
Using Python 3.14.0 environment at: /Users/iason/.venv
Resolved 29 packages in 181ms
Prepared 6 packages in 2.79s
Installed 29 packages in 160ms
+ awkward==2.8.10
+ awkward-cpp==50
+ coverage==7.12.0
+ cramjam==2.11.0
+ execnet==2.1.2
+ fsspec==2025.10.0
+ iniconfig==2.3.0
+ jax==0.8.1
+ jaxlib==0.8.1
+ ml-dtypes==0.5.4
+ numexpr==2.14.1
+ numpy==2.3.5
+ opt-einsum==3.4.0
+ packaging==25.0
+ pandas==2.3.3
+ pluggy==1.6.0
+ pyarrow==22.0.0
+ pygments==2.19.2
+ pytest==9.0.1
+ pytest-cov==7.0.0
+ pytest-xdist==3.8.0
+ python-dateutil==2.9.0.post0
+ pytz==2025.2
+ safetensors==0.7.0
+ scipy==1.16.3
+ six==1.17.0
+ tzdata==2025.2
+ uproot==5.6.8
+ xxhash==3.6.0
There was a problem hiding this comment.
Thanks for approving and merging this PR - it’s good to see Awkward moving toward Python 3.14 compatibility. At the same time, Numba features are critical for many workflows, and users may be confused if they upgrade and find those features unavailable. To avoid surprises, could we add a clear compatibility notice and CI safeguards for Python 3.14? And for future PRs that affect core dependencies or Python version support, let’s agree to discuss them before merging, so we balance flexibility with reproducibility.
As far as I'm aware, jax, numexpr, pandas, and pyarrow all have 3.14 wheels. Numba only has them in pre-release at the time of writing. The requirements files should be updated accordingly