a
    ¼3jsI  ć                   @   sZ  d dl mZ e d”Ze d”Ze d”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G dd	 d	Zejeed
\ZZG dd dZG dd deZejeed
\ZZG dd deZejeed
\ZZG dd dZejeeed\ZZG dd dZejeed
\ZZG dd dejZ G dd dZ!eje!ed\Z"Z#e$dkrVe %”  dS )é   )ŚutilŚ	importlibzimportlib.utilzimportlib.machineryé    N)Śsupportc                   @   sD   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S )ŚImportModuleTestsc              	   C   sv   t  d”X}t j|gd* | j d”}|  |jd” W d    n1 sJ0    Y  W d    n1 sh0    Y  d S )NŚ	top_level©Ś	meta_path©Ś	test_utilŚmock_modulesŚimport_stateŚinitŚimport_moduleŚassertEqualŚ__name__)ŚselfŚmockŚmodule© r   śX/www/server/python_manager/versions/3.9.10/lib/python3.9/test/test_importlib/test_api.pyŚtest_module_import   s    z$ImportModuleTests.test_module_importc              	   C   s   d}d  |”}d  |”}t ||”X}tj|gd* | j |”}|  |j|” W d    n1 sd0    Y  W d    n1 s0    Y  d S ©NŚpkgś{0}.__init__z{0}.modr   ©Śformatr   r   r   r   r   r   r   ©r   Śpkg_nameŚpkg_long_nameŚnamer   r   r   r   r   Śtest_absolute_package_import   s    

z.ImportModuleTests.test_absolute_package_importc              	   C   s®   d}d  |”}d}d  ||”}d  |”}t ||”f}tj|gd8 | j |” | j ||”}|  |j|” W d    n1 s0    Y  W d    n1 s 0    Y  d S )Nr   r   Śmodz{0}.{1}z.{0}r   r   )r   r   r   Śmodule_nameZabsolute_nameZrelative_namer   r   r   r   r   Ś$test_shallow_relative_package_import$   s    

z6ImportModuleTests.test_shallow_relative_package_importc              	   C   s   g d¢}t j| r}t j|gdD | j d” | j d” | j dd”}|  |jd” W d    n1 sl0    Y  W d    n1 s0    Y  d S )N)ś
a.__init__za.b.__init__śa.cr   Śaśa.bz..cr&   r
   )r   Śmodulesr   r   r   r   r   Ś!test_deep_relative_package_import1   s    z3ImportModuleTests.test_deep_relative_package_importc              	   C   s   d}d  |”}d  |”}t ||”f}tj|gd8 | j |” | j ||”}|  |j|” W d    n1 sr0    Y  W d    n1 s0    Y  d S r   r   r   r   r   r   Ś!test_absolute_import_with_package:   s    

z3ImportModuleTests.test_absolute_import_with_packagec                 C   s:   |   t” | j d” W d    n1 s,0    Y  d S )Nz.support)ŚassertRaisesŚ	TypeErrorr   r   ©r   r   r   r   Śtest_relative_import_wo_packageF   s    z1ImportModuleTests.test_relative_import_wo_packagec              	      sØ   d fdd} fdd}||d}ddg}t j|d	|iJ}t j|gd
 j d” W d    n1 sp0    Y  W d    n1 s0    Y    d” d S )Nr   c                      s    j  d” d S )Nr(   )r   r   r   r.   r   r   Śload_aR   s    z2ImportModuleTests.test_loaded_once.<locals>.load_ac                      s    d7  d S )Nr   r   r   )Śb_load_countr   r   Śload_bT   s    z2ImportModuleTests.test_loaded_once.<locals>.load_b)r'   r(   r%   r(   Śmodule_coder   r   )r   r   r   r   r   r   )r   r0   r2   Ścoder)   r   r   )r1   r   r   Śtest_loaded_onceM   s    
Hz"ImportModuleTests.test_loaded_onceN)
r   Ś
__module__Ś__qualname__r   r!   r$   r*   r+   r/   r5   r   r   r   r   r      s   
	r   )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 )ŚFindLoaderTestsNc              	   C   s   d}t  |”z t |”}d}||_|tj|< t ” ( t 	dt
” | j |”}W d    n1 sd0    Y  |  ||” W d    n1 s0    Y  d S )NŚsome_modz	a loader!Śignore)r   ŚuncacheŚtypesŚ
ModuleTypeŚ
__loader__Śsysr)   ŚwarningsŚcatch_warningsŚsimplefilterŚDeprecationWarningr   Śfind_loaderr   )r   r    r   ŚloaderŚfoundr   r   r   Śtest_sys_modulesh   s    


*z FindLoaderTests.test_sys_modulesc              
   C   s¶   d}t  |” t |”}d |_|tj|< |  t”P t	 
” ( t	 dt” | j |” W d    n1 sl0    Y  W d    n1 s0    Y  W d    n1 sØ0    Y  d S ©Nr9   r:   )r   r;   r<   r=   r>   r?   r)   r,   Ś
ValueErrorr@   rA   rB   rC   r   rD   ©r   r    r   r   r   r   Śtest_sys_modules_loader_is_Noneu   s    


z/FindLoaderTests.test_sys_modules_loader_is_Nonec              
   C   sĢ   d}t  |”Ŗ t |”}z|`W n ty4   Y n0 |tj|< |  t	”P t
 ” ( t
 dt” | j |” W d    n1 s0    Y  W d    n1 s 0    Y  W d    n1 s¾0    Y  d S rH   )r   r;   r<   r=   r>   ŚAttributeErrorr?   r)   r,   rI   r@   rA   rB   rC   r   rD   rJ   r   r   r   Ś"test_sys_modules_loader_is_not_set   s    


z2FindLoaderTests.test_sys_modules_loader_is_not_setc              
   C   s®   d}t  |” t j| jgd\ t ” 4 t dt” |  |d f| j	 
|”” W d    n1 sd0    Y  W d    n1 s0    Y  W d    n1 s 0    Y  d S )Nr9   r   r:   ©r   r;   r   ŚFakeMetaFinderr@   rA   rB   rC   r   r   rD   )r   r    r   r   r   Śtest_success   s    
zFindLoaderTests.test_successc              
   C   s“   d}d}t  |” t j| jgd^ t ” 6 t dt” |  ||f| j	 
||”” W d    n1 sj0    Y  W d    n1 s0    Y  W d    n1 s¦0    Y  d S )Nr9   zpath to some placer   r:   rN   )r   r    Śpathr   r   r   Śtest_success_path   s    

’z!FindLoaderTests.test_success_pathc                 C   sJ   t  ” . t  dt” |  | j d”” W d    n1 s<0    Y  d S )Nr:   Znevergoingtofindthismodule)r@   rA   rB   rC   ŚassertIsNoner   rD   r.   r   r   r   Śtest_nothing„   s    
zFindLoaderTests.test_nothing)
r   r6   r7   rO   rG   rK   rM   rP   rR   rT   r   r   r   r   r8   d   s   	r8   c                   @   s   e Zd ZG dd dZdS )ŚFindLoaderPEP451Testsc                   @   s   e Zd ZedddZdS )z$FindLoaderPEP451Tests.FakeMetaFinderNc                 C   s   t d  | | |f”S )NŚSource)Ś	machineryŚ
ModuleSpec)r    rQ   Śtargetr   r   r   Ś	find_specÆ   s    z.FindLoaderPEP451Tests.FakeMetaFinder.find_spec)NN)r   r6   r7   ŚstaticmethodrZ   r   r   r   r   rO   ®   s   rO   N©r   r6   r7   rO   r   r   r   r   rU   ¬   s   rU   c                   @   s   e Zd ZG dd dZdS )ŚFindLoaderPEP302Testsc                   @   s   e Zd ZedddZdS )z$FindLoaderPEP302Tests.FakeMetaFinderNc                 C   s   | |fS ©Nr   )r    rQ   r   r   r   Śfind_module¼   s    z0FindLoaderPEP302Tests.FakeMetaFinder.find_module)N)r   r6   r7   r[   r_   r   r   r   r   rO   »   s   rO   Nr\   r   r   r   r   r]   ¹   s   r]   c                   @   sL   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S )ŚReloadTestsc              
   C   s|   dD ]r}| j |dR t |”( | j |”}| j |” W d    n1 sN0    Y  W d    q1 sl0    Y  qd S )N)ŚtokenizeŚtimeŚmarshal)r   )ŚsubTestr   ŚCleanImportr   r   Śreload)r   r"   r   r   r   r   Śtest_reload_modulesČ   s
    zReloadTests.test_reload_modulesc              	   C   s®   dd }t jdd|id}|| t j|gdN | j d”}| j |”}tjd }|  |j	d” |  |j	d” W d    n1 s0    Y  W d    n1 s 0    Y  d S )Nc                  S   s(   dd l } t| d}d|_|| jd< d S )Nr   r   é   )r?   ŚtypeŚspamr)   )r?   r   r   r   r   r4   Š   s    z.ReloadTests.test_module_replaced.<locals>.coder   )r3   r   rh   )
r   r   r   r   r   rf   r?   r)   r   rj   )r   r4   r   r   ŚreloadedŚactualr   r   r   Śtest_module_replacedĻ   s    ’
z ReloadTests.test_module_replacedc                 C   s|   t  d”^ dd l}|j}|`| j |”}|  ||” |  tjd |” |  	|jj
|j
” W d    n1 sn0    Y  d S ©Nr<   r   )r   re   r<   r>   r   rf   ŚassertIsr?   r)   r   rQ   )r   r<   rE   rk   r   r   r   Śtest_reload_missing_loaderß   s    z&ReloadTests.test_reload_missing_loaderc                 C   s~   t  d”` dd l}d |_| j ”  | j |”}|  |jd ” |  ||” |  t	j
d |” W d    n1 sp0    Y  d S rn   )r   re   r<   r>   r   Śinvalidate_cachesrf   ŚassertIsNotro   r?   r)   )r   r<   rk   r   r   r   Śtest_reload_loader_replacedź   s    
z'ReloadTests.test_reload_loader_replacedc              
   C   s  d}t  d ”ō}t d”Ę t  |” | j ”  tj 	||d ”}| j
 |”}|d||d d}t  |” | j |”}t| ” }| d”}| d”}	| dd ” |  |	j|” |  |	j|” |  |j|” |  ||” | j ”  tj 	||d”}
| j
 |
”}|||
|tj |
”gd d	}t |” t ||
” | j |”}t| ” }| d”}| d”}	| dd ” |  |	j|” |  |	j|” |  ||” |  |j|
” d | _|  ||” W d    n1 sĢ0    Y  W d    n1 sģ0    Y  W d    n1 s0    Y  d S )
Nrj   z.pyŚ )r   Ś__package__Ś__file__Ś
__cached__Ś__doc__r>   Ś__spec__Ś__builtins__ś__init__.py)r   ru   rv   rw   Ś__path__rx   )r   Śtemp_cwdr   r;   ŚDirsOnSysPathr   rq   ŚosrQ   Śjoinr   Ścache_from_sourceZcreate_empty_filer   ŚvarsŚcopyŚpopr   r    rE   ŚdirnameŚmkdirŚrenamerf   ro   ZmaxDiff)r   r    ŚcwdrQ   ŚcachedŚexpectedr   ŚnsrE   ŚspecŚ	init_pathrk   r   r   r   Śtest_reload_location_changedõ   s\    
ü



ū


z(ReloadTests.test_reload_location_changedc                 C   s  d}t  d ”x}t d”J t  |” | j ”  tj 	||d”}| j
 |”}||d d d}t |” t|d}| d” W d    n1 s0    Y  | j |”}t| ” }| d”}	| d”}
| d”}| d	d ” |  |j|” |  |j” |  |	” |  |j|	” |  t|
ttj |”g” |  t” |	j W d    n1 sZ0    Y  |  ||” | j ”  tj 	||d
”}| j
 |”}||||tj |”gd d d}t ||” | j |”}t| ” }| d”}	| d”}| d	d ” |  |j|” |  |j|	” |  ||” |  |	j|” |  ||” W d    n1 sP0    Y  W d    n1 sp0    Y  W d    n1 s0    Y  d S )Nrj   z	__init.py)r   ru   rx   rv   Śwzeggs = Noner>   r|   ry   rz   r{   )r   ru   rv   rw   r|   rx   Zeggs)r   r}   r   r;   r~   r   rq   r   rQ   r   r   r   r   ŚopenŚwriter   r   r   r   r   r    ZassertIsNotNonerE   Śsetr   r,   rL   r   rf   ro   )r   r    r   Zbad_pathr   r   Z	init_filer   r   rE   rQ   r   r   rk   r   r   r   Śtest_reload_namespace_changed(  sj    
ż
(




’&
ś

z)ReloadTests.test_reload_namespace_changedc                 C   sp   d}d}t j|ddF}t  |||”\}}| j |”}| j |”}|  ||” W d    n1 sb0    Y  d S )Nrj   ŚhamT)r   )r   Ztemp_moduleZ	submoduler   r   rf   ro   )r   r    ZsubnameZpkg_dirŚfullnameŚ_r   rk   r   r   r   Śtest_reload_submoduleb  s    z!ReloadTests.test_reload_submodulec              	   C   s   d}t  |”r t |” }tj|< | j |”}|  |j	” |  
t” | j |” W d    n1 sh0    Y  W d    n1 s0    Y  d S )Nrj   )r   r;   r<   r=   r?   r)   r   r   rS   ry   r,   ŚModuleNotFoundErrorrf   rJ   r   r   r   Śtest_module_missing_specl  s    z$ReloadTests.test_module_missing_specN)r   r6   r7   rg   rm   rp   rs   r   r   r   r   r   r   r   r   r`   Ę   s   3:
r`   )r   r   c                   @   s   e Zd Zdd Zdd ZdS )ŚInvalidateCacheTestsc                    s   G dd d}d | | }t j d” |   fdd” |t j < |  fdd” | j ”  |  j” |  |j” d S )Nc                   @   s$   e Zd Zdd Zdd Zdd ZdS )zGInvalidateCacheTests.test_method_called.<locals>.InvalidatingNullFinderc                 W   s
   d| _ d S )NF©Ścalled)r   Zignoredr   r   r   Ś__init__  s    zPInvalidateCacheTests.test_method_called.<locals>.InvalidatingNullFinder.__init__c                 W   s   d S r^   r   )r   Śargsr   r   r   r_     s    zSInvalidateCacheTests.test_method_called.<locals>.InvalidatingNullFinder.find_modulec                 S   s
   d| _ d S )NTr   r.   r   r   r   rq     s    zYInvalidateCacheTests.test_method_called.<locals>.InvalidatingNullFinder.invalidate_cachesN)r   r6   r7   r   r_   rq   r   r   r   r   ŚInvalidatingNullFinder  s   r   Zgobledeegookr   c                      s   t j  ”S r^   )r?   Śpath_importer_cacheŚ__delitem__r   ©Śkeyr   r   Ś<lambda>  ó    z9InvalidateCacheTests.test_method_called.<locals>.<lambda>c                      s   t j  ”S r^   )r?   r	   Śremover   )Śmeta_insr   r   r¤     r„   )	r?   r	   ŚinsertŚ
addCleanupr    r   rq   Ś
assertTruer   )r   r   Zpath_insr   )r£   r§   r   Śtest_method_called  s    

z'InvalidateCacheTests.test_method_calledc                    s.   d d t j < |   fdd” | j ”  d S )NZgobbledeegookc                      s   t j  d ”S r^   )r?   r    r   r   r¢   r   r   r¤     r„   z:InvalidateCacheTests.test_method_lacking.<locals>.<lambda>)r?   r    r©   r   rq   r.   r   r¢   r   Śtest_method_lacking  s    
z(InvalidateCacheTests.test_method_lackingN)r   r6   r7   r«   r¬   r   r   r   r   r   ~  s   r   c                   @   s   e Zd Zdd ZdS )ŚFrozenImportlibTestsc                 C   s   t d }|  |jjjd” d S )NrV   ŚFrozenImporter)r   ZassertNotEqualr>   Ś	__class__r   )r   Zsource_initr   r   r   Śtest_no_frozen_importlib¤  s    ’z-FrozenImportlibTests.test_no_frozen_importlibN)r   r6   r7   r°   r   r   r   r   r­   ¢  s   r­   c                   @   s   e Zd Zdd Zdd ZdS )ŚStartupTestsc              	   C   s¢   t j ” D ]\}}t|tjr
| j|db |  t|dd 	|”” | j
j |”rb|  |jd ” n| j
j |”r~|  |jd ” W d    q
1 s0    Y  q
d S )N©r    r>   z!{!r} lacks a __loader__ attribute)r?   r)   ŚitemsŚ
isinstancer<   r=   rd   rŖ   Śhasattrr   rW   ŚBuiltinImporterr_   rr   r>   r®   rJ   r   r   r   Śtest_everyone_has___loader__°  s    ’z)StartupTests.test_everyone_has___loader__c              	   C   s   t j ” D ]\}}t|tjr
| j|dZ |  t|d” | j	j
 |”rZ|  |jd ” n| j	j |”rv|  |jd ” W d    q
1 s0    Y  q
d S )Nr²   ry   )r?   r)   r³   r“   r<   r=   rd   rŖ   rµ   rW   r¶   r_   rr   ry   r®   rJ   r   r   r   Śtest_everyone_has___spec__¼  s    z'StartupTests.test_everyone_has___spec__N)r   r6   r7   r·   rø   r   r   r   r   r±   ®  s   r±   )rW   Ś__main__)&rt   r   r   Zimport_importlibr   rW   Zos.pathr   r?   Śtestr   r<   Zunittestr@   r   Z	test_bothZFrozen_ImportModuleTestsZSource_ImportModuleTestsr8   rU   ZFrozen_FindLoaderPEP451TestsZSource_FindLoaderPEP451Testsr]   ZFrozen_FindLoaderPEP302TestsZSource_FindLoaderPEP302Testsr`   ZFrozen_ReloadTestsZSource_ReloadTestsr   ZFrozen_InvalidateCacheTestsZSource_InvalidateCacheTestsZTestCaser­   r±   ZFrozen_StartupTestsZSource_StartupTestsr   Śmainr   r   r   r   Ś<module>   sL   


RžH
ž
ž 6ž!žž
