HEX
Server: Apache
System: Linux zacp120.webway.host 4.18.0-553.50.1.lve.el8.x86_64 #1 SMP Thu Apr 17 19:10:24 UTC 2025 x86_64
User: govancoz (1003)
PHP: 8.3.26
Disabled: exec,system,passthru,shell_exec,proc_close,proc_open,dl,popen,show_source,posix_kill,posix_mkfifo,posix_getpwuid,posix_setpgid,posix_setsid,posix_setuid,posix_setgid,posix_seteuid,posix_setegid,posix_uname
Upload Files
File: //usr/local/lib/python3.7/test/__pycache__/test_capi.cpython-37.pyc
B

��g+Z�@s�ddlmZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlZddl
mZddlmZddlmZmZyddlZWnek
r�dZYnXe�d�Zeed�Zdd	�ZGd
d�d�ZGdd
�d
ej�ZGdd�dej�ZGdd�dej�ZGdd�dej�Z Gdd�dej�Z!Gdd�dej�Z"Gdd�de"�Z#e�$e�%�d�Gdd�de"��Z&e�$ed�Gdd�de"��Z'e(d k�r�e�)�dS)!�)�OrderedDictN)�support)�MISSING_C_DOCSTRINGS)�assert_python_failure�assert_python_ok�	_testcapiZgettotalrefcountcCs|S)zsome doc�)�selfrr�*/usr/local/lib/python3.7/test/test_capi.py�testfunctionsrc@s eZdZe�e�Ze�e�ZdS)�InstanceMethodN)�__name__�
__module__�__qualname__rZinstancemethod�idrrrrr
r#s
rc@s�eZdZdd�Zdd�Zdd�Zdd�Ze�e	d	�d
d��Z
e�e	d	�dd
��Ze�e
d�dd��Zdd�Zdd�Zdd�Zdd�Zdd�Zdd�Zdd�Zdd �Zd!S)"�CAPITestcCs~t�}|�t|�|���|�|��|k�|�|jjtj�|�tjjtj�dtj_|�tjd�|�tt	|jdd�dS)N�test�	attribute)
r�assertEqualr�
assertTruer�__doc__r�assertRaises�AttributeError�setattr)r	�instrrr
�test_instancemethod)szCAPITest.test_instancemethodc	Cs`t���"tjtjddgtjtjd�}WdQRX|��\}}|�|d�|�	|�
��d��dS)Nz-cz4import _testcapi;_testcapi.crash_no_current_thread())�stdout�stderr�s8Fatal Python error: PyThreadState_Get: no current thread)r�SuppressCrashReport�
subprocess�Popen�sys�
executable�PIPEZcommunicaterr�rstrip�
startswith)r	�p�out�errrrr
� test_no_FatalError_infinite_loop4s

z)CAPITest.test_no_FatalError_infinite_loopcCs|�ttj�dS)N)r�
ValueErrorrZ!make_memoryview_from_NULL_pointer)r	rrr
�!test_memoryview_from_NULL_pointerBsz*CAPITest.test_memoryview_from_NULL_pointerc

Cs�td�}td�}y|�Wn�tk
r�}z�|j}t��}t�|j|d�}t��}tj|�}t��}	|�|d|�|�	||j||f�|�	||�|�	|	|�|�	||j|df�|�	||�Wdd}~XYnX|�
d�dS)N�5ZTEST�F)r+�	TypeError�
__traceback__r"�exc_inforZset_exc_info�	__class__rZassertSequenceEqualr)
r	Zraised_exception�new_exc�e�tbZorig_sys_exc_infoZ
orig_exc_infoZnew_sys_exc_infoZnew_exc_infoZreset_sys_exc_inforrr
�
test_exc_infoEs$
zCAPITest.test_exc_infoz(_posixsubprocess required for this test.cCs�Gdd�dt�}|�ttjd|�dddddd	d
ddd
ddddd�Gdd�dt�}|�ttjd|�dddddd	d
ddd
ddddd�dS)Nc@seZdZdd�ZdS)z1CAPITest.test_seq_bytes_to_charp_array.<locals>.ZcSsdS)Nr.r)r	rrr
�__len__`sz9CAPITest.test_seq_bytes_to_charp_array.<locals>.Z.__len__N)r
rrr7rrrr
�Z_sr8r.�)r.������	�
���
����c@seZdZdd�Zdd�ZdS)z1CAPITest.test_seq_bytes_to_charp_array.<locals>.ZcSstjS)N)r"�maxsize)r	rrr
r7fsz9CAPITest.test_seq_bytes_to_charp_array.<locals>.Z.__len__cSsdS)N�xr)r	�irrr
�__getitem__hsz=CAPITest.test_seq_bytes_to_charp_array.<locals>.Z.__getitem__N)r
rrr7rKrrrr
r8es)�objectrr/�_posixsubprocess�	fork_exec�MemoryError)r	r8rrr
�test_seq_bytes_to_charp_array\s
(
z&CAPITest.test_seq_bytes_to_charp_arraycCsHGdd�dt�}|�ttj|�dgdddddd	d
ddd
ddddd�dS)Nc@seZdZdd�ZdS)z-CAPITest.test_subprocess_fork_exec.<locals>.ZcSsdS)Nr.r)r	rrr
r7psz5CAPITest.test_subprocess_fork_exec.<locals>.Z.__len__N)r
rrr7rrrr
r8osr8�1r9)r.r:r;r<r=r>r?r@rArBrCrDrErFrG)rLrr/rMrN)r	r8rrr
�test_subprocess_fork_execms
z"CAPITest.test_subprocess_fork_execz6Signature information for builtins requires docstringscCs|�tjjd�|�tjjd�|�tjjd�|�tjjd�|�tjjd�|�tjjd�|�tjjd�|�tjjd�|�tjjd�|�tjjd�|�tj	jd�|�tj	jd�|�tj
jd�|�tj
jd�|�tjjd�|�tjjd�dS)Nz This docstring has no signature.z[docstring_with_invalid_signature($module, /, boo)

This docstring has an invalid signature.zedocstring_with_invalid_signature2($module, /, boo)

--

This docstring also has an invalid signature.z%This docstring has a valid signature.z($module, /, sig)z>
This docstring has a valid signature and some extra newlines.z($module, /, parameter))rrZno_docstringr�__text_signature__Zdocstring_emptyZdocstring_no_signatureZ docstring_with_invalid_signatureZ!docstring_with_invalid_signature2Zdocstring_with_signatureZ#docstring_with_signature_but_no_docZ+docstring_with_signature_and_extra_newlines)r	rrr
� test_docstring_signature_parsingws.






z)CAPITest.test_docstring_signature_parsingcCs�tj}|�}|�}|�||d||f�|�|dd|df�|�d|dd|f�|}||}|�|d||f�|}|d}|�|d|df�d}||}|�|dd|f�dS)N�matmul�*�imatmul)rZ
matmulTyper)r	�MZm1Zm2�orrr
�&test_c_type_with_matrix_multiplication�sz/CAPITest.test_c_type_with_matrix_multiplicationc	Cshtr4t�d�}td|�\}}}|�|�dd�d�n0|�t��}t�	�WdQRX|�t
|j�d�dS)Nz�
                import _testcapi
                from test import support

                with support.SuppressCrashReport():
                    _testcapi.return_null_without_error()
            z-c�
rs�Fatal Python error: a function returned NULL without setting an error\nSystemError: <built-in function return_null_without_error> returned NULL without setting an error\n\nCurrent thread.*:\n  File .*", line 6 in <module>zBreturn_null_without_error.* returned NULL without setting an error)�Py_DEBUG�textwrap�dedentr�assertRegex�replacer�SystemErrorrZreturn_null_without_error�str�	exception)r	�code�rcr(r)�cmrrr
�test_return_null_without_error�s	z'CAPITest.test_return_null_without_errorc	Cshtr4t�d�}td|�\}}}|�|�dd�d�n0|�t��}t�	�WdQRX|�t
|j�d�dS)Nz�
                import _testcapi
                from test import support

                with support.SuppressCrashReport():
                    _testcapi.return_result_with_error()
            z-cr[rs+Fatal Python error: a function returned a result with an error set\nValueError\n\nThe above exception was the direct cause of the following exception:\n\nSystemError: <built-in function return_result_with_error> returned a result with an error set\n\nCurrent thread.*:\n  File .*, line 6 in <module>z>return_result_with_error.* returned a result with an error set)r\r]r^rr_r`rrarZreturn_result_with_errorrbrc)r	rdrer(r)rfrrr
�test_return_result_with_error�sz&CAPITest.test_return_result_with_errorcCst��dS)N)r�test_buildvalue_N)r	rrr
ri�szCAPITest.test_buildvalue_NcCs<d}td|�\}}}|�d|�|�d|�|�d|�dS)Na*if 1:
            import _testcapi

            class C(): pass

            # The first loop tests both functions and that remove_mem_hooks()
            # can be called twice in a row. The second loop checks a call to
            # set_nomemory() after a call to remove_mem_hooks(). The third
            # loop checks the start and stop arguments of set_nomemory().
            for outer_cnt in range(1, 4):
                start = 10 * outer_cnt
                for j in range(100):
                    if j == 0:
                        if outer_cnt != 3:
                            _testcapi.set_nomemory(start)
                        else:
                            _testcapi.set_nomemory(start, start + 1)
                    try:
                        C()
                    except MemoryError as e:
                        if outer_cnt != 3:
                            _testcapi.remove_mem_hooks()
                        print('MemoryError', outer_cnt, j)
                        _testcapi.remove_mem_hooks()
                        break
        z-csMemoryError 1 10sMemoryError 2 20sMemoryError 3 30)r�assertIn)r	rdrer(r)rrr
�test_set_nomemory�s
zCAPITest.test_set_nomemoryc	Cs�Gdd�dt�}Gdd�dt�}dddd�}x|it�|�|�|t|�||�||�gD]R}|�t�|�t|����|�t�|�t|����|�t�	|�t|�
���qTWdS)	Ncs4eZdZ�fdd�Z�fdd�Z�fdd�Z�ZS)z9CAPITest.test_mapping_keys_values_items.<locals>.Mapping1cstt����S)N)�list�super�keys)r	)r2rr
rnsz>CAPITest.test_mapping_keys_values_items.<locals>.Mapping1.keyscstt����S)N)rlrm�values)r	)r2rr
rosz@CAPITest.test_mapping_keys_values_items.<locals>.Mapping1.valuescstt����S)N)rlrm�items)r	)r2rr
rpsz?CAPITest.test_mapping_keys_values_items.<locals>.Mapping1.items)r
rrrnrorp�
__classcell__rr)r2r
�Mapping1srrcs4eZdZ�fdd�Z�fdd�Z�fdd�Z�ZS)z9CAPITest.test_mapping_keys_values_items.<locals>.Mapping2cstt����S)N)�tuplermrn)r	)r2rr
rnsz>CAPITest.test_mapping_keys_values_items.<locals>.Mapping2.keyscstt����S)N)rsrmro)r	)r2rr
rosz@CAPITest.test_mapping_keys_values_items.<locals>.Mapping2.valuescstt����S)N)rsrmrp)r	)r2rr
rpsz?CAPITest.test_mapping_keys_values_items.<locals>.Mapping2.items)r
rrrnrorprqrr)r2r
�Mapping2srtr.r:r9)�fooZbarZspam)�dictrZassertListEqualr�get_mapping_keysrlrn�get_mapping_valuesro�get_mapping_itemsrp)r	rrrtZdict_obj�mappingrrr
�test_mapping_keys_values_itemssz'CAPITest.test_mapping_keys_values_itemscCsx|�ttjd�|�ttjd�|�ttjd�Gdd�d�}|�}|�ttj|�|�ttj|�|�ttj|�dS)Nc@s$eZdZdd�Zdd�Zdd�ZdS)zCCAPITest.test_mapping_keys_values_items_bad_arg.<locals>.BadMappingcSsdS)Nr)r	rrr
rn3szHCAPITest.test_mapping_keys_values_items_bad_arg.<locals>.BadMapping.keyscSsdS)Nr)r	rrr
ro5szJCAPITest.test_mapping_keys_values_items_bad_arg.<locals>.BadMapping.valuescSsdS)Nr)r	rrr
rp7szICAPITest.test_mapping_keys_values_items_bad_arg.<locals>.BadMapping.itemsN)r
rrrnrorprrrr
�
BadMapping2sr|)rrrrwrxryr/)r	r|Zbad_mappingrrr
�&test_mapping_keys_values_items_bad_arg-sz/CAPITest.test_mapping_keys_values_items_bad_argcCs�ddlm}|�|dd�d�|�|dd�d�|�|dd�d	�|�|dd
�d�|�|dd�d
�|�|dd�d�|�|dd�d�|�|dd
�d�|�t|dd�|�t|d	d�|�t|dd�dS)Nr)�pynumber_tobase�{r:Z	0b1111011r>Z0o173r@Z123rFZ0x7bi����z
-0b1111011z-0o173z-123z-0x7bg�^@)rr~rrr/ra)r	r~rrr
�test_pynumber_tobase>szCAPITest.test_pynumber_tobaseN)r
rrrr*r,r6�unittest�
skipUnlessrMrPrRZskipIfrrTrZrgrhrirkr{r}r�rrrr
r's 
*  rc@s6eZdZdd�Zddd�Zdd�Zdd	�Zd
d�ZdS)
�TestPendingCallscsF�fdd�}x4t|�D](}t�t��d�xt�|�r.Pq.WqWdS)Ncs��d�dS)N)�appendr)�lrr
�callbackPsz6TestPendingCalls.pendingcalls_submit.<locals>.callbackg{�G�z�?)�range�time�sleep�randomrZ_pending_threadfunc)r	r��nr�rJr)r�r
�pendingcalls_submitOs
z$TestPendingCalls.pendingcalls_submitNcCs�d}xzt|�|kr~dr.tjr.tdt|�f�xtd�D]}||}q8W|rX|j��sXq|d7}|�|dkd|t|�f�qWdr�tjr�tdt|�f�dS)NrFz(%i)i�r.i'z(timeout waiting for %i callbacks, got %i)�lenr�verbose�printr��eventZis_setr)r	r�r��context�countrJ�arrr
�pendingcalls_wait^s


z"TestPendingCalls.pendingcalls_waitc	s�d}g}Gdd�dt�}|��g�_d�_|�j�_d�_t���_t���_	��fdd�t
�j�D�}t�|����
�j|��WdQRXdS)N� c@seZdZdS)z8TestPendingCalls.test_pendingcalls_threaded.<locals>.fooN)r
rrrrrr
ruvsrur:rcsg|]}tj�j�fd��qS))�target�args)�	threading�Thread�pendingcalls_thread)�.0rJ)r�r	rr
�
<listcomp>sz?TestPendingCalls.test_pendingcalls_threaded.<locals>.<listcomp>)rLr�r��nThreads�	nFinishedr�ZLock�lockZEventr�r�rZ
start_threadsr�)r	r�Zthreadsrur)r�r	r
�test_pendingcalls_threadedqs

z+TestPendingCalls.test_pendingcalls_threadedcCsjz|�|j|j�Wd|j�.|jd7_|j}drFtjrFtd|�WdQRX||jkrd|j	�
�XdS)Nr.Fzfinished threads: )r�r�r�r�r�rr�r�r�r��set)r	r�r�rrr
r��s

z$TestPendingCalls.pendingcalls_threadcCs$g}d}|�||�|�||�dS)N�@)r�r�)r	r�r�rrr
�test_pendingcalls_non_threaded�sz/TestPendingCalls.test_pendingcalls_non_threaded)N)r
rrr�r�r�r�r�rrrr
r�Ms

r�c@seZdZdd�ZdS)�SubinterpreterTestc	Cs|ddl}t��\}}d�|�}t|d��J}t�|�}|�|d�|�t	�
|�ttj
��|�t	�
|�t|��WdQRXdS)Nrz�if 1:
            import sys, builtins, pickle
            with open({:d}, "wb") as f:
                pickle.dump(id(sys.modules), f)
                pickle.dump(id(builtins), f)
            �rb)�builtins�os�pipe�format�openrZrun_in_subinterprZassertNotEqual�pickle�loadrr"�modules)r	r��r�wrd�f�retrrr
�test_subinterps�s

z"SubinterpreterTest.test_subinterpsN)r
rrr�rrrr
r��sr�c@seZdZejdd��ZdS)�TestThreadStatecs2�fdd�}|�tj|d�}|��|��dS)NcsHg��fdd�}t�|�|}}t�d�����t���dd�dS)Ncs��t���dS)N)r�r��	get_identr)�identsrr
r��szCTestThreadState.test_thread_state.<locals>.target.<locals>.callbackr.r9z/Couldn't find main thread correctly in the list)rZ_test_thread_stater�r�rr�r�r�)r�r��b)r	)r�r
r��s

z1TestThreadState.test_thread_state.<locals>.target)r�)r�r��start�join)r	r��tr)r	r
�test_thread_state�s

z!TestThreadState.test_thread_stateN)r
rrrZreap_threadsr�rrrr
r��sr�c@s&eZdZe��dd�ee�D��dS)�
Test_testcapiccs0|](}|�d�r|�d�s|tt|�fVqdS)Ztest_�_codeN)r&�endswith�getattrr)r��namerrr
�	<genexpr>�szTest_testcapi.<genexpr>N)r
rr�locals�update�dirrrrrr
r��sr�c@sdeZdZdZdZdd�Zdd�Zdd�Zd	d
�Zdd�Z	d
d�Z
dd�Zdd�Zdd�Z
dd�ZdS)�PyMemDebugTests�debugz(?:0x)?[0-9a-fA-F]+c	Cs6t���td||jd�}WdQRX|j}|�dd�S)Nz-c)�PYTHONMALLOC�asciir`)rrrr�r)�decode)r	rdr(rrrr
�check�s

zPyMemDebugTests.checkcCs<|�d�}d}|j|jd�}tj|tjd�}|�||�dS)Nz3import _testcapi; _testcapi.pymem_buffer_overflow()aDebug memory block at address p={ptr}: API 'm'\n    16 bytes originally requested\n    The [0-9] pad bytes at p-[0-9] are FORBIDDENBYTE, as expected.\n    The [0-9] pad bytes at tail={ptr} are not all FORBIDDENBYTE \(0x[0-9a-f]{{2}}\):\n        at tail\+0: 0x78 \*\*\* OUCH\n        at tail\+1: 0xfd\n        at tail\+2: 0xfd\n        .*\n    The block was made by call #[0-9]+ to debug malloc/realloc.\n    Data at p: cd cd cd .*\n\nEnable tracemalloc to get the memory block allocation traceback\n\nFatal Python error: bad trailing pad byte)�ptr)�flags)r�r��	PTR_REGEX�re�compile�DOTALLr_)r	r(�regexrrr
�test_buffer_overflow�s

z$PyMemDebugTests.test_buffer_overflowcCs,|�d�}d}|j|jd�}|�||�dS)Nz.import _testcapi; _testcapi.pymem_api_misuse()a�Debug memory block at address p={ptr}: API 'm'\n    16 bytes originally requested\n    The [0-9] pad bytes at p-[0-9] are FORBIDDENBYTE, as expected.\n    The [0-9] pad bytes at tail={ptr} are FORBIDDENBYTE, as expected.\n    The block was made by call #[0-9]+ to debug malloc/realloc.\n    Data at p: cd cd cd .*\n\nEnable tracemalloc to get the memory block allocation traceback\n\nFatal Python error: bad ID: Allocated using API 'm', verified using API 'r'\n)r�)r�r�r�r_)r	r(r�rrr
�test_api_misuse�s

zPyMemDebugTests.test_api_misusecCs|�|�}d}|�||�dS)NzJFatal Python error: Python memory allocator called without holding the GIL)r�rj)r	rdr(Zexpectedrrr
�check_malloc_without_gil�s
z(PyMemDebugTests.check_malloc_without_gilcCsd}|�|�dS)Nz6import _testcapi; _testcapi.pymem_malloc_without_gil())r�)r	rdrrr
�test_pymem_malloc_without_gilsz-PyMemDebugTests.test_pymem_malloc_without_gilcCsd}|�|�dS)Nz9import _testcapi; _testcapi.pyobject_malloc_without_gil())r�)r	rdrrr
� test_pyobject_malloc_without_gilsz0PyMemDebugTests.test_pyobject_malloc_without_gilcCs*t�d�}|j|d�}td||jd�dS)Nas
            import gc, os, sys, _testcapi
            # Disable the GC to avoid crash on GC collection
            gc.disable()
            obj = _testcapi.{func}()
            error = (_testcapi.pyobject_is_freed(obj) == False)
            # Exit immediately to avoid a crash while deallocating
            # the invalid object
            os._exit(int(error))
        )�funcz-c)r�)r]r^r�rr�)r	r�rdrrr
�check_pyobject_is_freed
s	z'PyMemDebugTests.check_pyobject_is_freedcCs|�d�dS)NZpyobject_uninitialized)r�)r	rrr
�$test_pyobject_is_freed_uninitializedsz4PyMemDebugTests.test_pyobject_is_freed_uninitializedcCs|�d�dS)NZpyobject_forbidden_bytes)r�)r	rrr
�&test_pyobject_is_freed_forbidden_bytessz6PyMemDebugTests.test_pyobject_is_freed_forbidden_bytescCs|�d�dS)NZpyobject_freed)r�)r	rrr
�test_pyobject_is_freed_free!sz+PyMemDebugTests.test_pyobject_is_freed_freeN)r
rrr�r�r�r�r�r�r�r�r�r�r�r�rrrr
r��sr�c@seZdZdZdS)�PyMemMallocDebugTestsZmalloc_debugN)r
rrr�rrrr
r�%sr�z
need pymallocc@seZdZdZdS)�PyMemPymallocDebugTestsZpymalloc_debugN)r
rrr�rrrr
r�)sr�z
need Py_DEBUGc@seZdZdZdS)�PyMemDefaultTests�N)r
rrr�rrrr
r�.sr��__main__)*�collectionsrr�r�r�r�r r"Z	sysconfigr]r�r�r�rrZtest.supportrZtest.support.script_helperrrrM�ImportError�
import_moduler�hasattrr\rrZTestCaserr�r�r�r�r�r�r�Z
with_pymallocr�r�r
�mainrrrr
�<module>sJ


(OY