Your IP : 216.73.216.213


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.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_defaultcCsWd|j}|jd�}||jd�ks7t�|j|jj|�|�dS)Nz# coding=latin-1
zlatin-1zutf-8)rr�AssertionErrorr	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
)rr2r
r
rr=szQModuleFromSpecTests.test_create_module_returns_None.<locals>.Loader.create_moduleN)rrrrr
r
r
rr<srr)�abcrr r!rr%r.r/r0r	rr1)rrr2rr
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r7cs%eZdZ��fdd�ZdS)z6ModuleFromSpecTests.test_create_module.<locals>.Loadercs�|j�}�|_|S)N)r1r)rr2r)r7r1r
rrIs	zDModuleFromSpecTests.test_create_module.<locals>.Loader.create_moduleN)rrrrr
)r7r1r
rrHsrr)r/r0r5rr r!rr%r.r	r)rrr2rr
)r7r1r�test_create_moduleDs%z&ModuleFromSpecTests.test_create_modulecCsD|jjdt��}|jj|�}|j|j|j�dS)Nr)r r!�objectrr%r	rr1)rr2rr
r
r�
test___name__Rsz!ModuleFromSpecTests.test___name__cCsA|jjdt��}|jj|�}|j|j|�dS)Nr)r r!r9rr%r	�__spec__)rr2rr
r
r�
test___spec__Wsz!ModuleFromSpecTests.test___spec__cCsGt�}|jjd|�}|jj|�}|j|j|�dS)Nr)r9r r!rr%�assertIs�
__loader__)r�loaderr2rr
r
r�test___loader__\s	z#ModuleFromSpecTests.test___loader__cCsD|jjdt��}|jj|�}|j|j|j�dS)Nztest.pkg)r r!r9rr%r	�__package__�parent)rr2rr
r
r�test___package__bsz$ModuleFromSpecTests.test___package__cCsJ|jjdt�dd�}|jj|�}|j|j|j�dS)Nr�
is_packageT)r r!r9rr%r	�__path__�submodule_search_locations)rr2rr
r
r�
test___path__gsz!ModuleFromSpecTests.test___path__cCsS|jjdt�dd�}d|_|jj|�}|j|j|j�dS)Nr�originz	some/pathT)	r r!r9�has_locationrr%r	�__file__rH)rr2rr
r
r�
test___file__ls	z!ModuleFromSpecTests.test___file__cCsV|jjdt��}d|_d|_|jj|�}|j|j|j�dS)Nrz	some/pathT)	r r!r9�cachedrIrr%r	�
__cached__)rr2rr
r
r�test___cached__rs
		z#ModuleFromSpecTests.test___cached__N)
rrrr4r6r8r:r<r@rCrGrKrNr
r
r
rr+s	rr5r c@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
rrQ�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*�assertRaisesrrQ)rrSr
r
r�test_warning�s
z!ModuleForLoaderTests.test_warningcCs"|jdd��}|||�S)NcSs|S)Nr
)rrr
r
rrV�sz4ModuleForLoaderTests.return_module.<locals>.<lambda>)rQ)rr1�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)rQr[)rr1r\rYr
r
r�raise_exception�s
z$ModuleForLoaderTests.raise_exceptionc
Csid}tj|��'|j|�}|j|tj�WdQRX|j|tj�|j	|j
|�dS)Nza.b.c)r�uncacherZr+�sys�modulesr.r/r0r	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
)rr1r
r
rrD�sz?ModuleForLoaderTests.test_reload.<locals>.FakeLoader.is_packagecSs|S)Nr
)rrr
r
r�load_module�sz@ModuleForLoaderTests.test_reload.<locals>.FakeLoader.load_moduleN)rrrrDrQrbr
)rr
r�
FakeLoader�srcza.b.c�*)r/r0r>rArr^r_r`rbr=r	)rrcr1rr?Zreturned_moduler
)rr�test_reload�s		
	z ModuleForLoaderTests.test_reloadc
CsAd}tj|��%|j|�|j|tj�WdQRXdS)Nza.b.c)rr^r]�assertNotInr_r`)rr1r
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/r0rr^r_r`r]r=)rr1rr
r
r�test_reload_failure�s

z(ModuleForLoaderTests.test_reload_failurecCsKdd�}|j|�}|j|j|j�|j|j|j�dS)NcSsdS)Nr
)rrr
r
rrY�sz6ModuleForLoaderTests.test_decorator_attrs.<locals>.fxn)rQr	rr)rrY�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)rrrrkr
r
r
r�FalseModule�srl�mod)	r/r0rr^ZassertFalser_r`rZr=)rrlr1rZgivenr
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)rrDr
r
r�__init__�szEModuleForLoaderTests.test_attributes_set.<locals>.FakeLoader.__init__cSs|jS)N)ro)rr1r
r
rrD�szGModuleForLoaderTests.test_attributes_set.<locals>.FakeLoader.is_packagecSs|S)Nr
)rrr
r
rrb�szHModuleForLoaderTests.test_attributes_set.<locals>.FakeLoader.load_moduleN)rrrrprDrQrbr
)rr
rrc�srczpkg.modF�pkgzpkg.subT)rr^rbr	rr=r>rA)rrcr1r?rr
)rr�test_attributes_set�s	z(ModuleForLoaderTests.test_attributes_setN)rrr�__doc__�classmethodrQrXrZr]rarergrhrjrnrrr
r
r
rrOs	
	rOc@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
rrV	sz(SetPackageTests.verify.<locals>.<lambda>rPNrA)
r�set_packager"r#r$r*r'�hasattrr	rA)rr�expectrYrir
)rr�verifys
zSetPackageTests.verifycCs,tjd�}d|_|j|d�dS)Nr�)r/r0rAry)rrr
r
r�test_top_levels	zSetPackageTests.test_top_levelcCs8tjd�}dg|_d|_|j|d�dS)Nrqz<path>)r/r0rErAry)rrr
r
r�test_packages	zSetPackageTests.test_packagecCs,tjd�}d|_|j|d�dS)Nzpkg.modrq)r/r0rAry)rrr
r
r�test_submodules	zSetPackageTests.test_submodulecCs?tjd�}t|d�r+t|d�|j|d�dS)NrmrArz)r/r0rw�delattrry)rrr
r
r�test_setting_if_missing%s
z'SetPackageTests.test_setting_if_missingcCs=x6dD].}tjd�}||_|j||�qWdS)NTFrm)TF)r/r0rAry)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
rrY4sz1SetPackageTests.test_decorator_attrs.<locals>.fxnrP)	r"r#r$r*rrvr	rr)rrYrir
r
rrj3s
z$SetPackageTests.test_decorator_attrsN)rrrrsryr{r|r}rr�rjr
r
r
rrusruc@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
rrbIsz;SetLoaderTests.DummyLoader.<locals>.DummyLoader.load_moduleN)rrrr�
set_loaderrbr
)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�blahrP)r�r/r0rr>�AttributeErrorr"r#r$r*r	rb)rr?r
r
r�test_no_attributeOs


z SetLoaderTests.test_no_attributecCsn|j�}tjd�|_d|j_tj��1tjdt�|j	||j
d�j�WdQRXdS)Nr�rP)r�r/r0rr>r"r#r$r*r	rb)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�rdrP)r�r/r0rr>r"r#r$r*r	rb)rr?r
r
r�test_not_resetbs
zSetLoaderTests.test_not_resetN)	rrrrs�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.baconrz)rW�
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�)rWr�rr�)rr
r
r�test_escape�szResolveNameTests.test_escapeN)
rrrrsr�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
)r1�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/r0r r!r>r;r_r`r�r	)rr1rr?r2�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/r0r>r r!r;r_r`r�r	)rr1rr?r2r�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/r0r;r_r`rWr�r�)rr1rr
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/r0r r!r;r_r`r�r	)rr1rr2r�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/r0r;r�r_r`rWr�r�)rr1rr
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�)rr1r
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��hamrqT)r�temp_module�	submoduler��assertIsNotr+�sortedr_r`rfr	)rr1�subname�pkg_dir�fullname�_r2�
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�rqT)
rr��init�
import_moduler�r�r�r+r�r_r`rfr	)rr1r�r�r�r�r2r�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�rqT�.)rr�r�r�r�r+r�r_r`rfr	)	rr1r�r�r�r��relnamer2r�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�rqTr�)
rr�r�rWr�r�rfr�r_r`)rr1r�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�optimizationrz)�osr�r�format�tagr	r�cache_from_source)rr�rxr
r
r�test_cache_from_source/s
z#PEP3147Tests.test_cache_from_sourcecCsKtjtjdd��,|jt��|jjd�WdQRXWdQRXdS)N�	cache_tagzwhatever.py)r�	swap_attrr_�implementationrW�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�rz)r�r�rr�r�r	rr�)rr�rxr
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.pyrPFr�rTrzrT)r�r�rr"r#r$r	rr�rWr*)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�rz)r�r�rr�r�r	rr�)rr�rxr
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
rrkfszFPEP3147Tests.test_cache_from_source_override.<locals>.Bearish.__bool__N)rrrrkr
r
r
r�Bearishesr�rPr�r�rzz/foo/bar/baz.py)r�r�rr"r#r$r	rr�rWr�)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�rz)r�r�rr�r�r	rr�)rr�rxr
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_expectrx�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-{}.pycrdz.opt-42.pyczpath/is/bad)
�stringZ
ascii_lettersZdigitsr�r�rr�r�rr�r	rWr�)rr�Zvalid_charactersr�Zgotr
r
r�'test_cache_from_source_optimization_set�s!	z4PEP3147Tests.test_cache_from_source_optimization_setcCsUtj��Btjd�|jt��|jjdddd�WdQRXWdQRXdS)NrPzfoo.pyFr�rz)r"r#r$rW�	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�rzz#\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�rxr
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�rWr�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)rWr�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)rWr�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)rWr�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)rWr�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)rWr�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)rWr�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�rWr�rr�)rr�r
r
r�+test_source_from_cache_missing_optimization�s!z8PEP3147Tests.test_source_from_cache_missing_optimization)"rrrrsr_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�)
rrrrsr�r�r_�version_info�releaselevelr�r
r
r
rr��s�__main__)0rzrZimport_importlibr5r�r Zimportlib_util�importlib.utilrr�r�r_rrr/r�r"rZ	test_bothZFrozen_DecodeSourceBytesTestsZSource_DecodeSourceBytesTestsrZFrozen_ModuleFromSpecTestsZSource_ModuleFromSpecTestsrOZFrozen_ModuleForLoaderTestsZSource_ModuleForLoaderTestsruZFrozen_SetPackageTestsZSource_SetPackageTestsr�ZFrozen_SetLoaderTestsZSource_SetLoaderTestsr�ZFrozen_ResolveNameTestsZSource_ResolveNameTestsr�ZFrozen_FindSpecTestsZSource_FindSpecTestsr�ZFrozen_MagicNumberTestsZSource_MagicNumberTestsr�ZFrozen_PEP3147TestsZSource_PEP3147TestsZTestCaser�mainr
r
r
r�<module>sFP�<,#
�+