a
    ¼3jA  ã                   @   s    d dl Z d dl mZ d dl mZ d dlZd dlZd dlZddlmZ G dd„ dƒZG dd„ dej	ƒZ
G d	d
„ d
ejejƒZG dd„ dej	ƒZedkrœe ¡  dS )é    N)Úabc)Úutilé   c                   @   s   e Zd Zdd„ Zdd„ ZdS )ÚCollectInitc                 O   s   || _ || _d S ©N)ÚargsÚkwargs)Úselfr   r   © r
   úY/www/server/python_manager/versions/3.9.10/lib/python3.9/test/test_importlib/test_lazy.pyÚ__init__   s    zCollectInit.__init__c                 C   s   | S r   r
   ©r	   Úmoduler
   r
   r   Úexec_module   s    zCollectInit.exec_moduleN)Ú__name__Ú
__module__Ú__qualname__r   r   r
   r
   r
   r   r      s   r   c                   @   s   e Zd Zdd„ Zdd„ ZdS )ÚLazyLoaderFactoryTestsc                 C   sD   t j t¡}|dddd}|j}|  d|j¡ |  ddi|j¡ d S )Númodule nameúmodule pathÚkw)r   )r   r   )r   Ú
LazyLoaderÚfactoryr   ÚloaderÚassertEqualr   r   )r	   r   Zlazy_loaderr   r
   r
   r   Ú	test_init   s
    z LazyLoaderFactoryTests.test_initc                 C   s:   |   t¡ tj t¡ W d   ƒ n1 s,0    Y  d S r   )ÚassertRaisesÚ	TypeErrorr   r   r   Úobject©r	   r
   r
   r   Útest_validation    s    z&LazyLoaderFactoryTests.test_validationN)r   r   r   r   r    r
   r
   r
   r   r      s   	r   c                   @   s4   e Zd ZdZdZdZd e¡Zd	dd„Zdd„ Z	dS )
ÚTestingImporterZlazy_loader_testÚchangedNzattr = 42; __name__ = {!r}c                 C   s    || j krd S t |t | ¡¡S r   )Úmodule_namer   Úspec_from_loaderr   )r	   ÚnameÚpathÚtargetr
   r
   r   Ú	find_spec-   s    
zTestingImporter.find_specc                 C   s   t | j|jƒ || _d S r   )ÚexecÚsource_codeÚ__dict__Úloadedr   r
   r
   r   r   2   s    zTestingImporter.exec_module)N)
r   r   r   r#   Úmutated_namer,   Úformatr*   r(   r   r
   r
   r
   r   r!   &   s   

r!   c                   @   sf   e Zd Zdd„ Zddd„Zdd„ Zdd	„ Zd
d„ Zdd„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ ZdS )ÚLazyLoaderTestsc                 C   s8   |   t¡ t t¡ W d   ƒ n1 s*0    Y  d S r   )r   r   r   r   r   r   r
   r
   r   r   9   s    zLazyLoaderTests.test_initNc                 C   sr   t ƒ }|d ur||_t t jt |¡¡}|j |¡}|d u rHt 	t j¡}||_
|j|_|j |¡ |  |j¡ |S r   )r!   r*   r   r$   r#   r   r   Úcreate_moduleÚtypesÚ
ModuleTypeÚ__spec__Ú
__loader__r   ÚassertIsNoner,   )r	   r*   r   Úspecr   r
   r
   r   Ú
new_module>   s    ÿzLazyLoaderTests.new_modulec              	   C   s²   t ƒ }|jd u sJ ‚t |j¡J tj|gd t |j¡}W d   ƒ n1 sR0    Y  W d   ƒ n1 sp0    Y  |  |j¡ |  	|j
|¡ |  |j¡ |  	||j¡ d S )N)Ú	meta_path)r!   r,   Ú	test_utilÚuncacher#   Zimport_stateÚ	importlibÚimport_moduler5   r   r4   ZassertIsNotNone)r	   Zimporterr   r
   r
   r   Útest_e2eN   s    HzLazyLoaderTests.test_e2ec                 C   s   |   ¡ }|  tj|j¡ d S r   )r7   r   r!   r-   r   r   r
   r
   r   Útest_attr_unchanged[   s    z#LazyLoaderTests.test_attr_unchangedc                 C   s    |   ¡ }d|_|  d|j¡ d S )Né*   )r7   Znew_attrr   r   r
   r
   r   Útest_new_attra   s    zLazyLoaderTests.test_new_attrc                 C   s    |   ¡ }d|_|  d|j¡ d S )NZbogus)r7   r   r   r   r
   r
   r   Útest_mutated_preexisting_attrg   s    z-LazyLoaderTests.test_mutated_preexisting_attrc                 C   s    |   ¡ }d|_|  d|j¡ d S )Né   )r7   Úattrr   r   r
   r
   r   Útest_mutated_attrn   s    z!LazyLoaderTests.test_mutated_attrc                 C   s    |   ¡ }|`|  t|dƒ¡ d S )NrC   )r7   rC   ÚassertFalseÚhasattrr   r
   r
   r   Útest_delete_eventual_attru   s    z)LazyLoaderTests.test_delete_eventual_attrc                 C   s    |   ¡ }|`|  t|dƒ¡ d S )Nr   )r7   r   rE   rF   r   r
   r
   r   Útest_delete_preexisting_attr{   s    z,LazyLoaderTests.test_delete_preexisting_attrc              	   C   s‚   t  tj¡b t tj¡}|tjtj< |  ¡ }|  	t
d¡ |j W d   ƒ n1 sV0    Y  W d   ƒ n1 st0    Y  d S )NZsubstituted)r9   r:   r!   r#   r1   r2   ÚsysÚmodulesr7   ZassertRaisesRegexÚ
ValueErrorr   )r	   Zfresh_moduler   r
   r
   r   Útest_module_substitution_error€   s    z.LazyLoaderTests.test_module_substitution_errorc                 C   sJ   t  tj¡* |  ¡ }|tjtj< |j W d   ƒ n1 s<0    Y  d S r   )r9   r:   r!   r#   r7   rI   rJ   r   r   r
   r
   r   Útest_module_already_in_sysˆ   s    z*LazyLoaderTests.test_module_already_in_sys)N)r   r   r   r   r7   r=   r>   r@   rA   rD   rG   rH   rL   rM   r
   r
   r
   r   r/   7   s   
r/   Ú__main__)r;   r   r   rI   r1   ZunittestÚ r9   r   ZTestCaser   ÚMetaPathFinderÚLoaderr!   r/   r   Úmainr
   r
   r
   r   Ú<module>   s   
Y