Skip to content

Remove numpy <2.3 constraint to enable support for Python 3.14 #1434

@tomvothecoder

Description

@tomvothecoder

Version

2025.12.0

How did you install UXarray?

Conda

What happened?

Hi UXarray maintainers, I am trying to add support for Python 3.14 in a package called e3sm_diags (here).

In order to support Python 3.14, conda forces uxarray to downgrade from 2025.12.0 to <=2025.5.2.

Likely Root Cause

This is most likely because of the numpy <2.3 constraint in the conda-forge recipe here. The NumPy 2.3.0 release notes state that Python 3.14 support was added in that release.

uxarray=2025.5.2 was the last version without the numpy<2.3 constraint (here), which probably explains why conda installs it alongside Python 3.14.

Proposed Solution

Add support for numpy >2.3 (latest version is 2.4.0).

Notes

UXarray and E3SM Diags are both included in the E3SM Unified Environment, with the next release being around April 2026. The plan is to hopefully be able to support Python 3.14 in that version of E3SM Unified.

What did you expect to happen?

Python 3.14 should install with the latest version of uxarray.

Can you provide a MCVE to repoduce the bug?

$ conda create -c conda-forge -n uxr_py314 uxarray=2025.12.0 python=3.14  --dry-run

Channels:
 - conda-forge
Platform: linux-64
Collecting package metadata (repodata.json): done
Solving environment: failed

LibMambaUnsatisfiableError: Encountered problems while solving:
  - nothing provides _python_rc needed by python-3.14.0rc1-h4dad89b_2_cp314t

Could not solve for environment specs
The following packages are incompatible
├─ python 3.14**  is installable with the potential options
│  ├─ python [3.14.0|3.14.1|3.14.2], which can be installed;
│  └─ python [3.14.0rc1|3.14.0rc2|3.14.0rc3] would require
│     └─ _python_rc, which does not exist (perhaps a missing channel);
└─ uxarray 2025.12.0**  is not installable because it requires
   ├─ numba but there are no viable options
   │  ├─ numba [0.36.1|0.36.2|0.38.0|0.38.1|0.40.0] would require
   │  │  └─ python >=3.5,<3.6.0a0 , which conflicts with any installable versions previously reported;
   │  ├─ numba [0.36.1|0.36.2|...|0.53.1] would require
   │  │  └─ python >=3.6,<3.7.0a0 , which conflicts with any installable versions previously reported;
   │  ├─ numba [0.38.0|0.38.1|...|0.47.0] would require
   │  │  └─ python >=2.7,<2.8.0a0 , which conflicts with any installable versions previously reported;
   │  ├─ numba [0.40.0|0.40.1|...|0.56.3] would require
   │  │  └─ python >=3.7,<3.8.0a0 , which conflicts with any installable versions previously reported;
   │  ├─ numba [0.47.0|0.48.0|...|0.58.1] would require
   │  │  └─ python >=3.8,<3.9.0a0 , which conflicts with any installable versions previously reported;
   │  ├─ numba [0.53.0|0.53.1|...|0.60.0] would require
   │  │  └─ python >=3.9,<3.10.0a0 , which conflicts with any installable versions previously reported;
   │  ├─ numba [0.55.0|0.55.1|...|0.63.1] would require
   │  │  └─ python >=3.10,<3.11.0a0 , which conflicts with any installable versions previously reported;
   │  ├─ numba [0.57.0|0.57.1|...|0.63.1] would require
   │  │  └─ python >=3.11,<3.12.0a0 , which conflicts with any installable versions previously reported;
   │  ├─ numba [0.59.0|0.59.1|...|0.63.1] would require
   │  │  └─ python_abi 3.12.* *_cp312, which requires
   │  │     └─ python 3.12.* *_cpython, which conflicts with any installable versions previously reported;
   │  ├─ numba [0.61.0|0.61.2|...|0.63.1] would require
   │  │  └─ python_abi 3.13.* *_cp313 but there are no viable options
   │  │     ├─ python_abi 3.13 would require
   │  │     │  └─ python 3.13.* *_cpython, which conflicts with any installable versions previously reported;
   │  │     └─ python_abi 3.13 would require
   │  │        └─ python 3.13.* *_cp313, which conflicts with any installable versions previously reported;
   │  └─ numba [0.63.0|0.63.1] would require
   │     └─ python_abi 3.14.* *_cp314, which requires
   │        └─ python 3.14.* *_cp314, which conflicts with any installable versions previously reported;
   └─ numpy <2.3  but there are no viable options
      ├─ numpy [1.10.4|1.11.0|...|1.9.3] would require
      │  └─ python [2.7* |>=2.7,<2.8.0a0 ], which conflicts with any installable versions previously reported;
      ├─ numpy [1.10.4|1.11.0|...|1.9.3] would require
      │  └─ python 3.4* , which conflicts with any installable versions previously reported;
      ├─ numpy [1.10.4|1.11.0|...|1.9.3] would require
      │  └─ python [3.5* |>=3.5,<3.6.0a0 ], which conflicts with any installable versions previously reported;
      ├─ numpy [1.10.4|1.11.3|...|1.9.3] would require
      │  └─ python 3.6* , which conflicts with any installable versions previously reported;
      ├─ numpy [1.11.3|1.12.1|...|1.9.3] would require
      │  └─ python >=3.6,<3.7.0a0 , which conflicts with any installable versions previously reported;
      ├─ numpy [1.11.3|1.14.5|...|1.9.3] would require
      │  └─ python >=3.7,<3.8.0a0 , which conflicts with any installable versions previously reported;
      ├─ numpy [1.14.6|1.16.5|...|1.24.4] would require
      │  └─ python >=3.8,<3.9.0a0 , which conflicts with any installable versions previously reported;
      ├─ numpy [1.18.1|1.18.4|...|1.19.5] would require
      │  └─ python_abi 3.6 *_pypy36_pp73, which requires
      │     └─ python 3.6.* *_73_pypy, which conflicts with any installable versions previously reported;
      ├─ numpy [1.19.2|1.19.4|...|2.0.2] would require
      │  └─ python >=3.9,<3.10.0a0 , which conflicts with any installable versions previously reported;
      ├─ numpy [1.19.5|1.20.0|...|1.21.5] would require
      │  └─ python_abi 3.7 *_pypy37_pp73, which requires
      │     └─ python 3.7.* *_73_pypy, which conflicts with any installable versions previously reported;
      ├─ numpy [1.19.5|1.20.3|...|1.24.1] would require
      │  └─ python_abi 3.8 *_pypy38_pp73, which requires
      │     └─ python 3.8.* *_73_pypy, which conflicts with any installable versions previously reported;
      ├─ numpy [1.19.5|1.20.3|...|1.26.4] would require
      │  ├─ pypy3.9 [>=7.3.13 |>=7.3.15 ], which requires
      │  │  └─ python 3.9.* *_73_pypy, which conflicts with any installable versions previously reported;
      │  └─ python_abi 3.9 *_pypy39_pp73, which requires
      │     └─ python 3.9.* *_73_pypy, which conflicts with any installable versions previously reported;
      ├─ numpy [1.21.3|1.21.4|...|2.2.6] would require
      │  └─ python >=3.10,<3.11.0a0 , which conflicts with any installable versions previously reported;
      ├─ numpy [1.23.4|1.23.5|...|2.2.6] would require
      │  └─ python >=3.11,<3.12.0a0 , which conflicts with any installable versions previously reported;
      ├─ numpy [1.24.2|1.24.3|1.24.4] would require
      │  └─ pypy3.8 >=7.3.11  but there are no viable options
      │     ├─ pypy3.8 7.3.11 would require
      │     │  └─ python 3.8.* *_73_pypy, which conflicts with any installable versions previously reported;
      │     └─ pypy3.8 7.3.11 would require
      │        └─ python 3.8.* *_7.3_pypy, which conflicts with any installable versions previously reported;
      ├─ numpy [1.24.2|1.24.3|...|1.26.0] would require
      │  └─ pypy3.9 [>=7.3.11 |>=7.3.12 ] but there are no viable options
      │     ├─ pypy3.9 [7.3.11|7.3.12|7.3.13|7.3.15|7.3.16], which cannot be installed (as previously explained);
      │     └─ pypy3.9 7.3.12 would require
      │        └─ python 3.9.* *_7.3_pypy, which conflicts with any installable versions previously reported;
      ├─ numpy [1.26.0|1.26.2|...|2.2.6] would require
      │  └─ python_abi 3.12.* *_cp312, which cannot be installed (as previously explained);
      ├─ numpy [2.1.0|2.1.1|...|2.2.6] would require
      │  └─ python_abi 3.13.* *_cp313, which cannot be installed (as previously explained);
      └─ numpy [2.1.2|2.1.3|...|2.2.6] would require
         └─ python_abi 3.13.* *_cp313t but there are no viable options
            ├─ python_abi 3.13, which cannot be installed (as previously explained);
            └─ python_abi 3.13 would require
               └─ python 3.13.* *_cp313t, which conflicts with any installable versions previously reported.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    Status

    📚 Backlog

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions