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                   @   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 )ŚImportModuleTestszTest importlib.import_module.c              	   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__Ś__doc__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 ©Nr:   r;   )r   r<   r=   r>   r?   r@   r)   r,   Ś
ValueErrorrA   rB   rC   rD   r   rE   ©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 rI   )r   r<   r=   r>   r?   ŚAttributeErrorr@   r)   r,   rJ   rA   rB   rC   rD   r   rE   rK   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 )Nr:   r   r;   ©r   r<   r   ŚFakeMetaFinderrA   rB   rC   rD   r   r   rE   )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 )Nr:   zpath to some placer   r;   rO   )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)rA   rB   rC   rD   ŚassertIsNoner   rE   r.   r   r   r   Śtest_nothing„   s    
zFindLoaderTests.test_nothing)
r   r6   r7   rP   rH   rL   rN   rQ   rS   rU   r   r   r   r   r9   d   s   	r9   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    rR   Śtargetr   r   r   Ś	find_specÆ   s    z.FindLoaderPEP451Tests.FakeMetaFinder.find_spec)NN)r   r6   r7   Śstaticmethodr[   r   r   r   r   rP   ®   s   rP   N©r   r6   r7   rP   r   r   r   r   rV   ¬   s   rV   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    rR   r   r   r   Śfind_module¼   s    z0FindLoaderPEP302Tests.FakeMetaFinder.find_module)N)r   r6   r7   r\   r`   r   r   r   r   rP   »   s   rP   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   ri   )
r   r   r   r   r   rg   r@   r)   r   rk   )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   rf   r=   r?   r   rg   ŚassertIsr@   r)   r   rR   )r   r=   rF   rl   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 ro   )r   rf   r=   r?   r   Śinvalidate_cachesrg   ŚassertIsNotrp   r@   r)   )r   r=   rl   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 )
Nrk   z.pyŚ )r   Ś__package__Ś__file__Ś
__cached__r8   r?   Ś__spec__Ś__builtins__ś__init__.py)r   rv   rw   rx   Ś__path__r8   )r   Śtemp_cwdr   r<   ŚDirsOnSysPathr   rr   ŚosrR   Śjoinr   Ścache_from_sourceZcreate_empty_filer   ŚvarsŚcopyŚpopr   r    rF   ŚdirnameŚmkdirŚrenamerg   rp   ZmaxDiff)r   r    ŚcwdrR   ŚcachedŚexpectedr   ŚnsrF   ŚspecŚ	init_pathrl   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 )Nrk   z	__init.py)r   rv   r8   rw   Śwzeggs = Noner?   r|   ry   rz   r{   )r   rv   rw   rx   r|   r8   Zeggs)r   r}   r   r<   r~   r   rr   r   rR   r   r   r   r   ŚopenŚwriter   r   r   r   r   r    ZassertIsNotNonerF   Śsetr   r,   rM   r   rg   rp   )r   r    r   Zbad_pathr   r   Z	init_filer   r   rF   rR   r   r   rl   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 )Nrk   ŚhamT)r   )r   Ztemp_moduleZ	submoduler   r   rg   rp   )r   r    ZsubnameZpkg_dirŚfullnameŚ_r   rl   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 )Nrk   )r   r<   r=   r>   r@   r)   r   r   rT   ry   r,   ŚModuleNotFoundErrorrg   rK   r   r   r   Śtest_module_missing_specl  s    z$ReloadTests.test_module_missing_specN)r   r6   r7   rh   rn   rq   rt   r   r   r   r   r   r   r   r   ra   Ę   s   3:
ra   )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   rr     s    zYInvalidateCacheTests.test_method_called.<locals>.InvalidatingNullFinder.invalidate_cachesN)r   r6   r7   r   r`   rr   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   rr   Ś
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   rr   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 )NrW   Ś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>   re   rŖ   Śhasattrr   rX   ŚBuiltinImporterr`   rs   r?   r®   rK   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>   re   rŖ   rµ   rX   r¶   r`   rs   ry   r®   rK   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±   )rX   Ś__main__)&ru   r   r   Zimport_importlibr   rX   Zos.pathr   r@   Śtestr   r=   ZunittestrA   r   Z	test_bothZFrozen_ImportModuleTestsZSource_ImportModuleTestsr9   rV   ZFrozen_FindLoaderPEP451TestsZSource_FindLoaderPEP451Testsr^   ZFrozen_FindLoaderPEP302TestsZSource_FindLoaderPEP302Testsra   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ž!žž
