[pypy-issue] Issue #3025: importing autograd module fails (pypy/pypy)

Jan at bitbucket.org Jan at bitbucket.org
Sun Jun 9 23:42:26 EDT 2019

New issue 3025: importing autograd module fails

Jan Vesely:

Python 3.6.1 (784b254d669919c872a505b807db8462b6140973, Apr 21 2019, 14:47:54)
[PyPy 7.1.1-beta0 with GCC 8.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
And now for something completely different: ``"messy" is not a judgement, but
just a fact of complicatedness''
>>>> import autograd
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/orome/.local/lib/pypy3.6/site-packages/autograd/__init__.py", line 2, in <module>
    from .differential_operators import (
  File "/home/orome/.local/lib/pypy3.6/site-packages/autograd/differential_operators.py", line 12, in <module>
    import autograd.numpy as np
  File "/home/orome/.local/lib/pypy3.6/site-packages/autograd/numpy/__init__.py", line 5, in <module>
    from . import numpy_vjps
  File "/home/orome/.local/lib/pypy3.6/site-packages/autograd/numpy/numpy_vjps.py", line 130, in <module>
    defvjp(anp.where, None,
AttributeError: module 'autograd.numpy.numpy_wrapper' has no attribute 'where'

the function is exported in this way:

def wrap_namespace(old, new):
    unchanged_types = {float, int, type(None), type}
    int_types = {_np.int, _np.int8, _np.int16, _np.int32, _np.int64, _np.integer}
    function_types = {_np.ufunc, types.FunctionType, types.BuiltinFunctionType}
    for name, obj in old.items():
        if obj in notrace_functions:
            new[name] = notrace_primitive(obj)
        elif type(obj) in function_types:
            new[name] = primitive(obj)
        elif type(obj) is type and obj in int_types:
            new[name] = wrap_intdtype(obj)
        elif type(obj) in unchanged_types:
            new[name] = obj

wrap_namespace(_np.__dict__, globals())

More information about the pypy-issue mailing list