o
    ±ó®g„{  ã                   @   s0  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 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   úS/Users/admin/.pyenv/versions/3.10.0/lib/python3.10/test/test_importlib/test_spec.pyÚ__init__   s   
zTestLoader.__init__c                 C   ó   dS )Nz<TestLoader object>r   ©r
   r   r   r   Ú__repr__   ó   zTestLoader.__repr__c                 C   s.   |dkr| j d ur| jS |dkr| jS t|ƒ‚)NÚget_filenamer   )r   Ú_get_filenameÚ_is_packageÚAttributeError©r
   Únamer   r   r   Ú__getattr__   s
   zTestLoader.__getattr__c                 C   ó   | j S r   )r   r   r   r   r   r       ó   zTestLoader._get_filenamec                 C   r   r   )r	   r   r   r   r   r   #   r   zTestLoader._is_packagec                 C   s   d S r   r   ©r
   Úspecr   r   r   Úcreate_module&   r   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.   ó   zNewLoader.exec_moduleN)r   r    r!   r#   r'   r   r   r   r   r"   *   s    r"   c                   @   s\   e Zd ZdZe ¡  e de¡ ed Z	e	j
dd„ ƒZW d  ƒ dS 1 s'w   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   ó^   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   ó   ÿzModuleSpecTests.setUpc                 C   óz   | j  | j| j¡}|  |j| j¡ |  |j| j¡ |  |jd ¡ |  |jd ¡ |  |jd ¡ |  |j	d ¡ |  
|j¡ d S r   ©r?   r@   r   r>   ÚassertEqualÚassertIsr:   Úloader_stateÚsubmodule_search_locationsr=   ÚassertFalseÚhas_locationr   r   r   r   Útest_defaultM   ó   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   )r?   r@   r   rG   rH   r>   r:   rI   rJ   r=   rK   rL   r   r   r   r   Útest_default_no_loaderX   s   z&ModuleSpecTests.test_default_no_loaderc                 C   ó~   | j j| j| jdd}|  |j| j¡ |  |j| j¡ |  |jd ¡ |  |jd ¡ |  |jd ¡ |  |j	d ¡ |  
|j¡ d S ©NF©r   rF   r   r   r   r   Útest_default_is_package_falsec   ó   ÿz-ModuleSpecTests.test_default_is_package_falsec                 C   ó~   | j j| j| jdd}|  |j| j¡ |  |j| j¡ |  |jd ¡ |  |jd ¡ |  |jg ¡ |  |j	d ¡ |  
|j¡ d S ©NTrR   rF   r   r   r   r   Útest_default_is_package_trueo   rT   z,ModuleSpecTests.test_default_is_package_truec                 C   s8   | j j| j| jdd}|  |j¡ d|_|  |j¡ d S )NZ	somewherer9   T)r?   r@   r   r>   rK   rL   Ú
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   r>   r:   rJ   rL   r=   )ÚtypeÚsysÚimplementationr   r>   rX   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 )NTrZ   )	r[   r\   r]   r   r>   r   r=   rG   rA   r^   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-   FrZ   )r[   r\   r]   r>   ÚassertNotEqualr   r^   r   r   r   Útest_inequality˜   s   
ûzModuleSpecTests.test_inequalityc                 C   s(   t tjƒ| j| jd}|  | j|¡ d S )N)r   r>   )r[   r\   r]   r   r>   rb   r   r^   r   r   r   Útest_inequality_incomplete£   s   ÿz*ModuleSpecTests.test_inequality_incompletec                 C   s"   | j  d| j¡}|  |jd¡ d S )Nú	spam.eggsr7   ©r?   r@   r>   rG   Úparentr   r   r   r   Útest_packageª   s   zModuleSpecTests.test_packagec                 C   s&   | j jd| jdd}|  |jd¡ d S )Nre   TrR   rf   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   r=   rH   rG   )r
   ÚbeforeZafterr   r   r   Útest_cached_set·   s
   zModuleSpecTests.test_cached_setc                 C   s$   | j  | j| j¡}|  |jd ¡ d S r   )r?   r@   r   r>   rH   r=   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 )Nr9   )r?   r@   r   r>   r   rH   r=   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   r<   r   rG   rA   r=   )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)rA   r:   rH   r=   r   r   r   r   Ú!test_cached_source_unknown_suffixÏ   ó   z1ModuleSpecTests.test_cached_source_unknown_suffixc                 C   s@   t jj}d t j_z
| jj}W |t j_n|t j_w |  |d ¡ d S r   )r\   r]   Ú	cache_tagrA   r=   rH   )r
   Zoriginalr=   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)rA   r:   rG   r=   r   r   r   r   Útest_cached_sourcelessÞ   rp   z&ModuleSpecTests.test_cached_sourcelessN)r   r    r!   rC   rM   rO   rS   rW   rY   r`   ra   rc   rd   rh   ri   rk   rl   rm   rn   ro   rr   rs   r   r   r   r   r4   A   s(    

r4   )r   r?   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   ó   | j jS r   ©ÚinitÚ
_bootstrapr   r   r   r   Ú	bootstrapë   ó   z ModuleSpecMethodsTests.bootstrapc                 C   r5   r6   r;   r   r   r   r   rC   ï   rD   zModuleSpecMethodsTests.setUpc                 C   sV   t ƒ | j_| j | j¡}|tj| j< |  t	|dƒ¡ | j
 | j|¡ |  |jd¡ d S )Nr$   r   )r"   r   r>   r   Úmodule_from_specr\   Úmodulesr   rK   Úhasattrry   Ú_execrG   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 s$w   Y  |  	|j
d¡ |  ||¡ d S ©Nr   )r"   r   r>   r   r   ry   Ú_loadr\   r|   rG   r$   rH   )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 s1w   Y  |  
|ˆ ¡ |  
|ˆ ¡ d S )Nc                       ó   e Zd Z‡ fdd„ZdS )zBModuleSpecMethodsTests.test_load_replaced.<locals>.ReplacingLoaderc                    s   ˆ t j|j< d S r   )r\   r|   r   r%   ©Zreplacementr   r   r'     s   zNModuleSpecMethodsTests.test_load_replaced.<locals>.ReplacingLoader.exec_moduleN©r   r    r!   r'   r   r†   r   r   ÚReplacingLoader  ó    rˆ   )Úobjectr   r   r>   r   r   ry   r   r\   r|   rH   )r
   rˆ   r‚   rƒ   r   r†   r   Útest_load_replaced  s   
þz)ModuleSpecMethodsTests.test_load_replacedc              	   C   ó–   G dd„ dt ƒ}|ƒ | j_t| jjƒ. |  t¡ | j | j¡}W d   ƒ n1 s+w   Y  |  	| jjt
j¡ W d   ƒ d S 1 sDw   Y  d S )Nc                   @   ó   e Zd Zdd„ ZdS )z=ModuleSpecMethodsTests.test_load_failed.<locals>.FailedLoaderc                 S   ó   t ‚r   )ÚRuntimeErrorr%   r   r   r   r'     r   zIModuleSpecMethodsTests.test_load_failed.<locals>.FailedLoader.exec_moduleNr‡   r   r   r   r   ÚFailedLoader  ó    r   ©r   r   r>   r   r   ZassertRaisesr   ry   r   ZassertNotInr\   r|   ©r
   r   r‚   r   r   r   Útest_load_failed  s   
ÿ"ýz'ModuleSpecMethodsTests.test_load_failedc              	   C   rŒ   )Nc                   @   r   )zEModuleSpecMethodsTests.test_load_failed_removed.<locals>.FailedLoaderc                 S   s   t j|j= t‚r   )r\   r|   r   r   r%   r   r   r   r'   (  ó   
zQModuleSpecMethodsTests.test_load_failed_removed.<locals>.FailedLoader.exec_moduleNr‡   r   r   r   r   r   '  r‘   r   r’   r“   r   r   r   Útest_load_failed_removed&  s   
ÿ"ýz/ModuleSpecMethodsTests.test_load_failed_removedc              	   C   sŒ   t  ¡ 8 t  dt¡ tƒ | j_t| jjƒ | j	 
| j¡}W d   ƒ n1 s(w   Y  |  |jd¡ W d   ƒ d S 1 s?w   Y  d S ©Nr+   r*   )r/   r0   r1   ÚImportWarningr)   r   r>   r   r   ry   r   rG   r-   ©r
   r‚   r   r   r   Útest_load_legacy1  s   

ÿ"úz'ModuleSpecMethodsTests.test_load_legacyc              	   C   s²   t  ¡ K t  dt¡ tƒ | j_t| jjƒ | j	 
| j¡}W d   ƒ n1 s(w   Y  |  |j| jj¡ |  |j| jj¡ |  |j| j¡ W d   ƒ d S 1 sRw   Y  d S )Nr+   )r/   r0   r1   r˜   r)   r   r>   r   r   ry   r   rH   Ú
__loader__rG   Ú__package__rg   Ú__spec__r™   r   r   r   Útest_load_legacy_attributes:  s   

ÿ"øz2ModuleSpecMethodsTests.test_load_legacy_attributesc              	      s¾   t ƒ ‰ t ¡ N t dt¡ G ‡ fdd„dtƒ}|ƒ | j_t| jj	ƒ | j
 | j¡}|  tj| jj	 ˆ ¡ W d   ƒ n1 s@w   Y  W d   ƒ d S W d   ƒ d S 1 sXw   Y  d S )Nr+   c                       r…   )zUModuleSpecMethodsTests.test_load_legacy_attributes_immutable.<locals>.ImmutableLoaderc                    s   ˆ t j|< ˆ S r   )r\   r|   r   ©r&   r   r   r.   J  r•   zaModuleSpecMethodsTests.test_load_legacy_attributes_immutable.<locals>.ImmutableLoader.load_moduleN)r   r    r!   r.   r   rŸ   r   r   ÚImmutableLoaderI  r‰   r    )rŠ   r/   r0   r1   r˜   r   r   r>   r   r   ry   r   rH   r\   r|   )r
   r    r‚   r   rŸ   r   Ú%test_load_legacy_attributes_immutableE  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 s,w   Y  |  
|jd¡ |  ||¡ |  ||¡ d S r€   )r"   r   r>   r   r   ry   r   r~   r\   r|   rG   r$   rH   ©r
   r‚   Úreloadedrƒ   r   r   r   Útest_reloadU  s   
ýz"ModuleSpecMethodsTests.test_reloadc                 C   sx   t ƒ | j_t| jjƒ | j | j¡}d|_| j | j|¡}W d   ƒ n1 s(w   Y  |  	|jd¡ |  
||¡ d S )Né   r   )r"   r   r>   r   r   ry   r   r$   r~   rG   rH   ©r
   r‚   r£   r   r   r   Útest_reload_modified`  s   
ýz+ModuleSpecMethodsTests.test_reload_modifiedc                 C   sv   t ƒ | j_t| jjƒ | j | j¡}d|_| j | j|¡}W d   ƒ n1 s(w   Y  |  	|j¡ |  
||¡ d S ©NF)r"   r   r>   r   r   ry   r   Z	availabler~   rK   rH   r¦   r   r   r   Útest_reload_extra_attributesj  s   
ýz3ModuleSpecMethodsTests.test_reload_extra_attributesc                 C   sà   t ƒ | j_t| jjƒ  | j | j¡}d|_|`|`	|`
| j | j|¡ W d   ƒ n1 s.w   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   r>   r   r   ry   r   r   r›   rœ   r   r~   rG   rH   rg   rK   r}   r™   r   r   r   Útest_reload_init_module_attrst  s    
úz4ModuleSpecMethodsTests.test_reload_init_module_attrsc              	   C   sÀ   t  ¡ ? t  dt¡ tƒ | j_t| jjƒ | j	 
| j¡}| j	 | j|¡}tj| jj }W d   ƒ n1 s7w   Y  W d   ƒ n1 sFw   Y  |  |jd¡ |  ||¡ |  ||¡ d S r—   )r/   r0   r1   r˜   r)   r   r>   r   r   ry   r   r~   r\   r|   rG   r-   rH   r¢   r   r   r   Útest_reload_legacy†  s   

ý€ýz)ModuleSpecMethodsTests.test_reload_legacyN)r   r    r!   Úpropertyry   rC   r   r„   r‹   r”   r–   rš   rž   r¡   r¤   r§   r©   r­   r®   r   r   r   r   rt   é   s"    
	
	

rt   )rw   r   r?   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   ru   r   rv   r   r   r   r   ry   œ  rz   zModuleReprTests.bootstrapc                 C   s$   t tƒdƒ| _| j dtƒ ¡| _d S )Nr7   )r[   Úosr&   r?   r@   r   r   r   r   r   r   rC      s   zModuleReprTests.setUpc                 C   s6   G dd„ dƒ}|ƒ | j _| j | j ¡}|  |d¡ d S )Nc                   @   r   )zBModuleReprTests.test_module___loader___module_repr.<locals>.Loaderc                 S   s   d  |j¡S )Nz<delicious {}>)Úformatr   r%   r   r   r   Úmodule_repr¦  r(   zNModuleReprTests.test_module___loader___module_repr.<locals>.Loader.module_reprN©r   r    r!   r³   r   r   r   r   ÚLoader¥  r‘   rµ   z<delicious spam>)r&   r›   ry   Ú_module_reprrG   ©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                   @   r   )zFModuleReprTests.test_module___loader___module_repr_bad.<locals>.Loaderc                 S   rŽ   r   )Ú	Exceptionr%   r   r   r   r³   ¯  r   zRModuleReprTests.test_module___loader___module_repr_bad.<locals>.Loader.module_reprNr´   r   r   r   r   rµ   ®  r‘   rµ   ú#<module {!r} (<TestLoader object>)>r7   ©r   r&   r›   ry   r¶   rG   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} ({})>r7   )r   r:   r&   r   ry   r¶   rG   r²   )r
   r:   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}>r7   )	r   r:   rB   r&   r   ry   r¶   rG   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»   r7   )	r   r   r>   r&   r   ry   r¶   rG   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}>r7   )r   r>   r&   r   ry   r¶   rG   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   ry   r¶   rG   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¿   r7   )r&   r«   ry   r¶   rG   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Å   )ry   r¶   r&   rG   r²   rÃ   r   r   r   Útest_module_no_file_no_loaderí  s   z-ModuleReprTests.test_module_no_file_no_loaderN)r   r    r!   r¯   ry   rC   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 )Nr7   r8   T)r   r±   r   Úabspathr   r<   r=   r   r>   Ú
fileloaderÚ	pkgloaderr   r   r   r   rC   û  s   zFactoryTests.setUpc                 C   rE   r   ©r   Úspec_from_loaderr   r>   rG   rH   r:   rI   rJ   r=   rK   rL   r   r   r   r   Útest_spec_from_loader_default  rN   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                   @   r   )zNFactoryTests.test_spec_from_loader_default_with_bad_is_package.<locals>.Loaderc                 S   rŽ   r   ©ÚImportErrorr   r   r   r   r     r   zYFactoryTests.test_spec_from_loader_default_with_bad_is_package.<locals>.Loader.is_packageN©r   r    r!   r   r   r   r   r   rµ     r‘   rµ   )r   rÓ   r   rG   r>   rH   r:   rI   rJ   r=   rK   rL   ©r
   rµ   r>   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 rainbowr9   rÒ   ©r
   r:   r   r   r   r   Útest_spec_from_loader_origin  s   ÿz)FactoryTests.test_spec_from_loader_originc                 C   rP   rQ   rÒ   r   r   r   r   Ú&test_spec_from_loader_is_package_false,  rT   z3FactoryTests.test_spec_from_loader_is_package_falsec                 C   rU   rV   rÒ   r   r   r   r   Ú%test_spec_from_loader_is_package_true8  rT   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)r:   r   rÒ   rÚ   r   r   r   Ú+test_spec_from_loader_origin_and_is_packageD  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 rQ   ©r   r   rÓ   r   rG   r>   rH   r:   rI   rJ   r=   rK   rL   ©r
   r>   r   r   r   r   Ú2test_spec_from_loader_is_package_with_loader_falseQ  ó   
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 rV   rß   rà   r   r   r   Ú1test_spec_from_loader_is_package_with_loader_true]  râ   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Ð   rG   r>   r:   r   rH   rI   rJ   r=   rX   rL   r   r   r   r   Ú.test_spec_from_loader_default_with_file_loaderi  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 rQ   rä   r   r   r   r   Ú6test_spec_from_loader_is_package_false_with_fileloadert  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 rV   )r   rÓ   r   rÐ   rG   r>   r:   r   rH   rI   rJ   r±   Úgetcwdr=   rX   rL   r   r   r   r   Ú5test_spec_from_loader_is_package_true_with_fileloader€  s   ÿzBFactoryTests.test_spec_from_loader_is_package_true_with_fileloaderc                 C   s®   | j  | j| j¡}|  |j| j¡ | j jjd }|  |j|¡ |  |jj| j¡ |  |jj| j¡ |  |j| j¡ |  	|j
d ¡ |  	|jd ¡ |  |j| j¡ |  |j¡ d S )NÚSourceFileLoader)r   Úspec_from_file_locationr   r   rG   Ú__globals__ZassertIsInstancer>   r:   rH   rI   rJ   r=   rX   rL   )r
   r   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   rG   r:   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   rH   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 )Nre   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©r>   )r   rê   r   rÐ   rG   r>   r:   r   rH   rI   rJ   r=   rX   rL   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   r>   rG   r:   rH   rI   rJ   r=   rX   rL   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                   @   r   )z]FactoryTests.test_spec_from_file_location_loader_no_location_bad_get_filename.<locals>.Loaderc                 S   rŽ   r   rÕ   r   r   r   r   r   È  r   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µ   Ç  r‘   rµ   rô   rö   )r   rê   r   rG   r>   r:   rH   rI   rJ   r=   rX   rL   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©r>   rJ   ©r   rê   r   r   rÐ   rG   r>   r:   rH   rI   rJ   r=   rX   rL   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Ð   rG   r>   r:   rH   rI   rJ   r±   rç   r=   rX   rL   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Ñ   rG   r>   r:   rH   rI   rJ   r±   rç   r=   rX   rL   r   r   r   r   Ú)test_spec_from_file_location_smsl_defaultü  s   ÿz6FactoryTests.test_spec_from_file_location_smsl_defaultc                 C   ó”   G dd„ dƒ}|ƒ }| j j| j| j|d}|  |j| j¡ |  |j|¡ |  |j| j¡ |  |jd ¡ |  |j	d ¡ |  |j
| j
¡ |  |j¡ d S )Nc                   @   r   )zRFactoryTests.test_spec_from_file_location_smsl_default_not_package.<locals>.Loaderc                 S   r   r¨   r   r   r   r   r   r   
  r   z]FactoryTests.test_spec_from_file_location_smsl_default_not_package.<locals>.Loader.is_packageNr×   r   r   r   r   rµ   	  r‘   rµ   rô   ©r   rê   r   r   rG   r>   r:   rH   rI   rJ   r=   rX   rL   rØ   r   r   r   Ú5test_spec_from_file_location_smsl_default_not_package  ó   ÿ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   r   )Nc                   @   r   )zUFactoryTests.test_spec_from_file_location_smsl_default_bad_is_package.<locals>.Loaderc                 S   rŽ   r   rÕ   r   r   r   r   r   &  r   z`FactoryTests.test_spec_from_file_location_smsl_default_bad_is_package.<locals>.Loader.is_packageNr×   r   r   r   r   rµ   %  r‘   rµ   rô   r  rØ   r   r   r   Ú8test_spec_from_file_location_smsl_default_bad_is_package$  r  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	| j¡ |  
|jd ¡ |  
|jd ¡ |  |j| j¡ |  |j¡ d S ró   )r   rê   r   r±   r   ÚbasenamerÐ   rG   r>   r:   rH   rI   rJ   r=   rX   rL   r   r   r   r   Ú*test_spec_from_file_location_relative_path4  s   
ÿz7FactoryTests.test_spec_from_file_location_relative_pathN)r   r    r!   rC   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Î   ù  s8    
rÎ   Ú__main__) Ú r   Z	test_utilZimport_importlibrw   r?   Zos.pathr±   rí   Ztest.support.import_helperr   Zunittestr\   r/   r   r"   r)   r4   Z	test_bothZFrozen_ModuleSpecTestsZSource_ModuleSpecTestsrt   ZFrozen_ModuleSpecMethodsTestsZSource_ModuleSpecMethodsTestsr°   ZFrozen_ModuleReprTestsZSource_ModuleReprTestsrÎ   ZFrozen_FactoryTestsZSource_FactoryTestsr   Úmainr   r   r   r   Ú<module>   sP    


 &þ 
.ÿþ
[ÿþ  Kþÿ