o
    gĈ                     @   s  d dl Z d dlZd dlZ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	m
Z
 d dlZddlmZ edZedZed	Zed
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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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eZ'eje'ed\Z(Z)d\ddZ*G dd  d Z+G d!d dZG d"d# d#e+Z,ee,\Z-Z.G d$d dZG d%d& d&e+Z/ee/\Z0Z1G d'd( d(Z2G d)d* d*e+Z3ee3\Z4Z5G d+d de2ZG d,d- d-e+Z6ee6\Z7Z8G d.d de2Ze*eZ9G d/d0 d0e+Z:ee:\Z;Z<G d1d deZ!e*e!Z=G d2d3 d3e+Z>ee:\Z?Z@G d4d5 d5ZAG d6d7 d7e+ZBeeB\ZCZDG d8d9 d9ZEejeEeed:\ZFZGG d;d< d<ZHejeHeeed=\ZIZJG d>d? d?ZKejeKeed:\ZLZMG d@dA dAZNejeNe9dB\ZOZPG dCdD dDZQejeQe9dB\ZRZSG dEdF dFZTejeTe9eedG\ZUZVG dHdI dIZWejeWe=dJ\ZXZYG dKdL dLZZe*eZdZ[G dMd deZZ'e*e'eedNZ\G dOdP dPZ]G dQdR dRe]Z^eje^ee[dS\Z_Z`e	aejbdTG dUdV dVe]Zcejeceee\dW\ZdZeG dXdY dYZfejefe[dZ\ZgZheid[krVe	j  dS dS )]    N)support)import_helper)mock   )util	importlibzimportlib.abczimportlib.machineryzimportlib.utilc                   @   s0   e Zd ZdZg Zg Zdd Zdd Zdd ZdS )	InheritanceTestszSTest that the specified class is a subclass/superclass of the expected
    classes.c                    sh   fddj D _tdrjj  fddjD _js*js*J jtjj	_
d S )Nc                    s   g | ]}t  j|qS  )getattrabc.0
class_nameselfr	   R/Users/admin/.pyenv/versions/3.10.0/lib/python3.10/test/test_importlib/test_abc.py
<listcomp>   s    z*InheritanceTests.setUp.<locals>.<listcomp>subclass_namesc                    s   g | ]}t  |qS r	   r
   r   )	machineryr	   r   r   '   s    )superclass_namessuperclasseshasattrr   r   r   
subclasses	__class__r
   Z_NAME_InheritanceTests__testr   r	   )r   r   r   setUp   s   


zInheritanceTests.setUpc                 C   s.   | j D ]}| t|| jd|| j qd S )Nz{0} is not a subclass of {1})r   
assertTrue
issubclassr   format)r   subclassr	   r	   r   test_subclasses,   
   
z InheritanceTests.test_subclassesc                 C   s.   | j D ]}| t| j|d|| j qd S )Nz{0} is not a superclass of {1})r   r   r   r   r   )r   Z
superclassr	   r	   r   test_superclasses2   r"   z"InheritanceTests.test_superclassesN)	__name__
__module____qualname____doc__r   r   r   r!   r#   r	   r	   r	   r   r      s    r   c                   @   s   e Zd Zg Zg dZdS )MetaPathFinder)BuiltinImporterFrozenImporter
PathFinderWindowsRegistryFinderNr$   r%   r&   r   r   r	   r	   r	   r   r(   9   s    r(   )r   c                   @   s   e Zd Zg ZdgZdS )PathEntryFinder
FileFinderNr-   r	   r	   r	   r   r.   D   s    
r.   c                   @   s   e Zd ZdgZdS )ResourceLoaderLoaderN)r$   r%   r&   r   r	   r	   r	   r   r0   N   s    
r0   c                   @   s   e Zd ZdgZg dZdS )InspectLoaderr1   )r)   r*   ExtensionFileLoaderNr-   r	   r	   r	   r   r2   W   s    r2   c                   @   s   e Zd ZdgZdgZdS )ExecutionLoaderr2   r3   Nr-   r	   r	   r	   r   r4   a   s    
r4   c                   @   s   e Zd ZddgZddgZdS )
FileLoaderr0   r4   SourceFileLoaderSourcelessFileLoaderNr-   r	   r	   r	   r   r5   k   s    r5   c                   @   s   e Zd ZddgZdgZdS )SourceLoaderr0   r4   r6   Nr-   r	   r	   r	   r   r8   u   s    
r8   Fc                    sF   d u r| j fddt D } fddtj| |fi |D S )Nc                    s   i | ]
\}}|t | qS r	   r   )r   kindZsplitabc)namer	   r   
<dictcomp>   s    z'make_abc_subclasses.<locals>.<dictcomp>c                    s   i | ]}|j  r| n|qS r	   )_KIND)r   cls)instr	   r   r;      s    )r$   r   items	test_utilZsplit_frozen)Z
base_classr:   r>   kwargsbaser	   )r>   r:   r   make_abc_subclasses   s   

rC   c                   @   s   e Zd Zedd ZdS )ABCTestHarnessc                 C   s   | j | j }| }|| j_|S N)SPLITr<   r   ins)r   r=   rG   r	   r	   r   rG      s   zABCTestHarness.insN)r$   r%   r&   propertyrG   r	   r	   r	   r   rD      s    rD   c                          e Zd Z fddZ  ZS )r(   c                    s   t  ||S rE   )superfind_module)r   fullnamepathr   r	   r   rK      s   zMetaPathFinder.find_module)r$   r%   r&   rK   __classcell__r	   r	   rN   r   r(          c                   @   s$   e Zd ZeeZdd Zdd ZdS )MetaPathFinderDefaultsTestsc                 C   sF   |  t | jdd }W d    n1 sw   Y  | | d S NZ	something)assertWarnsDeprecationWarningrG   rK   assertIsNoner   foundr	   r	   r   test_find_module   s   z,MetaPathFinderDefaultsTests.test_find_modulec                 C      | j   d S rE   rG   invalidate_cachesr   r	   r	   r   test_invalidate_caches      z2MetaPathFinderDefaultsTests.test_invalidate_cachesN)r$   r%   r&   rC   r(   rF   rX   r\   r	   r	   r	   r   rQ      s    rQ   c                       rI   )r.   c                       t  |S rE   )rJ   find_loaderr   rL   rN   r	   r   r_         zPathEntryFinder.find_loader)r$   r%   r&   r_   rO   r	   r	   rN   r   r.      rP   c                   @   ,   e Zd ZeeZdd Zdd Zdd ZdS )PathEntryFinderDefaultsTestsc                 C   sJ   |  t | jd}W d    n1 sw   Y  | |d g f d S rR   )rS   rT   rG   r_   assertEqualrV   r	   r	   r   test_find_loader   s   z-PathEntryFinderDefaultsTests.test_find_loaderc                 C   s   |  d | jd d S rR   )rd   rG   rK   r   r	   r	   r   rK      s   z(PathEntryFinderDefaultsTests.find_modulec                 C   rY   rE   rZ   r   r	   r	   r   r\      r]   z3PathEntryFinderDefaultsTests.test_invalidate_cachesN)	r$   r%   r&   rC   r.   rF   re   rK   r\   r	   r	   r	   r   rc      s
    rc   c                       rI   )r1   c                    r^   rE   )rJ   load_moduler`   rN   r	   r   rf      ra   zLoader.load_module)r$   r%   r&   rf   rO   r	   r	   rN   r   r1      rP   r1   c                   @   rb   )LoaderDefaultsTestsc                 C   s   d}|  | j| d S )Nza spec)rU   rG   create_module)r   specr	   r	   r   test_create_module   s   z&LoaderDefaultsTests.test_create_modulec                 C   <   |  t | jd W d    d S 1 sw   Y  d S rR   )assertRaisesImportErrorrG   rf   r   r	   r	   r   test_load_module      "z$LoaderDefaultsTests.test_load_modulec              	   C   s   t d}t 9 tdt | t | j	| W d    n1 s&w   Y  t
|}| j|_| t
| W d    d S 1 sEw   Y  d S )Nblahignore)types
ModuleTypewarningscatch_warningssimplefilterrT   rl   NotImplementedErrorrG   module_reprrepr
__loader__r   )r   modZoriginal_reprr	   r	   r   test_module_repr   s   

"z$LoaderDefaultsTests.test_module_reprN)	r$   r%   r&   rC   r1   rF   rj   rn   r|   r	   r	   r	   r   rg      s
    rg   c                       rI   )r0   c                    r^   rE   )rJ   get_datar   rM   rN   r	   r   r}      ra   zResourceLoader.get_data)r$   r%   r&   r}   rO   r	   r	   rN   r   r0      rP   c                   @   s   e Zd ZeeZdd ZdS )ResourceLoaderDefaultsTestsc                 C   rk   )Nz
/some/path)rl   IOErrorrG   r}   r   r	   r	   r   test_get_data   ro   z)ResourceLoaderDefaultsTests.test_get_dataN)r$   r%   r&   rC   r0   rF   r   r	   r	   r	   r   r      s    r   c                       s(   e Zd Z fddZ fddZ  ZS )r2   c                    r^   rE   )rJ   
is_packager`   rN   r	   r   r     ra   zInspectLoader.is_packagec                    r^   rE   )rJ   
get_sourcer`   rN   r	   r   r     ra   zInspectLoader.get_source)r$   r%   r&   r   r   rO   r	   r	   rN   r   r2     s    c                   @   s    e Zd ZeZdd Zdd ZdS )InspectLoaderDefaultsTestsc                 C   rk   Nrp   )rl   rm   rG   r   r   r	   r	   r   test_is_package  ro   z*InspectLoaderDefaultsTests.test_is_packagec                 C   rk   r   )rl   rm   rG   r   r   r	   r	   r   test_get_source  ro   z*InspectLoaderDefaultsTests.test_get_sourceN)r$   r%   r&   SPLIT_ILrF   r   r   r	   r	   r	   r   r     s    r   c                       rI   )r4   c                    r^   rE   )rJ   get_filenamer`   rN   r	   r   r   "  ra   zExecutionLoader.get_filename)r$   r%   r&   r   rO   r	   r	   rN   r   r4      rP   c                   @   s   e Zd ZeZdd ZdS )ExecutionLoaderDefaultsTestsc                 C   rk   r   )rl   rm   rG   r   r   r	   r	   r   test_get_filename-  ro   z.ExecutionLoaderDefaultsTests.test_get_filenameN)r$   r%   r&   SPLIT_ELrF   r   r	   r	   r	   r   r   )  s    r   c                       s@   e Zd Z fddZ fddZ fddZ fddZ  ZS )	ResourceReaderc                       t  j|i |S rE   )rJ   open_resourcer   argsrA   rN   r	   r   r   9     zResourceReader.open_resourcec                    r   rE   )rJ   resource_pathr   rN   r	   r   r   <  r   zResourceReader.resource_pathc                    r   rE   )rJ   is_resourcer   rN   r	   r   r   ?  r   zResourceReader.is_resourcec                    r   rE   )rJ   contentsr   rN   r	   r   r   B  r   zResourceReader.contents)r$   r%   r&   r   r   r   r   rO   r	   r	   rN   r   r   7  s
    r   c                   @   s4   e Zd ZeeZdd Zdd Zdd Zdd Z	d	S )
ResourceReaderDefaultsTestsc                 C   rk   NZ
dummy_file)rl   FileNotFoundErrorrG   r   r   r	   r	   r   test_open_resourceJ  ro   z.ResourceReaderDefaultsTests.test_open_resourcec                 C   rk   r   )rl   r   rG   r   r   r	   r	   r   test_resource_pathN  ro   z.ResourceReaderDefaultsTests.test_resource_pathc                 C   rk   r   )rl   r   rG   r   r   r	   r	   r   test_is_resourceR  ro   z,ResourceReaderDefaultsTests.test_is_resourcec                 C   s:   |  t | j  W d    d S 1 sw   Y  d S rE   )rl   r   rG   r   r   r	   r	   r   test_contentsV  s   "z)ResourceReaderDefaultsTests.test_contentsN)
r$   r%   r&   rC   r   rF   r   r   r   r   r	   r	   r	   r   r   F  s    r   c                   @   s8   e Zd Zedd Zdd Zdd Zdd Zd	d
 ZdS )MetaPathFinderFindModuleTestsc                       G  fddd| j j}| S )Nc                          e Zd Zd fdd	ZdS )z@MetaPathFinderFindModuleTests.finder.<locals>.MetaPathSpecFinderNc                    s   ||f| _  S rE   
called_for)r   rL   rM   targetri   r	   r   	find_specg  s   
zJMetaPathFinderFindModuleTests.finder.<locals>.MetaPathSpecFinder.find_specrE   r$   r%   r&   r   r	   r   r	   r   MetaPathSpecFindere      r   )r   r(   )r=   ri   r   r	   r   r   finderc     z$MetaPathFinderFindModuleTests.finderc                 C   sZ   |  d }g d}d}| t |||}W d    n1 s!w   Y  | | d S )Nabcrp   )r   rS   rT   rK   rU   r   r   rM   r:   rW   r	   r	   r   rX   m  s   
z.MetaPathFinderFindModuleTests.test_find_modulec                 C   s<   t  }| jd|}| |}|ddd }| || d S r   )objectr   spec_from_loaderr   r   rd   r   loaderri   r   rW   r	   r	   r   #test_find_spec_with_explicit_targetu  s
   
zAMetaPathFinderFindModuleTests.test_find_spec_with_explicit_targetc                 C   sV   |  d }g d}d}|||d }| | | ||jd  | ||jd  d S )Nr   rp   r   r   )r   r   rU   rd   r   r   r	   r	   r   test_no_spec|  s   

z*MetaPathFinderFindModuleTests.test_no_specc                 C   s:   t  }| jd|}| |}|dd }| || d S r   )r   r   r   r   r   assertIsr   r	   r	   r   	test_spec  s
   
z'MetaPathFinderFindModuleTests.test_specN)	r$   r%   r&   classmethodr   rX   r   r   r   r	   r	   r	   r   r   a  s    
		r   )r   r   c                   @   s0   e Zd Zedd Zdd Zdd Zdd Zd	S )
PathEntryFinderFindLoaderTestsc                    r   )Nc                       r   )zBPathEntryFinderFindLoaderTests.finder.<locals>.PathEntrySpecFinderNc                    s
   || _  S rE   r   )r   rL   r   r   r	   r   r     s   zLPathEntryFinderFindLoaderTests.finder.<locals>.PathEntrySpecFinder.find_specrE   r   r	   r   r	   r   PathEntrySpecFinder  r   r   )r   r.   )r=   ri   r   r	   r   r   r     r   z%PathEntryFinderFindLoaderTests.finderc                 C   sr   |  d }d}| t ||}W d    n1 sw   Y  | |d  | g |d  | ||j d S )Nrp   r   r   )r   rS   rT   r_   rU   rd   r   )r   r   r:   rW   r	   r	   r   r     s   
z+PathEntryFinderFindLoaderTests.test_no_specc                 C   sh   t  }| jd|}| |}| t |d}W d    n1 s$w   Y  | |d |j d S )Nrp   r   )	r   r   r   r   rS   rT   r_   r   r   r   r	   r	   r   test_spec_with_loader  s   
z4PathEntryFinderFindLoaderTests.test_spec_with_loaderc                 C   s|   | j dd }g d}||_| |}| t |d}W d    n1 s(w   Y  | |d  | ||d  d S )Nrp   r   r   r   )	r   
ModuleSpecsubmodule_search_locationsr   rS   rT   r_   rU   rd   )r   ri   pathsr   rW   r	   r	   r   test_spec_with_portions  s   
z6PathEntryFinderFindLoaderTests.test_spec_with_portionsN)r$   r%   r&   r   r   r   r   r   r	   r	   r	   r   r     s    
		r   )r   r   r   c                   @   $   e Zd Zdd Zdd Zdd ZdS )LoaderLoadModuleTestsc                 C   s   G dd d| j j}| S )Nc                   @   s    e Zd ZdZdd Zdd ZdS )z0LoaderLoadModuleTests.loader.<locals>.SpecLoaderNc                 S   
   || _ d S rE   )rW   r   moduler	   r	   r   exec_module     
z<LoaderLoadModuleTests.loader.<locals>.SpecLoader.exec_modulec                 S      dS )z.Force some non-default module state to be set.TNr	   r`   r	   r	   r   r     s   z;LoaderLoadModuleTests.loader.<locals>.SpecLoader.is_package)r$   r%   r&   rW   r   r   r	   r	   r	   r   
SpecLoader  s    r   )r   r1   )r   r   r	   r	   r   r     s   	zLoaderLoadModuleTests.loaderc              	   C   s   t  h t dt |  }d}t| || |j}| 	t
j| | W d    n1 s2w   Y  | ||j | ||jj | ||j | ||jj | |j | |j|jj W d    d S 1 sow   Y  d S Nrq   rp   )rt   ru   rv   rT   r   r@   uncacherf   rW   r   sysmodulesrd   rz   __spec__r$   r:   ZassertIsNotNone__path__r   )r   r   r:   r   r	   r	   r   
test_fresh  s$   

"z LoaderLoadModuleTests.test_freshc              	   C   s   t  a t dt d}|  }t|}| j|||_	||_
t|' |tj|< || |j}| |tj|  | |tj|  W d    n1 sPw   Y  W d    d S W d    d S 1 shw   Y  d S r   )rt   ru   rv   rT   r   rr   rs   r   r   r   rz   r@   r   r   r   rf   rW   r   )r   r:   r   r   rW   r	   r	   r   test_reload  s"   



"z!LoaderLoadModuleTests.test_reloadN)r$   r%   r&   r   r   r   r	   r	   r	   r   r     s    r   c                   @   s6   e Zd ZdddZdd Zdd Zdd	 Zd
d ZdS )InspectLoaderSourceToCodeTestsNc                 C   sB   t d}|  }|du r||}n|||}t||j |S )z!Help with source_to_code() tests.rp   N)rr   rs   InspectLoaderSubclasssource_to_codeexec__dict__)r   datarM   r   r   coder	   r	   r   source_to_module  s   
z/InspectLoaderSourceToCodeTests.source_to_modulec                 C   0   d}|  |}| t|d | |jd d S )N	attr = 42attr*   r   r   r   rd   r   r   sourcer   r	   r	   r   test_source_to_code_source     
z9InspectLoaderSourceToCodeTests.test_source_to_code_sourcec                 C   r   )Ns	   attr = 42r   r   r   r   r	   r	   r   test_source_to_code_bytes  r   z8InspectLoaderSourceToCodeTests.test_source_to_code_bytesc                 C   s*   d}|   }|d|}| |j| d S )Nzpath/to/somewhere r   r   rd   co_filename)r   rM   r   r   r	   r	   r   test_source_to_code_path  s   z7InspectLoaderSourceToCodeTests.test_source_to_code_pathc                 C   s$   |   }|d}| |jd d S )Nr   <string>r   )r   r   r   r	   r	   r   test_source_to_code_no_path  s   
z:InspectLoaderSourceToCodeTests.test_source_to_code_no_pathrE   )r$   r%   r&   r   r   r   r   r   r	   r	   r	   r   r     s    
r   )r   c                   @   r   )InspectLoaderGetCodeTestsc                 C   sp   t d}tj| jd}d|_|  }|d}W d    n1 s$w   Y  t||j	 | 
|jd d S )Nrp   r   r   r   )rr   rs   r   patchr   r   return_valueget_coder   r   rd   r   )r   r   mockedr   r   r	   r	   r   test_get_code)  s   
z'InspectLoaderGetCodeTests.test_get_codec                 C   sV   t j| jd}d |_|  }|d}W d    n1 sw   Y  | | d S )Nr   rp   )r   r   r   r   r   r   rU   )r   r   r   r   r	   r	   r   test_get_code_source_is_None3  s   z6InspectLoaderGetCodeTests.test_get_code_source_is_Nonec                 C   B   |   }| t |d W d    d S 1 sw   Y  d S r   )r   rl   rm   r   r   r   r	   r	   r   test_get_code_source_not_found;     "z8InspectLoaderGetCodeTests.test_get_code_source_not_foundN)r$   r%   r&   r   r   r   r	   r	   r	   r   r   '  s    
r   c                   @   sD   e Zd 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 )InspectLoaderLoadModuleTestsz!Test InspectLoader.load_module().rp   c                 C   s    t | j | t j| j d S rE   )r   Zunloadmodule_nameZ
addCleanupr   r	   r	   r   r   N  s   z"InspectLoaderLoadModuleTests.setUpc                 C   sV   | j | j|}t  tdt | jj	|W  d    S 1 s$w   Y  d S Nrq   )
r   r   r   rt   ru   rv   rT   init
_bootstrap_load_unlocked)r   r   ri   r	   r	   r   loadR  s
   
$z!InspectLoaderLoadModuleTests.loadc                 C   s   t j| jdS )Nr   )r   r   r   r   r   r	   r	   r   mock_get_codeX  s   z*InspectLoaderLoadModuleTests.mock_get_codec              	   C   s   |   2}t|_| t |  }| | W d    n1 s!w   Y  W d    d S W d    d S 1 s9w   Y  d S rE   )r   rm   side_effectrl   r   r   r   mocked_get_coder   r	   r	   r   test_get_code_ImportError[     
"z6InspectLoaderLoadModuleTests.test_get_code_ImportErrorc              	   C   s   |   2}d |_| t |  }| | W d    n1 s!w   Y  W d    d S W d    d S 1 s9w   Y  d S rE   )r   r   rl   rm   r   r   r   r	   r	   r   test_get_code_Nonec  r   z/InspectLoaderLoadModuleTests.test_get_code_Nonec                 C   sf   t ddd}|  }||_|  }| |}| |tj| j  W d    d S 1 s,w   Y  d S )Nr   r   r   )	compiler   r   r   r   rd   r   r   r   )r   r   r   r   r   r	   r	   r   test_module_returnedk  s   

"z1InspectLoaderLoadModuleTests.test_module_returnedN)r$   r%   r&   r'   r   r   r   r   r   r   r  r	   r	   r	   r   r   H  s    r   )r   r   r   c                   @   s<   e Zd ZdddddZdd Zdd Zd	d
 Zdd ZdS )ExecutionLoaderGetCodeTestsFr   r   c                C   s8   d\}}|rt j| jd}|rt j| jd}||fS )N)NNr   r   )r   r   r   ExecutionLoaderSubclass)r   r   r   source_mock_contextfilename_mock_contextr	   r	   r   mock_methods  s   

z(ExecutionLoaderGetCodeTests.mock_methodsc           	   	   C   s   d}| j ddd\}}|)}|}d|_||_|  }|d}W d    n1 s*w   Y  W d    n1 s9w   Y  | |j| td}t||j	 | |j
d d S )Nzblah.pyTr  r   rp   r   )r  r   r  r   rd   r   rr   rs   r   r   r   )	r   rM   r  r  source_mock	name_mockr   r   r   r	   r	   r   r     s    
 
z)ExecutionLoaderGetCodeTests.test_get_codec                 C   sZ   | j dd\}}|}d |_|  }|d}W d    n1 s!w   Y  | | d S )NT)r   rp   )r  r   r  r   rU   )r   r  _r   r   r   r	   r	   r   r     s   z8ExecutionLoaderGetCodeTests.test_get_code_source_is_Nonec                 C   r   r   )r  rl   rm   r   r   r	   r	   r   r     r   z:ExecutionLoaderGetCodeTests.test_get_code_source_not_foundc              	   C   s   | j ddd\}}|)}|}d|_t|_|  }|d}W d    n1 s(w   Y  W d    n1 s7w   Y  | |jd t	d}t
||j | |jd d S )NTr  r   rp   r   r   )r  r   rm   r   r  r   rd   r   rr   rs   r   r   r   )r   r  r  r	  r
  r   r   r   r	   r	   r   test_get_code_no_path  s   
 
z1ExecutionLoaderGetCodeTests.test_get_code_no_pathN)r$   r%   r&   r  r   r   r   r  r	   r	   r	   r   r  ~  s    
	r  )r  c                   @   s0   e Zd ZdZdd Zdd Zdd Zdd	 Zd
S )SourceOnlyLoadersN   _ = '::'.join([__name__, __file__, __cached__, __package__, repr(__loader__)])c                 C   r   rE   rM   r~   r	   r	   r   __init__  r   zSourceOnlyLoader.__init__c                 C   s   || j krt| jS rE   )rM   r   r   r~   r	   r	   r   r}     s   
zSourceOnlyLoader.get_datac                 C   s   | j S rE   r  r`   r	   r	   r   r     s   zSourceOnlyLoader.get_filenamec                 C   r   )Nz<module>r	   r   r	   r	   r   rx        zSourceOnlyLoader.module_reprN)r$   r%   r&   r   r  r}   r   rx   r	   r	   r	   r   r    s    r  c                       s>   e Zd ZdZd fdd	Z fddZdd Zd	d
 Z  ZS )r8   r   Nc                    s   t  | | j| j| _t| j| _|d u r| jj	}t
|}|| jd || j| j || j| j t| j| jddd}|t| t|| _i | _d S )Nr   r   T)dont_inherit)rJ   r  r   cache_from_sourcerM   bytecode_pathlenr   source_sizeMAGIC_NUMBER	bytearrayextendr   _pack_uint32source_mtimer  marshaldumpsbytesbytecodewritten)r   rM   magicr   code_objectrN   r	   r   r    s   

zSourceLoader.__init__c                    s*   || j krt |S || jkr| jS trE   )rM   rJ   r}   r  r  OSErrorr~   rN   r	   r   r}     s
   

zSourceLoader.get_datac                 C   s   || j krt| j| jdS )N)mtimesize)rM   r   r  r  r~   r	   r	   r   
path_stats  s   
zSourceLoader.path_statsc                 C   s   t || j|< || jkS rE   )r  r  r  )r   rM   r   r	   r	   r   set_data  s   
zSourceLoader.set_datarE   )	r$   r%   r&   r  r  r}   r%  r&  rO   r	   r	   rN   r   r8     s    )r   r   c                   @   s*   e Zd ZddddZdd Zdd Zd	S )
SourceLoaderTestHarnessTr   c                K   s   d| _ |rtj| j d| _| j | _nd}tj| j dddg| _d| j |g| _| j| j| _| j| jfi || _	d S )Npkgz__init__.pyr{   .py)
packageosrM   joinr:   r   r  cachedloader_mockr   )r   r   rA   r   r	   r	   r   r     s   
zSourceLoaderTestHarness.setUpc                 C   s   |  |j| j |  |j| j |  |j| j |  |j| j |  |j	| j
 |jd}|  |d | j |  |d | j |  |d | j |  |d | j |  |d t| j
 d S )Nz::r   r            )rd   r$   r:   __file__rM   
__cached__r/  __package__r,  rz   r   r  splitry   )r   r   valuesr	   r	   r   verify_module  s   z%SourceLoaderTestHarness.verify_modulec                 C   sL   t | j}| j|_| j|_| j|_| j	|_
g |_t||j | | d S rE   )rr   rs   r:   rM   r4  r/  r5  r,  r6  r   rz   r   r   r   r9  )r   r!  r   r	   r	   r   verify_code  s   z#SourceLoaderTestHarness.verify_codeN)r$   r%   r&   r   r9  r:  r	   r	   r	   r   r'    s    r'  c                   @   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 )SourceOnlyLoaderTestszTest importlib.abc.SourceLoader for source-only loading.

    Reload testing is subsumed by the tests for
    importlib.util.module_for_loader.

    c                 C   s   | j jd}| | j | j| dd }|| j _| t}| j | j W d    n1 s1w   Y  | |j	j| j d S )Nutf-8c                 S   s   t rE   )r"  r  r	   r	   r   raise_OSError3  r  z<SourceOnlyLoaderTests.test_get_source.<locals>.raise_OSError)
r   r   decoderd   r   r:   r}   rl   rm   	exception)r   Zexpected_sourcer=  cmr	   r	   r   r   .  s   z%SourceOnlyLoaderTests.test_get_sourcec                 C   s\   | j dd | | j| j | j dd | | j| j | | j| jd  d S )NFr(  Tz	.__init__)r   assertFalser   r   r:   r   r   r	   r	   r   r   :  s
   z%SourceOnlyLoaderTests.test_is_packagec                 C      | j | j}| | d S rE   r   r   r:   r:  r   r!  r	   r	   r   r   B     z#SourceOnlyLoaderTests.test_get_codec                 C   s"   | j | j j| j}| | d S rE   )r   r   r   rM   r:  )r   r   r	   r	   r   test_source_to_codeG  s   z)SourceOnlyLoaderTests.test_source_to_codec              
   C   s   t  h t dt t| jC t   t dt | j	| j}W d    n1 s.w   Y  | 
| | |jtj| jg | | jtj W d    n1 sWw   Y  W d    d S W d    d S 1 sow   Y  d S r   )rt   ru   rv   ImportWarningr@   r   r:   rT   r   rf   r9  rd   r   r-  rM   dirnameassertInr   r   r   r	   r	   r   rn   L  s   


"z&SourceOnlyLoaderTests.test_load_modulec              
   C   s   t  a t dt | jdd t| j6 t   t dt | j	
| j}W d    n1 s4w   Y  | | | t|d W d    n1 sPw   Y  W d    d S W d    d S 1 shw   Y  d S )Nrq   Fr(  r   )rt   ru   rv   rG  r   r@   r   r:   rT   r   rf   r9  rA  r   r   r	   r	   r   test_package_settingsZ  s   


"z+SourceOnlyLoaderTests.test_package_settingsc                 C   s\   d}| d| j_| j| j}| || d}| d| j_| j| j}| || d S )Nu   _ = 'ü'r<  u   # coding: latin-1
_ = ülatin-1)encoder   r   r   r:   rd   )r   r   returned_sourcer	   r	   r   test_get_source_encodingh  s   z.SourceOnlyLoaderTests.test_get_source_encodingN)r$   r%   r&   r'   r   r   r   rF  rn   rJ  rN  r	   r	   r	   r   r;  %  s    r;  )r   r0  zsys.dont_write_bytecode is truec                       s^   e Zd ZdZdd fdd
Zdd Zdd	 Zd
d Zdd Zdd Z	dd Z
dd Z  ZS )SourceLoaderBytecodeTestszsTest importlib.abc.SourceLoader's use of bytecode.

    Source-only testing handled by SourceOnlyLoaderTests.

    Fbytecode_writtenc                   s   t  | |rM| | j| jj t| jj}|	| j
d |	| j
| jj |	| j
| jj |	t| | | jj| j t| d S d S )Nr   )rJ   r:  rI  r/  r   r  r  r   r  r  r   r  r  r  r  r  rd   r  )r   r!  rQ  r   rN   r	   r   r:    s   z%SourceLoaderBytecodeTests.verify_codec                 C   rB  rE   rC  rD  r	   r	   r   test_code_with_everything  rE  z3SourceLoaderBytecodeTests.test_code_with_everythingc                 C   sl   d| j _| t | j| j}| j | W d    n1 s!w   Y  | j | j	}| j
|dd d S )N<does not exist>TrP  )r   r  rl   r"  r   r  rM   r}   r   r:   r:  )r   r  r!  r	   r	   r   test_no_bytecode  s   z*SourceLoaderBytecodeTests.test_no_bytecodec                 C   sf   dD ].}|| j jksJ | j j}|| j _| j jdd  | j _| j | j}| j|dd || j _qd S )N)r   r1     TrP  )r   r  r  r   r:   r:  )r   r  Zoriginalr!  r	   r	   r   test_code_bad_timestamp  s   
z1SourceLoaderBytecodeTests.test_code_bad_timestampc                 C   s@   | j dd | jjdd  | j_| j| j}| j|dd d S )N   0000r   rU  TrP  )r   r   r  r   r:   r:  rD  r	   r	   r   test_code_bad_magic  s   z-SourceLoaderBytecodeTests.test_code_bad_magicc                 C   sD   zdt _d| j_| j| j}| | j| jj W dt _d S dt _w )NTrS  F)	r   dont_write_bytecoder   r  r   r:   ZassertNotInr/  r  rD  r	   r	   r   test_dont_write_bytecode  s   z2SourceLoaderBytecodeTests.test_dont_write_bytecodec              	   C   st   | j dd | jj d j}z | jj d `| j| j}| | W || jj d _d S || jj d _w )NrW  rX  r   )r   r   r   mror&  r   r:   r:  )r   Zoriginal_set_datar!  r	   r	   r   test_no_set_data  s   *z*SourceLoaderBytecodeTests.test_no_set_datac                 C   s<   dd }| j dd |t| j_| j| j}| | d S )Nc                    s    fdd}|S )Nc                     s    rE   r	   )r   rA   excr	   r   closure  r  zcSourceLoaderBytecodeTests.test_set_data_raises_exceptions.<locals>.raise_exception.<locals>.closurer	   )r_  r`  r	   r^  r   raise_exception  s   zRSourceLoaderBytecodeTests.test_set_data_raises_exceptions.<locals>.raise_exceptionrW  rX  )r   rw   r   r&  r   r:   r:  )r   ra  r!  r	   r	   r   test_set_data_raises_exceptions  s
   z9SourceLoaderBytecodeTests.test_set_data_raises_exceptions)r$   r%   r&   r'   r:  rR  rT  rV  rY  r[  r]  rb  rO   r	   r	   rN   r   rO  {  s    
rO  )r   r   r0  c                   @   s(   e Zd ZdZdd Zdd Zdd ZdS )	SourceLoaderGetSourceTestsz2Tests for importlib.abc.SourceLoader.get_source().c                 C   s8   d}|  d}d}|d|_||}| || d S )Nr{   mod.fileu   x = "ü"r<  SourceOnlyLoaderMockrL  r   r   rd   r   r:   r   r   rM  r	   r	   r   test_default_encoding  s   

z0SourceLoaderGetSourceTests.test_default_encodingc                 C   sP   d}|  d}d}|d|dksJ |d|_||}| || d S )Nr{   rd  u   # coding: Latin-1
x='ü'rK  r<  re  rg  r	   r	   r   test_decoded_source  s   

z.SourceLoaderGetSourceTests.test_decoded_sourcec                 C   sF   d}|  d}d}|d|_td d|}| ||| d S )Nr{   rd  zx = 42
y = -13
r<  T)rf  rL  r   ioIncrementalNewlineDecoderr>  rd   r   )r   r:   r   r   expectr	   r	   r   test_universal_newlines  s   
z2SourceLoaderGetSourceTests.test_universal_newlinesN)r$   r%   r&   r'   rh  ri  rm  r	   r	   r	   r   rc    s
    	
rc  )rf  __main__)NF)krj  r  r-  r   testr   Ztest.supportr   rr   Zunittestr   rt   r   r   r@   Zimport_importlibr   r   r   r   r(   Z	test_bothZ%Frozen_MetaPathFinderInheritanceTestsZ%Source_MetaPathFinderInheritanceTestsr.   Z&Frozen_PathEntryFinderInheritanceTestsZ&Source_PathEntryFinderInheritanceTestsr0   Z%Frozen_ResourceLoaderInheritanceTestsZ%Source_ResourceLoaderInheritanceTestsr2   Z$Frozen_InspectLoaderInheritanceTestsZ$Source_InspectLoaderInheritanceTestsr4   Z&Frozen_ExecutionLoaderInheritanceTestsZ&Source_ExecutionLoaderInheritanceTestsr5   Z!Frozen_FileLoaderInheritanceTestsZ!Source_FileLoaderInheritanceTestsr8   Z#Frozen_SourceLoaderInheritanceTestsZ#Source_SourceLoaderInheritanceTestsrC   rD   rQ   ZFrozen_MPFDefaultTestsZSource_MPFDefaultTestsrc   ZFrozen_PEFDefaultTestsZSource_PEFDefaultTestsr1   rg   ZFrozen_LDefaultTestsZSourceLDefaultTestsr   ZFrozen_RLDefaultTestsZSource_RLDefaultTestsr   r   ZFrozen_ILDefaultTestsZSource_ILDefaultTestsr   r   ZFrozen_ELDefaultTestsZSource_ELDefaultsTestsr   r   ZFrozen_RRDefaultTestsZSource_RRDefaultsTestsr   ZFrozen_MPFFindModuleTestsZSource_MPFFindModuleTestsr   ZFrozen_PEFFindLoaderTestsZSource_PEFFindLoaderTestsr   ZFrozen_LoaderLoadModuleTestsZSource_LoaderLoadModuleTestsr   ZFrozen_ILSourceToCodeTestsZSource_ILSourceToCodeTestsr   ZFrozen_ILGetCodeTestsZSource_ILGetCodeTestsr   ZFrozen_ILLoadModuleTestsZSource_ILLoadModuleTestsr  ZFrozen_ELGetCodeTestsZSource_ELGetCodeTestsr  Z	SPLIT_SOLZSPLIT_SLr'  r;  ZFrozen_SourceOnlyLoaderTestsZSource_SourceOnlyLoaderTestsZskipIfrZ  rO  ZFrozen_SLBytecodeTestsZSourceSLBytecodeTestsrc  Z%Frozen_SourceOnlyLoaderGetSourceTestsZ%Source_SourceOnlyLoaderGetSourceTestsr$   mainr	   r	   r	   r   <module>   s,   



$
		.
*1,/;
&&R
[#
