Your IP : 216.73.217.32


Current Path : /opt/alt/python35/lib64/python3.5/test/test_importlib/__pycache__/
Upload File :
Current File : //opt/alt/python35/lib64/python3.5/test/test_importlib/__pycache__/test_util.cpython-35.opt-1.pyc



��Yf�w�@s�ddlmZejd�Zejd�Zejd�Zejd�ZddlZddl	Z	ddl
Z
ddlZddlm
Z
ddlZddlZddlZGd	d
�d
�Zejede�\ZZGdd
�d
�Zejededede�\ZZGdd�d�Zejede�\ZZGdd�d�Zejede�\ZZGdd�d�Zejede�\ZZ Gdd�d�Z!eje!de�\Z"Z#Gdd�d�Z$eje$dedede�\Z%Z&Gdd�d�Z'eje'de�\Z(Z)Gdd�d�Z*eje*de�\Z+Z,Gdd�dej-�Z'e.d kr�ej/�dS)!�)�utilz
importlib.abc�	importlibzimportlib.machineryzimportlib.util�N)�supportc@s:eZdZdZdd�Zdd�Zdd�ZdS)	�DecodeSourceBytesTestsustring ='ü'cCs5|jjd�}|j|jj|�|j�dS)Nzutf-8)�source�encode�assertEqualr�
decode_source)�self�source_bytes�r
�B/opt/alt/python35/lib64/python3.5/test/test_importlib/test_util.py�test_ut8_defaultsz'DecodeSourceBytesTests.test_ut8_defaultcCs<d|j}|jd�}|j|jj|�|�dS)Nz# coding=latin-1
zlatin-1)rrr	rr
)rrrr
r
r�test_specified_encodings
z.DecodeSourceBytesTests.test_specified_encodingcCs_dj|j|jg�}|jd�}|j|jj|�dj|j|jg��dS)Nz
zutf-8�
)�joinrrr	rr
)rrrr
r
r�test_universal_newlinessz.DecodeSourceBytesTests.test_universal_newlinesN)�__name__�
__module__�__qualname__rrrrr
r
r
rrsrrc@s�eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�ZdS)�ModuleFromSpecTestscCs�Gdd�d�}|jjd|��}tjdd��&}tjd�|jj|�}WdQRX|jdt|��|j	t
|djt��|j
d	t|dj��|j|tj�|j|j|j�dS)
Nc@seZdZdd�ZdS)z9ModuleFromSpecTests.test_no_create_module.<locals>.LoadercSsdS)Nr
)r�moduler
r
r�exec_module/szEModuleFromSpecTests.test_no_create_module.<locals>.Loader.exec_moduleN)rrrrr
r
r
r�Loader.sr�test�recordT�alwaysrr�
create_module)�	machinery�
ModuleSpec�warnings�catch_warnings�simplefilterr�module_from_specr	�len�
assertTrue�
issubclass�category�DeprecationWarning�assertIn�str�message�assertIsInstance�types�
ModuleTyper�name)rr�spec�wrr
r
r�test_no_create_module-s
z)ModuleFromSpecTests.test_no_create_modulecCssGdd�d|jj�}|jjd|��}|jj|�}|j|tj�|j	|j
|j�dS)Nc@seZdZdd�ZdS)zCModuleFromSpecTests.test_create_module_returns_None.<locals>.LoadercSsdS)Nr
)rr1r
r
rr=szQModuleFromSpecTests.test_create_module_returns_None.<locals>.Loader.create_moduleN)rrrrr
r
r
rr<srr)�abcrrr rr$r-r.r/r	rr0)rrr1rr
r
r�test_create_module_returns_None;s
z3ModuleFromSpecTests.test_create_module_returns_Nonecs�d�Gdd�dtj��G��fdd�d|jj�}|jjd|��}|jj|�}|j|��|j	|j
��dS)Nzalready setc@seZdZdS)z<ModuleFromSpecTests.test_create_module.<locals>.CustomModuleN)rrrr
r
r
r�CustomModuleFsr6cs%eZdZ��fdd�ZdS)z6ModuleFromSpecTests.test_create_module.<locals>.Loadercs�|j�}�|_|S)N)r0r)rr1r)r6r0r
rrIs	zDModuleFromSpecTests.test_create_module.<locals>.Loader.create_moduleN)rrrrr
)r6r0r
rrHsrr)r.r/r4rrr rr$r-r	r)rrr1rr
)r6r0r�test_create_moduleDs%z&ModuleFromSpecTests.test_create_modulecCsD|jjdt��}|jj|�}|j|j|j�dS)Nr)rr �objectrr$r	rr0)rr1rr
r
r�
test___name__Rsz!ModuleFromSpecTests.test___name__cCsA|jjdt��}|jj|�}|j|j|�dS)Nr)rr r8rr$r	�__spec__)rr1rr
r
r�
test___spec__Wsz!ModuleFromSpecTests.test___spec__cCsGt�}|jjd|�}|jj|�}|j|j|�dS)Nr)r8rr rr$�assertIs�
__loader__)r�loaderr1rr
r
r�test___loader__\s	z#ModuleFromSpecTests.test___loader__cCsD|jjdt��}|jj|�}|j|j|j�dS)Nztest.pkg)rr r8rr$r	�__package__�parent)rr1rr
r
r�test___package__bsz$ModuleFromSpecTests.test___package__cCsJ|jjdt�dd�}|jj|�}|j|j|j�dS)Nr�
is_packageT)rr r8rr$r	�__path__�submodule_search_locations)rr1rr
r
r�
test___path__gsz!ModuleFromSpecTests.test___path__cCsS|jjdt�dd�}d|_|jj|�}|j|j|j�dS)Nr�originz	some/pathT)	rr r8�has_locationrr$r	�__file__rG)rr1rr
r
r�
test___file__ls	z!ModuleFromSpecTests.test___file__cCsV|jjdt��}d|_d|_|jj|�}|j|j|j�dS)Nrz	some/pathT)	rr r8�cachedrHrr$r	�
__cached__)rr1rr
r
r�test___cached__rs
		z#ModuleFromSpecTests.test___cached__N)
rrrr3r5r7r9r;r?rBrFrJrMr
r
r
rr+s	rr4rc@s�eZdZdZedd��Zdd�Zdd�Zdd	�Zd
d�Z	dd
�Z
dd�Zdd�Zdd�Z
dd�Zdd�ZdS)�ModuleForLoaderTestsz+Tests for importlib.util.module_for_loader.c
Cs8tj��%tjdt�|jj|�SWdQRXdS)N�ignore)r!r"r#r)r�module_for_loader)�cls�funcr
r
rrP�s
z&ModuleForLoaderTests.module_for_loadercCsWtj��Dtjdt�|jt��|jjdd��}WdQRXWdQRXdS)N�errorcSs|S)Nr
)�xr
r
r�<lambda>�sz3ModuleForLoaderTests.test_warning.<locals>.<lambda>)r!r"r#r)�assertRaisesrrP)rrRr
r
r�test_warning�s
z!ModuleForLoaderTests.test_warningcCs"|jdd��}|||�S)NcSs|S)Nr
)rrr
r
rrU�sz4ModuleForLoaderTests.return_module.<locals>.<lambda>)rP)rr0�fxnr
r
r�
return_module�sz"ModuleForLoaderTests.return_modulecCsEdd�}|j|�}y|||�Wntk
r@YnXdS)NcSs
t�dS)N)�ImportError)rrr
r
r�to_wrap�sz5ModuleForLoaderTests.raise_exception.<locals>.to_wrap)rPrZ)rr0r[rXr
r
r�raise_exception�s
z$ModuleForLoaderTests.raise_exceptionc
Csid}tj|��'|j|�}|j|tj�WdQRX|j|tj�|j	|j
|�dS)Nza.b.c)r�uncacherYr*�sys�modulesr-r.r/r	r)rZmodule_namerr
r
r�test_new_module�sz$ModuleForLoaderTests.test_new_modulecs�G�fdd�d�}d}tjd�}d|_d|_tj|��g|tj|<|�}|j|�}�j	|tj|��j
|j|��j
|j|�WdQRXdS)Ncs1eZdZdd�Z�jdd��ZdS)z4ModuleForLoaderTests.test_reload.<locals>.FakeLoadercSsdS)NTr
)rr0r
r
rrC�sz?ModuleForLoaderTests.test_reload.<locals>.FakeLoader.is_packagecSs|S)Nr
)rrr
r
r�load_module�sz@ModuleForLoaderTests.test_reload.<locals>.FakeLoader.load_moduleN)rrrrCrPrar
)rr
r�
FakeLoader�srbza.b.c�*)r.r/r=r@rr]r^r_rar<r	)rrbr0rr>Zreturned_moduler
)rr�test_reload�s		
	z ModuleForLoaderTests.test_reloadc
CsAd}tj|��%|j|�|j|tj�WdQRXdS)Nza.b.c)rr]r\�assertNotInr^r_)rr0r
r
r�test_new_module_failure�s
z,ModuleForLoaderTests.test_new_module_failurecCsad}tj|�}tj|��6|tj|<|j|�|j|tj|�WdQRXdS)Nza.b.c)r.r/rr]r^r_r\r<)rr0rr
r
r�test_reload_failure�s

z(ModuleForLoaderTests.test_reload_failurecCsKdd�}|j|�}|j|j|j�|j|j|j�dS)NcSsdS)Nr
)rrr
r
rrX�sz6ModuleForLoaderTests.test_decorator_attrs.<locals>.fxn)rPr	rr)rrX�wrappedr
r
r�test_decorator_attrs�sz)ModuleForLoaderTests.test_decorator_attrsc
CsGdd�dtj�}d}||�}tj|��>|j|�|tj|<|j|�}|j||�WdQRXdS)Nc@seZdZdd�ZdS)z;ModuleForLoaderTests.test_false_module.<locals>.FalseModulecSsdS)NFr
)rr
r
r�__bool__�szDModuleForLoaderTests.test_false_module.<locals>.FalseModule.__bool__N)rrrrjr
r
r
r�FalseModule�srk�mod)	r.r/rr]ZassertFalser^r_rYr<)rrkr0rZgivenr
r
r�test_false_module�s

z&ModuleForLoaderTests.test_false_modulecs�G�fdd�d�}d}tj|��Y|d�}|j|�}�j|j|��j|j|��j|jd�WdQRXd}tj|��Y|d�}|j|�}�j|j|��j|j|��j|j|�WdQRXdS)Ncs=eZdZdd�Zdd�Z�jdd��ZdS)z<ModuleForLoaderTests.test_attributes_set.<locals>.FakeLoadercSs
||_dS)N)�_pkg)rrCr
r
r�__init__�szEModuleForLoaderTests.test_attributes_set.<locals>.FakeLoader.__init__cSs|jS)N)rn)rr0r
r
rrC�szGModuleForLoaderTests.test_attributes_set.<locals>.FakeLoader.is_packagecSs|S)Nr
)rrr
r
rra�szHModuleForLoaderTests.test_attributes_set.<locals>.FakeLoader.load_moduleN)rrrrorCrPrar
)rr
rrb�srbzpkg.modF�pkgzpkg.subT)rr]rar	rr<r=r@)rrbr0r>rr
)rr�test_attributes_set�s	z(ModuleForLoaderTests.test_attributes_setN)rrr�__doc__�classmethodrPrWrYr\r`rdrfrgrirmrqr
r
r
rrNs	
	rNc@sjeZdZdZdd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Z	dd�Z
dS)�SetPackageTestsz%Tests for importlib.util.set_package.cs|�fdd�}|jj|�}tj��tjdt�|�WdQRX|jt�d��|j|�j	�dS)zcVerify the module has the expected value for __package__ after
        passing through set_package.cs�S)Nr
r
)rr
rrU	sz(SetPackageTests.verify.<locals>.<lambda>rONr@)
r�set_packager!r"r#r)r&�hasattrr	r@)rr�expectrXrhr
)rr�verifys
zSetPackageTests.verifycCs,tjd�}d|_|j|d�dS)Nr�)r.r/r@rx)rrr
r
r�test_top_levels	zSetPackageTests.test_top_levelcCs8tjd�}dg|_d|_|j|d�dS)Nrpz<path>)r.r/rDr@rx)rrr
r
r�test_packages	zSetPackageTests.test_packagecCs,tjd�}d|_|j|d�dS)Nzpkg.modrp)r.r/r@rx)rrr
r
r�test_submodules	zSetPackageTests.test_submodulecCs?tjd�}t|d�r+t|d�|j|d�dS)Nrlr@ry)r.r/rv�delattrrx)rrr
r
r�test_setting_if_missing%s
z'SetPackageTests.test_setting_if_missingcCs=x6dD].}tjd�}||_|j||�qWdS)NTFrl)TF)r.r/r@rx)r�valuerr
r
r�test_leaving_alone,s
	z"SetPackageTests.test_leaving_alonec
Csrdd�}tj��'tjdt�|jj|�}WdQRX|j|j|j�|j|j|j�dS)NcSsdS)Nr
)rr
r
rrX4sz1SetPackageTests.test_decorator_attrs.<locals>.fxnrO)	r!r"r#r)rrur	rr)rrXrhr
r
rri3s
z$SetPackageTests.test_decorator_attrsN)rrrrrrxrzr{r|r~r�rir
r
r
rrtsrtc@sLeZdZdZedd��Zdd�Zdd�Zdd	�Zd
S)�SetLoaderTestsz"Tests importlib.util.set_loader().cs)G�fdd�d�}|�j_|S)Ncs(eZdZ�jjdd��ZdS)z/SetLoaderTests.DummyLoader.<locals>.DummyLoadercSs|jS)N)r)rrr
r
rraIsz;SetLoaderTests.DummyLoader.<locals>.DummyLoader.load_moduleN)rrrr�
set_loaderrar
)rr
r�DummyLoaderHsr�)�	__class__r�)rr�r
)rrr�EszSetLoaderTests.DummyLoadercCs�|j�}tjd�|_y
|j`Wntk
r?YnXtj��1tjdt	�|j
||jd�j�WdQRXdS)N�blahrO)r�r.r/rr=�AttributeErrorr!r"r#r)r	ra)rr>r
r
r�test_no_attributeOs


z SetLoaderTests.test_no_attributecCsn|j�}tjd�|_d|j_tj��1tjdt�|j	||j
d�j�WdQRXdS)Nr�rO)r�r.r/rr=r!r"r#r)r	ra)rr>r
r
r�test_attribute_is_NoneZs
z%SetLoaderTests.test_attribute_is_NonecCsn|j�}tjd�|_d|j_tj��1tjdt�|j	d|j
d�j�WdQRXdS)Nr�rcrO)r�r.r/rr=r!r"r#r)r	ra)rr>r
r
r�test_not_resetbs
zSetLoaderTests.test_not_resetN)	rrrrr�propertyr�r�r�r�r
r
r
rr�As

r�c@s^eZdZdZdd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Z	dS)�ResolveNameTestsz$Tests importlib.util.resolve_name().cCs#|jd|jjdd��dS)N�bacon)r	r�resolve_name)rr
r
r�
test_absolutetszResolveNameTests.test_absolutecCs#|jd|jjdd��dS)Nr��spam)r	rr�)rr
r
r�test_absolute_within_packagexsz-ResolveNameTests.test_absolute_within_packagec
Cs.|jt��|jjdd�WdQRXdS)Nz.baconry)rV�
ValueErrorrr�)rr
r
r�test_no_package|sz ResolveNameTests.test_no_packagecCs#|jd|jjdd��dS)Nzspam.eggs.baconz.baconz	spam.eggs)r	rr�)rr
r
r�test_in_package�s	z ResolveNameTests.test_in_packagecCs#|jd|jjdd��dS)Nz
spam.baconz..baconz	spam.eggs)r	rr�)rr
r
r�test_other_package�s	z#ResolveNameTests.test_other_packagec
Cs.|jt��|jjdd�WdQRXdS)Nz..baconr�)rVr�rr�)rr
r
r�test_escape�szResolveNameTests.test_escapeN)
rrrrrr�r�r�r�r�r�r
r
r
rr�psr�c@s�eZdZGdd�d�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�Zdd�Z
dd�ZdS)�
FindSpecTestsc@s(eZdZedddd��ZdS)zFindSpecTests.FakeMetaFinderNcCs
|||fS)Nr
)r0�path�targetr
r
r�	find_spec�sz&FindSpecTests.FakeMetaFinder.find_spec)rrr�staticmethodr�r
r
r
r�FakeMetaFinder�sr�c
Cs�d}tj|��ptj|�}d}|jj||�}||_||_|tj	|<|jj
|�}|j||�WdQRXdS)N�some_modz	a loader!)rr]r.r/rr r=r:r^r_r�r	)rr0rr>r1�foundr
r
r�test_sys_modules�s		
zFindSpecTests.test_sys_modulesc
Cs�d}tj|��mtj|�}|`d}|jj||�}||_|tj	|<|jj
|�}|j||�WdQRXdS)Nr�z	a loader!)rr]r.r/r=rr r:r^r_r�r	)rr0rr>r1r�r
r
r�#test_sys_modules_without___loader__�s	
z1FindSpecTests.test_sys_modules_without___loader__cCsmd}tj|��Qtj|�}d|_|tj|<|jt��|jj	|�WdQRXWdQRXdS)Nr�)
rr]r.r/r:r^r_rVr�r�)rr0rr
r
r�test_sys_modules_spec_is_None�s	
z+FindSpecTests.test_sys_modules_spec_is_Nonec
Cs}d}tj|��atj|�}|jj|d�}||_|tj|<|jj	|�}|j
||�WdQRXdS)Nr�)rr]r.r/rr r:r^r_r�r	)rr0rr1r�r
r
r�test_sys_modules_loader_is_None�s	
z-FindSpecTests.test_sys_modules_loader_is_NonecCs�d}tj|��gtj|�}y
|`Wntk
rCYnX|tj|<|jt	��|jj
|�WdQRXWdQRXdS)Nr�)rr]r.r/r:r�r^r_rVr�r�)rr0rr
r
r� test_sys_modules_spec_is_not_set�s


z.FindSpecTests.test_sys_modules_spec_is_not_setcCsfd}tj|��Jtjd|jg��*|j|ddf|jj|��WdQRXWdQRXdS)Nr��	meta_path)rr]Zimport_stater�r	r�)rr0r
r
r�test_success�s
zFindSpecTests.test_successcCs|j|jjd��dS)NZnevergoingtofindthismodule)ZassertIsNonerr�)rr
r
r�test_nothing�szFindSpecTests.test_nothingcCs�d}d}tj|dd���}tj|||�\}}|jj|�}|j|d�|j|ttj��|j	|ttj��|jj|�}|j
||�WdQRXdS)Nr��hamrpT)r�temp_module�	submoduler��assertIsNotr*�sortedr^r_rer	)rr0�subname�pkg_dir�fullname�_r1�
spec_againr
r
r�test_find_submodule�sz!FindSpecTests.test_find_submodulecCs�d}d}tj|dd���}|jj|�tj|||�\}}|jj|�}|j|d�|j|tt	j
��|j|tt	j
��|jj|�}|j||�WdQRXdS)Nr�r�rpT)
rr��init�
import_moduler�r�r�r*r�r^r_rer	)rr0r�r�r�r�r1r�r
r
r�+test_find_submodule_parent_already_imported�sz9FindSpecTests.test_find_submodule_parent_already_importedc	Cs�d}d}tj|dd���}tj|||�\}}d|}|jj||�}|j|d�|j|ttj��|j	|ttj��|jj|�}|j
||�WdQRXdS)Nr�r�rpT�.)rr�r�r�r�r*r�r^r_rer	)	rr0r�r�r�r��relnamer1r�r
r
r�test_find_relative_module�s
z'FindSpecTests.test_find_relative_modulecCs�d}d}tj|dd���}tj|||�\}}d|}|jt��|jj|�WdQRX|j|ttj	��|j|ttj	��WdQRXdS)Nr�r�rpTr�)
rr�r�rVr�r�rer�r^r_)rr0r�r�r�r�r�r
r
r�)test_find_relative_module_missing_packages
z7FindSpecTests.test_find_relative_module_missing_packageN)rrrr�r�r�r�r�r�r�r�r�r�r�r�r
r
r
rr��s	

r�r�c@s(eZdZdd�Zdd�ZdS)�MagicNumberTestscCs |jt|jj�d�dS)N�)r	r%r�MAGIC_NUMBER)rr
r
r�test_lengthszMagicNumberTests.test_lengthcCs |j|jjjd��dS)Ns
)r&rr��endswith)rr
r
r�test_incorporates_rnsz%MagicNumberTests.test_incorporates_rnN)rrrr�r�r
r
r
rr�sr�c@s�eZdZdZejjZej	ejjdk	d�dd��Z
dd�Zdd	�Zd
d�Z
dd
�Zdd�Zdd�Zdd�Zdd�Zdd�Zej	ejdko�ejdkd�dd��Zej	ejjdk	d�dd��Zd d!�Zd"d#�Zd$d%�Zd&d'�Zd(d)�Zd*d+�Zd,d-�Zd.d/�Z d0d1�Z!dS)2�PEP3147TestszMTests of PEP 3147-related functions: cache_from_source and source_from_cache.Nz1requires sys.implementation.cache_tag not be NonecCsktjjdddd�}tjjdddddj|j��}|j|jj|dd�|�dS)	N�foo�bar�bazzqux.py�__pycache__z
qux.{}.pyc�optimizationry)�osr�r�format�tagr	r�cache_from_source)rr�rwr
r
r�test_cache_from_source/s
z#PEP3147Tests.test_cache_from_sourcecCsKtjtjdd��,|jt��|jjd�WdQRXWdQRXdS)N�	cache_tagzwhatever.py)r�	swap_attrr^�implementationrV�NotImplementedErrorrr�)rr
r
r�#test_cache_from_source_no_cache_tag:sz0PEP3147Tests.test_cache_from_source_no_cache_tagcCs_tjjdd�}tjjdddj|j��}|j|jj|dd�|�dS)Nzfoo.bar�filer�z
file{}.pycr�ry)r�r�rr�r�r	rr�)rr�rwr
r
r�test_cache_from_source_no_dot@s
z*PEP3147Tests.test_cache_from_source_no_dotcCstjjdddd�}tj��ttjd�|j|jj|d�|jj|dd��|j|jj|d	�|jj|dd
��WdQRXtj��ftjd�|j	t
��|jj|d�WdQRX|j	t
��|jj|d	�WdQRXWdQRXdS)Nr�r�r�zqux.pyrOFr�rTryrS)r�r�rr!r"r#r	rr�rVr))rr�r
r
r�%test_cache_from_source_debug_overrideHs

 

z2PEP3147Tests.test_cache_from_source_debug_overridecCsMd}tjjddj|j��}|j|jj|dd�|�dS)Nzfoo.pyr�z
foo.{}.pycr�ry)r�r�rr�r�r	rr�)rr�rwr
r
r�test_cache_from_source_cwdYs!z'PEP3147Tests.test_cache_from_source_cwdcCs�tjjddd�}Gdd�d�}tj���tjd�|j|jj|g�|jj|dd��|j|jj|d	g�|jj|dd
��|j	t
��|jjd|��WdQRXWdQRXdS)Nr�r�zbaz.pyc@seZdZdd�ZdS)z=PEP3147Tests.test_cache_from_source_override.<locals>.BearishcSs
t�dS)N)�RuntimeError)rr
r
rrjfszFPEP3147Tests.test_cache_from_source_override.<locals>.Bearish.__bool__N)rrrrjr
r
r
r�Bearishesr�rOr�r�ryz/foo/bar/baz.py)r�r�rr!r"r#r	rr�rVr�)rr�r�r
r
r�test_cache_from_source_override_s

z,PEP3147Tests.test_cache_from_source_overridecCsMd}tjjddj|j��}|j|jj|dd�|�dS)Nzfoo.pyr�z
foo.{}.pycr�ry)r�r�rr�r�r	rr�)rr�rwr
r
r�0test_cache_from_source_optimization_empty_stringqs!z=PEP3147Tests.test_cache_from_source_optimization_empty_stringcCs�d}tjj}tjjddj|j��}|dkrL|d}n>|dkrn|dj|�}ndj|�}|j|�|j	|j
j|d	d�|�dS)
Nzfoo.pyr�zfoo.{}rz.pyc�z.opt-{}.pycz){!r} is a non-standard optimization levelr�)r^�flags�optimizer�r�rr�r�ZskipTestr	rr�)rr�Zoptimization_level�
almost_expectrw�msgr
r
r�(test_cache_from_source_optimization_Nonexs!

z5PEP3147Tests.test_cache_from_source_optimization_NonecCs�d}tjtj}tjjddj|j��}|jj	|d|�}|j
||dj|��|j
|jj	|dd�|d�|jt��|jj	|dd�WdQRXdS)	Nzfoo.pyr�zfoo.{}r�z.opt-{}.pycrcz.opt-42.pyczpath/is/bad)
�stringZ
ascii_lettersZdigitsr�r�rr�r�rr�r	rVr�)rr�Zvalid_charactersr�Zgotr
r
r�'test_cache_from_source_optimization_set�s!	z4PEP3147Tests.test_cache_from_source_optimization_setcCsUtj��Btjd�|jt��|jjdddd�WdQRXWdQRXdS)NrOzfoo.pyFr�ry)r!r"r#rV�	TypeErrorrr�)rr
r
r�;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 definedcCs2|j|jjddd�dj|j��dS)Nz\foo\bar\baz/qux.pyr�ryz#\foo\bar\baz\__pycache__\qux.{}.pyc)r	rr�r�r�)rr
r
r�)test_sep_altsep_and_sep_cache_from_source�sz6PEP3147Tests.test_sep_altsep_and_sep_cache_from_sourcez4requires sys.implementation.cache_tag to not be NonecCsetjjdddddj|j��}tjjdddd�}|j|jj|�|�dS)Nr�r�r�r�z
qux.{}.pyczqux.py)r�r�rr�r�r	r�source_from_cache)rr�rwr
r
r�test_source_from_cache�sz#PEP3147Tests.test_source_from_cachecCsctjjddd�}tjtjdd��,|jt��|j	j
|�WdQRXWdQRXdS)Nr�r�zwhatever.pycr�)r�r�rrr�r^r�rVr�rr�)rr�r
r
r�#test_source_from_cache_no_cache_tag�sz0PEP3147Tests.test_source_from_cache_no_cache_tagcCs|jt|jjd�dS)Nz/foo/bar/bazqux.pyc)rVr�rr�)rr
r
r�test_source_from_cache_bad_path�sz,PEP3147Tests.test_source_from_cache_bad_pathcCs|jt|jjd�dS)Nzfoo.cpython-32.pyc)rVr�rr�)rr
r
r�test_source_from_cache_no_slash�sz,PEP3147Tests.test_source_from_cache_no_slashcCs|jt|jjd�dS)Nz__pycache__/foo.pyc)rVr�rr�)rr
r
r�#test_source_from_cache_too_few_dots�sz0PEP3147Tests.test_source_from_cache_too_few_dotsc	Cs+|jt��|jjd�WdQRXdS)Nz(__pycache__/foo.cpython-32.opt-1.foo.pyc)rVr�rr�)rr
r
r�$test_source_from_cache_too_many_dots�s	z1PEP3147Tests.test_source_from_cache_too_many_dotscCs|jt|jjd�dS)Nz"__pycache__/foo.cpython-32.foo.pyc)rVr�rr�)rr
r
r�test_source_from_cache_not_opt�sz+PEP3147Tests.test_source_from_cache_not_optcCs|jt|jjd�dS)Nz/foo/bar/foo.cpython-32.foo.pyc)rVr�rr�)rr
r
r�$test_source_from_cache_no__pycache__�sz1PEP3147Tests.test_source_from_cache_no__pycache__cCsAtjjddj|j��}|j|jj|�d�dS)Nr�zfoo.{}.opt-1.pyczfoo.py)r�r�rr�r�r	rr�)rr�r
r
r�)test_source_from_cache_optimized_bytecode�s!z6PEP3147Tests.test_source_from_cache_optimized_bytecodec	CsLtjjddj|j��}|jt��|jj|�WdQRXdS)Nr�zfoo.{}.opt-.pyc)	r�r�rr�r�rVr�rr�)rr�r
r
r�+test_source_from_cache_missing_optimization�s!z8PEP3147Tests.test_source_from_cache_missing_optimization)"rrrrrr^r�r�r��unittest�
skipUnlessr�r�r�r�r�r�r�r�r�r�r��sep�altsepr�r�r�r�r�r�r�r�r�r�r�r
r
r
rr�)s4
!
r�c@s@eZdZdZejejjdkd�dd��Z	dS)	r�zA
    Test release compatibility issues relating to importlib
    �final�releasez8only applies to candidate or final python release levelscCsEd}tjtjjdd�d�}d}|j|||�dS)a
        Each python minor release should generally have a MAGIC_NUMBER
        that does not change once the release reaches candidate status.

        Once a release reaches candidate status, the value of the constant
        EXPECTED_MAGIC_NUMBER in this test should be changed.
        This test will then check that the actual MAGIC_NUMBER matches
        the expected value for the release.

        In exceptional cases, it may be required to change the MAGIC_NUMBER
        for a maintenance release. In this case the change should be
        discussed in python-dev. If a change is required, community
        stakeholders such as OS package maintainers must be notified
        in advance. Such exceptional releases will then require an
        adjustment to this test case.
        i
Nr��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	)rZEXPECTED_MAGIC_NUMBERZactualr�r
r
r�test_magic_number�s"z"MagicNumberTests.test_magic_numberN)r�r�)
rrrrrr�r�r^�version_info�releaselevelr�r
r
r
rr��s�__main__)0ryrZimport_importlibr4r�rZimportlib_util�importlib.utilrr�r�r^rrr.r�r!rZ	test_bothZFrozen_DecodeSourceBytesTestsZSource_DecodeSourceBytesTestsrZFrozen_ModuleFromSpecTestsZSource_ModuleFromSpecTestsrNZFrozen_ModuleForLoaderTestsZSource_ModuleForLoaderTestsrtZFrozen_SetPackageTestsZSource_SetPackageTestsr�ZFrozen_SetLoaderTestsZSource_SetLoaderTestsr�ZFrozen_ResolveNameTestsZSource_ResolveNameTestsr�ZFrozen_FindSpecTestsZSource_FindSpecTestsr�ZFrozen_MagicNumberTestsZSource_MagicNumberTestsr�ZFrozen_PEP3147TestsZSource_PEP3147TestsZTestCaser�mainr
r
r
r�<module>sFP�<,#
�+