[Numpy-discussion] python 3.8: heads up: numpy/ma/core.py causes warning that breaks numpy detection in boost build

Andras Deak deak.andris at gmail.com
Fri Mar 1 05:46:55 EST 2019


On Fri, Mar 1, 2019 at 11:24 AM <balducci at units.it> wrote:
> python-3.8.0 (alpha) emits the following warning on numpy/ma/core.py
> (verified up to official 1.16.2):
>
>     ----8<----
>     /usr/python3/site_python3/lib64/numpy.egg/numpy/ma/core.py:4466: SyntaxWarning: "is" with a literal. Did you mean "=="?
>       if self.shape is ():
>     /usr/python3/site_python3/lib64/numpy.egg/numpy/ma/core.py:4466: SyntaxWarning: "is" with a literal. Did you mean "=="?
>       if self.shape is ():
>     /usr/python3/site_python3/lib64/numpy.egg/numpy/core/include
>     ---->8----
Hi,

I believe the warning is really helpful, testing for an empty tuple
with `is` probably only works because of a CPython implementation
detail (namely that the empty tuple is interned by the interpreter).
In other words, this seems like a bug which is fixed by using ==
instead.
Regards,

András


>
>
> In turn, this breaks boost's numpy detection, which is done with:
>
> ----8<----
> notice: [python-cfg] running command '/usr/python3/bin/python -c "import sys; sys.stderr = sys.stdout; import numpy; print(numpy.get_include())"'
> ---->8----
>
> and thus produces an unusable include path (containing the warning
> message from python)
>
> The following:
>
>     ----8<----
>     *** numpy/ma/core.py.PYTHON_3_8_COMPAT      Wed Feb 27 12:45:06 2019
>     --- numpy/ma/core.py        Wed Feb 27 12:45:06 2019
>     ***************
>     *** 4463,4469 ****
>               if m is nomask:
>                   # compare to _count_reduce_items in _methods.py
>
>     !             if self.shape is ():
>                       if axis not in (None, 0):
>                           raise np.AxisError(axis=axis, ndim=self.ndim)
>                       return 1
>     --- 4463,4469 ----
>               if m is nomask:
>                   # compare to _count_reduce_items in _methods.py
>
>     !             if self.shape == ():
>                       if axis not in (None, 0):
>                           raise np.AxisError(axis=axis, ndim=self.ndim)
>                       return 1
>     ---->8----
>
> fixes everything for me
>
> thanks
> ciao
> -g
>
> _______________________________________________
> NumPy-Discussion mailing list
> NumPy-Discussion at python.org
> https://mail.python.org/mailman/listinfo/numpy-discussion


More information about the NumPy-Discussion mailing list