Current Path: > > opt > cloudlinux > venv > lib64 > python3.11 > > site-packages > numpy > core > tests
Operation : Linux premium131.web-hosting.com 4.18.0-553.44.1.lve.el8.x86_64 #1 SMP Thu Mar 13 14:29:12 UTC 2025 x86_64 Software : Apache Server IP : 162.0.232.56 | Your IP: 216.73.216.111 Domains : 1034 Domain(s) Permission : [ 0755 ]
Name | Type | Size | Last Modified | Actions |
---|---|---|---|---|
__pycache__ | Directory | - | - | |
data | Directory | - | - | |
examples | Directory | - | - | |
__init__.py | File | 0 bytes | April 17 2025 13:10:58. | |
_locales.py | File | 2206 bytes | April 17 2025 13:10:58. | |
test__exceptions.py | File | 2846 bytes | April 17 2025 13:10:58. | |
test_abc.py | File | 2220 bytes | April 17 2025 13:10:58. | |
test_api.py | File | 22995 bytes | April 17 2025 13:10:58. | |
test_argparse.py | File | 1969 bytes | April 17 2025 13:10:58. | |
test_array_coercion.py | File | 34379 bytes | April 17 2025 13:10:58. | |
test_array_interface.py | File | 7596 bytes | April 17 2025 13:10:58. | |
test_arraymethod.py | File | 3244 bytes | April 17 2025 13:10:58. | |
test_arrayprint.py | File | 40462 bytes | April 17 2025 13:10:58. | |
test_casting_floatingpoint_errors.py | File | 5063 bytes | April 17 2025 13:10:58. | |
test_casting_unittests.py | File | 34298 bytes | April 17 2025 13:10:58. | |
test_conversion_utils.py | File | 6559 bytes | April 17 2025 13:10:58. | |
test_cpu_dispatcher.py | File | 1521 bytes | April 17 2025 13:10:58. | |
test_cpu_features.py | File | 14858 bytes | April 17 2025 13:10:58. | |
test_custom_dtypes.py | File | 9401 bytes | April 17 2025 13:10:58. | |
test_cython.py | File | 3623 bytes | April 17 2025 13:10:58. | |
test_datetime.py | File | 116211 bytes | April 17 2025 13:10:58. | |
test_defchararray.py | File | 24997 bytes | April 17 2025 13:10:58. | |
test_deprecations.py | File | 31076 bytes | April 17 2025 13:10:58. | |
test_dlpack.py | File | 3522 bytes | April 17 2025 13:10:58. | |
test_dtype.py | File | 75288 bytes | April 17 2025 13:10:58. | |
test_einsum.py | File | 52960 bytes | April 17 2025 13:10:58. | |
test_errstate.py | File | 2219 bytes | April 17 2025 13:10:58. | |
test_extint128.py | File | 5643 bytes | April 17 2025 13:10:58. | |
test_function_base.py | File | 15595 bytes | April 17 2025 13:10:58. | |
test_getlimits.py | File | 6718 bytes | April 17 2025 13:10:58. | |
test_half.py | File | 24226 bytes | April 17 2025 13:10:58. | |
test_hashtable.py | File | 1011 bytes | April 17 2025 13:10:58. | |
test_indexerrors.py | File | 5130 bytes | April 17 2025 13:10:58. | |
test_indexing.py | File | 54314 bytes | April 17 2025 13:10:58. | |
test_item_selection.py | File | 6458 bytes | April 17 2025 13:10:58. | |
test_limited_api.py | File | 1172 bytes | April 17 2025 13:10:58. | |
test_longdouble.py | File | 13905 bytes | April 17 2025 13:10:58. | |
test_machar.py | File | 1067 bytes | April 17 2025 13:10:58. | |
test_mem_overlap.py | File | 29086 bytes | April 17 2025 13:10:58. | |
test_mem_policy.py | File | 16004 bytes | April 17 2025 13:10:58. | |
test_memmap.py | File | 7477 bytes | April 17 2025 13:10:58. | |
test_multiarray.py | File | 379320 bytes | April 17 2025 13:10:58. | |
test_nditer.py | File | 130818 bytes | April 17 2025 13:10:58. | |
test_nep50_promotions.py | File | 8840 bytes | April 17 2025 13:10:58. | |
test_numeric.py | File | 136543 bytes | April 17 2025 13:10:58. | |
test_numerictypes.py | File | 21687 bytes | April 17 2025 13:10:58. | |
test_overrides.py | File | 26080 bytes | April 17 2025 13:10:58. | |
test_print.py | File | 6837 bytes | April 17 2025 13:10:58. | |
test_protocols.py | File | 1168 bytes | April 17 2025 13:10:58. | |
test_records.py | File | 20269 bytes | April 17 2025 13:10:58. | |
test_regression.py | File | 91447 bytes | April 17 2025 13:10:58. | |
test_scalar_ctors.py | File | 6115 bytes | April 17 2025 13:10:58. | |
test_scalar_methods.py | File | 7541 bytes | April 17 2025 13:10:58. | |
test_scalarbuffer.py | File | 5580 bytes | April 17 2025 13:10:58. | |
test_scalarinherit.py | File | 2368 bytes | April 17 2025 13:10:58. | |
test_scalarmath.py | File | 42885 bytes | April 17 2025 13:10:58. | |
test_scalarprint.py | File | 18771 bytes | April 17 2025 13:10:58. | |
test_shape_base.py | File | 29723 bytes | April 17 2025 13:10:58. | |
test_simd.py | File | 48696 bytes | April 17 2025 13:10:58. | |
test_simd_module.py | File | 3805 bytes | April 17 2025 13:10:58. | |
test_strings.py | File | 3835 bytes | April 17 2025 13:10:58. | |
test_ufunc.py | File | 124145 bytes | April 17 2025 13:10:58. | |
test_umath.py | File | 185129 bytes | April 17 2025 13:10:58. | |
test_umath_accuracy.py | File | 3897 bytes | April 17 2025 13:10:58. | |
test_umath_complex.py | File | 23243 bytes | April 17 2025 13:10:58. | |
test_unicode.py | File | 12775 bytes | April 17 2025 13:10:58. |
import sys import pytest import numpy as np from numpy.testing import extbuild @pytest.fixture def get_module(tmp_path): """ Some codes to generate data and manage temporary buffers use when sharing with numpy via the array interface protocol. """ if not sys.platform.startswith('linux'): pytest.skip('link fails on cygwin') prologue = ''' #include <Python.h> #define NPY_NO_DEPRECATED_API NPY_1_7_API_VERSION #include <numpy/arrayobject.h> #include <stdio.h> #include <math.h> NPY_NO_EXPORT void delete_array_struct(PyObject *cap) { /* get the array interface structure */ PyArrayInterface *inter = (PyArrayInterface*) PyCapsule_GetPointer(cap, NULL); /* get the buffer by which data was shared */ double *ptr = (double*)PyCapsule_GetContext(cap); /* for the purposes of the regression test set the elements to nan */ for (npy_intp i = 0; i < inter->shape[0]; ++i) ptr[i] = nan(""); /* free the shared buffer */ free(ptr); /* free the array interface structure */ free(inter->shape); free(inter); fprintf(stderr, "delete_array_struct\\ncap = %ld inter = %ld" " ptr = %ld\\n", (long)cap, (long)inter, (long)ptr); } ''' functions = [ ("new_array_struct", "METH_VARARGS", """ long long n_elem = 0; double value = 0.0; if (!PyArg_ParseTuple(args, "Ld", &n_elem, &value)) { Py_RETURN_NONE; } /* allocate and initialize the data to share with numpy */ long long n_bytes = n_elem*sizeof(double); double *data = (double*)malloc(n_bytes); if (!data) { PyErr_Format(PyExc_MemoryError, "Failed to malloc %lld bytes", n_bytes); Py_RETURN_NONE; } for (long long i = 0; i < n_elem; ++i) { data[i] = value; } /* calculate the shape and stride */ int nd = 1; npy_intp *ss = (npy_intp*)malloc(2*nd*sizeof(npy_intp)); npy_intp *shape = ss; npy_intp *stride = ss + nd; shape[0] = n_elem; stride[0] = sizeof(double); /* construct the array interface */ PyArrayInterface *inter = (PyArrayInterface*) malloc(sizeof(PyArrayInterface)); memset(inter, 0, sizeof(PyArrayInterface)); inter->two = 2; inter->nd = nd; inter->typekind = 'f'; inter->itemsize = sizeof(double); inter->shape = shape; inter->strides = stride; inter->data = data; inter->flags = NPY_ARRAY_WRITEABLE | NPY_ARRAY_NOTSWAPPED | NPY_ARRAY_ALIGNED | NPY_ARRAY_C_CONTIGUOUS; /* package into a capsule */ PyObject *cap = PyCapsule_New(inter, NULL, delete_array_struct); /* save the pointer to the data */ PyCapsule_SetContext(cap, data); fprintf(stderr, "new_array_struct\\ncap = %ld inter = %ld" " ptr = %ld\\n", (long)cap, (long)inter, (long)data); return cap; """) ] more_init = "import_array();" try: import array_interface_testing return array_interface_testing except ImportError: pass # if it does not exist, build and load it return extbuild.build_and_import_extension('array_interface_testing', functions, prologue=prologue, include_dirs=[np.get_include()], build_dir=tmp_path, more_init=more_init) @pytest.mark.slow def test_cstruct(get_module): class data_source: """ This class is for testing the timing of the PyCapsule destructor invoked when numpy release its reference to the shared data as part of the numpy array interface protocol. If the PyCapsule destructor is called early the shared data is freed and invalid memory accesses will occur. """ def __init__(self, size, value): self.size = size self.value = value @property def __array_struct__(self): return get_module.new_array_struct(self.size, self.value) # write to the same stream as the C code stderr = sys.__stderr__ # used to validate the shared data. expected_value = -3.1415 multiplier = -10000.0 # create some data to share with numpy via the array interface # assign the data an expected value. stderr.write(' ---- create an object to share data ---- \n') buf = data_source(256, expected_value) stderr.write(' ---- OK!\n\n') # share the data stderr.write(' ---- share data via the array interface protocol ---- \n') arr = np.array(buf, copy=False) stderr.write('arr.__array_interface___ = %s\n' % ( str(arr.__array_interface__))) stderr.write('arr.base = %s\n' % (str(arr.base))) stderr.write(' ---- OK!\n\n') # release the source of the shared data. this will not release the data # that was shared with numpy, that is done in the PyCapsule destructor. stderr.write(' ---- destroy the object that shared data ---- \n') buf = None stderr.write(' ---- OK!\n\n') # check that we got the expected data. If the PyCapsule destructor we # defined was prematurely called then this test will fail because our # destructor sets the elements of the array to NaN before free'ing the # buffer. Reading the values here may also cause a SEGV assert np.allclose(arr, expected_value) # read the data. If the PyCapsule destructor we defined was prematurely # called then reading the values here may cause a SEGV and will be reported # as invalid reads by valgrind stderr.write(' ---- read shared data ---- \n') stderr.write('arr = %s\n' % (str(arr))) stderr.write(' ---- OK!\n\n') # write to the shared buffer. If the shared data was prematurely deleted # this will may cause a SEGV and valgrind will report invalid writes stderr.write(' ---- modify shared data ---- \n') arr *= multiplier expected_value *= multiplier stderr.write('arr.__array_interface___ = %s\n' % ( str(arr.__array_interface__))) stderr.write('arr.base = %s\n' % (str(arr.base))) stderr.write(' ---- OK!\n\n') # read the data. If the shared data was prematurely deleted this # will may cause a SEGV and valgrind will report invalid reads stderr.write(' ---- read modified shared data ---- \n') stderr.write('arr = %s\n' % (str(arr))) stderr.write(' ---- OK!\n\n') # check that we got the expected data. If the PyCapsule destructor we # defined was prematurely called then this test will fail because our # destructor sets the elements of the array to NaN before free'ing the # buffer. Reading the values here may also cause a SEGV assert np.allclose(arr, expected_value) # free the shared data, the PyCapsule destructor should run here stderr.write(' ---- free shared data ---- \n') arr = None stderr.write(' ---- OK!\n\n')
SILENT KILLER Tool