a
    ¼3j¯Š  ã                   @   sØ  d dl mZ e d¡Ze d¡Ze d¡Ze d¡ZddlZddl	Z	ddl
Z
ddlZddlZddlmZ ddlZddlZddlZddlZG d	d
„ d
ƒZejeed\ZZG dd„ dƒZejeeeed\ZZG dd„ dƒZejeed\ZZG dd„ dƒZejeed\ZZG dd„ dƒZ eje ed\Z!Z"G dd„ dƒZ#eje#ed\Z$Z%G dd„ dƒZ&eje&eeed\Z'Z(G dd„ dƒZ)eje)ed\Z*Z+G dd„ dƒZ,eje,ed\Z-Z.G dd„ dej/ƒZ)e0dkrÔe 1¡  dS )é   )Úutilzimportlib.abcÚ	importlibzimportlib.machineryzimportlib.utilé    N)Úsupportc                   @   s(   e Zd ZdZdd„ Zdd„ Zdd„ ZdS )	ÚDecodeSourceBytesTestsu   string ='Ã¼'c                 C   s&   | j  d¡}|  | j |¡| j ¡ d S )Núutf-8©ÚsourceÚencodeÚassertEqualr   Údecode_source)ÚselfÚsource_bytes© r   úY/www/server/python_manager/versions/3.9.10/lib/python3.9/test/test_importlib/test_util.pyÚtest_ut8_default   s    z'DecodeSourceBytesTests.test_ut8_defaultc                 C   s>   d| j  }| d¡}|| d¡ks&J ‚|  | j |¡|¡ d S )Nz# coding=latin-1
zlatin-1r   r   ©r   r	   r   r   r   r   Útest_specified_encoding   s    

z.DecodeSourceBytesTests.test_specified_encodingc                 C   sB   d  | j| jg¡}| d¡}|  | j |¡d  | j| jg¡¡ d S )Nz
r   Ú
)Újoinr	   r
   r   r   r   r   r   r   r   Útest_universal_newlines!   s
    
ÿz.DecodeSourceBytesTests.test_universal_newlinesN)Ú__name__Ú
__module__Ú__qualname__r	   r   r   r   r   r   r   r   r      s   r   c                   @   s\   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
dd„ Zdd„ ZdS )ÚModuleFromSpecTestsc                 C   sX   G dd„ dƒ}| j  d|ƒ ¡}|  t¡ | j |¡}W d   ƒ n1 sJ0    Y  d S )Nc                   @   s   e Zd Zdd„ ZdS )z9ModuleFromSpecTests.test_no_create_module.<locals>.Loaderc                 S   s   d S ©Nr   ©r   Úmoduler   r   r   Úexec_module1   s    zEModuleFromSpecTests.test_no_create_module.<locals>.Loader.exec_moduleN)r   r   r   r   r   r   r   r   ÚLoader0   s   r   Útest)Ú	machineryÚ
ModuleSpecÚassertRaisesÚImportErrorr   Úmodule_from_spec©r   r   Úspecr   r   r   r   Útest_no_create_module/   s    z)ModuleFromSpecTests.test_no_create_modulec                 C   sR   G dd„ d| j jƒ}| j d|ƒ ¡}| j |¡}|  |tj¡ |  	|j
|j¡ d S )Nc                   @   s   e Zd Zdd„ ZdS )zCModuleFromSpecTests.test_create_module_returns_None.<locals>.Loaderc                 S   s   d S r   r   )r   r'   r   r   r   Úcreate_module9   s    zQModuleFromSpecTests.test_create_module_returns_None.<locals>.Loader.create_moduleN©r   r   r   r)   r   r   r   r   r   8   s   r   r    )Úabcr   r!   r"   r   r%   ÚassertIsInstanceÚtypesÚ
ModuleTyper   r   Únamer&   r   r   r   Útest_create_module_returns_None7   s
    z3ModuleFromSpecTests.test_create_module_returns_Nonec                    sj   d‰G dd„ dt jƒ‰ G ‡ ‡fdd„d| jjƒ}| j d|ƒ ¡}| j |¡}|  |ˆ ¡ |  	|j
ˆ¡ d S )Nzalready setc                   @   s   e Zd ZdS )z<ModuleFromSpecTests.test_create_module.<locals>.CustomModuleN)r   r   r   r   r   r   r   ÚCustomModuleB   s   r1   c                       s   e Zd Z‡ ‡fdd„ZdS )z6ModuleFromSpecTests.test_create_module.<locals>.Loaderc                    s   ˆ |j ƒ}ˆ|_|S r   )r/   r   ©r   r'   r   ©r1   r/   r   r   r)   E   s    
zDModuleFromSpecTests.test_create_module.<locals>.Loader.create_moduleNr*   r   r3   r   r   r   D   s   r   r    )r-   r.   r+   r   r!   r"   r   r%   r,   r   r   r&   r   r3   r   Útest_create_module@   s    z&ModuleFromSpecTests.test_create_modulec                 C   s0   | j  dtƒ ¡}| j |¡}|  |j|j¡ d S ©Nr    )r!   r"   Úobjectr   r%   r   r   r/   r2   r   r   r   Útest___name__N   s    z!ModuleFromSpecTests.test___name__c                 C   s.   | j  dtƒ ¡}| j |¡}|  |j|¡ d S r5   )r!   r"   r6   r   r%   r   Ú__spec__r2   r   r   r   Útest___spec__S   s    z!ModuleFromSpecTests.test___spec__c                 C   s2   t ƒ }| j d|¡}| j |¡}|  |j|¡ d S r5   )r6   r!   r"   r   r%   ÚassertIsÚ
__loader__)r   Úloaderr'   r   r   r   r   Útest___loader__X   s    z#ModuleFromSpecTests.test___loader__c                 C   s0   | j  dtƒ ¡}| j |¡}|  |j|j¡ d S )Nztest.pkg)r!   r"   r6   r   r%   r   Ú__package__Úparentr2   r   r   r   Útest___package__^   s    z$ModuleFromSpecTests.test___package__c                 C   s4   | j jdtƒ dd}| j |¡}|  |j|j¡ d S )Nr    T)Ú
is_package)r!   r"   r6   r   r%   r   Ú__path__Úsubmodule_search_locationsr2   r   r   r   Útest___path__c   s    z!ModuleFromSpecTests.test___path__c                 C   s:   | j jdtƒ dd}d|_| j |¡}|  |j|j¡ d S )Nr    ú	some/path)ÚoriginT)	r!   r"   r6   Úhas_locationr   r%   r   Ú__file__rF   r2   r   r   r   Útest___file__h   s    z!ModuleFromSpecTests.test___file__c                 C   s<   | j  dtƒ ¡}d|_d|_| j |¡}|  |j|j¡ d S )Nr    rE   T)	r!   r"   r6   ÚcachedrG   r   r%   r   Ú
__cached__r2   r   r   r   Útest___cached__n   s
    z#ModuleFromSpecTests.test___cached__N)r   r   r   r(   r0   r4   r7   r9   r=   r@   rD   rI   rL   r   r   r   r   r   -   s   	r   )r+   r!   r   c                   @   sl   e Zd ZdZedd„ ƒZdd„ Zdd„ Zdd	„ Zd
d„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ ZdS )ÚModuleForLoaderTestsz+Tests for importlib.util.module_for_loader.c                 C   sD   t  ¡ ( t  dt¡ | j |¡W  d   ƒ S 1 s60    Y  d S )NÚignore)ÚwarningsÚcatch_warningsÚsimplefilterÚDeprecationWarningr   Úmodule_for_loader)ÚclsÚfuncr   r   r   rS      s    
z&ModuleForLoaderTests.module_for_loaderc              	   C   sr   t  ¡ V t  dt¡ |  t¡  | j dd„ ¡}W d   ƒ n1 sF0    Y  W d   ƒ n1 sd0    Y  d S )NÚerrorc                 S   s   | S r   r   )Úxr   r   r   Ú<lambda>Š   ó    z3ModuleForLoaderTests.test_warning.<locals>.<lambda>)rO   rP   rQ   rR   r#   r   rS   )r   rU   r   r   r   Útest_warning…   s    
z!ModuleForLoaderTests.test_warningc                 C   s   |   dd„ ¡}|| |ƒS )Nc                 S   s   |S r   r   r   r   r   r   rX      rY   z4ModuleForLoaderTests.return_module.<locals>.<lambda>)rS   )r   r/   Úfxnr   r   r   Úreturn_moduleŒ   s    z"ModuleForLoaderTests.return_modulec                 C   s8   dd„ }|   |¡}z|| |ƒ W n ty2   Y n0 d S )Nc                 S   s   t ‚d S r   )r$   r   r   r   r   Úto_wrap‘   s    z5ModuleForLoaderTests.raise_exception.<locals>.to_wrap)rS   r$   )r   r/   r]   r[   r   r   r   Úraise_exception   s    
z$ModuleForLoaderTests.raise_exceptionc                 C   sf   d}t  |¡( |  |¡}|  |tj¡ W d   ƒ n1 s<0    Y  |  |tj¡ |  	|j
|¡ d S ©Núa.b.c)r   Úuncacher\   ÚassertInÚsysÚmodulesr,   r-   r.   r   r   )r   Úmodule_namer   r   r   r   Útest_new_module™   s    
,z$ModuleForLoaderTests.test_new_modulec                    s¢   G ‡ fdd„dƒ}d}t  d¡}d|_d|_t |¡X |tj|< |ƒ }| |¡}ˆ  	|tj| ¡ ˆ  
|j|¡ ˆ  
|j|¡ W d   ƒ n1 s”0    Y  d S )Nc                       s"   e Zd Zdd„ Z” jdd„ ƒZdS )z4ModuleForLoaderTests.test_reload.<locals>.FakeLoaderc                 S   s   dS )NTr   ©r   r/   r   r   r   rA   ¦   s    z?ModuleForLoaderTests.test_reload.<locals>.FakeLoader.is_packagec                 S   s   |S r   r   r   r   r   r   Úload_module¨   s    z@ModuleForLoaderTests.test_reload.<locals>.FakeLoader.load_moduleN)r   r   r   rA   rS   rh   r   ©r   r   r   Ú
FakeLoader¥   s   rj   r`   é*   )r-   r.   r;   r>   r   ra   rc   rd   rh   r:   r   )r   rj   r/   r   r<   Zreturned_moduler   ri   r   Útest_reload£   s    


z ModuleForLoaderTests.test_reloadc                 C   sJ   d}t  |¡( |  |¡ |  |tj¡ W d   ƒ n1 s<0    Y  d S r_   )r   ra   r^   ÚassertNotInrc   rd   rg   r   r   r   Útest_new_module_failure·   s    
z,ModuleForLoaderTests.test_new_module_failurec                 C   sb   d}t  |¡}t |¡6 |tj|< |  |¡ |  |tj| ¡ W d   ƒ n1 sT0    Y  d S r_   )r-   r.   r   ra   rc   rd   r^   r:   ©r   r/   r   r   r   r   Útest_reload_failure¿   s    


z(ModuleForLoaderTests.test_reload_failurec                 C   s6   dd„ }|   |¡}|  |j|j¡ |  |j|j¡ d S )Nc                 S   s   d S r   r   r   r   r   r   r[   É   rY   z6ModuleForLoaderTests.test_decorator_attrs.<locals>.fxn)rS   r   r   r   ©r   r[   Úwrappedr   r   r   Útest_decorator_attrsÈ   s    
z)ModuleForLoaderTests.test_decorator_attrsc                 C   sv   G dd„ dt jƒ}d}||ƒ}t |¡: |  |¡ |tj|< |  |¡}|  ||¡ W d   ƒ n1 sh0    Y  d S )Nc                   @   s   e Zd Zdd„ ZdS )z;ModuleForLoaderTests.test_false_module.<locals>.FalseModulec                 S   s   dS )NFr   ri   r   r   r   Ú__bool__Ò   rY   zDModuleForLoaderTests.test_false_module.<locals>.FalseModule.__bool__N©r   r   r   rt   r   r   r   r   ÚFalseModuleÑ   s   rv   Úmod)	r-   r.   r   ra   ZassertFalserc   rd   r\   r:   )r   rv   r/   r   Zgivenr   r   r   Útest_false_moduleÎ   s    


z&ModuleForLoaderTests.test_false_modulec                    sê   G ‡ fdd„dƒ}d}t  |¡L |dƒ}| |¡}ˆ  |j|¡ ˆ  |j|¡ ˆ  |jd¡ W d   ƒ n1 sr0    Y  d}t  |¡L |dƒ}| |¡}ˆ  |j|¡ ˆ  |j|¡ ˆ  |j|¡ W d   ƒ n1 sÜ0    Y  d S )Nc                       s*   e Zd Zdd„ Zdd„ Z” jdd„ ƒZdS )z<ModuleForLoaderTests.test_attributes_set.<locals>.FakeLoaderc                 S   s
   || _ d S r   ©Z_pkg)r   rA   r   r   r   Ú__init__à   s    zEModuleForLoaderTests.test_attributes_set.<locals>.FakeLoader.__init__c                 S   s   | j S r   ry   rg   r   r   r   rA   â   s    zGModuleForLoaderTests.test_attributes_set.<locals>.FakeLoader.is_packagec                 S   s   |S r   r   r   r   r   r   rh   ä   s    zHModuleForLoaderTests.test_attributes_set.<locals>.FakeLoader.load_moduleN)r   r   r   rz   rA   rS   rh   r   ri   r   r   rj   ß   s   rj   úpkg.modFÚpkgzpkg.subT)r   ra   rh   r   r   r:   r;   r>   )r   rj   r/   r<   r   r   ri   r   Útest_attributes_setÜ   s    	
,
z(ModuleForLoaderTests.test_attributes_setN)r   r   r   Ú__doc__ÚclassmethodrS   rZ   r\   r^   rf   rl   rn   rp   rs   rx   r}   r   r   r   r   rM   {   s   
	
	rM   c                   @   sH   e Zd ZdZdd„ Zdd„ Zdd„ Zdd	„ Zd
d„ Zdd„ Z	dd„ Z
dS )ÚSetPackageTestsz%Tests for importlib.util.set_package.c                    st   ‡ fdd„}| j  |¡}t ¡ " t dt¡ |ƒ  W d  ƒ n1 sH0    Y  |  tˆ dƒ¡ |  |ˆ j	¡ dS )zcVerify the module has the expected value for __package__ after
        passing through set_package.c                      s   ˆ S r   r   r   ©r   r   r   rX     rY   z(SetPackageTests.verify.<locals>.<lambda>rN   Nr>   )
r   Úset_packagerO   rP   rQ   rR   Ú
assertTrueÚhasattrr   r>   )r   r   Úexpectr[   rr   r   r   r   Úverify  s    
$zSetPackageTests.verifyc                 C   s    t  d¡}d |_|  |d¡ d S )Nr   Ú ©r-   r.   r>   r†   r   r   r   r   Útest_top_level  s    
zSetPackageTests.test_top_levelc                 C   s(   t  d¡}dg|_d |_|  |d¡ d S )Nr|   z<path>)r-   r.   rB   r>   r†   r   r   r   r   Útest_package  s    
zSetPackageTests.test_packagec                 C   s    t  d¡}d |_|  |d¡ d S )Nr{   r|   rˆ   r   r   r   r   Útest_submodule  s    
zSetPackageTests.test_submodulec                 C   s.   t  d¡}t|dƒrt|dƒ |  |d¡ d S )Nrw   r>   r‡   )r-   r.   r„   Údelattrr†   r   r   r   r   Útest_setting_if_missing!  s    


z'SetPackageTests.test_setting_if_missingc                 C   s*   dD ] }t  d¡}||_|  ||¡ qd S )N)TFrw   rˆ   )r   Úvaluer   r   r   r   Útest_leaving_alone(  s    
z"SetPackageTests.test_leaving_alonec                 C   sl   dd„ }t  ¡ ( t  dt¡ | j |¡}W d   ƒ n1 s>0    Y  |  |j|j¡ |  |j|j¡ d S )Nc                 S   s   d S r   r   r   r   r   r   r[   0  rY   z1SetPackageTests.test_decorator_attrs.<locals>.fxnrN   )	rO   rP   rQ   rR   r   r‚   r   r   r   rq   r   r   r   rs   /  s    
*z$SetPackageTests.test_decorator_attrsN)r   r   r   r~   r†   r‰   rŠ   r‹   r   r   rs   r   r   r   r   r€   þ   s   r€   c                   @   s4   e Zd ZdZedd„ ƒZdd„ Zdd„ Zdd	„ Zd
S )ÚSetLoaderTestsz"Tests importlib.util.set_loader().c                    s   G ‡ fdd„dƒ}|ˆ j _|S )Nc                       s   e Zd Z” jjdd„ ƒZdS )z/SetLoaderTests.DummyLoader.<locals>.DummyLoaderc                 S   s   | j S r   r   r   r   r   r   rh   E  s    z;SetLoaderTests.DummyLoader.<locals>.DummyLoader.load_moduleN)r   r   r   r   Ú
set_loaderrh   r   ri   r   r   ÚDummyLoaderD  s   r’   )Ú	__class__r’   )r   r’   r   ri   r   r’   A  s    zSetLoaderTests.DummyLoaderc                 C   s~   |   ¡ }t d¡|_z
|j`W n ty0   Y n0 t ¡ 0 t dt	¡ |  
|| d¡j¡ W d   ƒ n1 sp0    Y  d S ©NÚblahrN   )r’   r-   r.   r   r;   ÚAttributeErrorrO   rP   rQ   rR   r   rh   ©r   r<   r   r   r   Útest_no_attributeK  s    

z SetLoaderTests.test_no_attributec                 C   sh   |   ¡ }t d¡|_d |j_t ¡ 0 t dt¡ |  	|| 
d¡j¡ W d   ƒ n1 sZ0    Y  d S r”   ©r’   r-   r.   r   r;   rO   rP   rQ   rR   r   rh   r—   r   r   r   Útest_attribute_is_NoneV  s    
z%SetLoaderTests.test_attribute_is_Nonec                 C   sh   |   ¡ }t d¡|_d|j_t ¡ 0 t dt¡ |  	d| 
d¡j¡ W d   ƒ n1 sZ0    Y  d S )Nr•   rk   rN   r™   r—   r   r   r   Útest_not_reset^  s    
zSetLoaderTests.test_not_resetN)	r   r   r   r~   Úpropertyr’   r˜   rš   r›   r   r   r   r   r   =  s   
	r   c                   @   s@   e Zd ZdZdd„ Zdd„ Zdd„ Zdd	„ Zd
d„ Zdd„ Z	dS )ÚResolveNameTestsz$Tests importlib.util.resolve_name().c                 C   s   |   d| j dd ¡¡ d S )NÚbacon©r   r   Úresolve_nameri   r   r   r   Útest_absolutep  s    zResolveNameTests.test_absolutec                 C   s   |   d| j dd¡¡ d S )Nrž   ÚspamrŸ   ri   r   r   r   Útest_absolute_within_packaget  s    z-ResolveNameTests.test_absolute_within_packagec                 C   s<   |   t¡ | j dd¡ W d   ƒ n1 s.0    Y  d S )Nú.baconr‡   ©r#   r$   r   r    ri   r   r   r   Útest_no_packagex  s    z ResolveNameTests.test_no_packagec                 C   s   |   d| j dd¡¡ d S )Nzspam.eggs.baconr¤   ú	spam.eggsrŸ   ri   r   r   r   Útest_in_package}  s    ÿz ResolveNameTests.test_in_packagec                 C   s   |   d| j dd¡¡ d S )Nz
spam.baconú..baconr§   rŸ   ri   r   r   r   Útest_other_package‚  s    ÿz#ResolveNameTests.test_other_packagec                 C   s<   |   t¡ | j dd¡ W d   ƒ n1 s.0    Y  d S )Nr©   r¢   r¥   ri   r   r   r   Útest_escape‡  s    zResolveNameTests.test_escapeN)
r   r   r   r~   r¡   r£   r¦   r¨   rª   r«   r   r   r   r   r   l  s   r   c                   @   sz   e Zd ZG dd„ dƒZdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ ZdS )ÚFindSpecTestsc                   @   s   e Zd Zeddd„ƒZdS )zFindSpecTests.FakeMetaFinderNc                 C   s
   | ||fS r   r   )r/   ÚpathÚtargetr   r   r   Ú	find_spec•  s    z&FindSpecTests.FakeMetaFinder.find_spec)NN)r   r   r   Ústaticmethodr¯   r   r   r   r   ÚFakeMetaFinder”  s   r±   c                 C   s|   d}t  |¡Z t |¡}d}| j ||¡}||_||_|tj	|< | j  
|¡}|  ||¡ W d   ƒ n1 sn0    Y  d S ©NÚsome_modz	a loader!)r   ra   r-   r.   r!   r"   r;   r8   rc   rd   r¯   r   ©r   r/   r   r<   r'   Úfoundr   r   r   Útest_sys_modules˜  s    

zFindSpecTests.test_sys_modulesc                 C   sz   d}t  |¡X t |¡}|`d}| j ||¡}||_|tj	|< | j  
|¡}|  ||¡ W d   ƒ n1 sl0    Y  d S r²   )r   ra   r-   r.   r;   r!   r"   r8   rc   rd   r¯   r   r´   r   r   r   Ú#test_sys_modules_without___loader__¤  s    

z1FindSpecTests.test_sys_modules_without___loader__c              	   C   s‚   d}t  |¡` t |¡}d |_|tj|< |  t¡ | j  	|¡ W d   ƒ n1 sV0    Y  W d   ƒ n1 st0    Y  d S ©Nr³   )
r   ra   r-   r.   r8   rc   rd   r#   Ú
ValueErrorr¯   ro   r   r   r   Útest_sys_modules_spec_is_None°  s    

z+FindSpecTests.test_sys_modules_spec_is_Nonec                 C   sr   d}t  |¡P t |¡}| j |d ¡}||_|tj|< | j  	|¡}|  
||¡ W d   ƒ n1 sd0    Y  d S r¸   )r   ra   r-   r.   r!   r"   r8   rc   rd   r¯   r   )r   r/   r   r'   rµ   r   r   r   Útest_sys_modules_loader_is_None¹  s    

z-FindSpecTests.test_sys_modules_loader_is_Nonec              	   C   s˜   d}t  |¡v t |¡}z|`W n ty4   Y n0 |tj|< |  t	¡ | j  
|¡ W d   ƒ n1 sl0    Y  W d   ƒ n1 sŠ0    Y  d S r¸   )r   ra   r-   r.   r8   r–   rc   rd   r#   r¹   r¯   ro   r   r   r   Ú test_sys_modules_spec_is_not_setÃ  s    

z.FindSpecTests.test_sys_modules_spec_is_not_setc              	   C   s|   d}t  |¡Z t j| jgd* |  |d d f| j  |¡¡ W d   ƒ n1 sP0    Y  W d   ƒ n1 sn0    Y  d S )Nr³   )Ú	meta_path)r   ra   Zimport_stater±   r   r¯   rg   r   r   r   Útest_successÏ  s    
ÿzFindSpecTests.test_successc                 C   s   |   | j d¡¡ d S )NZnevergoingtofindthismodule)ZassertIsNoner   r¯   ri   r   r   r   Útest_nothingÖ  s    zFindSpecTests.test_nothingc                 C   s    d}d}t j|ddv}t  |||¡\}}| j  |¡}|  |d ¡ |  |ttjƒ¡ |  	|ttjƒ¡ | j  |¡}|  
||¡ W d   ƒ n1 s’0    Y  d S ©Nr¢   ÚhamT©r|   ©r   Útemp_moduleÚ	submoduler¯   ÚassertIsNotrb   Úsortedrc   rd   rm   r   ©r   r/   ÚsubnameÚpkg_dirÚfullnameÚ_r'   Ú
spec_againr   r   r   Útest_find_submoduleÚ  s    z!FindSpecTests.test_find_submodulec                 C   s¬   d}d}t j|dd‚}| j |¡ t  |||¡\}}| j  |¡}|  |d ¡ |  |tt	j
ƒ¡ |  |tt	j
ƒ¡ | j  |¡}|  ||¡ W d   ƒ n1 sž0    Y  d S rÀ   )r   rÄ   ÚinitÚimport_modulerÅ   r¯   rÆ   rb   rÇ   rc   rd   rm   r   rÈ   r   r   r   Ú+test_find_submodule_parent_already_importedç  s    z9FindSpecTests.test_find_submodule_parent_already_importedc           	      C   sª   d}d}t j|dd€}t  |||¡\}}d| }| j  ||¡}|  |d ¡ |  |ttjƒ¡ |  	|ttjƒ¡ | j  |¡}|  
||¡ W d   ƒ n1 sœ0    Y  d S ©Nr¢   rÁ   TrÂ   Ú.rÃ   )	r   r/   rÉ   rÊ   rË   rÌ   Úrelnamer'   rÍ   r   r   r   Útest_find_relative_moduleõ  s    z'FindSpecTests.test_find_relative_modulec              	   C   s®   d}d}t j|dd„}t  |||¡\}}d| }|  t¡ | j  |¡ W d   ƒ n1 s^0    Y  |  |ttj	ƒ¡ |  |ttj	ƒ¡ W d   ƒ n1 s 0    Y  d S rÒ   )
r   rÄ   rÅ   r#   r$   r¯   rm   rÇ   rc   rd   )r   r/   rÉ   rÊ   rË   rÌ   rÔ   r   r   r   Ú)test_find_relative_module_missing_package  s    *z7FindSpecTests.test_find_relative_module_missing_packagec                 C   s:   |   t¡ | j d¡ W d   ƒ n1 s,0    Y  d S )Nzmodule.name)r#   ÚModuleNotFoundErrorr   r¯   ri   r   r   r   Útest_find_submodule_in_module  s    z+FindSpecTests.test_find_submodule_in_moduleN)r   r   r   r±   r¶   r·   rº   r»   r¼   r¾   r¿   rÎ   rÑ   rÕ   rÖ   rØ   r   r   r   r   r¬   ’  s   	
r¬   )rÏ   r   r!   c                   @   s   e Zd Zdd„ Zdd„ ZdS )ÚMagicNumberTestsc                 C   s   |   t| jjƒd¡ d S )Né   )r   Úlenr   ÚMAGIC_NUMBERri   r   r   r   Útest_length  s    zMagicNumberTests.test_lengthc                 C   s   |   | jj d¡¡ d S )Ns   
)rƒ   r   rÜ   Úendswithri   r   r   r   Útest_incorporates_rn!  s    z%MagicNumberTests.test_incorporates_rnN)r   r   r   rÝ   rß   r   r   r   r   rÙ     s   rÙ   c                   @   s¬  e Zd ZdZejjZe 	ejjdu d¡dd„ ƒZ
dd„ Zdd	„ Zd
d„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Ze ejdkoŽejdkd¡dd„ ƒZe 	ejjdu d¡dd„ ƒZe 	ejjdu d¡d d!„ ƒZd"d#„ Zd$d%„ Zd&d'„ Zd(d)„ Zd*d+„ Zd,d-„ Z d.d/„ Z!d0d1„ Z"d2d3„ Z#e 	ejjdu d¡d4d5„ ƒZ$e 	ejjdu d¡d6d7„ ƒZ%e 	ejjdu d¡d8d9„ ƒZ&e 	ejjdu d¡d:d;„ ƒZ'e 	ejjdu d¡d<d=„ ƒZ(dS )>ÚPEP3147TestszMTests of PEP 3147-related functions: cache_from_source and source_from_cache.Nz1requires sys.implementation.cache_tag not be Nonec              	   C   sJ   t j dddd¡}t j ddddd | j¡¡}|  | jj|dd|¡ d S ©	NÚfooÚbarÚbazúqux.pyÚ__pycache__ú
qux.{}.pycr‡   ©Úoptimization©Úosr­   r   ÚformatÚtagr   r   Úcache_from_source©r   r­   r…   r   r   r   Útest_cache_from_source1  s    
ÿÿz#PEP3147Tests.test_cache_from_sourcec              	   C   sj   t  tjdd ¡F |  t¡ | j d¡ W d   ƒ n1 s>0    Y  W d   ƒ n1 s\0    Y  d S )NÚ	cache_tagzwhatever.py)r   Ú	swap_attrrc   Úimplementationr#   ÚNotImplementedErrorr   rî   ri   r   r   r   Ú#test_cache_from_source_no_cache_tag<  s    z0PEP3147Tests.test_cache_from_source_no_cache_tagc                 C   sB   t j dd¡}t j ddd | j¡¡}|  | jj|dd|¡ d S )Nzfoo.barÚfileræ   z
file{}.pycr‡   rè   rê   rï   r   r   r   Útest_cache_from_source_no_dotB  s    

ÿÿz*PEP3147Tests.test_cache_from_source_no_dotc              	   C   s2  t j dddd¡}t ¡ ^ t d¡ |  | j |d¡| jj|dd¡ |  | j |d	¡| jj|d
d¡ W d   ƒ n1 s~0    Y  t ¡ Œ t d¡ |  	t
¡ | j |d¡ W d   ƒ n1 sÊ0    Y  |  	t
¡ | j |d	¡ W d   ƒ n1 s0    Y  W d   ƒ n1 s$0    Y  d S )Nrâ   rã   rä   rå   rN   Fr   rè   Tr‡   rV   )rë   r­   r   rO   rP   rQ   r   r   rî   r#   rR   ©r   r­   r   r   r   Ú%test_cache_from_source_debug_overrideJ  s    

ÿÿ"

,z2PEP3147Tests.test_cache_from_source_debug_overridec                 C   s6   d}t j dd | j¡¡}|  | jj|dd|¡ d S ©Núfoo.pyræ   z
foo.{}.pycr‡   rè   rê   rï   r   r   r   Útest_cache_from_source_cwd[  s
    ÿz'PEP3147Tests.test_cache_from_source_cwdc              	   C   sÔ   t j ddd¡}G dd„ dƒ}t ¡ š t d¡ |  | j |g ¡| jj|dd¡ |  | j |d	g¡| jj|d
d¡ |  	t
¡  | j d|ƒ ¡ W d   ƒ n1 s¨0    Y  W d   ƒ n1 sÆ0    Y  d S )Nrâ   rã   zbaz.pyc                   @   s   e Zd Zdd„ ZdS )z=PEP3147Tests.test_cache_from_source_override.<locals>.Bearishc                 S   s   t ‚d S r   )ÚRuntimeErrorri   r   r   r   rt   h  rY   zFPEP3147Tests.test_cache_from_source_override.<locals>.Bearish.__bool__Nru   r   r   r   r   ÚBearishg  s   rþ   rN   r   rè   é   r‡   z/foo/bar/baz.py)rë   r­   r   rO   rP   rQ   r   r   rî   r#   rý   )r   r­   rþ   r   r   r   Útest_cache_from_source_overridea  s    

ÿÿz,PEP3147Tests.test_cache_from_source_overridec                 C   s6   d}t j dd | j¡¡}|  | jj|dd|¡ d S rú   rê   rï   r   r   r   Ú0test_cache_from_source_optimization_empty_strings  s
    ÿz=PEP3147Tests.test_cache_from_source_optimization_empty_stringc                 C   s|   d}t jj}tj dd | j¡¡}|dkr4|d }n,|dkrL|d |¡ }nd |¡}|  |¡ |  	| j
j|d d	|¡ d S )
Nrû   ræ   úfoo.{}r   ú.pycé   ú.opt-{}.pycz){!r} is a non-standard optimization levelrè   )rc   ÚflagsÚoptimizerë   r­   r   rì   rí   ZskipTestr   r   rî   )r   r­   Zoptimization_levelÚalmost_expectr…   Úmsgr   r   r   Ú(test_cache_from_source_optimization_Nonez  s    


ÿz5PEP3147Tests.test_cache_from_source_optimization_Nonec                 C   s¦   d}t jt j }tj dd | j¡¡}| jj	||d}|  
||d |¡ ¡ |  
| jj	|dd|d ¡ |  t¡  | jj	|dd W d   ƒ n1 s˜0    Y  d S )	Nrû   ræ   r  rè   r  rk   z.opt-42.pyczpath/is/bad)ÚstringÚascii_lettersÚdigitsrë   r­   r   rì   rí   r   rî   r   r#   r¹   )r   r­   Zvalid_charactersr  Zgotr   r   r   Ú'test_cache_from_source_optimization_setŠ  s    ÿÿz4PEP3147Tests.test_cache_from_source_optimization_setc              	   C   sr   t  ¡ V t  d¡ |  t¡" | jjdddd W d   ƒ n1 sF0    Y  W d   ƒ n1 sd0    Y  d S )NrN   rû   Fr‡   rè   )rO   rP   rQ   r#   Ú	TypeErrorr   rî   ri   r   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 definedc                 C   s$   |   | jjdddd | j¡¡ d S )Nz\foo\bar\baz/qux.pyr‡   rè   z#\foo\bar\baz\__pycache__\qux.{}.pyc)r   r   rî   rì   rí   ri   r   r   r   Ú)test_sep_altsep_and_sep_cache_from_source¢  s    
þz6PEP3147Tests.test_sep_altsep_and_sep_cache_from_sourcec              	   C   sH   t  dddd¡}tj ddddd | j¡¡}|  | jj	|dd|¡ d S rá   )
ÚpathlibÚPurePathrë   r­   r   rì   rí   r   r   rî   rï   r   r   r   Ú$test_cache_from_source_path_like_argª  s    
ÿÿz1PEP3147Tests.test_cache_from_source_path_like_argz4requires sys.implementation.cache_tag to not be Nonec              	   C   sF   t j ddddd | j¡¡}t j dddd¡}|  | j |¡|¡ d S ©Nrâ   rã   rä   ræ   rç   rå   ©rë   r­   r   rì   rí   r   r   Úsource_from_cacherï   r   r   r   Útest_source_from_cache³  s
    
ÿz#PEP3147Tests.test_source_from_cachec              	   C   sz   t j ddd¡}t tjdd ¡F |  t¡ | j	 
|¡ W d   ƒ n1 sN0    Y  W d   ƒ n1 sl0    Y  d S )Nr•   ræ   zwhatever.pycrñ   )rë   r­   r   r   rò   rc   ró   r#   rô   r   r  rø   r   r   r   Ú#test_source_from_cache_no_cache_tag½  s    z0PEP3147Tests.test_source_from_cache_no_cache_tagc                 C   s   |   t| jjd¡ d S )Nz/foo/bar/bazqux.pyc©r#   r¹   r   r  ri   r   r   r   Útest_source_from_cache_bad_pathÄ  s    
ÿz,PEP3147Tests.test_source_from_cache_bad_pathc                 C   s   |   t| jjd¡ d S )Nzfoo.cpython-32.pycr  ri   r   r   r   Útest_source_from_cache_no_slashÊ  s    
ÿz,PEP3147Tests.test_source_from_cache_no_slashc                 C   s   |   t| jjd¡ d S )Nz__pycache__/foo.pycr  ri   r   r   r   Ú#test_source_from_cache_too_few_dotsÏ  s    
ÿz0PEP3147Tests.test_source_from_cache_too_few_dotsc                 C   s:   |   t¡ | j d¡ W d   ƒ n1 s,0    Y  d S )Nz(__pycache__/foo.cpython-32.opt-1.foo.pycr  ri   r   r   r   Ú$test_source_from_cache_too_many_dotsÔ  s    ÿz1PEP3147Tests.test_source_from_cache_too_many_dotsc                 C   s   |   t| jjd¡ d S )Nz"__pycache__/foo.cpython-32.foo.pycr  ri   r   r   r   Útest_source_from_cache_not_optÙ  s    þz+PEP3147Tests.test_source_from_cache_not_optc                 C   s   |   t| jjd¡ d S )Nz/foo/bar/foo.cpython-32.foo.pycr  ri   r   r   r   Ú$test_source_from_cache_no__pycache__ß  s    þz1PEP3147Tests.test_source_from_cache_no__pycache__c                 C   s.   t j dd | j¡¡}|  | j |¡d¡ d S )Nræ   zfoo.{}.opt-1.pycrû   r  rø   r   r   r   Ú)test_source_from_cache_optimized_bytecodeå  s    z6PEP3147Tests.test_source_from_cache_optimized_bytecodec                 C   sP   t j dd | j¡¡}|  t¡ | j |¡ W d   ƒ n1 sB0    Y  d S )Nræ   zfoo.{}.opt-.pyc)	rë   r­   r   rì   rí   r#   r¹   r   r  rø   r   r   r   Ú+test_source_from_cache_missing_optimizationê  s    z8PEP3147Tests.test_source_from_cache_missing_optimizationc              	   C   sD   t  ddddd | j¡¡}tj dddd¡}|  | j 	|¡|¡ d S r  )
r  r  rì   rí   rë   r­   r   r   r   r  rï   r   r   r   Ú$test_source_from_cache_path_like_argð  s
    
ÿz1PEP3147Tests.test_source_from_cache_path_like_argc                    s(  t j t jjdd¡t j t jjdd¡t j t jjdd¡t jj g}d‰ t jdkrrd‰ ‡ fdd	„|D ƒ}|d
dg7 }|D ]¬}| j|dŠ ˆ t j t jjdddd¡ }t j |dddd | j¡¡}t 	|¡( |  
| jj|dd|¡ W d   ƒ n1 sø0    Y  W d   ƒ qv1 s0    Y  qvd S )NÚtmpÚbytecodeu   â˜ƒztrailing-slashr‡   ÚntzC:c                    s   g | ]}ˆ › |› ‘qS r   r   )Ú.0Úprefix©Údriver   r   Ú
<listcomp>  s   zOPEP3147Tests.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/   ZsubTestrì   rí   r   Útemporary_pycache_prefixr   rî   )r   Zpycache_prefixesÚpycache_prefixr­   r…   r   r+  r   Ú.test_cache_from_source_respects_pycache_prefixø  s2    ý

ÿÿ
þþz;PEP3147Tests.test_cache_from_source_respects_pycache_prefixc              
   C   s¶   t j t jjdd¡}t j dddd¡}t j t  ¡ ¡d t jj }t j |t j t  ¡ |¡dddd| j› d	¡}t 	|¡( |  
| jj|d
d|¡ W d   ƒ n1 s¨0    Y  d S )Nr&  r'  râ   rã   rä   rå   r   úqux.r  r‡   rè   )rë   r­   r   r.  Ú
splitdriveÚgetcwdÚrelpathrí   r   r/  r   rî   )r   r0  r­   Úrootr…   r   r   r   Ú7test_cache_from_source_respects_pycache_prefix_relative  s    ýþzDPEP3147Tests.test_cache_from_source_respects_pycache_prefix_relativec              	   C   sŒ   t j t jjdd¡}t j |dddd| j› d¡}t j t jjdddd¡}t |¡$ |  | j |¡|¡ W d   ƒ n1 s~0    Y  d S )	Nr&  r'  râ   rã   rä   r2  r  rå   ©	rë   r­   r   r.  rí   r   r/  r   r  ©r   r0  r­   r…   r   r   r   Ú,test_source_from_cache_inside_pycache_prefix'  s    ÿz9PEP3147Tests.test_source_from_cache_inside_pycache_prefixc              	   C   s†   t j t jjdd¡}t j ddddd| j› d¡}t j dddd	¡}t |¡$ |  | j |¡|¡ W d   ƒ n1 sx0    Y  d S )
Nr&  r'  râ   rã   rä   ræ   r2  r  rå   r8  r9  r   r   r   Ú-test_source_from_cache_outside_pycache_prefix4  s    ÿz:PEP3147Tests.test_source_from_cache_outside_pycache_prefix))r   r   r   r~   rc   ró   rñ   rí   ÚunittestZskipIfrð   rõ   r÷   rù   rü   r   r  r
  r  r  Ú
skipUnlessrë   r.  Úaltsepr  r  r  r  r  r  r  r   r!  r"  r#  r$  r%  r1  r7  r:  r;  r   r   r   r   rà   +  sp   ÿ
	ÿ
ÿ
ÿ
ÿ
ÿ
ÿ
ÿ
ÿrà   c                   @   s,   e Zd ZdZe ejjdv d¡dd„ ƒZ	dS )rÙ   zA
    Test release compatibility issues relating to importlib
    )Ú	candidateÚfinalz8only applies to candidate or final python release levelsc                 C   s2   d}t  tjjdd… d¡}d}|  |||¡ dS )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.
        ia  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_bytesr   r   rÜ   r   )r   ZEXPECTED_MAGIC_NUMBERÚactualr	  r   r   r   Útest_magic_numberK  s
    ÿz"MagicNumberTests.test_magic_numberN)
r   r   r   r~   r<  r=  rc   Úversion_infoÚreleaselevelrE  r   r   r   r   rÙ   G  s   
þÚ__main__)2r‡   r   Zimport_importlibr+   rÏ   r!   Zimportlib_utilÚimportlib.utilr   rë   r  r  rc   r    r   r-   r<  Zunittest.mockrO   r   Z	test_bothZFrozen_DecodeSourceBytesTestsZSource_DecodeSourceBytesTestsr   ZFrozen_ModuleFromSpecTestsZSource_ModuleFromSpecTestsrM   ZFrozen_ModuleForLoaderTestsZSource_ModuleForLoaderTestsr€   ZFrozen_SetPackageTestsZSource_SetPackageTestsr   ZFrozen_SetLoaderTestsZSource_SetLoaderTestsr   ZFrozen_ResolveNameTestsZSource_ResolveNameTestsr¬   ZFrozen_FindSpecTestsZSource_FindSpecTestsrÙ   ZFrozen_MagicNumberTestsZSource_MagicNumberTestsrà   ZFrozen_PEP3147TestsZSource_PEP3147TestsZTestCaser   Úmainr   r   r   r   Ú<module>   sz   



þJ
ÿþ þ<þ,þ#þ 
ÿþþ  þ+
