rules_pycross
rules_pycross copied to clipboard
building [email protected] fails on numpy native libs for cross-compile to linux aarch64
I'm running into a pretty cryptic problem where building [email protected] fails with missing numpy C libraries even though building numpy directly succeeds. I have the pretty much same setup as the crossenv example but with a linux_aarch64 platform and toolchains defined, and have added pytensor to pyproject.toml/poetry.lock, re-generated the bzl lockfile. Then, building:
bazel build //deps:pytensor --platforms=linux_aarch64
Fails with error:
IMPORTANT: PLEASE READ THIS FOR ADVICE ON HOW TO SOLVE THIS ISSUE!
Importing the numpy C-extensions failed. This error can happen for
many reasons, often due to issues with your setup or how NumPy was
installed.
We have compiled some common reasons and troubleshooting tips at:
https://numpy.org/devdocs/user/troubleshooting-importerror.html
Please note and check the following:
* The Python version is: Python3.10 from "/var/folders/7p/mk19d_nn53b5s4wtmkllf4dr0000gn/T/wheelbuild7r8m1se5/env/bin/python"
* The NumPy version is: "1.25.2"
and make sure that they are the versions you expect.
Please carefully study the documentation linked above for further help.
Original error was: No module named 'numpy.core._multiarray_umath'
Even though this succeeds:
bazel build //deps:numpy --platforms=//:linux_aarch64
If it helps, here's the contents of numpy from the sandbox
❯ tree ./bazel-out/darwin-fastbuild/bin/deps/numpy_1.25.2
./bazel-out/darwin-fastbuild/bin/deps/numpy_1.22.3/site-packages/numpy ├── LICENSE.txt ├── __config__.py ├── __init__.cython-30.pxd ├── __init__.pxd ├── __init__.py ├── __init__.pyi ├── __pycache__ │ ├── __config__.cpython-39.opt-1.pyc │ ├── __config__.cpython-39.pyc │ ├── __init__.cpython-39.opt-1.pyc │ ├── __init__.cpython-39.pyc │ ├── __init__.py │ ├── _distributor_init.cpython-39.opt-1.pyc │ ├── _distributor_init.cpython-39.pyc │ ├── _globals.cpython-39.opt-1.pyc │ ├── _globals.cpython-39.pyc │ ├── _pytesttester.cpython-39.opt-1.pyc │ ├── _pytesttester.cpython-39.pyc │ ├── _version.cpython-39.opt-1.pyc │ ├── _version.cpython-39.pyc │ ├── conftest.cpython-39.opt-1.pyc │ ├── conftest.cpython-39.pyc │ ├── ctypeslib.cpython-39.opt-1.pyc │ ├── ctypeslib.cpython-39.pyc │ ├── dual.cpython-39.opt-1.pyc │ ├── dual.cpython-39.pyc │ ├── matlib.cpython-39.opt-1.pyc │ ├── matlib.cpython-39.pyc │ ├── setup.cpython-39.opt-1.pyc │ ├── setup.cpython-39.pyc │ ├── version.cpython-39.opt-1.pyc │ └── version.cpython-39.pyc ├── _distributor_init.py ├── _globals.py ├── _pytesttester.py ├── _pytesttester.pyi ├── _version.py ├── array_api │ ├── __init__.py │ ├── __pycache__ │ │ ├── __init__.cpython-39.opt-1.pyc │ │ ├── __init__.cpython-39.pyc │ │ ├── __init__.py │ │ ├── _array_object.cpython-39.opt-1.pyc │ │ ├── _array_object.cpython-39.pyc │ │ ├── _constants.cpython-39.opt-1.pyc │ │ ├── _constants.cpython-39.pyc │ │ ├── _creation_functions.cpython-39.opt-1.pyc │ │ ├── _creation_functions.cpython-39.pyc │ │ ├── _data_type_functions.cpython-39.opt-1.pyc │ │ ├── _data_type_functions.cpython-39.pyc │ │ ├── _dtypes.cpython-39.opt-1.pyc │ │ ├── _dtypes.cpython-39.pyc │ │ ├── _elementwise_functions.cpython-39.opt-1.pyc │ │ ├── _elementwise_functions.cpython-39.pyc │ │ ├── _manipulation_functions.cpython-39.opt-1.pyc │ │ ├── _manipulation_functions.cpython-39.pyc │ │ ├── _searching_functions.cpython-39.opt-1.pyc │ │ ├── _searching_functions.cpython-39.pyc │ │ ├── _set_functions.cpython-39.opt-1.pyc │ │ ├── _set_functions.cpython-39.pyc │ │ ├── _sorting_functions.cpython-39.opt-1.pyc │ │ ├── _sorting_functions.cpython-39.pyc │ │ ├── _statistical_functions.cpython-39.opt-1.pyc │ │ ├── _statistical_functions.cpython-39.pyc │ │ ├── _typing.cpython-39.opt-1.pyc │ │ ├── _typing.cpython-39.pyc │ │ ├── _utility_functions.cpython-39.opt-1.pyc │ │ ├── _utility_functions.cpython-39.pyc │ │ ├── linalg.cpython-39.opt-1.pyc │ │ ├── linalg.cpython-39.pyc │ │ ├── setup.cpython-39.opt-1.pyc │ │ └── setup.cpython-39.pyc │ ├── _array_object.py │ ├── _constants.py │ ├── _creation_functions.py │ ├── _data_type_functions.py │ ├── _dtypes.py │ ├── _elementwise_functions.py │ ├── _manipulation_functions.py │ ├── _searching_functions.py │ ├── _set_functions.py │ ├── _sorting_functions.py │ ├── _statistical_functions.py │ ├── _typing.py │ ├── _utility_functions.py │ ├── linalg.py │ ├── setup.py │ └── tests │ ├── __init__.py │ ├── __pycache__ │ │ ├── __init__.cpython-39.opt-1.pyc │ │ ├── __init__.cpython-39.pyc │ │ ├── __init__.py │ │ ├── test_array_object.cpython-39.opt-1.pyc │ │ ├── test_array_object.cpython-39.pyc │ │ ├── test_creation_functions.cpython-39.opt-1.pyc │ │ ├── test_creation_functions.cpython-39.pyc │ │ ├── test_elementwise_functions.cpython-39.opt-1.pyc │ │ ├── test_elementwise_functions.cpython-39.pyc │ │ ├── test_set_functions.cpython-39.opt-1.pyc │ │ ├── test_set_functions.cpython-39.pyc │ │ ├── test_sorting_functions.cpython-39.opt-1.pyc │ │ └── test_sorting_functions.cpython-39.pyc │ ├── test_array_object.py │ ├── test_creation_functions.py │ ├── test_elementwise_functions.py │ ├── test_set_functions.py │ └── test_sorting_functions.py ├── compat │ ├── __init__.py │ ├── __pycache__ │ │ ├── __init__.cpython-39.opt-1.pyc │ │ ├── __init__.cpython-39.pyc │ │ ├── __init__.py │ │ ├── _inspect.cpython-39.opt-1.pyc │ │ ├── _inspect.cpython-39.pyc │ │ ├── py3k.cpython-39.opt-1.pyc │ │ ├── py3k.cpython-39.pyc │ │ ├── setup.cpython-39.opt-1.pyc │ │ └── setup.cpython-39.pyc │ ├── _inspect.py │ ├── py3k.py │ ├── setup.py │ └── tests │ ├── __init__.py │ ├── __pycache__ │ │ ├── __init__.cpython-39.opt-1.pyc │ │ ├── __init__.cpython-39.pyc │ │ ├── __init__.py │ │ ├── test_compat.cpython-39.opt-1.pyc │ │ └── test_compat.cpython-39.pyc │ └── test_compat.py ├── conftest.py ├── core │ ├── __init__.py │ ├── __init__.pyi │ ├── __pycache__ │ │ ├── __init__.cpython-39.opt-1.pyc │ │ ├── __init__.cpython-39.pyc │ │ ├── __init__.py │ │ ├── _add_newdocs.cpython-39.opt-1.pyc │ │ ├── _add_newdocs.cpython-39.pyc │ │ ├── _add_newdocs_scalars.cpython-39.opt-1.pyc │ │ ├── _add_newdocs_scalars.cpython-39.pyc │ │ ├── _asarray.cpython-39.opt-1.pyc │ │ ├── _asarray.cpython-39.pyc │ │ ├── _dtype.cpython-39.opt-1.pyc │ │ ├── _dtype.cpython-39.pyc │ │ ├── _dtype_ctypes.cpython-39.opt-1.pyc │ │ ├── _dtype_ctypes.cpython-39.pyc │ │ ├── _exceptions.cpython-39.opt-1.pyc │ │ ├── _exceptions.cpython-39.pyc │ │ ├── _internal.cpython-39.opt-1.pyc │ │ ├── _internal.cpython-39.pyc │ │ ├── _machar.cpython-39.opt-1.pyc │ │ ├── _machar.cpython-39.pyc │ │ ├── _methods.cpython-39.opt-1.pyc │ │ ├── _methods.cpython-39.pyc │ │ ├── _string_helpers.cpython-39.opt-1.pyc │ │ ├── _string_helpers.cpython-39.pyc │ │ ├── _type_aliases.cpython-39.opt-1.pyc │ │ ├── _type_aliases.cpython-39.pyc │ │ ├── _ufunc_config.cpython-39.opt-1.pyc │ │ ├── _ufunc_config.cpython-39.pyc │ │ ├── arrayprint.cpython-39.opt-1.pyc │ │ ├── arrayprint.cpython-39.pyc │ │ ├── cversions.cpython-39.opt-1.pyc │ │ ├── cversions.cpython-39.pyc │ │ ├── defchararray.cpython-39.opt-1.pyc │ │ ├── defchararray.cpython-39.pyc │ │ ├── einsumfunc.cpython-39.opt-1.pyc │ │ ├── einsumfunc.cpython-39.pyc │ │ ├── fromnumeric.cpython-39.opt-1.pyc │ │ ├── fromnumeric.cpython-39.pyc │ │ ├── function_base.cpython-39.opt-1.pyc │ │ ├── function_base.cpython-39.pyc │ │ ├── generate_numpy_api.cpython-39.opt-1.pyc │ │ ├── generate_numpy_api.cpython-39.pyc │ │ ├── getlimits.cpython-39.opt-1.pyc │ │ ├── getlimits.cpython-39.pyc │ │ ├── memmap.cpython-39.opt-1.pyc │ │ ├── memmap.cpython-39.pyc │ │ ├── multiarray.cpython-39.opt-1.pyc │ │ ├── multiarray.cpython-39.pyc │ │ ├── numeric.cpython-39.opt-1.pyc │ │ ├── numeric.cpython-39.pyc │ │ ├── numerictypes.cpython-39.opt-1.pyc │ │ ├── numerictypes.cpython-39.pyc │ │ ├── overrides.cpython-39.opt-1.pyc │ │ ├── overrides.cpython-39.pyc │ │ ├── records.cpython-39.opt-1.pyc │ │ ├── records.cpython-39.pyc │ │ ├── setup.cpython-39.opt-1.pyc │ │ ├── setup.cpython-39.pyc │ │ ├── setup_common.cpython-39.opt-1.pyc │ │ ├── setup_common.cpython-39.pyc │ │ ├── shape_base.cpython-39.opt-1.pyc │ │ ├── shape_base.cpython-39.pyc │ │ ├── umath.cpython-39.opt-1.pyc │ │ ├── umath.cpython-39.pyc │ │ ├── umath_tests.cpython-39.opt-1.pyc │ │ └── umath_tests.cpython-39.pyc │ ├── _add_newdocs.py │ ├── _add_newdocs_scalars.py │ ├── _asarray.py │ ├── _asarray.pyi │ ├── _dtype.py │ ├── _dtype_ctypes.py │ ├── _exceptions.py │ ├── _internal.py │ ├── _internal.pyi │ ├── _machar.py │ ├── _methods.py │ ├── _multiarray_tests.cpython-39-aarch64-linux-gnu.so │ ├── _multiarray_umath.cpython-39-aarch64-linux-gnu.so │ ├── _operand_flag_tests.cpython-39-aarch64-linux-gnu.so │ ├── _rational_tests.cpython-39-aarch64-linux-gnu.so │ ├── _simd.cpython-39-aarch64-linux-gnu.so │ ├── _string_helpers.py │ ├── _struct_ufunc_tests.cpython-39-aarch64-linux-gnu.so │ ├── _type_aliases.py │ ├── _type_aliases.pyi │ ├── _ufunc_config.py │ ├── _ufunc_config.pyi │ ├── _umath_tests.cpython-39-aarch64-linux-gnu.so │ ├── arrayprint.py │ ├── arrayprint.pyi │ ├── cversions.py │ ├── defchararray.py │ ├── defchararray.pyi │ ├── einsumfunc.py │ ├── einsumfunc.pyi │ ├── fromnumeric.py │ ├── fromnumeric.pyi │ ├── function_base.py │ ├── function_base.pyi │ ├── generate_numpy_api.py │ ├── getlimits.py │ ├── getlimits.pyi │ ├── include │ │ └── numpy │ │ ├── __multiarray_api.h │ │ ├── __ufunc_api.h │ │ ├── _neighborhood_iterator_imp.h │ │ ├── _numpyconfig.h │ │ ├── arrayobject.h │ │ ├── arrayscalars.h │ │ ├── experimental_dtype_api.h │ │ ├── halffloat.h │ │ ├── libdivide │ │ │ ├── LICENSE.txt │ │ │ └── libdivide.h │ │ ├── multiarray_api.txt │ │ ├── ndarrayobject.h │ │ ├── ndarraytypes.h │ │ ├── noprefix.h │ │ ├── npy_1_7_deprecated_api.h │ │ ├── npy_3kcompat.h │ │ ├── npy_common.h │ │ ├── npy_cpu.h │ │ ├── npy_endian.h │ │ ├── npy_interrupt.h │ │ ├── npy_math.h │ │ ├── npy_no_deprecated_api.h │ │ ├── npy_os.h │ │ ├── numpyconfig.h │ │ ├── old_defines.h │ │ ├── oldnumeric.h │ │ ├── random │ │ │ ├── bitgen.h │ │ │ └── distributions.h │ │ ├── ufunc_api.txt │ │ ├── ufuncobject.h │ │ └── utils.h │ ├── lib │ │ ├── libnpymath.a │ │ └── npy-pkg-config │ │ ├── mlib.ini │ │ └── npymath.ini │ ├── memmap.py │ ├── memmap.pyi │ ├── multiarray.py │ ├── multiarray.pyi │ ├── numeric.py │ ├── numeric.pyi │ ├── numerictypes.py │ ├── numerictypes.pyi │ ├── overrides.py │ ├── records.py │ ├── records.pyi │ ├── setup.py │ ├── setup_common.py │ ├── shape_base.py │ ├── shape_base.pyi │ ├── tests │ │ ├── __init__.py │ │ ├── __pycache__ │ │ │ ├── __init__.cpython-39.opt-1.pyc │ │ │ ├── __init__.cpython-39.pyc │ │ │ ├── __init__.py │ │ │ ├── _locales.cpython-39.opt-1.pyc │ │ │ ├── _locales.cpython-39.pyc │ │ │ ├── test__exceptions.cpython-39.opt-1.pyc │ │ │ ├── test__exceptions.cpython-39.pyc │ │ │ ├── test_abc.cpython-39.opt-1.pyc │ │ │ ├── test_abc.cpython-39.pyc │ │ │ ├── test_api.cpython-39.opt-1.pyc │ │ │ ├── test_api.cpython-39.pyc │ │ │ ├── test_argparse.cpython-39.opt-1.pyc │ │ │ ├── test_argparse.cpython-39.pyc │ │ │ ├── test_array_coercion.cpython-39.opt-1.pyc │ │ │ ├── test_array_coercion.cpython-39.pyc │ │ │ ├── test_arraymethod.cpython-39.opt-1.pyc │ │ │ ├── test_arraymethod.cpython-39.pyc │ │ │ ├── test_arrayprint.cpython-39.opt-1.pyc │ │ │ ├── test_arrayprint.cpython-39.pyc │ │ │ ├── test_casting_unittests.cpython-39.opt-1.pyc │ │ │ ├── test_casting_unittests.cpython-39.pyc │ │ │ ├── test_conversion_utils.cpython-39.opt-1.pyc │ │ │ ├── test_conversion_utils.cpython-39.pyc │ │ │ ├── test_cpu_dispatcher.cpython-39.opt-1.pyc │ │ │ ├── test_cpu_dispatcher.cpython-39.pyc │ │ │ ├── test_cpu_features.cpython-39.opt-1.pyc │ │ │ ├── test_cpu_features.cpython-39.pyc │ │ │ ├── test_custom_dtypes.cpython-39.opt-1.pyc │ │ │ ├── test_custom_dtypes.cpython-39.pyc │ │ │ ├── test_cython.cpython-39.opt-1.pyc │ │ │ ├── test_cython.cpython-39.pyc │ │ │ ├── test_datetime.cpython-39.opt-1.pyc │ │ │ ├── test_datetime.cpython-39.pyc │ │ │ ├── test_defchararray.cpython-39.opt-1.pyc │ │ │ ├── test_defchararray.cpython-39.pyc │ │ │ ├── test_deprecations.cpython-39.opt-1.pyc │ │ │ ├── test_deprecations.cpython-39.pyc │ │ │ ├── test_dlpack.cpython-39.opt-1.pyc │ │ │ ├── test_dlpack.cpython-39.pyc │ │ │ ├── test_dtype.cpython-39.opt-1.pyc │ │ │ ├── test_dtype.cpython-39.pyc │ │ │ ├── test_einsum.cpython-39.opt-1.pyc │ │ │ ├── test_einsum.cpython-39.pyc │ │ │ ├── test_errstate.cpython-39.opt-1.pyc │ │ │ ├── test_errstate.cpython-39.pyc │ │ │ ├── test_extint128.cpython-39.opt-1.pyc │ │ │ ├── test_extint128.cpython-39.pyc │ │ │ ├── test_function_base.cpython-39.opt-1.pyc │ │ │ ├── test_function_base.cpython-39.pyc │ │ │ ├── test_getlimits.cpython-39.opt-1.pyc │ │ │ ├── test_getlimits.cpython-39.pyc │ │ │ ├── test_half.cpython-39.opt-1.pyc │ │ │ ├── test_half.cpython-39.pyc │ │ │ ├── test_hashtable.cpython-39.opt-1.pyc │ │ │ ├── test_hashtable.cpython-39.pyc │ │ │ ├── test_indexerrors.cpython-39.opt-1.pyc │ │ │ ├── test_indexerrors.cpython-39.pyc │ │ │ ├── test_indexing.cpython-39.opt-1.pyc │ │ │ ├── test_indexing.cpython-39.pyc │ │ │ ├── test_item_selection.cpython-39.opt-1.pyc │ │ │ ├── test_item_selection.cpython-39.pyc │ │ │ ├── test_limited_api.cpython-39.opt-1.pyc │ │ │ ├── test_limited_api.cpython-39.pyc │ │ │ ├── test_longdouble.cpython-39.opt-1.pyc │ │ │ ├── test_longdouble.cpython-39.pyc │ │ │ ├── test_machar.cpython-39.opt-1.pyc │ │ │ ├── test_machar.cpython-39.pyc │ │ │ ├── test_mem_overlap.cpython-39.opt-1.pyc │ │ │ ├── test_mem_overlap.cpython-39.pyc │ │ │ ├── test_mem_policy.cpython-39.opt-1.pyc │ │ │ ├── test_mem_policy.cpython-39.pyc │ │ │ ├── test_memmap.cpython-39.opt-1.pyc │ │ │ ├── test_memmap.cpython-39.pyc │ │ │ ├── test_multiarray.cpython-39.opt-1.pyc │ │ │ ├── test_multiarray.cpython-39.pyc │ │ │ ├── test_nditer.cpython-39.opt-1.pyc │ │ │ ├── test_nditer.cpython-39.pyc │ │ │ ├── test_numeric.cpython-39.opt-1.pyc │ │ │ ├── test_numeric.cpython-39.pyc │ │ │ ├── test_numerictypes.cpython-39.opt-1.pyc │ │ │ ├── test_numerictypes.cpython-39.pyc │ │ │ ├── test_overrides.cpython-39.opt-1.pyc │ │ │ ├── test_overrides.cpython-39.pyc │ │ │ ├── test_print.cpython-39.opt-1.pyc │ │ │ ├── test_print.cpython-39.pyc │ │ │ ├── test_protocols.cpython-39.opt-1.pyc │ │ │ ├── test_protocols.cpython-39.pyc │ │ │ ├── test_records.cpython-39.opt-1.pyc │ │ │ ├── test_records.cpython-39.pyc │ │ │ ├── test_regression.cpython-39.opt-1.pyc │ │ │ ├── test_regression.cpython-39.pyc │ │ │ ├── test_scalar_ctors.cpython-39.opt-1.pyc │ │ │ ├── test_scalar_ctors.cpython-39.pyc │ │ │ ├── test_scalar_methods.cpython-39.opt-1.pyc │ │ │ ├── test_scalar_methods.cpython-39.pyc │ │ │ ├── test_scalarbuffer.cpython-39.opt-1.pyc │ │ │ ├── test_scalarbuffer.cpython-39.pyc │ │ │ ├── test_scalarinherit.cpython-39.opt-1.pyc │ │ │ ├── test_scalarinherit.cpython-39.pyc │ │ │ ├── test_scalarmath.cpython-39.opt-1.pyc │ │ │ ├── test_scalarmath.cpython-39.pyc │ │ │ ├── test_scalarprint.cpython-39.opt-1.pyc │ │ │ ├── test_scalarprint.cpython-39.pyc │ │ │ ├── test_shape_base.cpython-39.opt-1.pyc │ │ │ ├── test_shape_base.cpython-39.pyc │ │ │ ├── test_simd.cpython-39.opt-1.pyc │ │ │ ├── test_simd.cpython-39.pyc │ │ │ ├── test_simd_module.cpython-39.opt-1.pyc │ │ │ ├── test_simd_module.cpython-39.pyc │ │ │ ├── test_ufunc.cpython-39.opt-1.pyc │ │ │ ├── test_ufunc.cpython-39.pyc │ │ │ ├── test_umath.cpython-39.opt-1.pyc │ │ │ ├── test_umath.cpython-39.pyc │ │ │ ├── test_umath_accuracy.cpython-39.opt-1.pyc │ │ │ ├── test_umath_accuracy.cpython-39.pyc │ │ │ ├── test_umath_complex.cpython-39.opt-1.pyc │ │ │ ├── test_umath_complex.cpython-39.pyc │ │ │ ├── test_unicode.cpython-39.opt-1.pyc │ │ │ └── test_unicode.cpython-39.pyc │ │ ├── _locales.py │ │ ├── data │ │ │ ├── astype_copy.pkl │ │ │ ├── generate_umath_validation_data.cpp │ │ │ ├── recarray_from_file.fits │ │ │ ├── umath-validation-set-README.txt │ │ │ ├── umath-validation-set-arccos.csv │ │ │ ├── umath-validation-set-arccosh.csv │ │ │ ├── umath-validation-set-arcsin.csv │ │ │ ├── umath-validation-set-arcsinh.csv │ │ │ ├── umath-validation-set-arctan.csv │ │ │ ├── umath-validation-set-arctanh.csv │ │ │ ├── umath-validation-set-cbrt.csv │ │ │ ├── umath-validation-set-cos.csv │ │ │ ├── umath-validation-set-cosh.csv │ │ │ ├── umath-validation-set-exp.csv │ │ │ ├── umath-validation-set-exp2.csv │ │ │ ├── umath-validation-set-expm1.csv │ │ │ ├── umath-validation-set-log.csv │ │ │ ├── umath-validation-set-log10.csv │ │ │ ├── umath-validation-set-log1p.csv │ │ │ ├── umath-validation-set-log2.csv │ │ │ ├── umath-validation-set-sin.csv │ │ │ ├── umath-validation-set-sinh.csv │ │ │ ├── umath-validation-set-tan.csv │ │ │ └── umath-validation-set-tanh.csv │ │ ├── examples │ │ │ ├── __init__.py │ │ │ ├── cython │ │ │ │ ├── __init__.py │ │ │ │ ├── __pycache__ │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── setup.cpython-39.opt-1.pyc │ │ │ │ │ └── setup.cpython-39.pyc │ │ │ │ ├── checks.pyx │ │ │ │ └── setup.py │ │ │ └── limited_api │ │ │ ├── __init__.py │ │ │ ├── __pycache__ │ │ │ │ ├── __init__.py │ │ │ │ ├── setup.cpython-39.opt-1.pyc │ │ │ │ └── setup.cpython-39.pyc │ │ │ ├── limited_api.c │ │ │ └── setup.py │ │ ├── test__exceptions.py │ │ ├── test_abc.py │ │ ├── test_api.py │ │ ├── test_argparse.py │ │ ├── test_array_coercion.py │ │ ├── test_arraymethod.py │ │ ├── test_arrayprint.py │ │ ├── test_casting_unittests.py │ │ ├── test_conversion_utils.py │ │ ├── test_cpu_dispatcher.py │ │ ├── test_cpu_features.py │ │ ├── test_custom_dtypes.py │ │ ├── test_cython.py │ │ ├── test_datetime.py │ │ ├── test_defchararray.py │ │ ├── test_deprecations.py │ │ ├── test_dlpack.py │ │ ├── test_dtype.py │ │ ├── test_einsum.py │ │ ├── test_errstate.py │ │ ├── test_extint128.py │ │ ├── test_function_base.py │ │ ├── test_getlimits.py │ │ ├── test_half.py │ │ ├── test_hashtable.py │ │ ├── test_indexerrors.py │ │ ├── test_indexing.py │ │ ├── test_item_selection.py │ │ ├── test_limited_api.py │ │ ├── test_longdouble.py │ │ ├── test_machar.py │ │ ├── test_mem_overlap.py │ │ ├── test_mem_policy.py │ │ ├── test_memmap.py │ │ ├── test_multiarray.py │ │ ├── test_nditer.py │ │ ├── test_numeric.py │ │ ├── test_numerictypes.py │ │ ├── test_overrides.py │ │ ├── test_print.py │ │ ├── test_protocols.py │ │ ├── test_records.py │ │ ├── test_regression.py │ │ ├── test_scalar_ctors.py │ │ ├── test_scalar_methods.py │ │ ├── test_scalarbuffer.py │ │ ├── test_scalarinherit.py │ │ ├── test_scalarmath.py │ │ ├── test_scalarprint.py │ │ ├── test_shape_base.py │ │ ├── test_simd.py │ │ ├── test_simd_module.py │ │ ├── test_ufunc.py │ │ ├── test_umath.py │ │ ├── test_umath_accuracy.py │ │ ├── test_umath_complex.py │ │ └── test_unicode.py │ ├── umath.py │ └── umath_tests.py ├── ctypeslib.py ├── ctypeslib.pyi ├── distutils │ ├── __config__.py │ ├── __init__.py │ ├── __init__.pyi │ ├── __pycache__ │ │ ├── __config__.cpython-39.opt-1.pyc │ │ ├── __config__.cpython-39.pyc │ │ ├── __init__.cpython-39.opt-1.pyc │ │ ├── __init__.cpython-39.pyc │ │ ├── __init__.py │ │ ├── _shell_utils.cpython-39.opt-1.pyc │ │ ├── _shell_utils.cpython-39.pyc │ │ ├── armccompiler.cpython-39.opt-1.pyc │ │ ├── armccompiler.cpython-39.pyc │ │ ├── ccompiler.cpython-39.opt-1.pyc │ │ ├── ccompiler.cpython-39.pyc │ │ ├── ccompiler_opt.cpython-39.opt-1.pyc │ │ ├── ccompiler_opt.cpython-39.pyc │ │ ├── conv_template.cpython-39.opt-1.pyc │ │ ├── conv_template.cpython-39.pyc │ │ ├── core.cpython-39.opt-1.pyc │ │ ├── core.cpython-39.pyc │ │ ├── cpuinfo.cpython-39.opt-1.pyc │ │ ├── cpuinfo.cpython-39.pyc │ │ ├── exec_command.cpython-39.opt-1.pyc │ │ ├── exec_command.cpython-39.pyc │ │ ├── extension.cpython-39.opt-1.pyc │ │ ├── extension.cpython-39.pyc │ │ ├── from_template.cpython-39.opt-1.pyc │ │ ├── from_template.cpython-39.pyc │ │ ├── intelccompiler.cpython-39.opt-1.pyc │ │ ├── intelccompiler.cpython-39.pyc │ │ ├── lib2def.cpython-39.opt-1.pyc │ │ ├── lib2def.cpython-39.pyc │ │ ├── line_endings.cpython-39.opt-1.pyc │ │ ├── line_endings.cpython-39.pyc │ │ ├── log.cpython-39.opt-1.pyc │ │ ├── log.cpython-39.pyc │ │ ├── mingw32ccompiler.cpython-39.opt-1.pyc │ │ ├── mingw32ccompiler.cpython-39.pyc │ │ ├── misc_util.cpython-39.opt-1.pyc │ │ ├── misc_util.cpython-39.pyc │ │ ├── msvc9compiler.cpython-39.opt-1.pyc │ │ ├── msvc9compiler.cpython-39.pyc │ │ ├── msvccompiler.cpython-39.opt-1.pyc │ │ ├── msvccompiler.cpython-39.pyc │ │ ├── npy_pkg_config.cpython-39.opt-1.pyc │ │ ├── npy_pkg_config.cpython-39.pyc │ │ ├── numpy_distribution.cpython-39.opt-1.pyc │ │ ├── numpy_distribution.cpython-39.pyc │ │ ├── pathccompiler.cpython-39.opt-1.pyc │ │ ├── pathccompiler.cpython-39.pyc │ │ ├── setup.cpython-39.opt-1.pyc │ │ ├── setup.cpython-39.pyc │ │ ├── system_info.cpython-39.opt-1.pyc │ │ ├── system_info.cpython-39.pyc │ │ ├── unixccompiler.cpython-39.opt-1.pyc │ │ └── unixccompiler.cpython-39.pyc │ ├── _shell_utils.py │ ├── armccompiler.py │ ├── ccompiler.py │ ├── ccompiler_opt.py │ ├── checks │ │ ├── cpu_asimd.c │ │ ├── cpu_asimddp.c │ │ ├── cpu_asimdfhm.c │ │ ├── cpu_asimdhp.c │ │ ├── cpu_avx.c │ │ ├── cpu_avx2.c │ │ ├── cpu_avx512_clx.c │ │ ├── cpu_avx512_cnl.c │ │ ├── cpu_avx512_icl.c │ │ ├── cpu_avx512_knl.c │ │ ├── cpu_avx512_knm.c │ │ ├── cpu_avx512_skx.c │ │ ├── cpu_avx512cd.c │ │ ├── cpu_avx512f.c │ │ ├── cpu_f16c.c │ │ ├── cpu_fma3.c │ │ ├── cpu_fma4.c │ │ ├── cpu_neon.c │ │ ├── cpu_neon_fp16.c │ │ ├── cpu_neon_vfpv4.c │ │ ├── cpu_popcnt.c │ │ ├── cpu_sse.c │ │ ├── cpu_sse2.c │ │ ├── cpu_sse3.c │ │ ├── cpu_sse41.c │ │ ├── cpu_sse42.c │ │ ├── cpu_ssse3.c │ │ ├── cpu_vsx.c │ │ ├── cpu_vsx2.c │ │ ├── cpu_vsx3.c │ │ ├── cpu_xop.c │ │ ├── extra_avx512bw_mask.c │ │ ├── extra_avx512dq_mask.c │ │ ├── extra_avx512f_reduce.c │ │ ├── extra_vsx_asm.c │ │ └── test_flags.c │ ├── command │ │ ├── __init__.py │ │ ├── __pycache__ │ │ │ ├── __init__.cpython-39.opt-1.pyc │ │ │ ├── __init__.cpython-39.pyc │ │ │ ├── __init__.py │ │ │ ├── autodist.cpython-39.opt-1.pyc │ │ │ ├── autodist.cpython-39.pyc │ │ │ ├── bdist_rpm.cpython-39.opt-1.pyc │ │ │ ├── bdist_rpm.cpython-39.pyc │ │ │ ├── build.cpython-39.opt-1.pyc │ │ │ ├── build.cpython-39.pyc │ │ │ ├── build_clib.cpython-39.opt-1.pyc │ │ │ ├── build_clib.cpython-39.pyc │ │ │ ├── build_ext.cpython-39.opt-1.pyc │ │ │ ├── build_ext.cpython-39.pyc │ │ │ ├── build_py.cpython-39.opt-1.pyc │ │ │ ├── build_py.cpython-39.pyc │ │ │ ├── build_scripts.cpython-39.opt-1.pyc │ │ │ ├── build_scripts.cpython-39.pyc │ │ │ ├── build_src.cpython-39.opt-1.pyc │ │ │ ├── build_src.cpython-39.pyc │ │ │ ├── config.cpython-39.opt-1.pyc │ │ │ ├── config.cpython-39.pyc │ │ │ ├── config_compiler.cpython-39.opt-1.pyc │ │ │ ├── config_compiler.cpython-39.pyc │ │ │ ├── develop.cpython-39.opt-1.pyc │ │ │ ├── develop.cpython-39.pyc │ │ │ ├── egg_info.cpython-39.opt-1.pyc │ │ │ ├── egg_info.cpython-39.pyc │ │ │ ├── install.cpython-39.opt-1.pyc │ │ │ ├── install.cpython-39.pyc │ │ │ ├── install_clib.cpython-39.opt-1.pyc │ │ │ ├── install_clib.cpython-39.pyc │ │ │ ├── install_data.cpython-39.opt-1.pyc │ │ │ ├── install_data.cpython-39.pyc │ │ │ ├── install_headers.cpython-39.opt-1.pyc │ │ │ ├── install_headers.cpython-39.pyc │ │ │ ├── sdist.cpython-39.opt-1.pyc │ │ │ └── sdist.cpython-39.pyc │ │ ├── autodist.py │ │ ├── bdist_rpm.py │ │ ├── build.py │ │ ├── build_clib.py │ │ ├── build_ext.py │ │ ├── build_py.py │ │ ├── build_scripts.py │ │ ├── build_src.py │ │ ├── config.py │ │ ├── config_compiler.py │ │ ├── develop.py │ │ ├── egg_info.py │ │ ├── install.py │ │ ├── install_clib.py │ │ ├── install_data.py │ │ ├── install_headers.py │ │ └── sdist.py │ ├── conv_template.py │ ├── core.py │ ├── cpuinfo.py │ ├── exec_command.py │ ├── extension.py │ ├── fcompiler │ │ ├── __init__.py │ │ ├── __pycache__ │ │ │ ├── __init__.cpython-39.opt-1.pyc │ │ │ ├── __init__.cpython-39.pyc │ │ │ ├── __init__.py │ │ │ ├── absoft.cpython-39.opt-1.pyc │ │ │ ├── absoft.cpython-39.pyc │ │ │ ├── arm.cpython-39.opt-1.pyc │ │ │ ├── arm.cpython-39.pyc │ │ │ ├── compaq.cpython-39.opt-1.pyc │ │ │ ├── compaq.cpython-39.pyc │ │ │ ├── environment.cpython-39.opt-1.pyc │ │ │ ├── environment.cpython-39.pyc │ │ │ ├── fujitsu.cpython-39.opt-1.pyc │ │ │ ├── fujitsu.cpython-39.pyc │ │ │ ├── g95.cpython-39.opt-1.pyc │ │ │ ├── g95.cpython-39.pyc │ │ │ ├── gnu.cpython-39.opt-1.pyc │ │ │ ├── gnu.cpython-39.pyc │ │ │ ├── hpux.cpython-39.opt-1.pyc │ │ │ ├── hpux.cpython-39.pyc │ │ │ ├── ibm.cpython-39.opt-1.pyc │ │ │ ├── ibm.cpython-39.pyc │ │ │ ├── intel.cpython-39.opt-1.pyc │ │ │ ├── intel.cpython-39.pyc │ │ │ ├── lahey.cpython-39.opt-1.pyc │ │ │ ├── lahey.cpython-39.pyc │ │ │ ├── mips.cpython-39.opt-1.pyc │ │ │ ├── mips.cpython-39.pyc │ │ │ ├── nag.cpython-39.opt-1.pyc │ │ │ ├── nag.cpython-39.pyc │ │ │ ├── none.cpython-39.opt-1.pyc │ │ │ ├── none.cpython-39.pyc │ │ │ ├── nv.cpython-39.opt-1.pyc │ │ │ ├── nv.cpython-39.pyc │ │ │ ├── pathf95.cpython-39.opt-1.pyc │ │ │ ├── pathf95.cpython-39.pyc │ │ │ ├── pg.cpython-39.opt-1.pyc │ │ │ ├── pg.cpython-39.pyc │ │ │ ├── sun.cpython-39.opt-1.pyc │ │ │ ├── sun.cpython-39.pyc │ │ │ ├── vast.cpython-39.opt-1.pyc │ │ │ └── vast.cpython-39.pyc │ │ ├── absoft.py │ │ ├── arm.py │ │ ├── compaq.py │ │ ├── environment.py │ │ ├── fujitsu.py │ │ ├── g95.py │ │ ├── gnu.py │ │ ├── hpux.py │ │ ├── ibm.py │ │ ├── intel.py │ │ ├── lahey.py │ │ ├── mips.py │ │ ├── nag.py │ │ ├── none.py │ │ ├── nv.py │ │ ├── pathf95.py │ │ ├── pg.py │ │ ├── sun.py │ │ └── vast.py │ ├── from_template.py │ ├── intelccompiler.py │ ├── lib2def.py │ ├── line_endings.py │ ├── log.py │ ├── mingw │ │ └── gfortran_vs2003_hack.c │ ├── mingw32ccompiler.py │ ├── misc_util.py │ ├── msvc9compiler.py │ ├── msvccompiler.py │ ├── npy_pkg_config.py │ ├── numpy_distribution.py │ ├── pathccompiler.py │ ├── setup.py │ ├── system_info.py │ ├── tests │ │ ├── __init__.py │ │ ├── __pycache__ │ │ │ ├── __init__.cpython-39.opt-1.pyc │ │ │ ├── __init__.cpython-39.pyc │ │ │ ├── __init__.py │ │ │ ├── test_build_ext.cpython-39.opt-1.pyc │ │ │ ├── test_build_ext.cpython-39.pyc │ │ │ ├── test_ccompiler_opt.cpython-39.opt-1.pyc │ │ │ ├── test_ccompiler_opt.cpython-39.pyc │ │ │ ├── test_ccompiler_opt_conf.cpython-39.opt-1.pyc │ │ │ ├── test_ccompiler_opt_conf.cpython-39.pyc │ │ │ ├── test_exec_command.cpython-39.opt-1.pyc │ │ │ ├── test_exec_command.cpython-39.pyc │ │ │ ├── test_fcompiler.cpython-39.opt-1.pyc │ │ │ ├── test_fcompiler.cpython-39.pyc │ │ │ ├── test_fcompiler_gnu.cpython-39.opt-1.pyc │ │ │ ├── test_fcompiler_gnu.cpython-39.pyc │ │ │ ├── test_fcompiler_intel.cpython-39.opt-1.pyc │ │ │ ├── test_fcompiler_intel.cpython-39.pyc │ │ │ ├── test_fcompiler_nagfor.cpython-39.opt-1.pyc │ │ │ ├── test_fcompiler_nagfor.cpython-39.pyc │ │ │ ├── test_from_template.cpython-39.opt-1.pyc │ │ │ ├── test_from_template.cpython-39.pyc │ │ │ ├── test_log.cpython-39.opt-1.pyc │ │ │ ├── test_log.cpython-39.pyc │ │ │ ├── test_mingw32ccompiler.cpython-39.opt-1.pyc │ │ │ ├── test_mingw32ccompiler.cpython-39.pyc │ │ │ ├── test_misc_util.cpython-39.opt-1.pyc │ │ │ ├── test_misc_util.cpython-39.pyc │ │ │ ├── test_npy_pkg_config.cpython-39.opt-1.pyc │ │ │ ├── test_npy_pkg_config.cpython-39.pyc │ │ │ ├── test_shell_utils.cpython-39.opt-1.pyc │ │ │ ├── test_shell_utils.cpython-39.pyc │ │ │ ├── test_system_info.cpython-39.opt-1.pyc │ │ │ └── test_system_info.cpython-39.pyc │ │ ├── test_build_ext.py │ │ ├── test_ccompiler_opt.py │ │ ├── test_ccompiler_opt_conf.py │ │ ├── test_exec_command.py │ │ ├── test_fcompiler.py │ │ ├── test_fcompiler_gnu.py │ │ ├── test_fcompiler_intel.py │ │ ├── test_fcompiler_nagfor.py │ │ ├── test_from_template.py │ │ ├── test_log.py │ │ ├── test_mingw32ccompiler.py │ │ ├── test_misc_util.py │ │ ├── test_npy_pkg_config.py │ │ ├── test_shell_utils.py │ │ └── test_system_info.py │ └── unixccompiler.py ├── doc │ ├── __init__.py │ ├── __pycache__ │ │ ├── __init__.cpython-39.opt-1.pyc │ │ ├── __init__.cpython-39.pyc │ │ ├── __init__.py │ │ ├── constants.cpython-39.opt-1.pyc │ │ ├── constants.cpython-39.pyc │ │ ├── ufuncs.cpython-39.opt-1.pyc │ │ └── ufuncs.cpython-39.pyc │ ├── constants.py │ └── ufuncs.py ├── dual.py ├── f2py │ ├── __init__.py │ ├── __init__.pyi │ ├── __main__.py │ ├── __pycache__ │ │ ├── __init__.cpython-39.opt-1.pyc │ │ ├── __init__.cpython-39.pyc │ │ ├── __init__.py │ │ ├── __main__.cpython-39.opt-1.pyc │ │ ├── __main__.cpython-39.pyc │ │ ├── __version__.cpython-39.opt-1.pyc │ │ ├── __version__.cpython-39.pyc │ │ ├── auxfuncs.cpython-39.opt-1.pyc │ │ ├── auxfuncs.cpython-39.pyc │ │ ├── capi_maps.cpython-39.opt-1.pyc │ │ ├── capi_maps.cpython-39.pyc │ │ ├── cb_rules.cpython-39.opt-1.pyc │ │ ├── cb_rules.cpython-39.pyc │ │ ├── cfuncs.cpython-39.opt-1.pyc │ │ ├── cfuncs.cpython-39.pyc │ │ ├── common_rules.cpython-39.opt-1.pyc │ │ ├── common_rules.cpython-39.pyc │ │ ├── crackfortran.cpython-39.opt-1.pyc │ │ ├── crackfortran.cpython-39.pyc │ │ ├── diagnose.cpython-39.opt-1.pyc │ │ ├── diagnose.cpython-39.pyc │ │ ├── f2py2e.cpython-39.opt-1.pyc │ │ ├── f2py2e.cpython-39.pyc │ │ ├── f2py_testing.cpython-39.opt-1.pyc │ │ ├── f2py_testing.cpython-39.pyc │ │ ├── f90mod_rules.cpython-39.opt-1.pyc │ │ ├── f90mod_rules.cpython-39.pyc │ │ ├── func2subr.cpython-39.opt-1.pyc │ │ ├── func2subr.cpython-39.pyc │ │ ├── rules.cpython-39.opt-1.pyc │ │ ├── rules.cpython-39.pyc │ │ ├── setup.cpython-39.opt-1.pyc │ │ ├── setup.cpython-39.pyc │ │ ├── symbolic.cpython-39.opt-1.pyc │ │ ├── symbolic.cpython-39.pyc │ │ ├── use_rules.cpython-39.opt-1.pyc │ │ └── use_rules.cpython-39.pyc │ ├── __version__.py │ ├── auxfuncs.py │ ├── capi_maps.py │ ├── cb_rules.py │ ├── cfuncs.py │ ├── common_rules.py │ ├── crackfortran.py │ ├── diagnose.py │ ├── f2py2e.py │ ├── f2py_testing.py │ ├── f90mod_rules.py │ ├── func2subr.py │ ├── rules.py │ ├── setup.py │ ├── src │ │ ├── fortranobject.c │ │ └── fortranobject.h │ ├── symbolic.py │ ├── tests │ │ ├── __init__.py │ │ ├── __pycache__ │ │ │ ├── __init__.cpython-39.opt-1.pyc │ │ │ ├── __init__.cpython-39.pyc │ │ │ ├── __init__.py │ │ │ ├── test_abstract_interface.cpython-39.opt-1.pyc │ │ │ ├── test_abstract_interface.cpython-39.pyc │ │ │ ├── test_array_from_pyobj.cpython-39.opt-1.pyc │ │ │ ├── test_array_from_pyobj.cpython-39.pyc │ │ │ ├── test_assumed_shape.cpython-39.opt-1.pyc │ │ │ ├── test_assumed_shape.cpython-39.pyc │ │ │ ├── test_block_docstring.cpython-39.opt-1.pyc │ │ │ ├── test_block_docstring.cpython-39.pyc │ │ │ ├── test_callback.cpython-39.opt-1.pyc │ │ │ ├── test_callback.cpython-39.pyc │ │ │ ├── test_common.cpython-39.opt-1.pyc │ │ │ ├── test_common.cpython-39.pyc │ │ │ ├── test_compile_function.cpython-39.opt-1.pyc │ │ │ ├── test_compile_function.cpython-39.pyc │ │ │ ├── test_crackfortran.cpython-39.opt-1.pyc │ │ │ ├── test_crackfortran.cpython-39.pyc │ │ │ ├── test_kind.cpython-39.opt-1.pyc │ │ │ ├── test_kind.cpython-39.pyc │ │ │ ├── test_mixed.cpython-39.opt-1.pyc │ │ │ ├── test_mixed.cpython-39.pyc │ │ │ ├── test_module_doc.cpython-39.opt-1.pyc │ │ │ ├── test_module_doc.cpython-39.pyc │ │ │ ├── test_parameter.cpython-39.opt-1.pyc │ │ │ ├── test_parameter.cpython-39.pyc │ │ │ ├── test_quoted_character.cpython-39.opt-1.pyc │ │ │ ├── test_quoted_character.cpython-39.pyc │ │ │ ├── test_regression.cpython-39.opt-1.pyc │ │ │ ├── test_regression.cpython-39.pyc │ │ │ ├── test_return_character.cpython-39.opt-1.pyc │ │ │ ├── test_return_character.cpython-39.pyc │ │ │ ├── test_return_complex.cpython-39.opt-1.pyc │ │ │ ├── test_return_complex.cpython-39.pyc │ │ │ ├── test_return_integer.cpython-39.opt-1.pyc │ │ │ ├── test_return_integer.cpython-39.pyc │ │ │ ├── test_return_logical.cpython-39.opt-1.pyc │ │ │ ├── test_return_logical.cpython-39.pyc │ │ │ ├── test_return_real.cpython-39.opt-1.pyc │ │ │ ├── test_return_real.cpython-39.pyc │ │ │ ├── test_semicolon_split.cpython-39.opt-1.pyc │ │ │ ├── test_semicolon_split.cpython-39.pyc │ │ │ ├── test_size.cpython-39.opt-1.pyc │ │ │ ├── test_size.cpython-39.pyc │ │ │ ├── test_string.cpython-39.opt-1.pyc │ │ │ ├── test_string.cpython-39.pyc │ │ │ ├── test_symbolic.cpython-39.opt-1.pyc │ │ │ ├── test_symbolic.cpython-39.pyc │ │ │ ├── util.cpython-39.opt-1.pyc │ │ │ └── util.cpython-39.pyc │ │ ├── src │ │ │ ├── array_from_pyobj │ │ │ │ └── wrapmodule.c │ │ │ ├── assumed_shape │ │ │ │ ├── foo_free.f90 │ │ │ │ ├── foo_mod.f90 │ │ │ │ ├── foo_use.f90 │ │ │ │ └── precision.f90 │ │ │ ├── common │ │ │ │ └── block.f │ │ │ ├── kind │ │ │ │ └── foo.f90 │ │ │ ├── mixed │ │ │ │ ├── foo.f │ │ │ │ ├── foo_fixed.f90 │ │ │ │ └── foo_free.f90 │ │ │ ├── module_data │ │ │ │ ├── mod.mod │ │ │ │ └── module_data_docstring.f90 │ │ │ ├── parameter │ │ │ │ ├── constant_both.f90 │ │ │ │ ├── constant_compound.f90 │ │ │ │ ├── constant_integer.f90 │ │ │ │ ├── constant_non_compound.f90 │ │ │ │ └── constant_real.f90 │ │ │ ├── regression │ │ │ │ └── inout.f90 │ │ │ ├── size │ │ │ │ └── foo.f90 │ │ │ └── string │ │ │ └── char.f90 │ │ ├── test_abstract_interface.py │ │ ├── test_array_from_pyobj.py │ │ ├── test_assumed_shape.py │ │ ├── test_block_docstring.py │ │ ├── test_callback.py │ │ ├── test_common.py │ │ ├── test_compile_function.py │ │ ├── test_crackfortran.py │ │ ├── test_kind.py │ │ ├── test_mixed.py │ │ ├── test_module_doc.py │ │ ├── test_parameter.py │ │ ├── test_quoted_character.py │ │ ├── test_regression.py │ │ ├── test_return_character.py │ │ ├── test_return_complex.py │ │ ├── test_return_integer.py │ │ ├── test_return_logical.py │ │ ├── test_return_real.py │ │ ├── test_semicolon_split.py │ │ ├── test_size.py │ │ ├── test_string.py │ │ ├── test_symbolic.py │ │ └── util.py │ └── use_rules.py ├── fft │ ├── __init__.py │ ├── __init__.pyi │ ├── __pycache__ │ │ ├── __init__.cpython-39.opt-1.pyc │ │ ├── __init__.cpython-39.pyc │ │ ├── __init__.py │ │ ├── _pocketfft.cpython-39.opt-1.pyc │ │ ├── _pocketfft.cpython-39.pyc │ │ ├── helper.cpython-39.opt-1.pyc │ │ ├── helper.cpython-39.pyc │ │ ├── setup.cpython-39.opt-1.pyc │ │ └── setup.cpython-39.pyc │ ├── _pocketfft.py │ ├── _pocketfft.pyi │ ├── _pocketfft_internal.cpython-39-aarch64-linux-gnu.so │ ├── helper.py │ ├── helper.pyi │ ├── setup.py │ └── tests │ ├── __init__.py │ ├── __pycache__ │ │ ├── __init__.cpython-39.opt-1.pyc │ │ ├── __init__.cpython-39.pyc │ │ ├── __init__.py │ │ ├── test_helper.cpython-39.opt-1.pyc │ │ ├── test_helper.cpython-39.pyc │ │ ├── test_pocketfft.cpython-39.opt-1.pyc │ │ └── test_pocketfft.cpython-39.pyc │ ├── test_helper.py │ └── test_pocketfft.py ├── lib │ ├── __init__.py │ ├── __init__.pyi │ ├── __pycache__ │ │ ├── __init__.cpython-39.opt-1.pyc │ │ ├── __init__.cpython-39.pyc │ │ ├── __init__.py │ │ ├── _datasource.cpython-39.opt-1.pyc │ │ ├── _datasource.cpython-39.pyc │ │ ├── _iotools.cpython-39.opt-1.pyc │ │ ├── _iotools.cpython-39.pyc │ │ ├── _version.cpython-39.opt-1.pyc │ │ ├── _version.cpython-39.pyc │ │ ├── arraypad.cpython-39.opt-1.pyc │ │ ├── arraypad.cpython-39.pyc │ │ ├── arraysetops.cpython-39.opt-1.pyc │ │ ├── arraysetops.cpython-39.pyc │ │ ├── arrayterator.cpython-39.opt-1.pyc │ │ ├── arrayterator.cpython-39.pyc │ │ ├── format.cpython-39.opt-1.pyc │ │ ├── format.cpython-39.pyc │ │ ├── function_base.cpython-39.opt-1.pyc │ │ ├── function_base.cpython-39.pyc │ │ ├── histograms.cpython-39.opt-1.pyc │ │ ├── histograms.cpython-39.pyc │ │ ├── index_tricks.cpython-39.opt-1.pyc │ │ ├── index_tricks.cpython-39.pyc │ │ ├── mixins.cpython-39.opt-1.pyc │ │ ├── mixins.cpython-39.pyc │ │ ├── nanfunctions.cpython-39.opt-1.pyc │ │ ├── nanfunctions.cpython-39.pyc │ │ ├── npyio.cpython-39.opt-1.pyc │ │ ├── npyio.cpython-39.pyc │ │ ├── polynomial.cpython-39.opt-1.pyc │ │ ├── polynomial.cpython-39.pyc │ │ ├── recfunctions.cpython-39.opt-1.pyc │ │ ├── recfunctions.cpython-39.pyc │ │ ├── scimath.cpython-39.opt-1.pyc │ │ ├── scimath.cpython-39.pyc │ │ ├── setup.cpython-39.opt-1.pyc │ │ ├── setup.cpython-39.pyc │ │ ├── shape_base.cpython-39.opt-1.pyc │ │ ├── shape_base.cpython-39.pyc │ │ ├── stride_tricks.cpython-39.opt-1.pyc │ │ ├── stride_tricks.cpython-39.pyc │ │ ├── twodim_base.cpython-39.opt-1.pyc │ │ ├── twodim_base.cpython-39.pyc │ │ ├── type_check.cpython-39.opt-1.pyc │ │ ├── type_check.cpython-39.pyc │ │ ├── ufunclike.cpython-39.opt-1.pyc │ │ ├── ufunclike.cpython-39.pyc │ │ ├── user_array.cpython-39.opt-1.pyc │ │ ├── user_array.cpython-39.pyc │ │ ├── utils.cpython-39.opt-1.pyc │ │ └── utils.cpython-39.pyc │ ├── _datasource.py │ ├── _iotools.py │ ├── _version.py │ ├── _version.pyi │ ├── arraypad.py │ ├── arraypad.pyi │ ├── arraysetops.py │ ├── arraysetops.pyi │ ├── arrayterator.py │ ├── arrayterator.pyi │ ├── format.py │ ├── format.pyi │ ├── function_base.py │ ├── function_base.pyi │ ├── histograms.py │ ├── histograms.pyi │ ├── index_tricks.py │ ├── index_tricks.pyi │ ├── mixins.py │ ├── mixins.pyi │ ├── nanfunctions.py │ ├── nanfunctions.pyi │ ├── npyio.py │ ├── npyio.pyi │ ├── polynomial.py │ ├── polynomial.pyi │ ├── recfunctions.py │ ├── scimath.py │ ├── scimath.pyi │ ├── setup.py │ ├── shape_base.py │ ├── shape_base.pyi │ ├── stride_tricks.py │ ├── stride_tricks.pyi │ ├── tests │ │ ├── __init__.py │ │ ├── __pycache__ │ │ │ ├── __init__.cpython-39.opt-1.pyc │ │ │ ├── __init__.cpython-39.pyc │ │ │ ├── __init__.py │ │ │ ├── test__datasource.cpython-39.opt-1.pyc │ │ │ ├── test__datasource.cpython-39.pyc │ │ │ ├── test__iotools.cpython-39.opt-1.pyc │ │ │ ├── test__iotools.cpython-39.pyc │ │ │ ├── test__version.cpython-39.opt-1.pyc │ │ │ ├── test__version.cpython-39.pyc │ │ │ ├── test_arraypad.cpython-39.opt-1.pyc │ │ │ ├── test_arraypad.cpython-39.pyc │ │ │ ├── test_arraysetops.cpython-39.opt-1.pyc │ │ │ ├── test_arraysetops.cpython-39.pyc │ │ │ ├── test_arrayterator.cpython-39.opt-1.pyc │ │ │ ├── test_arrayterator.cpython-39.pyc │ │ │ ├── test_financial_expired.cpython-39.opt-1.pyc │ │ │ ├── test_financial_expired.cpython-39.pyc │ │ │ ├── test_format.cpython-39.opt-1.pyc │ │ │ ├── test_format.cpython-39.pyc │ │ │ ├── test_function_base.cpython-39.opt-1.pyc │ │ │ ├── test_function_base.cpython-39.pyc │ │ │ ├── test_histograms.cpython-39.opt-1.pyc │ │ │ ├── test_histograms.cpython-39.pyc │ │ │ ├── test_index_tricks.cpython-39.opt-1.pyc │ │ │ ├── test_index_tricks.cpython-39.pyc │ │ │ ├── test_io.cpython-39.opt-1.pyc │ │ │ ├── test_io.cpython-39.pyc │ │ │ ├── test_mixins.cpython-39.opt-1.pyc │ │ │ ├── test_mixins.cpython-39.pyc │ │ │ ├── test_nanfunctions.cpython-39.opt-1.pyc │ │ │ ├── test_nanfunctions.cpython-39.pyc │ │ │ ├── test_packbits.cpython-39.opt-1.pyc │ │ │ ├── test_packbits.cpython-39.pyc │ │ │ ├── test_polynomial.cpython-39.opt-1.pyc │ │ │ ├── test_polynomial.cpython-39.pyc │ │ │ ├── test_recfunctions.cpython-39.opt-1.pyc │ │ │ ├── test_recfunctions.cpython-39.pyc │ │ │ ├── test_regression.cpython-39.opt-1.pyc │ │ │ ├── test_regression.cpython-39.pyc │ │ │ ├── test_shape_base.cpython-39.opt-1.pyc │ │ │ ├── test_shape_base.cpython-39.pyc │ │ │ ├── test_stride_tricks.cpython-39.opt-1.pyc │ │ │ ├── test_stride_tricks.cpython-39.pyc │ │ │ ├── test_twodim_base.cpython-39.opt-1.pyc │ │ │ ├── test_twodim_base.cpython-39.pyc │ │ │ ├── test_type_check.cpython-39.opt-1.pyc │ │ │ ├── test_type_check.cpython-39.pyc │ │ │ ├── test_ufunclike.cpython-39.opt-1.pyc │ │ │ ├── test_ufunclike.cpython-39.pyc │ │ │ ├── test_utils.cpython-39.opt-1.pyc │ │ │ └── test_utils.cpython-39.pyc │ │ ├── data │ │ │ ├── py2-objarr.npy │ │ │ ├── py2-objarr.npz │ │ │ ├── py3-objarr.npy │ │ │ ├── py3-objarr.npz │ │ │ ├── python3.npy │ │ │ └── win64python2.npy │ │ ├── test__datasource.py │ │ ├── test__iotools.py │ │ ├── test__version.py │ │ ├── test_arraypad.py │ │ ├── test_arraysetops.py │ │ ├── test_arrayterator.py │ │ ├── test_financial_expired.py │ │ ├── test_format.py │ │ ├── test_function_base.py │ │ ├── test_histograms.py │ │ ├── test_index_tricks.py │ │ ├── test_io.py │ │ ├── test_mixins.py │ │ ├── test_nanfunctions.py │ │ ├── test_packbits.py │ │ ├── test_polynomial.py │ │ ├── test_recfunctions.py │ │ ├── test_regression.py │ │ ├── test_shape_base.py │ │ ├── test_stride_tricks.py │ │ ├── test_twodim_base.py │ │ ├── test_type_check.py │ │ ├── test_ufunclike.py │ │ └── test_utils.py │ ├── twodim_base.py │ ├── twodim_base.pyi │ ├── type_check.py │ ├── type_check.pyi │ ├── ufunclike.py │ ├── ufunclike.pyi │ ├── user_array.py │ ├── utils.py │ └── utils.pyi ├── linalg │ ├── __init__.py │ ├── __init__.pyi │ ├── __pycache__ │ │ ├── __init__.cpython-39.opt-1.pyc │ │ ├── __init__.cpython-39.pyc │ │ ├── __init__.py │ │ ├── linalg.cpython-39.opt-1.pyc │ │ ├── linalg.cpython-39.pyc │ │ ├── setup.cpython-39.opt-1.pyc │ │ └── setup.cpython-39.pyc │ ├── _umath_linalg.cpython-39-aarch64-linux-gnu.so │ ├── lapack_lite.cpython-39-aarch64-linux-gnu.so │ ├── linalg.py │ ├── linalg.pyi │ ├── setup.py │ └── tests │ ├── __init__.py │ ├── __pycache__ │ │ ├── __init__.cpython-39.opt-1.pyc │ │ ├── __init__.cpython-39.pyc │ │ ├── __init__.py │ │ ├── test_deprecations.cpython-39.opt-1.pyc │ │ ├── test_deprecations.cpython-39.pyc │ │ ├── test_linalg.cpython-39.opt-1.pyc │ │ ├── test_linalg.cpython-39.pyc │ │ ├── test_regression.cpython-39.opt-1.pyc │ │ └── test_regression.cpython-39.pyc │ ├── test_deprecations.py │ ├── test_linalg.py │ └── test_regression.py ├── ma │ ├── __init__.py │ ├── __init__.pyi │ ├── __pycache__ │ │ ├── __init__.cpython-39.opt-1.pyc │ │ ├── __init__.cpython-39.pyc │ │ ├── __init__.py │ │ ├── bench.cpython-39.opt-1.pyc │ │ ├── bench.cpython-39.pyc │ │ ├── core.cpython-39.opt-1.pyc │ │ ├── core.cpython-39.pyc │ │ ├── extras.cpython-39.opt-1.pyc │ │ ├── extras.cpython-39.pyc │ │ ├── mrecords.cpython-39.opt-1.pyc │ │ ├── mrecords.cpython-39.pyc │ │ ├── setup.cpython-39.opt-1.pyc │ │ ├── setup.cpython-39.pyc │ │ ├── testutils.cpython-39.opt-1.pyc │ │ ├── testutils.cpython-39.pyc │ │ ├── timer_comparison.cpython-39.opt-1.pyc │ │ └── timer_comparison.cpython-39.pyc │ ├── bench.py │ ├── core.py │ ├── core.pyi │ ├── extras.py │ ├── extras.pyi │ ├── mrecords.py │ ├── mrecords.pyi │ ├── setup.py │ ├── tests │ │ ├── __init__.py │ │ ├── __pycache__ │ │ │ ├── __init__.cpython-39.opt-1.pyc │ │ │ ├── __init__.cpython-39.pyc │ │ │ ├── __init__.py │ │ │ ├── test_core.cpython-39.opt-1.pyc │ │ │ ├── test_core.cpython-39.pyc │ │ │ ├── test_deprecations.cpython-39.opt-1.pyc │ │ │ ├── test_deprecations.cpython-39.pyc │ │ │ ├── test_extras.cpython-39.opt-1.pyc │ │ │ ├── test_extras.cpython-39.pyc │ │ │ ├── test_mrecords.cpython-39.opt-1.pyc │ │ │ ├── test_mrecords.cpython-39.pyc │ │ │ ├── test_old_ma.cpython-39.opt-1.pyc │ │ │ ├── test_old_ma.cpython-39.pyc │ │ │ ├── test_regression.cpython-39.opt-1.pyc │ │ │ ├── test_regression.cpython-39.pyc │ │ │ ├── test_subclassing.cpython-39.opt-1.pyc │ │ │ └── test_subclassing.cpython-39.pyc │ │ ├── test_core.py │ │ ├── test_deprecations.py │ │ ├── test_extras.py │ │ ├── test_mrecords.py │ │ ├── test_old_ma.py │ │ ├── test_regression.py │ │ └── test_subclassing.py │ ├── testutils.py │ └── timer_comparison.py ├── matlib.py ├── matrixlib │ ├── __init__.py │ ├── __init__.pyi │ ├── __pycache__ │ │ ├── __init__.cpython-39.opt-1.pyc │ │ ├── __init__.cpython-39.pyc │ │ ├── __init__.py │ │ ├── defmatrix.cpython-39.opt-1.pyc │ │ ├── defmatrix.cpython-39.pyc │ │ ├── setup.cpython-39.opt-1.pyc │ │ └── setup.cpython-39.pyc │ ├── defmatrix.py │ ├── defmatrix.pyi │ ├── setup.py │ └── tests │ ├── __init__.py │ ├── __pycache__ │ │ ├── __init__.cpython-39.opt-1.pyc │ │ ├── __init__.cpython-39.pyc │ │ ├── __init__.py │ │ ├── test_defmatrix.cpython-39.opt-1.pyc │ │ ├── test_defmatrix.cpython-39.pyc │ │ ├── test_interaction.cpython-39.opt-1.pyc │ │ ├── test_interaction.cpython-39.pyc │ │ ├── test_masked_matrix.cpython-39.opt-1.pyc │ │ ├── test_masked_matrix.cpython-39.pyc │ │ ├── test_matrix_linalg.cpython-39.opt-1.pyc │ │ ├── test_matrix_linalg.cpython-39.pyc │ │ ├── test_multiarray.cpython-39.opt-1.pyc │ │ ├── test_multiarray.cpython-39.pyc │ │ ├── test_numeric.cpython-39.opt-1.pyc │ │ ├── test_numeric.cpython-39.pyc │ │ ├── test_regression.cpython-39.opt-1.pyc │ │ └── test_regression.cpython-39.pyc │ ├── test_defmatrix.py │ ├── test_interaction.py │ ├── test_masked_matrix.py │ ├── test_matrix_linalg.py │ ├── test_multiarray.py │ ├── test_numeric.py │ └── test_regression.py ├── polynomial │ ├── __init__.py │ ├── __init__.pyi │ ├── __pycache__ │ │ ├── __init__.cpython-39.opt-1.pyc │ │ ├── __init__.cpython-39.pyc │ │ ├── __init__.py │ │ ├── _polybase.cpython-39.opt-1.pyc │ │ ├── _polybase.cpython-39.pyc │ │ ├── chebyshev.cpython-39.opt-1.pyc │ │ ├── chebyshev.cpython-39.pyc │ │ ├── hermite.cpython-39.opt-1.pyc │ │ ├── hermite.cpython-39.pyc │ │ ├── hermite_e.cpython-39.opt-1.pyc │ │ ├── hermite_e.cpython-39.pyc │ │ ├── laguerre.cpython-39.opt-1.pyc │ │ ├── laguerre.cpython-39.pyc │ │ ├── legendre.cpython-39.opt-1.pyc │ │ ├── legendre.cpython-39.pyc │ │ ├── polynomial.cpython-39.opt-1.pyc │ │ ├── polynomial.cpython-39.pyc │ │ ├── polyutils.cpython-39.opt-1.pyc │ │ ├── polyutils.cpython-39.pyc │ │ ├── setup.cpython-39.opt-1.pyc │ │ └── setup.cpython-39.pyc │ ├── _polybase.py │ ├── _polybase.pyi │ ├── chebyshev.py │ ├── chebyshev.pyi │ ├── hermite.py │ ├── hermite.pyi │ ├── hermite_e.py │ ├── hermite_e.pyi │ ├── laguerre.py │ ├── laguerre.pyi │ ├── legendre.py │ ├── legendre.pyi │ ├── polynomial.py │ ├── polynomial.pyi │ ├── polyutils.py │ ├── polyutils.pyi │ ├── setup.py │ └── tests │ ├── __init__.py │ ├── __pycache__ │ │ ├── __init__.cpython-39.opt-1.pyc │ │ ├── __init__.cpython-39.pyc │ │ ├── __init__.py │ │ ├── test_chebyshev.cpython-39.opt-1.pyc │ │ ├── test_chebyshev.cpython-39.pyc │ │ ├── test_classes.cpython-39.opt-1.pyc │ │ ├── test_classes.cpython-39.pyc │ │ ├── test_hermite.cpython-39.opt-1.pyc │ │ ├── test_hermite.cpython-39.pyc │ │ ├── test_hermite_e.cpython-39.opt-1.pyc │ │ ├── test_hermite_e.cpython-39.pyc │ │ ├── test_laguerre.cpython-39.opt-1.pyc │ │ ├── test_laguerre.cpython-39.pyc │ │ ├── test_legendre.cpython-39.opt-1.pyc │ │ ├── test_legendre.cpython-39.pyc │ │ ├── test_polynomial.cpython-39.opt-1.pyc │ │ ├── test_polynomial.cpython-39.pyc │ │ ├── test_polyutils.cpython-39.opt-1.pyc │ │ ├── test_polyutils.cpython-39.pyc │ │ ├── test_printing.cpython-39.opt-1.pyc │ │ └── test_printing.cpython-39.pyc │ ├── test_chebyshev.py │ ├── test_classes.py │ ├── test_hermite.py │ ├── test_hermite_e.py │ ├── test_laguerre.py │ ├── test_legendre.py │ ├── test_polynomial.py │ ├── test_polyutils.py │ └── test_printing.py ├── py.typed ├── random │ ├── __init__.pxd │ ├── __init__.py │ ├── __init__.pyi │ ├── __pycache__ │ │ ├── __init__.cpython-39.opt-1.pyc │ │ ├── __init__.cpython-39.pyc │ │ ├── __init__.py │ │ ├── _pickle.cpython-39.opt-1.pyc │ │ ├── _pickle.cpython-39.pyc │ │ ├── setup.cpython-39.opt-1.pyc │ │ └── setup.cpython-39.pyc │ ├── _bounded_integers.cpython-39-aarch64-linux-gnu.so │ ├── _bounded_integers.pxd │ ├── _common.cpython-39-aarch64-linux-gnu.so │ ├── _common.pxd │ ├── _examples │ │ ├── __init__.py │ │ ├── cffi │ │ │ ├── __init__.py │ │ │ ├── __pycache__ │ │ │ │ ├── __init__.py │ │ │ │ ├── extending.cpython-39.opt-1.pyc │ │ │ │ ├── extending.cpython-39.pyc │ │ │ │ ├── parse.cpython-39.opt-1.pyc │ │ │ │ └── parse.cpython-39.pyc │ │ │ ├── extending.py │ │ │ └── parse.py │ │ ├── cython │ │ │ ├── __init__.py │ │ │ ├── __pycache__ │ │ │ │ ├── __init__.py │ │ │ │ ├── setup.cpython-39.opt-1.pyc │ │ │ │ └── setup.cpython-39.pyc │ │ │ ├── extending.pyx │ │ │ ├── extending_distributions.pyx │ │ │ └── setup.py │ │ └── numba │ │ ├── __init__.py │ │ ├── __pycache__ │ │ │ ├── __init__.py │ │ │ ├── extending.cpython-39.opt-1.pyc │ │ │ ├── extending.cpython-39.pyc │ │ │ ├── extending_distributions.cpython-39.opt-1.pyc │ │ │ └── extending_distributions.cpython-39.pyc │ │ ├── extending.py │ │ └── extending_distributions.py │ ├── _generator.cpython-39-aarch64-linux-gnu.so │ ├── _generator.pyi │ ├── _mt19937.cpython-39-aarch64-linux-gnu.so │ ├── _mt19937.pyi │ ├── _pcg64.cpython-39-aarch64-linux-gnu.so │ ├── _pcg64.pyi │ ├── _philox.cpython-39-aarch64-linux-gnu.so │ ├── _philox.pyi │ ├── _pickle.py │ ├── _sfc64.cpython-39-aarch64-linux-gnu.so │ ├── _sfc64.pyi │ ├── bit_generator.cpython-39-aarch64-linux-gnu.so │ ├── bit_generator.pxd │ ├── bit_generator.pyi │ ├── c_distributions.pxd │ ├── lib │ │ └── libnpyrandom.a │ ├── mtrand.cpython-39-aarch64-linux-gnu.so │ ├── mtrand.pyi │ ├── setup.py │ └── tests │ ├── __init__.py │ ├── __pycache__ │ │ ├── __init__.cpython-39.opt-1.pyc │ │ ├── __init__.cpython-39.pyc │ │ ├── __init__.py │ │ ├── test_direct.cpython-39.opt-1.pyc │ │ ├── test_direct.cpython-39.pyc │ │ ├── test_extending.cpython-39.opt-1.pyc │ │ ├── test_extending.cpython-39.pyc │ │ ├── test_generator_mt19937.cpython-39.opt-1.pyc │ │ ├── test_generator_mt19937.cpython-39.pyc │ │ ├── test_generator_mt19937_regressions.cpython-39.opt-1.pyc │ │ ├── test_generator_mt19937_regressions.cpython-39.pyc │ │ ├── test_random.cpython-39.opt-1.pyc │ │ ├── test_random.cpython-39.pyc │ │ ├── test_randomstate.cpython-39.opt-1.pyc │ │ ├── test_randomstate.cpython-39.pyc │ │ ├── test_randomstate_regression.cpython-39.opt-1.pyc │ │ ├── test_randomstate_regression.cpython-39.pyc │ │ ├── test_regression.cpython-39.opt-1.pyc │ │ ├── test_regression.cpython-39.pyc │ │ ├── test_seed_sequence.cpython-39.opt-1.pyc │ │ ├── test_seed_sequence.cpython-39.pyc │ │ ├── test_smoke.cpython-39.opt-1.pyc │ │ └── test_smoke.cpython-39.pyc │ ├── data │ │ ├── __init__.py │ │ ├── __pycache__ │ │ │ ├── __init__.cpython-39.opt-1.pyc │ │ │ ├── __init__.cpython-39.pyc │ │ │ └── __init__.py │ │ ├── mt19937-testset-1.csv │ │ ├── mt19937-testset-2.csv │ │ ├── pcg64-testset-1.csv │ │ ├── pcg64-testset-2.csv │ │ ├── pcg64dxsm-testset-1.csv │ │ ├── pcg64dxsm-testset-2.csv │ │ ├── philox-testset-1.csv │ │ ├── philox-testset-2.csv │ │ ├── sfc64-testset-1.csv │ │ └── sfc64-testset-2.csv │ ├── test_direct.py │ ├── test_extending.py │ ├── test_generator_mt19937.py │ ├── test_generator_mt19937_regressions.py │ ├── test_random.py │ ├── test_randomstate.py │ ├── test_randomstate_regression.py │ ├── test_regression.py │ ├── test_seed_sequence.py │ └── test_smoke.py ├── setup.py ├── testing │ ├── __init__.py │ ├── __init__.pyi │ ├── __pycache__ │ │ ├── __init__.cpython-39.opt-1.pyc │ │ ├── __init__.cpython-39.pyc │ │ ├── __init__.py │ │ ├── print_coercion_tables.cpython-39.opt-1.pyc │ │ ├── print_coercion_tables.cpython-39.pyc │ │ ├── setup.cpython-39.opt-1.pyc │ │ ├── setup.cpython-39.pyc │ │ ├── utils.cpython-39.opt-1.pyc │ │ └── utils.cpython-39.pyc │ ├── _private │ │ ├── __init__.py │ │ ├── __pycache__ │ │ │ ├── __init__.cpython-39.opt-1.pyc │ │ │ ├── __init__.cpython-39.pyc │ │ │ ├── __init__.py │ │ │ ├── decorators.cpython-39.opt-1.pyc │ │ │ ├── decorators.cpython-39.pyc │ │ │ ├── extbuild.cpython-39.opt-1.pyc │ │ │ ├── extbuild.cpython-39.pyc │ │ │ ├── noseclasses.cpython-39.opt-1.pyc │ │ │ ├── noseclasses.cpython-39.pyc │ │ │ ├── nosetester.cpython-39.opt-1.pyc │ │ │ ├── nosetester.cpython-39.pyc │ │ │ ├── parameterized.cpython-39.opt-1.pyc │ │ │ ├── parameterized.cpython-39.pyc │ │ │ ├── utils.cpython-39.opt-1.pyc │ │ │ └── utils.cpython-39.pyc │ │ ├── decorators.py │ │ ├── extbuild.py │ │ ├── noseclasses.py │ │ ├── nosetester.py │ │ ├── parameterized.py │ │ ├── utils.py │ │ └── utils.pyi │ ├── print_coercion_tables.py │ ├── setup.py │ ├── tests │ │ ├── __init__.py │ │ ├── __pycache__ │ │ │ ├── __init__.cpython-39.opt-1.pyc │ │ │ ├── __init__.cpython-39.pyc │ │ │ ├── __init__.py │ │ │ ├── test_doctesting.cpython-39.opt-1.pyc │ │ │ ├── test_doctesting.cpython-39.pyc │ │ │ ├── test_utils.cpython-39.opt-1.pyc │ │ │ └── test_utils.cpython-39.pyc │ │ ├── test_doctesting.py │ │ └── test_utils.py │ └── utils.py ├── tests │ ├── __init__.py │ ├── __pycache__ │ │ ├── __init__.cpython-39.opt-1.pyc │ │ ├── __init__.cpython-39.pyc │ │ ├── __init__.py │ │ ├── test__all__.cpython-39.opt-1.pyc │ │ ├── test__all__.cpython-39.pyc │ │ ├── test_ctypeslib.cpython-39.opt-1.pyc │ │ ├── test_ctypeslib.cpython-39.pyc │ │ ├── test_matlib.cpython-39.opt-1.pyc │ │ ├── test_matlib.cpython-39.pyc │ │ ├── test_numpy_version.cpython-39.opt-1.pyc │ │ ├── test_numpy_version.cpython-39.pyc │ │ ├── test_public_api.cpython-39.opt-1.pyc │ │ ├── test_public_api.cpython-39.pyc │ │ ├── test_reloading.cpython-39.opt-1.pyc │ │ ├── test_reloading.cpython-39.pyc │ │ ├── test_scripts.cpython-39.opt-1.pyc │ │ ├── test_scripts.cpython-39.pyc │ │ ├── test_warnings.cpython-39.opt-1.pyc │ │ └── test_warnings.cpython-39.pyc │ ├── test__all__.py │ ├── test_ctypeslib.py │ ├── test_matlib.py │ ├── test_numpy_version.py │ ├── test_public_api.py │ ├── test_reloading.py │ ├── test_scripts.py │ └── test_warnings.py ├── typing │ ├── __init__.py │ ├── __pycache__ │ │ ├── __init__.cpython-39.opt-1.pyc │ │ ├── __init__.cpython-39.pyc │ │ ├── __init__.py │ │ ├── _add_docstring.cpython-39.opt-1.pyc │ │ ├── _add_docstring.cpython-39.pyc │ │ ├── _array_like.cpython-39.opt-1.pyc │ │ ├── _array_like.cpython-39.pyc │ │ ├── _char_codes.cpython-39.opt-1.pyc │ │ ├── _char_codes.cpython-39.pyc │ │ ├── _dtype_like.cpython-39.opt-1.pyc │ │ ├── _dtype_like.cpython-39.pyc │ │ ├── _extended_precision.cpython-39.opt-1.pyc │ │ ├── _extended_precision.cpython-39.pyc │ │ ├── _generic_alias.cpython-39.opt-1.pyc │ │ ├── _generic_alias.cpython-39.pyc │ │ ├── _nbit.cpython-39.opt-1.pyc │ │ ├── _nbit.cpython-39.pyc │ │ ├── _nested_sequence.cpython-39.opt-1.pyc │ │ ├── _nested_sequence.cpython-39.pyc │ │ ├── _scalars.cpython-39.opt-1.pyc │ │ ├── _scalars.cpython-39.pyc │ │ ├── _shape.cpython-39.opt-1.pyc │ │ ├── _shape.cpython-39.pyc │ │ ├── mypy_plugin.cpython-39.opt-1.pyc │ │ ├── mypy_plugin.cpython-39.pyc │ │ ├── setup.cpython-39.opt-1.pyc │ │ └── setup.cpython-39.pyc │ ├── _add_docstring.py │ ├── _array_like.py │ ├── _callable.pyi │ ├── _char_codes.py │ ├── _dtype_like.py │ ├── _extended_precision.py │ ├── _generic_alias.py │ ├── _nbit.py │ ├── _nested_sequence.py │ ├── _scalars.py │ ├── _shape.py │ ├── _ufunc.pyi │ ├── mypy_plugin.py │ ├── setup.py │ └── tests │ ├── __init__.py │ ├── __pycache__ │ │ ├── __init__.cpython-39.opt-1.pyc │ │ ├── __init__.cpython-39.pyc │ │ ├── __init__.py │ │ ├── test_generic_alias.cpython-39.opt-1.pyc │ │ ├── test_generic_alias.cpython-39.pyc │ │ ├── test_isfile.cpython-39.opt-1.pyc │ │ ├── test_isfile.cpython-39.pyc │ │ ├── test_runtime.cpython-39.opt-1.pyc │ │ ├── test_runtime.cpython-39.pyc │ │ ├── test_typing.cpython-39.opt-1.pyc │ │ └── test_typing.cpython-39.pyc │ ├── data │ │ ├── __init__.py │ │ ├── fail │ │ │ ├── arithmetic.pyi │ │ │ ├── array_constructors.pyi │ │ │ ├── array_like.pyi │ │ │ ├── array_pad.pyi │ │ │ ├── arrayprint.pyi │ │ │ ├── arrayterator.pyi │ │ │ ├── bitwise_ops.pyi │ │ │ ├── char.pyi │ │ │ ├── chararray.pyi │ │ │ ├── comparisons.pyi │ │ │ ├── constants.pyi │ │ │ ├── datasource.pyi │ │ │ ├── dtype.pyi │ │ │ ├── einsumfunc.pyi │ │ │ ├── false_positives.pyi │ │ │ ├── flatiter.pyi │ │ │ ├── fromnumeric.pyi │ │ │ ├── histograms.pyi │ │ │ ├── index_tricks.pyi │ │ │ ├── lib_function_base.pyi │ │ │ ├── lib_polynomial.pyi │ │ │ ├── lib_utils.pyi │ │ │ ├── lib_version.pyi │ │ │ ├── linalg.pyi │ │ │ ├── memmap.pyi │ │ │ ├── modules.pyi │ │ │ ├── multiarray.pyi │ │ │ ├── ndarray.pyi │ │ │ ├── ndarray_misc.pyi │ │ │ ├── nditer.pyi │ │ │ ├── nested_sequence.pyi │ │ │ ├── npyio.pyi │ │ │ ├── numerictypes.pyi │ │ │ ├── random.pyi │ │ │ ├── rec.pyi │ │ │ ├── scalars.pyi │ │ │ ├── shape_base.pyi │ │ │ ├── stride_tricks.pyi │ │ │ ├── testing.pyi │ │ │ ├── twodim_base.pyi │ │ │ ├── type_check.pyi │ │ │ ├── ufunc_config.pyi │ │ │ ├── ufunclike.pyi │ │ │ ├── ufuncs.pyi │ │ │ └── warnings_and_errors.pyi │ │ ├── misc │ │ │ └── extended_precision.pyi │ │ ├── mypy.ini │ │ ├── pass │ │ │ ├── __init__.py │ │ │ ├── __pycache__ │ │ │ │ ├── __init__.py │ │ │ │ ├── arithmetic.cpython-39.opt-1.pyc │ │ │ │ ├── arithmetic.cpython-39.pyc │ │ │ │ ├── array_constructors.cpython-39.opt-1.pyc │ │ │ │ ├── array_constructors.cpython-39.pyc │ │ │ │ ├── array_like.cpython-39.opt-1.pyc │ │ │ │ ├── array_like.cpython-39.pyc │ │ │ │ ├── arrayprint.cpython-39.opt-1.pyc │ │ │ │ ├── arrayprint.cpython-39.pyc │ │ │ │ ├── arrayterator.cpython-39.opt-1.pyc │ │ │ │ ├── arrayterator.cpython-39.pyc │ │ │ │ ├── bitwise_ops.cpython-39.opt-1.pyc │ │ │ │ ├── bitwise_ops.cpython-39.pyc │ │ │ │ ├── comparisons.cpython-39.opt-1.pyc │ │ │ │ ├── comparisons.cpython-39.pyc │ │ │ │ ├── dtype.cpython-39.opt-1.pyc │ │ │ │ ├── dtype.cpython-39.pyc │ │ │ │ ├── einsumfunc.cpython-39.opt-1.pyc │ │ │ │ ├── einsumfunc.cpython-39.pyc │ │ │ │ ├── flatiter.cpython-39.opt-1.pyc │ │ │ │ ├── flatiter.cpython-39.pyc │ │ │ │ ├── fromnumeric.cpython-39.opt-1.pyc │ │ │ │ ├── fromnumeric.cpython-39.pyc │ │ │ │ ├── index_tricks.cpython-39.opt-1.pyc │ │ │ │ ├── index_tricks.cpython-39.pyc │ │ │ │ ├── lib_utils.cpython-39.opt-1.pyc │ │ │ │ ├── lib_utils.cpython-39.pyc │ │ │ │ ├── lib_version.cpython-39.opt-1.pyc │ │ │ │ ├── lib_version.cpython-39.pyc │ │ │ │ ├── literal.cpython-39.opt-1.pyc │ │ │ │ ├── literal.cpython-39.pyc │ │ │ │ ├── mod.cpython-39.opt-1.pyc │ │ │ │ ├── mod.cpython-39.pyc │ │ │ │ ├── modules.cpython-39.opt-1.pyc │ │ │ │ ├── modules.cpython-39.pyc │ │ │ │ ├── multiarray.cpython-39.opt-1.pyc │ │ │ │ ├── multiarray.cpython-39.pyc │ │ │ │ ├── ndarray_conversion.cpython-39.opt-1.pyc │ │ │ │ ├── ndarray_conversion.cpython-39.pyc │ │ │ │ ├── ndarray_misc.cpython-39.opt-1.pyc │ │ │ │ ├── ndarray_misc.cpython-39.pyc │ │ │ │ ├── ndarray_shape_manipulation.cpython-39.opt-1.pyc │ │ │ │ ├── ndarray_shape_manipulation.cpython-39.pyc │ │ │ │ ├── numeric.cpython-39.opt-1.pyc │ │ │ │ ├── numeric.cpython-39.pyc │ │ │ │ ├── numerictypes.cpython-39.opt-1.pyc │ │ │ │ ├── numerictypes.cpython-39.pyc │ │ │ │ ├── random.cpython-39.opt-1.pyc │ │ │ │ ├── random.cpython-39.pyc │ │ │ │ ├── scalars.cpython-39.opt-1.pyc │ │ │ │ ├── scalars.cpython-39.pyc │ │ │ │ ├── simple.cpython-39.opt-1.pyc │ │ │ │ ├── simple.cpython-39.pyc │ │ │ │ ├── simple_py3.cpython-39.opt-1.pyc │ │ │ │ ├── simple_py3.cpython-39.pyc │ │ │ │ ├── ufunc_config.cpython-39.opt-1.pyc │ │ │ │ ├── ufunc_config.cpython-39.pyc │ │ │ │ ├── ufunclike.cpython-39.opt-1.pyc │ │ │ │ ├── ufunclike.cpython-39.pyc │ │ │ │ ├── ufuncs.cpython-39.opt-1.pyc │ │ │ │ ├── ufuncs.cpython-39.pyc │ │ │ │ ├── warnings_and_errors.cpython-39.opt-1.pyc │ │ │ │ └── warnings_and_errors.cpython-39.pyc │ │ │ ├── arithmetic.py │ │ │ ├── array_constructors.py │ │ │ ├── array_like.py │ │ │ ├── arrayprint.py │ │ │ ├── arrayterator.py │ │ │ ├── bitwise_ops.py │ │ │ ├── comparisons.py │ │ │ ├── dtype.py │ │ │ ├── einsumfunc.py │ │ │ ├── flatiter.py │ │ │ ├── fromnumeric.py │ │ │ ├── index_tricks.py │ │ │ ├── lib_utils.py │ │ │ ├── lib_version.py │ │ │ ├── literal.py │ │ │ ├── mod.py │ │ │ ├── modules.py │ │ │ ├── multiarray.py │ │ │ ├── ndarray_conversion.py │ │ │ ├── ndarray_misc.py │ │ │ ├── ndarray_shape_manipulation.py │ │ │ ├── numeric.py │ │ │ ├── numerictypes.py │ │ │ ├── random.py │ │ │ ├── scalars.py │ │ │ ├── simple.py │ │ │ ├── simple_py3.py │ │ │ ├── ufunc_config.py │ │ │ ├── ufunclike.py │ │ │ ├── ufuncs.py │ │ │ └── warnings_and_errors.py │ │ └── reveal │ │ ├── arithmetic.pyi │ │ ├── array_constructors.pyi │ │ ├── arraypad.pyi │ │ ├── arrayprint.pyi │ │ ├── arraysetops.pyi │ │ ├── arrayterator.pyi │ │ ├── bitwise_ops.pyi │ │ ├── char.pyi │ │ ├── chararray.pyi │ │ ├── comparisons.pyi │ │ ├── constants.pyi │ │ ├── ctypeslib.pyi │ │ ├── datasource.pyi │ │ ├── dtype.pyi │ │ ├── einsumfunc.pyi │ │ ├── false_positives.pyi │ │ ├── fft.pyi │ │ ├── flatiter.pyi │ │ ├── fromnumeric.pyi │ │ ├── getlimits.pyi │ │ ├── histograms.pyi │ │ ├── index_tricks.pyi │ │ ├── lib_function_base.pyi │ │ ├── lib_polynomial.pyi │ │ ├── lib_utils.pyi │ │ ├── lib_version.pyi │ │ ├── linalg.pyi │ │ ├── matrix.pyi │ │ ├── memmap.pyi │ │ ├── mod.pyi │ │ ├── modules.pyi │ │ ├── multiarray.pyi │ │ ├── nbit_base_example.pyi │ │ ├── ndarray_conversion.pyi │ │ ├── ndarray_misc.pyi │ │ ├── ndarray_shape_manipulation.pyi │ │ ├── nditer.pyi │ │ ├── nested_sequence.pyi │ │ ├── npyio.pyi │ │ ├── numeric.pyi │ │ ├── numerictypes.pyi │ │ ├── random.pyi │ │ ├── rec.pyi │ │ ├── scalars.pyi │ │ ├── shape_base.pyi │ │ ├── stride_tricks.pyi │ │ ├── testing.pyi │ │ ├── twodim_base.pyi │ │ ├── type_check.pyi │ │ ├── ufunc_config.pyi │ │ ├── ufunclike.pyi │ │ ├── ufuncs.pyi │ │ ├── version.pyi │ │ └── warnings_and_errors.pyi │ ├── test_generic_alias.py │ ├── test_isfile.py │ ├── test_runtime.py │ └── test_typing.py └── version.py111 directories, 1777 files
I'd add that pytensor has a declared dependency on numpy.
Minimal repro in #42
It looks like what's happening here is:
- pytensor's setup.py loads numpy: https://github.com/pymc-devs/pytensor/blob/9ada9455f37479831b488b99efdba37b204d709a/setup.py#L2
- pycross is running the wheel build using exec-Python (Mac, arm64 or x86_64) (what else could it run?)
- numpy has been built for linux aarch64, the object files are present, but exec-Python doesn't recognize those files
Also verified that pytensor already declares the numpy dependency https://github.com/mark-thm/rules_pycross/blob/64e9cfa8651f4d63607c1507a27122a6b115e615/examples/crossenv/example_lock.bzl#L501-L519 -- and the sandbox above shows the dependency is available
based on the tree shared it seems that py3.9 was used but your error says using py3.10
i had a similar issue with grpc which was fixed by passing the python interpreter to the grpc repo. GRPC is a bazel compatible repo so that might not apply here but just wanted to point that out in case its relevant or helps!
http_archive(
name = "com_github_grpc_grpc",
# Due to https://github.com/grpc/grpc/issues/24665
# See https://github.com/grpc/grpc/issues/24665#issuecomment-1373577865
# This makes sure we use the right python version and not the local python version
repo_mapping = {"@local_config_python": "@python3_9"},
sha256 = "7f42363711eb483a0501239fd5522467b31d8fe98d70d7867c6ca7b52440d828",
strip_prefix = "grpc-1.51.0",
urls = [
"https://github.com/grpc/grpc/archive/refs/tags/v1.51.0.tar.gz",
],
)
another thing to check is if you are using zig toolchain and if its correctly configured for linux arm64
It looks like what's happening here is:
- pytensor's setup.py loads numpy: https://github.com/pymc-devs/pytensor/blob/9ada9455f37479831b488b99efdba37b204d709a/setup.py#L2
- pycross is running the wheel build using exec-Python (Mac, arm64 or x86_64) (what else could it run?)
- numpy has been built for linux aarch64, the object files are present, but exec-Python doesn't recognize those files
Also verified that pytensor already declares the numpy dependency https://github.com/mark-thm/rules_pycross/blob/64e9cfa8651f4d63607c1507a27122a6b115e615/examples/crossenv/example_lock.bzl#L501-L519 -- and the sandbox above shows the dependency is available
Sorry for the way late reply. I agree that this is what is happening, and I'm not sure that there is a great answer. There are now hooks in pycross_wheel_build that would allow you to tweak the build environment before the build occurs. In the case of pytensor, numpy is only imported so that numpy.get_include() can be used. So one option would be to just insert a mock numpy module in PYTHONPATH that provides this method with the appropriate path.
You can see some examples of using hooks in the external_linking examples.
#105 adds the building block for another approach to building libraries like this: build the C/C++ code with Bazel cc_library/etc rules instead of the Python setup.py. I haven't looked at pytensor so I'm not sure if it makes sense here, I'm using depedencies that were already Bazel-ified.