| Server IP : 209.209.40.120 / Your IP : 216.73.217.112 Web Server : Microsoft-IIS/10.0 System : Windows NT NEWWWW 10.0 build 17763 (Windows Server 2019) i586 User : NEWWWW$ ( 0) PHP Version : 8.3.30 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : OFF | Perl : OFF | Python : OFF | Sudo : OFF | Pkexec : OFF Directory : C:/Python312/Lib/site-packages/numpy/testing/_private/__pycache__/ |
Upload File : |
�
�g� � � � d Z ddlZddlZddlZddlZddlZddlZddgZddg dd�d�Zg g fd�Z d � Z
d
� Zd� Zg g g fd�Z
d
� Zd� Zy)zb
Build a c-extension module on-the-fly in tests.
See build_and_import_extensions for usage hints
� N�build_and_import_extension�compile_extension_module� )�prologue� build_dir�include_dirs� more_initc � � |t || � z }d}|st j d� }|r
|dz
}||z
}|dz
}t | ||� } t | |||� } ddl}|j j | | � }|j j |� }
|j j |
� |
S # t
$ r}
t
d|� d�� |
�d}
~
ww xY w) a
Build and imports a c-extension module `modname` from a list of function
fragments `functions`.
Parameters
----------
functions : list of fragments
Each fragment is a sequence of func_name, calling convention, snippet.
prologue : string
Code to precede the rest, usually extra ``#include`` or ``#define``
macros.
build_dir : pathlib.Path
Where to build the module, usually a temporary directory
include_dirs : list
Extra directories to find include files when compiling
more_init : string
Code to appear in the module PyMODINIT_FUNC
Returns
-------
out: module
The module will have been loaded and is ready for use
Examples
--------
>>> functions = [("test_bytes", "METH_O", """
if ( !PyBytesCheck(args)) {
Py_RETURN_FALSE;
}
Py_RETURN_TRUE;
""")]
>>> mod = build_and_import_extension("testme", functions)
>>> assert not mod.test_bytes('abc')
>>> assert mod.test_bytes(b'abc')
z�
PyObject *mod = PyModule_Create(&moduledef);
#ifdef Py_GIL_DISABLED
PyUnstable_Module_SetGIL(mod, Py_MOD_GIL_NOT_USED);
#endif
�.z.#define INITERROR return NULL
z
return mod;zcould not compile in �:Nr )
�
_make_methods�pathlib�Path�_make_sourcer � Exception�RuntimeError�importlib.util�util�spec_from_file_location�module_from_spec�loader�exec_module)�modname� functionsr r r r �body�init�
source_string�mod_so�e� importlib�spec�foos �AC:\Python312\Lib\site-packages\numpy/testing/_private/extbuild.pyr r s� � �N �m�I�w�7�7�D��D� ��L�L��%� ��� � ��� ����O��D� ��$��5�M�H�)��Y��m�=��
��>�>�1�1�'�6�B�D�
�.�.�
)�
)�$�
/�C��K�K���C� ��J�� � H��2�9�+�Q�?�@�a�G��H�s �B. �. C�7C�Cc �� � | j d� d }|| z }|j d�� t ||� }|t j d� gz }t |||z |g g �� S )aH
Build an extension module and return the filename of the resulting
native code file.
Parameters
----------
name : string
name of the module, possibly including dots if it is a module inside a
package.
builddir : pathlib.Path
Where to build the module, usually a temporary directory
include_dirs : list
Extra directories to find include files when compiling
libraries : list
Libraries to link into the extension module
library_dirs: list
Where to find the libraries, ``-L`` passed to the linker
r ���T��exist_ok� INCLUDEPY)�outputfilenamer � libraries�library_dirs)�split�mkdir�_convert_str_to_file� sysconfig�get_config_var�
_c_compile) �name�builddirr r r* r+ r �dirname�cfiles r# r r T so � �* �j�j��o�b�!�G���o�G��M�M�4�M� � ���8�E��9�#;�#;�K�#H�"I�I�L��
�g��/�!�R�b�
�
� c � � |dz }|j d� 5 }|j t | � � ddd� |S # 1 sw Y |S xY w)zHelper function to create a file ``source.c`` in `dirname` that contains
the string in `source`. Returns the file name
zsource.c�wN)�open�write�str)�sourcer4 �filename�fs r# r. r. u sF � � ��#�H� ���s� � �q� ����F�����O���O�s �<�Ac
�& � g }g }| D ]V \ }}}|�d|��}d|v rd}nd}|j d|�d|�d|�d�� d j |||�
� } |j | � �X dj |� dt dj |� |�
� z z }
|
S )z� Turns the name, signature, code in functions into complete functions
and lists them in a methods_table. Then turns the methods_table into a
``PyMethodDef`` structure and returns the resulting code fragment ready
for compilation
�_�
METH_KEYWORDSz2(PyObject *self, PyObject *args, PyObject *kwargs)z (PyObject *self, PyObject *args)z{"z", (PyCFunction)z, z},z^
static PyObject* {cfuncname}{signature}
{{
{code}
}}
)� cfuncname� signature�code�
a6
static PyMethodDef methods[] = {
%(methods)s
{ NULL }
};
static struct PyModuleDef moduledef = {
PyModuleDef_HEAD_INIT,
"%(modname)s", /* m_name */
NULL, /* m_doc */
-1, /* m_size */
methods, /* m_methods */
};
)�methodsr )�append�format�join�dict)r r �
methods_table�codes�funcname�flagsrD rB rC � func_coder s r# r
r
s� � � �M��E�!*� ���%��&��1� ��e�#�L�I�:�I����08�)�U�K� M��
�F�Y�)�$�F�G� � ���Y�� � �9�9�U�� � �t�y�y��/��
A�B� B�D� �Kr6 c �( � dt | ||�� z }|S )zG Combines the code fragments into source code ready to be compiled
zn
#include <Python.h>
%(body)s
PyMODINIT_FUNC
PyInit_%(name)s(void) {
%(init)s
}
)r2 r r )rJ )r2 r r rD s r# r r � s&