# Path: autograd/extend.py



import types
import warnings
import numpy as _np
import autograd.builtins as builtins
from autograd.extend import primitive, notrace_primitive
from numpy.core.einsumfunc import _parse_einsum_input
from __future__ import absolute_import

notrace_functions = [
    _np.ndim, _np.shape, _np.iscomplexobj, _np.result_type
]

def wrap_intdtype(cls):
    class IntdtypeSubclass(cls):
        __new__ = notrace_primitive(cls.__new__)
    return IntdtypeSubclass

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

# Path: autograd/extend.py



# Path: autograd/numpy/numpy_wrapper.py
import types
import warnings
import numpy as _np
import autograd.builtins as builtins
from autograd.extend import primitive, notrace_primitive
from numpy.core.einsumfunc import _parse_einsum_input

from __future__ import absolute_import

notrace_functions = [
    _np.ndim, _np.shape, _np.iscomplexobj, _np.result_type
]

def wrap_intdtype(cls):
    class IntdtypeSubclass(cls):
        __new__ = notrace_primitive(cls.__new__)
    return IntdtypeSubclass

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

            new[name] = primitive(obj)