a
    ¼3jŠy  ã                   @   s.  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G d
d„ deƒZG dd„ deƒZG dd„ dƒZeje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eed\ZZG dd„ dƒZejeeed\ZZedkr*e ¡  dS )é   )ÚutilÚ	importlibzimportlib.machineryzimportlib.utilé    N)ÚCleanImportc                   @   s>   e Zd Zddd„Zdd„ Zdd„ Zdd	„ Zd
d„ Zdd„ ZdS )Ú
TestLoaderNc                 C   s   || _ || _d S ©N)ÚpathÚpackage)Úselfr   Ú
is_package© r   úY/www/server/python_manager/versions/3.9.10/lib/python3.9/test/test_importlib/test_spec.pyÚ__init__   s    zTestLoader.__init__c                 C   s   dS )Nz<TestLoader object>r   ©r
   r   r   r   Ú__repr__   s    zTestLoader.__repr__c                 C   s2   |dkr| j d ur| jS |dkr&| jS t|ƒ‚d S )NÚget_filenamer   )r   Ú_get_filenameÚ_is_packageÚAttributeError©r
   Únamer   r   r   Ú__getattr__   s
    zTestLoader.__getattr__c                 C   s   | j S r   )r   r   r   r   r   r       s    zTestLoader._get_filenamec                 C   s   | j S r   )r	   r   r   r   r   r   #   s    zTestLoader._is_packagec                 C   s   d S r   r   ©r
   Úspecr   r   r   Úcreate_module&   s    zTestLoader.create_module)NN)	Ú__name__Ú
__module__Ú__qualname__r   r   r   r   r   r   r   r   r   r   r      s   
r   c                   @   s   e Zd ZdZdd„ ZdS )Ú	NewLoaderr   c                 C   s   | j |_d S r   )ÚEGGSÚeggs©r
   Úmoduler   r   r   Úexec_module.   s    zNewLoader.exec_moduleN)r   r   r   r   r#   r   r   r   r   r   *   s   r   c                   @   sZ   e Zd ZdZe ¡ 2 e de¡ ed Z	e	j
dd„ ƒZW d  ƒ n1 sL0    Y  dS )ÚLegacyLoaderéÿÿÿÿÚignoreZFrozenc                 C   s   | j |_|S r   )ÚHAMÚhamr!   r   r   r   Úload_module;   s    zLegacyLoader.load_moduleN)r   r   r   r'   ÚwarningsÚcatch_warningsÚsimplefilterÚDeprecationWarningr   Zfrozen_utilÚmodule_for_loaderr)   r   r   r   r   r$   2   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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 )(ÚModuleSpecTestsc                 C   s^   d| _ d| _| j | j¡| _tƒ | _| j | j | j¡| _	| jj| j | j| jd| _
d| j
_d S ©NÚspamúspam.py©ÚoriginT©r   r   r   Úcache_from_sourceÚcachedr   ÚloaderÚ	machineryÚ
ModuleSpecr   Úloc_specÚ_set_fileattrr   r   r   r   ÚsetUpC   s    ÿzModuleSpecTests.setUpc                 C   sz   | j  | j| j¡}|  |j| j¡ |  |j| j¡ |  |jd ¡ |  |jd ¡ |  |jd ¡ |  |j	d ¡ |  
|j¡ d S r   ©r9   r:   r   r8   ÚassertEqualÚassertIsr4   Úloader_stateÚsubmodule_search_locationsr7   ÚassertFalseÚhas_locationr   r   r   r   Útest_defaultM   s    zModuleSpecTests.test_defaultc                 C   sv   | j  | jd ¡}|  |j| j¡ |  |jd ¡ |  |jd ¡ |  |jd ¡ |  |jd ¡ |  |j	d ¡ |  
|j¡ d S r   )r9   r:   r   r?   r@   r8   r4   rA   rB   r7   rC   rD   r   r   r   r   Útest_default_no_loaderX   s    z&ModuleSpecTests.test_default_no_loaderc                 C   s~   | j j| j| jdd}|  |j| j¡ |  |j| j¡ |  |jd ¡ |  |jd ¡ |  |jd ¡ |  |j	d ¡ |  
|j¡ d S ©NF©r   r>   r   r   r   r   Útest_default_is_package_falsec   s    ÿz-ModuleSpecTests.test_default_is_package_falsec                 C   s~   | j j| j| jdd}|  |j| j¡ |  |j| j¡ |  |jd ¡ |  |jd ¡ |  |jg ¡ |  |j	d ¡ |  
|j¡ d S ©NTrH   r>   r   r   r   r   Útest_default_is_package_trueo   s    ÿz,ModuleSpecTests.test_default_is_package_truec                 C   s8   | j j| j| jdd}|  |j¡ d|_|  |j¡ d S )NZ	somewherer3   T)r9   r:   r   r8   rC   rD   Ú
assertTruer   r   r   r   Útest_has_location_setter{   s    ÿz(ModuleSpecTests.test_has_location_setterc                 C   s2   t tjƒ| j| jd d dd d}|  | j|k¡ d S )NF©r   r8   r4   rB   rD   r7   )ÚtypeÚsysÚimplementationr   r8   rL   r   ©r
   Úotherr   r   r   Útest_equality‚   s    ûzModuleSpecTests.test_equalityc                 C   s4   t tjƒ| j| j| jd d| jd}|  | j|¡ d S )NTrN   )	rO   rP   rQ   r   r8   r   r7   r?   r;   rR   r   r   r   Útest_equality_location   s    ûz&ModuleSpecTests.test_equality_locationc                 C   s.   t tjƒd| jd d dd d}|  | j|¡ d S )Nr(   FrN   )rO   rP   rQ   r8   ÚassertNotEqualr   rR   r   r   r   Útest_inequality˜   s    
ûzModuleSpecTests.test_inequalityc                 C   s(   t tjƒ| j| jd}|  | j|¡ d S )N)r   r8   )rO   rP   rQ   r   r8   rV   r   rR   r   r   r   Útest_inequality_incomplete£   s    ÿz*ModuleSpecTests.test_inequality_incompletec                 C   s"   | j  d| j¡}|  |jd¡ d S )Nú	spam.eggsr1   ©r9   r:   r8   r?   Úparentr   r   r   r   Útest_packageª   s    zModuleSpecTests.test_packagec                 C   s&   | j jd| jdd}|  |jd¡ d S )NrY   TrH   rZ   r   r   r   r   Útest_package_is_package¯   s    ÿz'ModuleSpecTests.test_package_is_packagec                 C   s4   | j j}d| j _| j j}|  |d ¡ |  |d¡ d S )NZthere)r   r7   r@   r?   )r
   ÚbeforeZafterr   r   r   Útest_cached_set·   s
    zModuleSpecTests.test_cached_setc                 C   s$   | j  | j| j¡}|  |jd ¡ d S r   )r9   r:   r   r8   r@   r7   r   r   r   r   Útest_cached_no_origin¿   s    z%ModuleSpecTests.test_cached_no_originc                 C   s*   | j j| j| j| jd}|  |jd ¡ d S )Nr3   )r9   r:   r   r8   r   r@   r7   r   r   r   r   Ú$test_cached_with_origin_not_locationÄ   s    ÿz4ModuleSpecTests.test_cached_with_origin_not_locationc                 C   s"   | j  | j¡}|  | jj|¡ d S r   )r   r6   r   r?   r;   r7   )r
   Zexpectedr   r   r   Útest_cached_sourceÊ   s    z"ModuleSpecTests.test_cached_sourcec                 C   s   d| j _|  | j jd ¡ d S )Nzspam.spamspamspam)r;   r4   r@   r7   r   r   r   r   Ú!test_cached_source_unknown_suffixÏ   s    z1ModuleSpecTests.test_cached_source_unknown_suffixc                 C   s@   t jj}d t j_z| jj}W |t j_n
|t j_0 |  |d ¡ d S r   )rP   rQ   Ú	cache_tagr;   r7   r@   )r
   Zoriginalr7   r   r   r   Ú$test_cached_source_missing_cache_tagÔ   s    
z4ModuleSpecTests.test_cached_source_missing_cache_tagc                 C   s   d| j _|  | j jd¡ d S )Nzspam.pyc)r;   r4   r?   r7   r   r   r   r   Útest_cached_sourcelessÞ   s    z&ModuleSpecTests.test_cached_sourcelessN)r   r   r   r=   rE   rF   rI   rK   rM   rT   rU   rW   rX   r\   r]   r_   r`   ra   rb   rc   re   rf   r   r   r   r   r/   A   s&   

r/   )r   r9   c                   @   sˆ   e 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d„ Zdd„ Zdd„ Zdd„ ZdS ) ÚModuleSpecMethodsTestsc                 C   s   | j jS r   ©ÚinitÚ
_bootstrapr   r   r   r   Ú	bootstrapë   s    z ModuleSpecMethodsTests.bootstrapc                 C   s^   d| _ d| _| j | j¡| _tƒ | _| j | j | j¡| _	| jj| j | j| jd| _
d| j
_d S r0   r5   r   r   r   r   r=   ï   s    ÿzModuleSpecMethodsTests.setUpc                 C   sV   t ƒ | j_| j | j¡}|tj| j< |  t	|dƒ¡ | j
 | j|¡ |  |jd¡ d S )Nr    r   )r   r   r8   r   Úmodule_from_specrP   Úmodulesr   rC   Úhasattrrk   Ú_execr?   r    r!   r   r   r   Ú	test_execû   s    
z ModuleSpecMethodsTests.test_execc                 C   sp   t ƒ | j_t| jjƒ, | j | j¡}tj| jj }W d   ƒ n1 sH0    Y  |  	|j
d¡ |  ||¡ d S ©Nr   )r   r   r8   r   r   rk   Ú_loadrP   rm   r?   r    r@   )r
   ÚloadedÚ	installedr   r   r   Ú	test_load  s    
,z ModuleSpecMethodsTests.test_loadc                    sˆ   t ƒ ‰ G ‡ fdd„dtƒ}|ƒ | j_t| jjƒ, | j | j¡}tj	| jj }W d   ƒ n1 sb0    Y  |  
|ˆ ¡ |  
|ˆ ¡ d S )Nc                       s   e Zd Z‡ fdd„ZdS )zBModuleSpecMethodsTests.test_load_replaced.<locals>.ReplacingLoaderc                    s   ˆ t j|j< d S r   )rP   rm   r   r!   ©Zreplacementr   r   r#     s    zNModuleSpecMethodsTests.test_load_replaced.<locals>.ReplacingLoader.exec_moduleN©r   r   r   r#   r   rv   r   r   ÚReplacingLoader  s   rx   )Úobjectr   r   r8   r   r   rk   rr   rP   rm   r@   )r
   rx   rs   rt   r   rv   r   Útest_load_replaced  s    
,z)ModuleSpecMethodsTests.test_load_replacedc              	   C   s”   G dd„ dt ƒ}|ƒ | j_t| jjƒZ |  t¡ | j | j¡}W d   ƒ n1 sV0    Y  |  	| jjt
j¡ W d   ƒ n1 s†0    Y  d S )Nc                   @   s   e Zd Zdd„ ZdS )z=ModuleSpecMethodsTests.test_load_failed.<locals>.FailedLoaderc                 S   s   t ‚d S r   )ÚRuntimeErrorr!   r   r   r   r#     s    zIModuleSpecMethodsTests.test_load_failed.<locals>.FailedLoader.exec_moduleNrw   r   r   r   r   ÚFailedLoader  s   r|   ©r   r   r8   r   r   ZassertRaisesr{   rk   rr   ZassertNotInrP   rm   ©r
   r|   rs   r   r   r   Útest_load_failed  s    
,z'ModuleSpecMethodsTests.test_load_failedc              	   C   s”   G dd„ dt ƒ}|ƒ | j_t| jjƒZ |  t¡ | j | j¡}W d   ƒ n1 sV0    Y  |  	| jjt
j¡ W d   ƒ n1 s†0    Y  d S )Nc                   @   s   e Zd Zdd„ ZdS )zEModuleSpecMethodsTests.test_load_failed_removed.<locals>.FailedLoaderc                 S   s   t j|j= t‚d S r   )rP   rm   r   r{   r!   r   r   r   r#   (  s    
zQModuleSpecMethodsTests.test_load_failed_removed.<locals>.FailedLoader.exec_moduleNrw   r   r   r   r   r|   '  s   r|   r}   r~   r   r   r   Útest_load_failed_removed&  s    
,z/ModuleSpecMethodsTests.test_load_failed_removedc                 C   sV   t ƒ | j_t| jjƒ | j | j¡}W d   ƒ n1 s:0    Y  |  |jd¡ d S ©Nr%   )	r$   r   r8   r   r   rk   rr   r?   r(   ©r
   rs   r   r   r   Útest_load_legacy1  s    
,z'ModuleSpecMethodsTests.test_load_legacyc                 C   s|   t ƒ | j_t| jjƒ | j | j¡}W d   ƒ n1 s:0    Y  |  |j| jj¡ |  	|j
| jj¡ |  |j| j¡ d S r   )r$   r   r8   r   r   rk   rr   r@   Ú
__loader__r?   Ú__package__r[   Ú__spec__r‚   r   r   r   Útest_load_legacy_attributes8  s    
,z2ModuleSpecMethodsTests.test_load_legacy_attributesc                    sx   t ƒ ‰ G ‡ fdd„dtƒ}|ƒ | j_t| jjƒ4 | j | j¡}|  t	j
| jj ˆ ¡ W d   ƒ n1 sj0    Y  d S )Nc                       s   e Zd Z‡ fdd„ZdS )zUModuleSpecMethodsTests.test_load_legacy_attributes_immutable.<locals>.ImmutableLoaderc                    s   ˆ t j|< ˆ S r   )rP   rm   r   ©r"   r   r   r)   D  s    
zaModuleSpecMethodsTests.test_load_legacy_attributes_immutable.<locals>.ImmutableLoader.load_moduleN)r   r   r   r)   r   rˆ   r   r   ÚImmutableLoaderC  s   r‰   )ry   r   r   r8   r   r   rk   rr   r@   rP   rm   )r
   r‰   rs   r   rˆ   r   Ú%test_load_legacy_attributes_immutableA  s    
z<ModuleSpecMethodsTests.test_load_legacy_attributes_immutablec                 C   sŒ   t ƒ | j_t| jjƒ< | j | j¡}| j | j|¡}tj	| jj }W d   ƒ n1 sX0    Y  |  
|jd¡ |  ||¡ |  ||¡ d S rq   )r   r   r8   r   r   rk   rr   ro   rP   rm   r?   r    r@   ©r
   rs   Úreloadedrt   r   r   r   Útest_reloadO  s    
,z"ModuleSpecMethodsTests.test_reloadc                 C   sx   t ƒ | j_t| jjƒ4 | j | j¡}d|_| j | j|¡}W d   ƒ n1 sP0    Y  |  	|jd¡ |  
||¡ d S )Né   r   )r   r   r8   r   r   rk   rr   r    ro   r?   r@   ©r
   rs   rŒ   r   r   r   Útest_reload_modifiedZ  s    
.z+ModuleSpecMethodsTests.test_reload_modifiedc                 C   sv   t ƒ | j_t| jjƒ4 | j | j¡}d|_| j | j|¡}W d   ƒ n1 sP0    Y  |  	|j¡ |  
||¡ d S ©NF)r   r   r8   r   r   rk   rr   Z	availablero   rC   r@   r   r   r   r   Útest_reload_extra_attributesd  s    
.z3ModuleSpecMethodsTests.test_reload_extra_attributesc                 C   sà   t ƒ | j_t| jjƒ@ | j | j¡}d|_|`|`	|`
| j | j|¡ W d   ƒ n1 s\0    Y  |  |j| jj¡ |  |j| jj¡ |  |j	| jj¡ |  |j
| j¡ |  t|dƒ¡ |  t|dƒ¡ |  t|dƒ¡ d S )Nr(   Ú__path__Ú__file__Ú
__cached__)r   r   r8   r   r   rk   rr   r   r„   r…   r†   ro   r?   r@   r[   rC   rn   r‚   r   r   r   Útest_reload_init_module_attrsn  s    
.z4ModuleSpecMethodsTests.test_reload_init_module_attrsc                 C   sŒ   t ƒ | j_t| jjƒ< | j | j¡}| j | j|¡}tj	| jj }W d   ƒ n1 sX0    Y  |  
|jd¡ |  ||¡ |  ||¡ d S r   )r$   r   r8   r   r   rk   rr   ro   rP   rm   r?   r(   r@   r‹   r   r   r   Útest_reload_legacy€  s    
,z)ModuleSpecMethodsTests.test_reload_legacyN)r   r   r   Úpropertyrk   r=   rp   ru   rz   r   r€   rƒ   r‡   rŠ   r   r   r’   r–   r—   r   r   r   r   rg   é   s    
	
	

rg   )ri   r   r9   c                   @   sp   e 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d„ ZdS )ÚModuleReprTestsc                 C   s   | j jS r   rh   r   r   r   r   rk   ”  s    zModuleReprTests.bootstrapc                 C   s$   t tƒdƒ| _| j dtƒ ¡| _d S )Nr1   )rO   Úosr"   r9   r:   r   r   r   r   r   r   r=   ˜  s    zModuleReprTests.setUpc                 C   s6   G dd„ dƒ}|ƒ | j _| j | j ¡}|  |d¡ d S )Nc                   @   s   e Zd Zdd„ ZdS )zBModuleReprTests.test_module___loader___module_repr.<locals>.Loaderc                 S   s   d  |j¡S )Nz<delicious {}>)Úformatr   r!   r   r   r   Úmodule_reprž  s    zNModuleReprTests.test_module___loader___module_repr.<locals>.Loader.module_reprN©r   r   r   rœ   r   r   r   r   ÚLoader  s   rž   z<delicious spam>)r"   r„   rk   Ú_module_reprr?   ©r
   rž   Úmodreprr   r   r   Ú"test_module___loader___module_reprœ  s    
z2ModuleReprTests.test_module___loader___module_reprc                 C   s>   G dd„ dt ƒ}|ƒ | j_| j | j¡}|  |d d¡¡ d S )Nc                   @   s   e Zd Zdd„ ZdS )zFModuleReprTests.test_module___loader___module_repr_bad.<locals>.Loaderc                 S   s   t ‚d S r   )Ú	Exceptionr!   r   r   r   rœ   §  s    zRModuleReprTests.test_module___loader___module_repr_bad.<locals>.Loader.module_reprNr   r   r   r   r   rž   ¦  s   rž   ú#<module {!r} (<TestLoader object>)>r1   ©r   r"   r„   rk   rŸ   r?   r›   r    r   r   r   Ú&test_module___loader___module_repr_bad¥  s    
ÿz6ModuleReprTests.test_module___loader___module_repr_badc                 C   s<   d}|| j _| j | j_| j | j¡}|  |d d|¡¡ d S )Nzin a hole, in the groundz<module {!r} ({})>r1   )r   r4   r"   r†   rk   rŸ   r?   r›   )r
   r4   r¡   r   r   r   Útest_module___spec__¯  s
    
z$ModuleReprTests.test_module___spec__c                 C   sD   d}|| j _d| j _| j | j_| j | j¡}|  |d d|¡¡ d S )Nzin_a_galaxy_far_far_away.pyTú<module {!r} from {!r}>r1   )	r   r4   r<   r"   r†   rk   rŸ   r?   r›   )r
   Úlocationr¡   r   r   r   Útest_module___spec___location·  s    

ÿz-ModuleReprTests.test_module___spec___locationc                 C   s8   t ƒ | j_| j| j_| j | j¡}|  |d d¡¡ d S ©Nr¤   r1   )	r   r   r8   r"   r†   rk   rŸ   r?   r›   ©r
   r¡   r   r   r   Útest_module___spec___no_originÁ  s    

ÿz.ModuleReprTests.test_module___spec___no_originc                 C   s6   d | j _| j | j_| j | j¡}|  |d d¡¡ d S ©Nú<module {!r}>r1   )r   r8   r"   r†   rk   rŸ   r?   r›   r¬   r   r   r   Ú(test_module___spec___no_origin_no_loaderÉ  s    
z8ModuleReprTests.test_module___spec___no_origin_no_loaderc                 C   s*   | j `| j | j ¡}|  |d d¡¡ d S )Nr¯   ú?)r"   r   rk   rŸ   r?   r›   r¬   r   r   r   Útest_module_no_nameÐ  s    z#ModuleReprTests.test_module_no_namec                 C   s2   d}|| j _| j | j ¡}|  |d d|¡¡ d S )Nze/i/e/i/o/spam.pyr¨   r1   )r"   r”   rk   rŸ   r?   r›   )r
   Úfilenamer¡   r   r   r   Útest_module_with_fileÖ  s    
ÿz%ModuleReprTests.test_module_with_filec                 C   s.   t ƒ | j_| j | j¡}|  |d d¡¡ d S r«   r¥   r¬   r   r   r   Útest_module_no_fileÞ  s
    
ÿz#ModuleReprTests.test_module_no_filec                 C   s$   | j  | j¡}|  |d d¡¡ d S r®   )rk   rŸ   r"   r?   r›   r¬   r   r   r   Útest_module_no_file_no_loaderå  s    z-ModuleReprTests.test_module_no_file_no_loaderN)r   r   r   r˜   rk   r=   r¢   r¦   r§   rª   r­   r°   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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/d0„ Zd1d2„ Zd3d4„ Zd5d6„ Zd7S )8ÚFactoryTestsc                 C   sJ   d| _ tj d¡| _| j | j¡| _tƒ | _t| jƒ| _	t| jdƒ| _
d S )Nr1   r2   T)r   rš   r   Úabspathr   r6   r7   r   r8   Ú
fileloaderÚ	pkgloaderr   r   r   r   r=   ó  s    zFactoryTests.setUpc                 C   sz   | j  | j| j¡}|  |j| j¡ |  |j| j¡ |  |jd ¡ |  |jd ¡ |  |jd ¡ |  |j	d ¡ |  
|j¡ d S r   ©r   Úspec_from_loaderr   r8   r?   r@   r4   rA   rB   r7   rC   rD   r   r   r   r   Útest_spec_from_loader_defaultý  s    z*FactoryTests.test_spec_from_loader_defaultc                 C   sŠ   G dd„ dƒ}|ƒ }| j  | j|¡}|  |j| j¡ |  |j|¡ |  |jd ¡ |  |jd ¡ |  |jd ¡ |  |j	d ¡ |  
|j¡ d S )Nc                   @   s   e Zd Zdd„ ZdS )zNFactoryTests.test_spec_from_loader_default_with_bad_is_package.<locals>.Loaderc                 S   s   t ‚d S r   ©ÚImportErrorr   r   r   r   r   
  s    zYFactoryTests.test_spec_from_loader_default_with_bad_is_package.<locals>.Loader.is_packageN©r   r   r   r   r   r   r   r   rž   	  s   rž   )r   r¼   r   r?   r8   r@   r4   rA   rB   r7   rC   rD   ©r
   rž   r8   r   r   r   r   Ú1test_spec_from_loader_default_with_bad_is_package  s    z>FactoryTests.test_spec_from_loader_default_with_bad_is_packagec                 C   s‚   d}| j j| j| j|d}|  |j| j¡ |  |j| j¡ |  |j|¡ |  |jd ¡ |  |jd ¡ |  |j	d ¡ |  
|j¡ d S )Nzsomewhere over the rainbowr3   r»   ©r
   r4   r   r   r   r   Útest_spec_from_loader_origin  s    ÿz)FactoryTests.test_spec_from_loader_originc                 C   s~   | j j| j| jdd}|  |j| j¡ |  |j| j¡ |  |jd ¡ |  |jd ¡ |  |jd ¡ |  |j	d ¡ |  
|j¡ d S rG   r»   r   r   r   r   Ú&test_spec_from_loader_is_package_false$  s    ÿz3FactoryTests.test_spec_from_loader_is_package_falsec                 C   s~   | j j| j| jdd}|  |j| j¡ |  |j| j¡ |  |jd ¡ |  |jd ¡ |  |jg ¡ |  |j	d ¡ |  
|j¡ d S rJ   r»   r   r   r   r   Ú%test_spec_from_loader_is_package_true0  s    ÿz2FactoryTests.test_spec_from_loader_is_package_truec                 C   s„   d}| j j| j| j|dd}|  |j| j¡ |  |j| j¡ |  |j|¡ |  |jd ¡ |  |jg ¡ |  |j	d ¡ |  
|j¡ d S )Nzwhere the streets have no nameT)r4   r   r»   rÃ   r   r   r   Ú+test_spec_from_loader_origin_and_is_package<  s    ÿz8FactoryTests.test_spec_from_loader_origin_and_is_packagec                 C   s€   t dd}| j | j|¡}|  |j| j¡ |  |j|¡ |  |jd ¡ |  |jd ¡ |  |j	d ¡ |  |j
d ¡ |  |j¡ d S rG   ©r   r   r¼   r   r?   r8   r@   r4   rA   rB   r7   rC   rD   ©r
   r8   r   r   r   r   Ú2test_spec_from_loader_is_package_with_loader_falseI  s    
z?FactoryTests.test_spec_from_loader_is_package_with_loader_falsec                 C   s€   t dd}| j | j|¡}|  |j| j¡ |  |j|¡ |  |jd ¡ |  |jd ¡ |  |j	g ¡ |  |j
d ¡ |  |j¡ d S rJ   rÈ   rÉ   r   r   r   Ú1test_spec_from_loader_is_package_with_loader_trueU  s    
z>FactoryTests.test_spec_from_loader_is_package_with_loader_truec                 C   s~   | j  | j| j¡}|  |j| j¡ |  |j| j¡ |  |j| j¡ |  |j	d ¡ |  |j
d ¡ |  |j| j¡ |  |j¡ d S r   ©r   r¼   r   r¹   r?   r8   r4   r   r@   rA   rB   r7   rL   rD   r   r   r   r   Ú.test_spec_from_loader_default_with_file_loadera  s    z;FactoryTests.test_spec_from_loader_default_with_file_loaderc                 C   s‚   | j j| j| jdd}|  |j| j¡ |  |j| j¡ |  |j| j¡ |  |j	d ¡ |  |j
d ¡ |  |j| j¡ |  |j¡ d S rG   rÌ   r   r   r   r   Ú6test_spec_from_loader_is_package_false_with_fileloaderl  s    ÿzCFactoryTests.test_spec_from_loader_is_package_false_with_fileloaderc                 C   sˆ   | j j| j| jdd}|  |j| j¡ |  |j| j¡ |  |j| j¡ |  |j	d ¡ |  |j
t ¡ g¡ |  |j| j¡ |  |j¡ d S rJ   )r   r¼   r   r¹   r?   r8   r4   r   r@   rA   rB   rš   Úgetcwdr7   rL   rD   r   r   r   r   Ú5test_spec_from_loader_is_package_true_with_fileloaderx  s    ÿzBFactoryTests.test_spec_from_loader_is_package_true_with_fileloaderc                 C   s¨   | j  | j| j¡}|  |j| j¡ |  |j| j jjj	¡ |  |jj| j¡ |  |jj| j¡ |  |j
| j¡ |  |jd ¡ |  |jd ¡ |  |j| j¡ |  |j¡ d S r   )r   Úspec_from_file_locationr   r   r?   ZassertIsInstancer8   Úabcr9   ÚSourceFileLoaderr4   r@   rA   rB   r7   rL   rD   r   r   r   r   Ú$test_spec_from_file_location_default†  s    
ÿz1FactoryTests.test_spec_from_file_location_defaultc                 C   s,   | j  | jt | j¡¡}|  |j| j¡ d S r   )r   rÑ   r   ÚpathlibÚPurePathr   r?   r4   r   r   r   r   Ú*test_spec_from_file_location_path_like_arg—  s    

ÿz7FactoryTests.test_spec_from_file_location_path_like_argc                 C   s   | j  | j¡}|  |d ¡ d S r   ©r   rÑ   r   r@   r   r   r   r   Ú5test_spec_from_file_location_default_without_locationœ  s    zBFactoryTests.test_spec_from_file_location_default_without_locationc                 C   s    | j  | jd¡}|  |d ¡ d S )NrY   rØ   r   r   r   r   Ú/test_spec_from_file_location_default_bad_suffix¡  s    z<FactoryTests.test_spec_from_file_location_default_bad_suffixc                 C   s€   | j j| j| jd}|  |j| j¡ |  |j| j¡ |  |j| j¡ |  |j	d ¡ |  |j
d ¡ |  |j| j¡ |  |j¡ d S ©N©r8   )r   rÑ   r   r¹   r?   r8   r4   r   r@   rA   rB   r7   rL   rD   r   r   r   r   Ú/test_spec_from_file_location_loader_no_location¦  s    
ÿz<FactoryTests.test_spec_from_file_location_loader_no_locationc                 C   s|   | j j| j| jd}|  |j| j¡ |  |j| j¡ |  |jd¡ |  |jd ¡ |  |jd ¡ |  |j	d ¡ |  
|j¡ d S )NrÜ   ú	<unknown>)r   rÑ   r   r8   r?   r4   r@   rA   rB   r7   rL   rD   r   r   r   r   Ú?test_spec_from_file_location_loader_no_location_no_get_filename²  s    
ÿzLFactoryTests.test_spec_from_file_location_loader_no_location_no_get_filenamec                 C   sŒ   G dd„ dƒ}|ƒ }| j j| j|d}|  |j| j¡ |  |j|¡ |  |jd¡ |  |jd ¡ |  |jd ¡ |  |j	d ¡ |  
|j¡ d S )Nc                   @   s   e Zd Zdd„ ZdS )z]FactoryTests.test_spec_from_file_location_loader_no_location_bad_get_filename.<locals>.Loaderc                 S   s   t ‚d S r   r¾   r   r   r   r   r   À  s    zjFactoryTests.test_spec_from_file_location_loader_no_location_bad_get_filename.<locals>.Loader.get_filenameN)r   r   r   r   r   r   r   r   rž   ¿  s   rž   rÜ   rÞ   )r   rÑ   r   r?   r8   r4   r@   rA   rB   r7   rL   rD   rÁ   r   r   r   Ú@test_spec_from_file_location_loader_no_location_bad_get_filename¾  s    zMFactoryTests.test_spec_from_file_location_loader_no_location_bad_get_filenamec                 C   s†   | j j| j| j| jd d}|  |j| j¡ |  |j| j¡ |  |j| j¡ |  |j	d ¡ |  |j
d ¡ |  |j| j¡ |  |j¡ d S ©N©r8   rB   ©r   rÑ   r   r   r¹   r?   r8   r4   r@   rA   rB   r7   rL   rD   r   r   r   r   Ú&test_spec_from_file_location_smsl_noneÍ  s    þz3FactoryTests.test_spec_from_file_location_smsl_nonec                 C   sŒ   | j j| j| j| jg d}|  |j| j¡ |  |j| j¡ |  |j| j¡ |  |j	d ¡ |  |j
t ¡ g¡ |  |j| j¡ |  |j¡ d S rá   )r   rÑ   r   r   r¹   r?   r8   r4   r@   rA   rB   rš   rÏ   r7   rL   rD   r   r   r   r   Ú'test_spec_from_file_location_smsl_emptyÚ  s    þz4FactoryTests.test_spec_from_file_location_smsl_emptyc                 C   sŠ   | j j| j| j| jdgd}|  |j| j¡ |  |j| j¡ |  |j| j¡ |  |j	d ¡ |  |j
dg¡ |  |j| j¡ |  |j¡ d S )Nr    râ   rã   r   r   r   r   Ú+test_spec_from_file_location_smsl_not_emptyç  s    þz8FactoryTests.test_spec_from_file_location_smsl_not_emptyc                 C   sŠ   | j j| j| j| jd}|  |j| j¡ |  |j| j¡ |  |j| j¡ |  |j	d ¡ |  |j
t ¡ g¡ |  |j| j¡ |  |j¡ d S rÛ   )r   rÑ   r   r   rº   r?   r8   r4   r@   rA   rB   rš   rÏ   r7   rL   rD   r   r   r   r   Ú)test_spec_from_file_location_smsl_defaultô  s    ÿz6FactoryTests.test_spec_from_file_location_smsl_defaultc                 C   s”   G dd„ dƒ}|ƒ }| j j| j| j|d}|  |j| j¡ |  |j|¡ |  |j| j¡ |  |jd ¡ |  |j	d ¡ |  |j
| j
¡ |  |j¡ d S )Nc                   @   s   e Zd Zdd„ ZdS )zRFactoryTests.test_spec_from_file_location_smsl_default_not_package.<locals>.Loaderc                 S   s   dS r‘   r   r   r   r   r   r     s    z]FactoryTests.test_spec_from_file_location_smsl_default_not_package.<locals>.Loader.is_packageNrÀ   r   r   r   r   rž     s   rž   rÜ   ©r   rÑ   r   r   r?   r8   r4   r@   rA   rB   r7   rL   rD   rÁ   r   r   r   Ú5test_spec_from_file_location_smsl_default_not_package   s    ÿzBFactoryTests.test_spec_from_file_location_smsl_default_not_packagec                 C   s„   | j j| j| j| jd}|  |j| j¡ |  |j| j¡ |  |j| j¡ |  |j	d ¡ |  |j
d ¡ |  |j| j¡ |  |j¡ d S rÛ   rã   r   r   r   r   Ú7test_spec_from_file_location_smsl_default_no_is_package  s    ÿzDFactoryTests.test_spec_from_file_location_smsl_default_no_is_packagec                 C   s”   G dd„ dƒ}|ƒ }| j j| j| j|d}|  |j| j¡ |  |j|¡ |  |j| j¡ |  |jd ¡ |  |j	d ¡ |  |j
| j
¡ |  |j¡ d S )Nc                   @   s   e Zd Zdd„ ZdS )zUFactoryTests.test_spec_from_file_location_smsl_default_bad_is_package.<locals>.Loaderc                 S   s   t ‚d S r   r¾   r   r   r   r   r     s    z`FactoryTests.test_spec_from_file_location_smsl_default_bad_is_package.<locals>.Loader.is_packageNrÀ   r   r   r   r   rž     s   rž   rÜ   rè   rÁ   r   r   r   Ú8test_spec_from_file_location_smsl_default_bad_is_package  s    ÿzEFactoryTests.test_spec_from_file_location_smsl_default_bad_is_packagec                 C   sœ   | j j| jtj | j¡| jd}|  |j| j¡ |  |j| j¡ |  |j	tj | j¡¡ |  
|jd ¡ |  
|jd ¡ |  |jtj | j¡¡ |  |j¡ d S rÛ   )r   rÑ   r   rš   r   Úbasenamer¹   r?   r8   r4   r@   rA   rB   r7   ÚrelpathrL   rD   r   r   r   r   Ú*test_spec_from_file_location_relative_path,  s    
ÿz7FactoryTests.test_spec_from_file_location_relative_pathN)r   r   r   r=   r½   rÂ   rÄ   rÅ   rÆ   rÇ   rÊ   rË   rÍ   rÎ   rÐ   rÔ   r×   rÙ   rÚ   rÝ   rß   rà   rä   rå   ræ   rç   ré   rê   rë   rî   r   r   r   r   r·   ñ  s6   
r·   Ú__main__) Ú r   Z	test_utilZimport_importlibri   r9   Zos.pathrš   rÕ   Ztest.supportr   ZunittestrP   r*   r   r   r$   r/   Z	test_bothZFrozen_ModuleSpecTestsZSource_ModuleSpecTestsrg   ZFrozen_ModuleSpecMethodsTestsZSource_ModuleSpecMethodsTestsr™   ZFrozen_ModuleReprTestsZSource_ModuleReprTestsr·   ZFrozen_FactoryTestsZSource_FactoryTestsr   Úmainr   r   r   r   Ú<module>   sL   


 &þ &
ÿþ[
ÿþ  Kþ
