bjodah/chempy

New numpy error on import

hepcat72 opened this issue · 6 comments

I just ran into a chempy-related import error when I attempted to add a django migration. The model being migrated has a chempy Substance import and the migrations check on github raises the following exception:

  File "/home/runner/work/tracebase/tracebase/DataRepo/models/utilities.py", line 5, in <module>
    from chempy import Substance
  File "/opt/hostedtoolcache/Python/3.9.19/x64/lib/python3.9/site-packages/chempy/__init__.py", line 9, in <module>
    from .chemistry import (
  File "/opt/hostedtoolcache/Python/3.9.19/x64/lib/python3.9/site-packages/chempy/chemistry.py", line 22, in <module>
    from .units import default_units, is_quantity, unit_of, to_unitless
  File "/opt/hostedtoolcache/Python/3.9.19/x64/lib/python3.9/site-packages/chempy/units.py", line 42, in <module>
    _patch_quantities(pq)
  File "/opt/hostedtoolcache/Python/3.9.19/x64/lib/python3.9/site-packages/chempy/util/_quantities.py", line 65, in _patch_quantities
    if (-a).uncertainty[0] != a.uncertainty[0]:
  File "/opt/hostedtoolcache/Python/3.9.19/x64/lib/python3.9/site-packages/quantities/uncertainquantity.py", line 132, in __neg__
    return self*-1
  File "/opt/hostedtoolcache/Python/3.9.19/x64/lib/python3.9/site-packages/quantities/uncertainquantity.py", line 121, in __mul__
    other = np.array(other, copy=False, subok=True)
ValueError: Unable to avoid copy while creating an array as requested.
If using `np.array(obj, copy=False)` replace it with `np.asarray(obj)` to allow a copy when needed (no behavior change in NumPy 1.x).
For more details, see https://numpy.org/devdocs/numpy_2_0_migration_guide.html#adapting-to-changes-in-the-copy-keyword.

I tried updating to chempy 0.9.0 (from 0.8.3), but it still produces the same exception.

Thank you for reporting this, I can reproduce the error locally. It looks like the problem might be with https://github.com/python-quantities/python-quantities. I'll see if I can create a reproducer and report upstream.

I just downgraded numpy to 1.26.4 (last stable version before 2.x), which fixes our current issue. There are migration notes for numpy 2.x.

Looks like the numpy 2.0.0 release was yesterday.

Yes, I guess that the quantities package isn't as popular as it once was and is now lagging behind. Hopefully the fix will be small.

@hepcat72 @bjodah, thanks! (our CI in a project depending on chempy also stopped working yesterday)