HEX
Server: LiteSpeed
System: Linux server.nevid-deploma.com 4.18.0-553.111.1.lve.el8.x86_64 #1 SMP Fri Mar 13 13:42:17 UTC 2026 x86_64
User: smilepac (1037)
PHP: 8.1.34
Disabled: NONE
Upload Files
File: //opt/cppython/lib/python3.8/test/test_importlib/extension/__pycache__/test_loader.cpython-38.pyc
U

/D�gy.�@s�ddlmZddlmZe�d�ZddlZddlZddlZddl	Z	ddl
ZddlZddlm
Z
Gdd�dej�Zejeed	�\ZZGd
d�dej�Zejeed	�\ZZedkr�e	��dS)
�)�abc)�utilzimportlib.machinery�N��assert_python_failurec@sdeZdZdZdd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Z	dZ
dZdd�ZdZ
dd�Zdd�ZdS)�LoaderTestsz)Test load_module() for extension modules.cCs|j�tjjtjj�|_dS�N)�	machinery�ExtensionFileLoaderr�
EXTENSIONS�name�	file_path�loader��self�r�H/opt/cppython/lib/python3.8/test/test_importlib/extension/test_loader.py�setUps�zLoaderTests.setUpcCs|j�|�Sr)r�load_module)r�fullnamerrrrszLoaderTests.load_modulec	Cs:|j��|j�d�|�t��|�d�W5QRXdS)NZXXX)rr�assertRaises�ImportErrorrrrr�test_load_module_APIs
z LoaderTests.test_load_module_APIcCs(|j�tjjtjj�}|�|j|�dSr)r	r
rrrr
�assertEqualr�r�otherrrr�
test_equality s�zLoaderTests.test_equalitycCs,|j�dtjjtjj�}|�|j|�dS)N�_)r	r
rrrr
�assertNotEqualrrrrr�test_inequality%s�zLoaderTests.test_inequalityc	Cs�t�tjj��n|�tjj�}dtjjfdtjjfdfD]\}}|�t||�|�q8|�tjjt	j
�|�|j|j
j�W5QRXdS)N�__name__�__file__��__package__�)r�uncacherrrr
r�getattrZassertIn�sys�modules�assertIsInstance�
__loader__r	r
�r�module�attr�valuerrr�test_module*s

��zLoaderTests.test_moduleNc	CsFt�tjj��.|�tjj�}|�tjj�}|�||�W5QRXdSr)rr%rrr�assertIs�rZmodule1Zmodule2rrr�test_module_reuse;szLoaderTests.test_module_reusec	Cs8d}|�t��}|�|�W5QRX|�|jj|�dS)N�asdfjkl;)rrrr�	exceptionr�rr�cmrrr�test_unloadableDszLoaderTests.test_unloadablecCs\|�|j�tjj��|jjD]8}tj	�
dddd|�}|j�d|�}|�|�d��qdS)NZsome�pathZpkg�__init__)
ZassertFalser�
is_packagerrrr	�EXTENSION_SUFFIXES�osr8�joinr
Z
assertTrue)r�suffixr8rrrr�test_is_packageJs
zLoaderTests.test_is_package)r �
__module__�__qualname__�__doc__rrrrrr/�test_package�test_lacking_parentr2�test_state_after_failurer7r?rrrrrsr)r	c@s�eZdZdZdd�ZdZdZdZdd�Zdd�Z	d	d
�Z
dd�Zd
d�Zdd�Z
dd�Zdd�Zdd�Zdd�Zdd�Zdd�Zdd�Zdd �Zd!d"�Zd#d$�Ze�eed%�d&�d'd(��ZdS))�MultiPhaseExtensionModuleTestszMTest loading extension modules with multi-phase initialization (PEP 489)
    cCsFd|_|j�d�}tj�|j�|_|js,t�|j�|j|jj	�|_
dS)NZ_testmultiphase)rr	�
FileFinder�	importlibr�	find_spec�spec�AssertionErrorr
�originr)r�finderrrrrYs
�z$MultiPhaseExtensionModuleTests.setUpNc
Cs�t�|j���|��}d|jfd|jjfdfD]\}}|�t||�|�q.|�t	��|j
W5QRX|�|tj
|j�|�|j|jj�W5QRXdS)z Test loading an extension moduler r!r"N)rr%rrrJrLrr&r�AttributeError�__path__r0r'r(r)r*r	r
r+rrrr/js
��z*MultiPhaseExtensionModuleTests.test_modulec
Cst�|j���|��}|�|tj�|��}|�|�	d�d�|�|�	�d�|�
t��|jW5QRXd|_|�|jd�|�|�
dd�d�|�|��t�|�|�d�dd�|�
|j��|���W5QRX|�|jd	�|�|jd
�W5QRXdS)z@Test basic functionality of stuff defined in an extension moduleZabcdNr�	��Z23Z123i��something different)rr%rrr)�types�
ModuleType�ExamplerZdemorrNrZfooZStr�str�errorZ	int_const�	str_const)rr,�exrrr�test_functionalityxs"z1MultiPhaseExtensionModuleTests.test_functionalityc	CsBt�|j��,|��}|j}t�|�|�||j�W5QRXdS)z6Test that reload didn't re-set the module's attributesN)rr%rrrVrH�reloadr0)rr,Zex_classrrr�test_reload�s

z*MultiPhaseExtensionModuleTests.test_reloadc
Cs�|��}|�d��|�|�d�d�W5QRX|�d��&|�t��|�d�W5QRXW5QRX|�d��&|�t��|�d�W5QRXW5QRXdS)zBAssert that the PyState_{Find,Add,Remove}Module C API doesn't workZPyState_FindModulerNZPyState_AddModulerRZPyState_RemoveModuler)r�subTestrZcall_state_registration_funcr�SystemError�rr,rrr�test_try_registration�sz4MultiPhaseExtensionModuleTests.test_try_registrationcCs|j�|j�S)z'Load the module from the test extension)rrrrrrrr�sz*MultiPhaseExtensionModuleTests.load_modulecCs>|jj}|j�||�}tj�||�}tj�|�}|�|�|S)z-Load a module from the test extension by name)	rJrLr	r
rHr�spec_from_loader�module_from_spec�exec_module)rrrLrrJr,rrr�load_module_by_name�s
z2MultiPhaseExtensionModuleTests.load_module_by_namecCsD|�d|j�}|�|tj�|�|jd|j�|�|jd�dS)z"Test loading a simulated submodulezpkg.rSN)rerr)rTrUrr rYr`rrr�test_load_submodule�sz2MultiPhaseExtensionModuleTests.test_load_submodulecCsF|�d�}|�|tj�|�|jd�|�|jd�|�dtj	�dS)z-Test loading module with a one-character name�xrSN)
rer)rTrUrr rYZassertNotInr'r(r`rrr�test_load_short_name�s

z3MultiPhaseExtensionModuleTests.test_load_short_namecCs(|�|j�}|�|j�}|�||�dS)z,Test that 2 loads result in 2 module objectsN)rerZassertIsNotr1rrr�test_load_twice�sz.MultiPhaseExtensionModuleTests.test_load_twicec	Cs8d}|�t��}|�|�W5QRX|�|jj|�dS)zTest nonexistent moduler3N�rrrerr4rr5rrrr7�sz.MultiPhaseExtensionModuleTests.test_unloadablec	Cs8d}|�t��}|�|�W5QRX|�|jj|�dS)z9Test behavior with nonexistent module with non-ASCII nameufoóNrjr5rrr�test_unloadable_nonascii�sz7MultiPhaseExtensionModuleTests.test_unloadable_nonasciicCs:|jd}|�|�}|�t|�tt��|�|jd�dS)z4Test returning a non-module object from create worksZ
_nonmodule�N)rrer�type�unittestr�three�rr�modrrr�test_nonmodule�s

z-MultiPhaseExtensionModuleTests.test_nonmodulecCsN|jd}|�|�}|�t|�tt��|�|jd�|�|�dd�d�dS)z6Test creating a non-module object with methods definedZ_nonmodule_with_methodsrl�
rRrPN)rrerrmrnrroZbarrprrr�test_nonmodule_with_methods�s


z:MultiPhaseExtensionModuleTests.test_nonmodule_with_methodscCs4|jd}|�|�}|�|tj�|�|j|�dS)z%Test that NULL slots aren't a problemZ_null_slotsN)rrer)rTrUrr )rrr,rrr�test_null_slots�s

z.MultiPhaseExtensionModuleTests.test_null_slotscCsRdD]H}|�|��4|jd|}|�t��|�|�W5QRXW5QRXqdS)z5Test SystemError is raised for misbehaving extensions)Zbad_slot_largeZbad_slot_negativeZcreate_int_with_stateZ
negative_sizeZexport_nullZexport_uninitializedZexport_raiseZexport_unreported_exceptionZcreate_nullZcreate_raiseZcreate_unreported_exceptionZnonmodule_with_exec_slotsZexec_errZ
exec_raiseZexec_unreported_exceptionrN)r^rrr_re)rZ	name_baserrrr�test_bad_modules�s
z/MultiPhaseExtensionModuleTests.test_bad_modulesc
Csd|jddfdg}|D]H\}}|�|��0|�|�}|�|j|�|�|jd|�W5QRXqdS)z4Test that modules with non-ASCII names can be loadedu_zkouška_načteníZCzech)u_インポートテストZJapanesezModule named in %sN)rr^rerr rB)rZcasesr�langr,rrr�
test_nonascii�s�
z,MultiPhaseExtensionModuleTests.test_nonasciiZgettotalrefcountz.--with-pydebug has to be enabled for this testcCsd}td|�dS)z� Issue #32374: Test that traverse fails when accessing per-module
            state before Py_mod_exec was executed.
            (Multiphase initialization modules only)
        aYif True:
                try:
                    from test import support
                    import importlib.util as util
                    spec = util.find_spec('_testmultiphase')
                    spec.name = '_testmultiphase_with_bad_traverse'

                    with support.SuppressCrashReport():
                        m = spec.loader.create_module(spec)
                except:
                    # Prevent Python-level exceptions from
                    # ending the process with non-zero status
                    # (We are testing for a crash in C-code)
                    passz-cNr)rZscriptrrr�test_bad_traversesz0MultiPhaseExtensionModuleTests.test_bad_traverse)r r@rArBrrCrDrEr/r[r]rarrerfrhrir7rkrrrtrurvrxrnZskipIf�hasattrr'ryrrrrrFUs2		�rF�__main__)r$rrZimport_importlibr	Zos.pathr<r'rTrn�importlib.utilrHZtest.support.script_helperrrZ	test_bothZFrozen_LoaderTestsZSource_LoaderTestsrFZ%Frozen_MultiPhaseExtensionModuleTestsZ%Source_MultiPhaseExtensionModuleTestsr �mainrrrr�<module>s(
E�T�