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/__pycache__/test_util.cpython-38.opt-2.pyc
U

/D�g���@s�ddlmZe�d�Ze�d�Ze�d�Ze�d�ZddlZddl	Z	ddl
Z
ddlZddlZddl
mZddlZddlZddlZddlZGd	d
�d
�Zejeed�\ZZGdd�d�Zejeeeed
�\ZZGdd�d�Zejeed�\ZZGdd�d�Zejeed�\ZZGdd�d�Z eje ed�\Z!Z"Gdd�d�Z#eje#ed�\Z$Z%Gdd�d�Z&eje&eeed�\Z'Z(Gdd�d�Z)eje)ed�\Z*Z+Gdd�d�Z,eje,ed�\Z-Z.Gdd�dej/�Z)e0dk�r�e�1�dS)�)�utilz
importlib.abc�	importlibzimportlib.machineryzimportlib.util�N)�supportc@s(eZdZdZdd�Zdd�Zdd�ZdS)	�DecodeSourceBytesTestsustring ='ü'cCs&|j�d�}|�|j�|�|j�dS)N�utf-8��source�encode�assertEqualr�
decode_source)�self�source_bytes�r�</opt/cppython/lib/python3.8/test/test_importlib/test_util.py�test_ut8_defaultsz'DecodeSourceBytesTests.test_ut8_defaultcCs,d|j}|�d�}|�|j�|�|�dS)Nz# coding=latin-1
zlatin-1r�r
r	rrrr�test_specified_encodings

z.DecodeSourceBytesTests.test_specified_encodingcCsBd�|j|jg�}|�d�}|�|j�|�d�|j|jg��dS)Nz
r�
)�joinr	r
rrrrrrr�test_universal_newlines!s

�z.DecodeSourceBytesTests.test_universal_newlinesN)�__name__�
__module__�__qualname__r	rrrrrrrrsrc@s\eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�ZdS)�ModuleFromSpecTestsc	CsDGdd�d�}|j�d|��}|�t��|j�|�}W5QRXdS)Nc@seZdZdd�ZdS)z9ModuleFromSpecTests.test_no_create_module.<locals>.LoadercSsdS�Nr�r
�modulerrr�exec_module1szEModuleFromSpecTests.test_no_create_module.<locals>.Loader.exec_moduleN)rrrrrrrr�Loader0sr�test)�	machinery�
ModuleSpec�assertRaises�ImportErrorr�module_from_spec�r
r�specrrrr�test_no_create_module/sz)ModuleFromSpecTests.test_no_create_modulecCsRGdd�d|jj�}|j�d|��}|j�|�}|�|tj�|�	|j
|j�dS)Nc@seZdZdd�ZdS)zCModuleFromSpecTests.test_create_module_returns_None.<locals>.LoadercSsdSrr)r
r'rrr�
create_module9szQModuleFromSpecTests.test_create_module_returns_None.<locals>.Loader.create_moduleN�rrrr)rrrrr8srr )�abcrr!r"rr%�assertIsInstance�types�
ModuleTyperr�namer&rrr�test_create_module_returns_None7s
z3ModuleFromSpecTests.test_create_module_returns_Nonecsjd�Gdd�dtj��G��fdd�d|jj�}|j�d|��}|j�|�}|�|��|�	|j
��dS)Nzalready setc@seZdZdS)z<ModuleFromSpecTests.test_create_module.<locals>.CustomModuleN)rrrrrrr�CustomModuleBsr1cseZdZ��fdd�ZdS)z6ModuleFromSpecTests.test_create_module.<locals>.Loadercs�|j�}�|_|Sr)r/r�r
r'r�r1r/rrr)Es
zDModuleFromSpecTests.test_create_module.<locals>.Loader.create_moduleNr*rr3rrrDsrr )r-r.r+rr!r"rr%r,rrr&rr3r�test_create_module@sz&ModuleFromSpecTests.test_create_modulecCs0|j�dt��}|j�|�}|�|j|j�dS�Nr )r!r"�objectrr%rrr/r2rrr�
test___name__Nsz!ModuleFromSpecTests.test___name__cCs.|j�dt��}|j�|�}|�|j|�dSr5)r!r"r6rr%r�__spec__r2rrr�
test___spec__Ssz!ModuleFromSpecTests.test___spec__cCs2t�}|j�d|�}|j�|�}|�|j|�dSr5)r6r!r"rr%�assertIs�
__loader__)r
�loaderr'rrrr�test___loader__Xsz#ModuleFromSpecTests.test___loader__cCs0|j�dt��}|j�|�}|�|j|j�dS)Nztest.pkg)r!r"r6rr%r�__package__�parentr2rrr�test___package__^sz$ModuleFromSpecTests.test___package__cCs4|jjdt�dd�}|j�|�}|�|j|j�dS)Nr T)�
is_package)r!r"r6rr%r�__path__�submodule_search_locationsr2rrr�
test___path__csz!ModuleFromSpecTests.test___path__cCs:|jjdt�dd�}d|_|j�|�}|�|j|j�dS)Nr �	some/path)�originT)	r!r"r6�has_locationrr%r�__file__rFr2rrr�
test___file__hsz!ModuleFromSpecTests.test___file__cCs<|j�dt��}d|_d|_|j�|�}|�|j|j�dS)Nr rET)	r!r"r6�cachedrGrr%r�
__cached__r2rrr�test___cached__ns
z#ModuleFromSpecTests.test___cached__N)
rrrr(r0r4r7r9r=r@rDrIrLrrrrr-s	r)r+r!rc@sheZdZedd��Zdd�Zdd�Zdd�Zd	d
�Zdd�Z	d
d�Z
dd�Zdd�Zdd�Z
dd�ZdS)�ModuleForLoaderTestsc
Cs8t���&t�dt�|j�|�W5QR�SQRXdS)N�ignore)�warnings�catch_warnings�simplefilter�DeprecationWarningr�module_for_loader)�cls�funcrrrrSs
z&ModuleForLoaderTests.module_for_loaderc
CsJt���8t�dt�|�t��|j�dd��}W5QRXW5QRXdS)N�errorcSs|Srr)�xrrr�<lambda>��z3ModuleForLoaderTests.test_warning.<locals>.<lambda>)rOrPrQrRr#rrS)r
rUrrr�test_warning�s
z!ModuleForLoaderTests.test_warningcCs|�dd��}|||�S)NcSs|SrrrrrrrX�rYz4ModuleForLoaderTests.return_module.<locals>.<lambda>)rS)r
r/�fxnrrr�
return_module�sz"ModuleForLoaderTests.return_modulecCs:dd�}|�|�}z|||�Wntk
r4YnXdS)NcSst�dSr)r$rrrr�to_wrap�sz5ModuleForLoaderTests.raise_exception.<locals>.to_wrap)rSr$)r
r/r]r[rrr�raise_exception�s
z$ModuleForLoaderTests.raise_exceptionc	CsRd}t�|��|�|�}|�|tj�W5QRX|�|tj�|�	|j
|�dS�N�a.b.c)r�uncacher\�assertIn�sys�modulesr,r-r.rr)r
�module_namerrrr�test_new_module�s
z$ModuleForLoaderTests.test_new_modulec	s�G�fdd�d�}d}t�d�}d|_d|_t�|��N|tj|<|�}|�|�}��	|tj|���
|j|���
|j|�W5QRXdS)Ncs"eZdZdd�Z�jdd��ZdS)z4ModuleForLoaderTests.test_reload.<locals>.FakeLoadercSsdS)NTr�r
r/rrrrA�sz?ModuleForLoaderTests.test_reload.<locals>.FakeLoader.is_packagecSs|Srrrrrr�load_module�sz@ModuleForLoaderTests.test_reload.<locals>.FakeLoader.load_moduleN)rrrrArSrhr�r
rr�
FakeLoader�srjr`�*)r-r.r;r>rrarcrdrhr:r)r
rjr/rr<Zreturned_modulerrir�test_reload�s


z ModuleForLoaderTests.test_reloadc	Cs6d}t�|��|�|�|�|tj�W5QRXdSr_)rrar^�assertNotInrcrdrgrrr�test_new_module_failure�s
z,ModuleForLoaderTests.test_new_module_failurec	CsNd}t�|�}t�|��,|tj|<|�|�|�|tj|�W5QRXdSr_)r-r.rrarcrdr^r:�r
r/rrrr�test_reload_failure�s


z(ModuleForLoaderTests.test_reload_failurecCs6dd�}|�|�}|�|j|j�|�|j|j�dS)NcSsdSrrrrrrr[�rYz6ModuleForLoaderTests.test_decorator_attrs.<locals>.fxn)rSrrr�r
r[�wrappedrrr�test_decorator_attrs�s
z)ModuleForLoaderTests.test_decorator_attrsc	CsbGdd�dtj�}d}||�}t�|��0|�|�|tj|<|�|�}|�||�W5QRXdS)Nc@seZdZdd�ZdS)z;ModuleForLoaderTests.test_false_module.<locals>.FalseModulecSsdS)NFrrirrr�__bool__�rYzDModuleForLoaderTests.test_false_module.<locals>.FalseModule.__bool__N�rrrrtrrrr�FalseModule�srv�mod)	r-r.rraZassertFalsercrdr\r:)r
rvr/rZgivenrrr�test_false_module�s


z&ModuleForLoaderTests.test_false_modulec	s�G�fdd�d�}d}t�|��B|d�}|�|�}��|j|���|j|���|jd�W5QRXd}t�|��B|d�}|�|�}��|j|���|j|���|j|�W5QRXdS)Ncs*eZdZdd�Zdd�Z�jdd��ZdS)z<ModuleForLoaderTests.test_attributes_set.<locals>.FakeLoadercSs
||_dSr�Z_pkg)r
rArrr�__init__�szEModuleForLoaderTests.test_attributes_set.<locals>.FakeLoader.__init__cSs|jSrryrgrrrrA�szGModuleForLoaderTests.test_attributes_set.<locals>.FakeLoader.is_packagecSs|Srrrrrrrh�szHModuleForLoaderTests.test_attributes_set.<locals>.FakeLoader.load_moduleN)rrrrzrArSrhrrirrrj�srj�pkg.modF�pkgzpkg.subT)rrarhrrr:r;r>)r
rjr/r<rrrir�test_attributes_set�s	

z(ModuleForLoaderTests.test_attributes_setN)rrr�classmethodrSrZr\r^rfrlrnrprsrxr}rrrrrM{s
	
	rMc@sDeZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dS)�SetPackageTestsc	s`�fdd�}|j�|�}t���t�dt�|�W5QRX|�t�d��|�|�j	�dS)Ncs�Srrr�rrrrXrYz(SetPackageTests.verify.<locals>.<lambda>rNr>)
r�set_packagerOrPrQrR�
assertTrue�hasattrrr>)r
r�expectr[rrrr�r�verifys
zSetPackageTests.verifycCs t�d�}d|_|�|d�dS)Nr��r-r.r>r�rrrr�test_top_level
s
zSetPackageTests.test_top_levelcCs(t�d�}dg|_d|_|�|d�dS)Nr|z<path>)r-r.rBr>r�rrrr�test_packages
zSetPackageTests.test_packagecCs t�d�}d|_|�|d�dS)Nr{r|r�rrrr�test_submodules
zSetPackageTests.test_submodulecCs.t�d�}t|d�rt|d�|�|d�dS)Nrwr>r�)r-r.r��delattrr�rrrr�test_setting_if_missing!s


z'SetPackageTests.test_setting_if_missingcCs*dD] }t�d�}||_|�||�qdS)N)TFrwr�)r
�valuerrrr�test_leaving_alone(s
z"SetPackageTests.test_leaving_alonec	CsXdd�}t���t�dt�|j�|�}W5QRX|�|j|j�|�|j|j�dS)NcSsdSrrr�rrrr[0rYz1SetPackageTests.test_decorator_attrs.<locals>.fxnrN)	rOrPrQrRrr�rrrrqrrrrs/s
z$SetPackageTests.test_decorator_attrsN)
rrrr�r�r�r�r�r�rsrrrrr�src@s0eZdZedd��Zdd�Zdd�Zdd�Zd	S)
�SetLoaderTestscsG�fdd�d�}|�j_|S)NcseZdZ�jjdd��ZdS)z/SetLoaderTests.DummyLoader.<locals>.DummyLoadercSs|jSrr�rrrrrhEsz;SetLoaderTests.DummyLoader.<locals>.DummyLoader.load_moduleN)rrrr�
set_loaderrhrrirr�DummyLoaderDsr�)�	__class__r�)r
r�rrirr�AszSetLoaderTests.DummyLoaderc	Csl|��}t�d�|_z
|j`Wntk
r2YnXt���&t�dt	�|�
||�d�j�W5QRXdS�N�blahrN)r�r-r.rr;�AttributeErrorrOrPrQrRrrh�r
r<rrr�test_no_attributeKs

z SetLoaderTests.test_no_attributec	CsT|��}t�d�|_d|j_t���&t�dt�|�	||�
d�j�W5QRXdSr��r�r-r.rr;rOrPrQrRrrhr�rrr�test_attribute_is_NoneVs
z%SetLoaderTests.test_attribute_is_Nonec	CsT|��}t�d�|_d|j_t���&t�dt�|�	d|�
d�j�W5QRXdS)Nr�rkrNr�r�rrr�test_not_reset^s
zSetLoaderTests.test_not_resetN)rrr�propertyr�r�r�r�rrrrr�=s

	r�c@s<eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
S)�ResolveNameTestscCs|�d|j�dd��dS)N�bacon�rr�resolve_namerirrr�
test_absolutepszResolveNameTests.test_absolutecCs|�d|j�dd��dS)Nr��spamr�rirrr�test_absolute_within_packagetsz-ResolveNameTests.test_absolute_within_packagec	Cs(|�t��|j�dd�W5QRXdS)N�.baconr��r#�
ValueErrorrr�rirrr�test_no_packagexsz ResolveNameTests.test_no_packagecCs|�d|j�dd��dS)Nzspam.eggs.baconr��	spam.eggsr�rirrr�test_in_package}s�z ResolveNameTests.test_in_packagecCs|�d|j�dd��dS)Nz
spam.bacon�..baconr�r�rirrr�test_other_package�s�z#ResolveNameTests.test_other_packagec	Cs(|�t��|j�dd�W5QRXdS)Nr�r�r�rirrr�test_escape�szResolveNameTests.test_escapeN)	rrrr�r�r�r�r�r�rrrrr�lsr�c@szeZdZGdd�d�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�ZdS)�
FindSpecTestsc@seZdZeddd��ZdS)zFindSpecTests.FakeMetaFinderNcCs
|||fSrr)r/�path�targetrrr�	find_spec�sz&FindSpecTests.FakeMetaFinder.find_spec)NN)rrr�staticmethodr�rrrr�FakeMetaFinder�sr�c	Cshd}t�|��Pt�|�}d}|j�||�}||_||_|tj	|<|j�
|�}|�||�W5QRXdS�N�some_modz	a loader!)rrar-r.r!r"r;r8rcrdr�r�r
r/rr<r'�foundrrr�test_sys_modules�s

zFindSpecTests.test_sys_modulesc	Csfd}t�|��Nt�|�}|`d}|j�||�}||_|tj	|<|j�
|�}|�||�W5QRXdSr�)rrar-r.r;r!r"r8rcrdr�rr�rrr�#test_sys_modules_without___loader__�s

z1FindSpecTests.test_sys_modules_without___loader__c
CsZd}t�|��Bt�|�}d|_|tj|<|�t��|j�	|�W5QRXW5QRXdS�Nr�)
rrar-r.r8rcrdr#r�r�rorrr�test_sys_modules_spec_is_None�s

z+FindSpecTests.test_sys_modules_spec_is_Nonec	Cs^d}t�|��Ft�|�}|j�|d�}||_|tj|<|j�	|�}|�
||�W5QRXdSr�)rrar-r.r!r"r8rcrdr�r)r
r/rr'r�rrr�test_sys_modules_loader_is_None�s

z-FindSpecTests.test_sys_modules_loader_is_Nonec
Csrd}t�|��Zt�|�}z|`Wntk
r6YnX|tj|<|�t	��|j�
|�W5QRXW5QRXdSr�)rrar-r.r8r�rcrdr#r�r�rorrr� test_sys_modules_spec_is_not_set�s

z.FindSpecTests.test_sys_modules_spec_is_not_setc
CsTd}t�|��<tj|jgd�� |�|ddf|j�|��W5QRXW5QRXdS)Nr�)�	meta_path)rraZimport_stater�rr�rgrrr�test_success�s
�zFindSpecTests.test_successcCs|�|j�d��dS)NZnevergoingtofindthismodule)ZassertIsNonerr�rirrr�test_nothing�szFindSpecTests.test_nothingc	Cs�d}d}tj|dd��l}t�|||�\}}|j�|�}|�|d�|�|ttj��|�	|ttj��|j�|�}|�
||�W5QRXdS�Nr��hamT�r|�r�temp_module�	submoduler��assertIsNotrb�sortedrcrdrmr�r
r/�subname�pkg_dir�fullname�_r'�
spec_againrrr�test_find_submodule�sz!FindSpecTests.test_find_submodulec	Cs�d}d}tj|dd��x}|j�|�t�|||�\}}|j�|�}|�|d�|�|tt	j
��|�|tt	j
��|j�|�}|�||�W5QRXdSr�)
rr��init�
import_moduler�r�r�rbr�rcrdrmrr�rrr�+test_find_submodule_parent_already_imported�sz9FindSpecTests.test_find_submodule_parent_already_importedc		Cs�d}d}tj|dd��v}t�|||�\}}d|}|j�||�}|�|d�|�|ttj��|�	|ttj��|j�|�}|�
||�W5QRXdS�Nr�r�Tr��.r�)	r
r/r�r�r�r��relnamer'r�rrr�test_find_relative_module�sz'FindSpecTests.test_find_relative_modulec
Cs�d}d}tj|dd��f}t�|||�\}}d|}|�t��|j�|�W5QRX|�|ttj	��|�|ttj	��W5QRXdSr�)
rr�r�r#r�r�rmr�rcrd)r
r/r�r�r�r�r�rrr�)test_find_relative_module_missing_packagesz7FindSpecTests.test_find_relative_module_missing_packagec	Cs&|�t��|j�d�W5QRXdS)Nzmodule.name)r#�ModuleNotFoundErrorrr�rirrr�test_find_submodule_in_modulesz+FindSpecTests.test_find_submodule_in_moduleN)rrrr�r�r�r�r�r�r�r�r�r�r�r�r�rrrrr��s	

r�)r�rr!c@seZdZdd�Zdd�ZdS)�MagicNumberTestscCs|�t|jj�d�dS)N�)r�lenr�MAGIC_NUMBERrirrr�test_lengthszMagicNumberTests.test_lengthcCs|�|jj�d��dS)Ns
)r�rr��endswithrirrr�test_incorporates_rn!sz%MagicNumberTests.test_incorporates_rnN)rrrr�r�rrrrr�sr�c@s�eZdZejjZe�ejjdkd�dd��Z	dd�Z
dd�Zd	d
�Zdd�Z
d
d�Zdd�Zdd�Zdd�Zdd�Ze�ejdko�ejdkd�dd��Ze�ejjdkd�dd��Ze�ejjdkd�dd ��Zd!d"�Zd#d$�Zd%d&�Zd'd(�Zd)d*�Zd+d,�Zd-d.�Z d/d0�Z!d1d2�Z"e�ejjdkd�d3d4��Z#e�ejjdkd�d5d6��Z$e�ejjdkd�d7d8��Z%e�ejjdkd�d9d:��Z&e�ejjdkd�d;d<��Z'dS)=�PEP3147TestsNz1requires sys.implementation.cache_tag not be Nonec	CsJtj�dddd�}tj�ddddd�|j��}|�|jj|dd�|�dS�	N�foo�bar�baz�qux.py�__pycache__�
qux.{}.pycr���optimization��osr�r�format�tagrr�cache_from_source�r
r�r�rrr�test_cache_from_source1s
��z#PEP3147Tests.test_cache_from_sourcec
CsBt�tjdd��(|�t��|j�d�W5QRXW5QRXdS)N�	cache_tagzwhatever.py)r�	swap_attrrc�implementationr#�NotImplementedErrorrr�rirrr�#test_cache_from_source_no_cache_tag<sz0PEP3147Tests.test_cache_from_source_no_cache_tagcCsBtj�dd�}tj�ddd�|j��}|�|jj|dd�|�dS)Nzfoo.bar�filer�z
file{}.pycr�r�r�r�rrr�test_cache_from_source_no_dotBs

��z*PEP3147Tests.test_cache_from_source_no_dotc
Cs�tj�dddd�}t���Tt�d�|�|j�|d�|jj|dd��|�|j�|d	�|jj|d
d��W5QRXt���Xt�d�|�	t
��|j�|d�W5QRX|�	t
��|j�|d	�W5QRXW5QRXdS)Nr�r�r�r�rNFrr�Tr�rV)r�r�rrOrPrQrrr�r#rR�r
r�rrr�%test_cache_from_source_debug_overrideJs

��

z2PEP3147Tests.test_cache_from_source_debug_overridecCs6d}tj�dd�|j��}|�|jj|dd�|�dS�N�foo.pyr�z
foo.{}.pycr�r�r�r�rrr�test_cache_from_source_cwd[s
�z'PEP3147Tests.test_cache_from_source_cwdc
Cs�tj�ddd�}Gdd�d�}t���|t�d�|�|j�|g�|jj|dd��|�|j�|d	g�|jj|d
d��|�	t
��|j�d|��W5QRXW5QRXdS)Nr�r�zbaz.pyc@seZdZdd�ZdS)z=PEP3147Tests.test_cache_from_source_override.<locals>.BearishcSst�dSr)�RuntimeErrorrirrrrthrYzFPEP3147Tests.test_cache_from_source_override.<locals>.Bearish.__bool__Nrurrrr�Bearishgsr�rNrr��r�z/foo/bar/baz.py)r�r�rrOrPrQrrr�r#r�)r
r�r�rrr�test_cache_from_source_overrideas

��z,PEP3147Tests.test_cache_from_source_overridecCs6d}tj�dd�|j��}|�|jj|dd�|�dSr�r�r�rrr�0test_cache_from_source_optimization_empty_stringss
�z=PEP3147Tests.test_cache_from_source_optimization_empty_stringcCs|d}tjj}tj�dd�|j��}|dkr4|d}n,|dkrL|d�|�}nd�|�}|�|�|�	|j
j|dd	�|�dS)
Nr�r��foo.{}r�.pyc��.opt-{}.pycz){!r} is a non-standard optimization levelr�)rc�flags�optimizer�r�rr�r�ZskipTestrrr�)r
r�Zoptimization_level�
almost_expectr��msgrrr�(test_cache_from_source_optimization_Nonezs


�z5PEP3147Tests.test_cache_from_source_optimization_Nonec	Cs�d}tjtj}tj�dd�|j��}|jj	||d�}|�
||d�|��|�
|jj	|dd�|d�|�t��|jj	|dd�W5QRXdS)	Nr�r�rr�rrkz.opt-42.pyczpath/is/bad)
�string�
ascii_letters�digitsr�r�rr�r�rr�rr#r�)r
r�Zvalid_charactersrZgotrrr�'test_cache_from_source_optimization_set�s��z4PEP3147Tests.test_cache_from_source_optimization_setc
CsJt���8t�d�|�t��|jjdddd�W5QRXW5QRXdS)NrNr�Fr�r�)rOrPrQr#�	TypeErrorrr�rirrr�;test_cache_from_source_debug_override_optimization_both_set�s

zHPEP3147Tests.test_cache_from_source_debug_override_optimization_both_set�\�/z/test meaningful only where os.altsep is definedcCs$|�|jjddd�d�|j��dS)Nz\foo\bar\baz/qux.pyr�r�z#\foo\bar\baz\__pycache__\qux.{}.pyc)rrr�r�r�rirrr�)test_sep_altsep_and_sep_cache_from_source�s
�z6PEP3147Tests.test_sep_altsep_and_sep_cache_from_sourcec	CsHt�dddd�}tj�ddddd�|j��}|�|jj	|dd�|�dSr�)
�pathlib�PurePathr�r�rr�r�rrr�r�rrr�$test_cache_from_source_path_like_arg�s
��z1PEP3147Tests.test_cache_from_source_path_like_argz4requires sys.implementation.cache_tag to not be Nonec	CsFtj�ddddd�|j��}tj�dddd�}|�|j�|�|�dS�Nr�r�r�r�r�r��r�r�rr�r�rr�source_from_cacher�rrr�test_source_from_cache�s

�z#PEP3147Tests.test_source_from_cachec
CsRtj�ddd�}t�tjdd��(|�t��|j	�
|�W5QRXW5QRXdS)Nr�r�zwhatever.pycr�)r�r�rrr�rcr�r#r�rrr�rrr�#test_source_from_cache_no_cache_tag�sz0PEP3147Tests.test_source_from_cache_no_cache_tagcCs|�t|jjd�dS)Nz/foo/bar/bazqux.pyc�r#r�rrrirrr�test_source_from_cache_bad_path�s
�z,PEP3147Tests.test_source_from_cache_bad_pathcCs|�t|jjd�dS)Nzfoo.cpython-32.pycrrirrr�test_source_from_cache_no_slash�s
�z,PEP3147Tests.test_source_from_cache_no_slashcCs|�t|jjd�dS)Nz__pycache__/foo.pycrrirrr�#test_source_from_cache_too_few_dots�s
�z0PEP3147Tests.test_source_from_cache_too_few_dotsc	Cs&|�t��|j�d�W5QRXdS)Nz(__pycache__/foo.cpython-32.opt-1.foo.pycrrirrr�$test_source_from_cache_too_many_dots�s�z1PEP3147Tests.test_source_from_cache_too_many_dotscCs|�t|jjd�dS)Nz"__pycache__/foo.cpython-32.foo.pycrrirrr�test_source_from_cache_not_opt�s
�z+PEP3147Tests.test_source_from_cache_not_optcCs|�t|jjd�dS)Nz/foo/bar/foo.cpython-32.foo.pycrrirrr�$test_source_from_cache_no__pycache__�s
�z1PEP3147Tests.test_source_from_cache_no__pycache__cCs.tj�dd�|j��}|�|j�|�d�dS)Nr�zfoo.{}.opt-1.pycr�rr�rrr�)test_source_from_cache_optimized_bytecode�sz6PEP3147Tests.test_source_from_cache_optimized_bytecodec	Cs<tj�dd�|j��}|�t��|j�|�W5QRXdS)Nr�zfoo.{}.opt-.pyc)	r�r�rr�r�r#r�rrr�rrr�+test_source_from_cache_missing_optimization�sz8PEP3147Tests.test_source_from_cache_missing_optimizationc	CsDt�ddddd�|j��}tj�dddd�}|�|j�	|�|�dSr)
rrr�r�r�r�rrrrr�rrr�$test_source_from_cache_path_like_arg�s

�z1PEP3147Tests.test_source_from_cache_path_like_argcs�tj�tjjdd�tj�tjjdd�tj�tjjdd�tjjg}d�tjdkrrd��fdd	�|D�}|d
dg7}|D]�}|j|d��l�tj�tjjd
ddd�}tj�|d
ddd�|j��}t�	|��|�
|jj|dd�|�W5QRXW5QRXqvdS)N�tmp�bytecodeu☃ztrailing-slashr��ntzC:csg|]}��|���qSrr)�.0�prefix�Zdriverr�
<listcomp>szOPEP3147Tests.test_cache_from_source_respects_pycache_prefix.<locals>.<listcomp>z
\\?\C:\fooz\\localhost\c$\bar)r�r�r�r�r�r�r�)r�r�r�sepr/ZsubTestr�r�r�temporary_pycache_prefixrr�)r
Zpycache_prefixes�pycache_prefixr�r�rr*r�.test_cache_from_source_respects_pycache_prefix�s@�

��
��z;PEP3147Tests.test_cache_from_source_respects_pycache_prefixc
Cs�tj�tjjdd�}tj�dddd�}tj�t���dtjj}tj�|tj�t��|�dddd|j�d	��}t�	|��|�
|jj|d
d�|�W5QRXdS)Nr%r&r�r�r�r�r�qux.rr�r�)r�r�rr,�
splitdrive�getcwd�relpathr�rr-rr�)r
r.r��rootr�rrr�7test_cache_from_source_respects_pycache_prefix_relatives ��zDPEP3147Tests.test_cache_from_source_respects_pycache_prefix_relativec	Csxtj�tjjdd�}tj�|dddd|j�d��}tj�tjjdddd�}t�|��|�|j�|�|�W5QRXdS)	Nr%r&r�r�r�r0rr��	r�r�rr,r�rr-rr�r
r.r�r�rrr�,test_source_from_cache_inside_pycache_prefix's�z9PEP3147Tests.test_source_from_cache_inside_pycache_prefixc	Csrtj�tjjdd�}tj�ddddd|j�d��}tj�dddd	�}t�|��|�|j�|�|�W5QRXdS)
Nr%r&r�r�r�r�r0rr�r6r7rrr�-test_source_from_cache_outside_pycache_prefix4s�z:PEP3147Tests.test_source_from_cache_outside_pycache_prefix)(rrrrcr�r�r��unittestZskipIfr�r�r�r�r�r�rr	r
r�
skipUnlessr�r,�altseprrrrrrrrr r!r"r#r$r/r5r8r9rrrrr�+sn�
	�
�
�
�
�
�
�
�r�c@s(eZdZe�ejjdkd�dd��ZdS)r�)�	candidate�finalz8only applies to candidate or final python release levelscCs2d}t�tjjdd�d�}d}|�|||�dS)NiU
r�littlea�To avoid breaking backwards compatibility with cached bytecode files that can't be automatically regenerated by the current user, candidate and final releases require the current  importlib.util.MAGIC_NUMBER to match the expected magic number in this test. Set the expected magic number in this test to the current MAGIC_NUMBER to continue with the release.

Changing the MAGIC_NUMBER for a maintenance release requires discussion in python-dev and notification of community stakeholders.)�int�
from_bytesrrr�r)r
ZEXPECTED_MAGIC_NUMBER�actualrrrr�test_magic_numberKs
�z"MagicNumberTests.test_magic_numberN)	rrrr:r;rc�version_info�releaselevelrCrrrrr�Gs

��__main__)2r�rZimport_importlibr+r�r!Zimportlib_util�importlib.utilrr�rr
rcr rr-r:Z
unittest.mockrOrZ	test_bothZFrozen_DecodeSourceBytesTestsZSource_DecodeSourceBytesTestsrZFrozen_ModuleFromSpecTestsZSource_ModuleFromSpecTestsrMZFrozen_ModuleForLoaderTestsZSource_ModuleForLoaderTestsrZFrozen_SetPackageTestsZSource_SetPackageTestsr�ZFrozen_SetLoaderTestsZSource_SetLoaderTestsr�ZFrozen_ResolveNameTestsZSource_ResolveNameTestsr�ZFrozen_FindSpecTestsZSource_FindSpecTestsr�ZFrozen_MagicNumberTestsZSource_MagicNumberTestsr�ZFrozen_PEP3147TestsZSource_PEP3147TestsZTestCaser�mainrrrr�<module>sz



�J
���<�,�#�
��
��+