PATH:
opt
/
cloudlinux
/
venv
/
lib
/
python3.11
/
site-packages
/
numpy
/
core
/
tests
/
__pycache__
/
Editing: test_array_interface.cpython-311.pyc
� � h� � �t � d dl Z d dlZd dlZd dlmZ ej d� � � Zej j d� � � Z dS )� N)�extbuildc � � t j � d� � st j d� � d}dg}d} ddl}|S # t $ r Y nw xY wt j d||t j � � g| |� � � S ) z� Some codes to generate data and manage temporary buffers use when sharing with numpy via the array interface protocol. �linuxzlink fails on cygwina$ #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); } )�new_array_struct�METH_VARARGSa} 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; zimport_array();r N�array_interface_testing)�prologue�include_dirs� build_dir� more_init)�sys�platform� startswith�pytest�skipr �ImportErrorr �build_and_import_extension�np�get_include)�tmp_pathr � functionsr r s �x/builddir/build/BUILD/cloudlinux-venv-1.0.8/venv/lib64/python3.11/site-packages/numpy/core/tests/test_array_interface.py� get_moduler s� � � �<�"�"�7�+�+� ,���*�+�+�+� �H�F< �> �I�@ "�I� �&�&�&�&�&�&��� � � ��� ���� �.�/H�/8�8@�=?�^�=M�=M�<N�9A�9B�D� D� D� Ds �A � A�Ac �2 � � G � fd�d� � }t j }d}d}|� d� � |d|� � }|� d� � |� d� � t j |d � � � }|� dt |j � � z � � |� dt |j � � z � � |� d� � |� d � � d }|� d� � t j ||� � sJ �|� d� � |� dt |� � z � � |� d� � |� d� � ||z }||z }|� dt |j � � z � � |� dt |j � � z � � |� d� � |� d� � |� dt |� � z � � |� d� � t j ||� � sJ �|� d� � d }|� d� � d S )Nc �4 �� e Zd ZdZd� Ze� fd�� � ZdS )�!test_cstruct.<locals>.data_sourceaJ 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. c �"