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                   @   s.   e Zd Z	 g Zg Zdd Zdd Zdd ZdS )InheritanceTestsc                    sR   fddj D _tdrjj  fddjD _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   
subclassesr
   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__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   r.   N   s    
r.   c                   @   s   e Zd ZdgZg dZdS )InspectLoaderr/   )r'   r(   ExtensionFileLoaderNr+   r	   r	   r	   r   r0   W   s    r0   c                   @   s   e Zd ZdgZdgZdS )ExecutionLoaderr0   r1   Nr+   r	   r	   r	   r   r2   a   s    
r2   c                   @   s   e Zd ZddgZddgZdS )
FileLoaderr.   r2   SourceFileLoaderSourcelessFileLoaderNr+   r	   r	   r	   r   r3   k   s    r3   c                   @   s   e Zd ZddgZdgZdS )SourceLoaderr.   r2   r4   Nr+   r	   r	   r	   r   r6   u   s    
r6   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   r9      s    )r#   r   items	test_utilZsplit_frozen)Z
base_classr8   r<   kwargsbaser	   )r<   r8   r   make_abc_subclasses   s   

rA   c                   @   s   e Zd Zedd ZdS )ABCTestHarnessc                 C   s   | j | j }| }|| j_|S N)SPLITr:   	__class__ins)r   r;   rF   r	   r	   r   rF      s   zABCTestHarness.insN)r#   r$   r%   propertyrF   r	   r	   r	   r   rB      s    rB   c                          e Zd Z fddZ  ZS )r&   c                    s   t  ||S rC   )superfind_module)r   fullnamepathrE   r	   r   rJ      s   zMetaPathFinder.find_module)r#   r$   r%   rJ   __classcell__r	   r	   rM   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DeprecationWarningrF   rJ   assertIsNoner   foundr	   r	   r   test_find_module   s   z,MetaPathFinderDefaultsTests.test_find_modulec                 C      | j   d S rC   rF   invalidate_cachesr   r	   r	   r   test_invalidate_caches      z2MetaPathFinderDefaultsTests.test_invalidate_cachesN)r#   r$   r%   rA   r&   rD   rW   r[   r	   r	   r	   r   rP      s    rP   c                       rH   )r,   c                       t  |S rC   )rI   find_loaderr   rK   rM   r	   r   r^         zPathEntryFinder.find_loader)r#   r$   r%   r^   rN   r	   r	   rM   r   r,      rO   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 rQ   )rR   rS   rF   r^   assertEqualrU   r	   r	   r   test_find_loader   s   z-PathEntryFinderDefaultsTests.test_find_loaderc                 C   s   |  d | jd d S rQ   )rc   rF   rJ   r   r	   r	   r   rJ      s   z(PathEntryFinderDefaultsTests.find_modulec                 C   rX   rC   rY   r   r	   r	   r   r[      r\   z3PathEntryFinderDefaultsTests.test_invalidate_cachesN)	r#   r$   r%   rA   r,   rD   rd   rJ   r[   r	   r	   r	   r   rb      s
    rb   c                       rH   )r/   c                    r]   rC   )rI   load_moduler_   rM   r	   r   re      r`   zLoader.load_module)r#   r$   r%   re   rN   r	   r	   rM   r   r/      rO   r/   c                   @   ra   )LoaderDefaultsTestsc                 C   s   d}|  | j| d S )Nza spec)rT   rF   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 rQ   )assertRaisesImportErrorrF   re   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simplefilterrS   rk   NotImplementedErrorrF   module_reprrepr
__loader__r   )r   modZoriginal_reprr	   r	   r   test_module_repr   s   

"z$LoaderDefaultsTests.test_module_reprN)	r#   r$   r%   rA   r/   rD   ri   rm   r{   r	   r	   r	   r   rf      s
    rf   c                       rH   )r.   c                    r]   rC   )rI   get_datar   rL   rM   r	   r   r|      r`   zResourceLoader.get_data)r#   r$   r%   r|   rN   r	   r	   rM   r   r.      rO   c                   @   s   e Zd ZeeZdd ZdS )ResourceLoaderDefaultsTestsc                 C   rj   )Nz
/some/path)rk   IOErrorrF   r|   r   r	   r	   r   test_get_data   rn   z)ResourceLoaderDefaultsTests.test_get_dataN)r#   r$   r%   rA   r.   rD   r   r	   r	   r	   r   r~      s    r~   c                       s(   e Zd Z fddZ fddZ  ZS )r0   c                    r]   rC   )rI   
is_packager_   rM   r	   r   r     r`   zInspectLoader.is_packagec                    r]   rC   )rI   
get_sourcer_   rM   r	   r   r     r`   zInspectLoader.get_source)r#   r$   r%   r   r   rN   r	   r	   rM   r   r0     s    c                   @   s    e Zd ZeZdd Zdd ZdS )InspectLoaderDefaultsTestsc                 C   rj   Nro   )rk   rl   rF   r   r   r	   r	   r   test_is_package  rn   z*InspectLoaderDefaultsTests.test_is_packagec                 C   rj   r   )rk   rl   rF   r   r   r	   r	   r   test_get_source  rn   z*InspectLoaderDefaultsTests.test_get_sourceN)r#   r$   r%   SPLIT_ILrD   r   r   r	   r	   r	   r   r     s    r   c                       rH   )r2   c                    r]   rC   )rI   get_filenamer_   rM   r	   r   r   "  r`   zExecutionLoader.get_filename)r#   r$   r%   r   rN   r	   r	   rM   r   r2      rO   c                   @   s   e Zd ZeZdd ZdS )ExecutionLoaderDefaultsTestsc                 C   rj   r   )rk   rl   rF   r   r   r	   r	   r   test_get_filename-  rn   z.ExecutionLoaderDefaultsTests.test_get_filenameN)r#   r$   r%   SPLIT_ELrD   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 rC   )rI   open_resourcer   argsr?   rM   r	   r   r   9     zResourceReader.open_resourcec                    r   rC   )rI   resource_pathr   rM   r	   r   r   <  r   zResourceReader.resource_pathc                    r   rC   )rI   is_resourcer   rM   r	   r   r   ?  r   zResourceReader.is_resourcec                    r   rC   )rI   contentsr   rM   r	   r   r   B  r   zResourceReader.contents)r#   r$   r%   r   r   r   r   rN   r	   r	   rM   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   rj   NZ
dummy_file)rk   FileNotFoundErrorrF   r   r   r	   r	   r   test_open_resourceJ  rn   z.ResourceReaderDefaultsTests.test_open_resourcec                 C   rj   r   )rk   r   rF   r   r   r	   r	   r   test_resource_pathN  rn   z.ResourceReaderDefaultsTests.test_resource_pathc                 C   rj   r   )rk   r   rF   r   r   r	   r	   r   test_is_resourceR  rn   z,ResourceReaderDefaultsTests.test_is_resourcec                 C   s:   |  t | j  W d    d S 1 sw   Y  d S rC   )rk   r   rF   r   r   r	   r	   r   test_contentsV  s   "z)ResourceReaderDefaultsTests.test_contentsN)
r#   r$   r%   rA   r   rD   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 rC   
called_for)r   rK   rL   targetrh   r	   r   	find_specg  s   
zJMetaPathFinderFindModuleTests.finder.<locals>.MetaPathSpecFinder.find_specrC   r#   r$   r%   r   r	   r   r	   r   MetaPathSpecFindere      r   )r   r&   )r;   rh   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cro   )r   rR   rS   rJ   rT   r   r   rL   r8   rV   r	   r	   r   rW   m  s   
z.MetaPathFinderFindModuleTests.test_find_modulec                 C   s<   t  }| jd|}| |}|ddd }| || d S r   )objectr   spec_from_loaderr   r   rc   r   loaderrh   r   rV   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   ro   r   r   )r   r   rT   rc   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   rW   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 rC   r   )r   rK   r   r   r	   r   r     s   zLPathEntryFinderFindLoaderTests.finder.<locals>.PathEntrySpecFinder.find_specrC   r   r	   r   r	   r   PathEntrySpecFinder  r   r   )r   r,   )r;   rh   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 )Nro   r   r   )r   rR   rS   r^   rT   rc   r   )r   r   r8   rV   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 )Nro   r   )	r   r   r   r   rR   rS   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 )Nro   r   r   r   )	r   
ModuleSpecsubmodule_search_locationsr   rR   rS   r^   rT   rc   )r   rh   pathsr   rV   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 rC   )rV   r   moduler	   r	   r   exec_module     
z<LoaderLoadModuleTests.loader.<locals>.SpecLoader.exec_modulec                 S   s   	 dS )NTr	   r_   r	   r	   r   r     s   z;LoaderLoadModuleTests.loader.<locals>.SpecLoader.is_package)r#   r$   r%   rV   r   r   r	   r	   r	   r   
SpecLoader  s    r   )r   r/   )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 Nrp   ro   )rs   rt   ru   rS   r   r>   uncachere   rV   r   sysmodulesrc   ry   __spec__r#   r8   ZassertIsNotNone__path__r   )r   r   r8   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   )rs   rt   ru   rS   r   rq   rr   r   r   r   ry   r>   r   r   r   re   rV   r   )r   r8   r   r   rV   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   sD   	 t d}|  }|d u r||}n|||}t||j |S r   )rq   rr   InspectLoaderSubclasssource_to_codeexec__dict__)r   datarL   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   rc   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   rc   co_filename)r   rL   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_pathrC   )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 )Nro   r   r   r   )rq   rr   r   patchr   r   return_valueget_coder   r   rc   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   ro   )r   r   r   r   r   r   rT   )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   rk   rl   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                   @   sB   e Zd Z	 dZdd Zdd Zdd Zdd	 Zd
d Zdd Z	dS )InspectLoaderLoadModuleTestsro   c                 C   s    t | j | t j| j d S rC   )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 Nrp   )
r   r   r   rs   rt   ru   rS   init
_bootstrap_load_unlocked)r   r   rh   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 rC   )r   rl   side_effectrk   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 rC   )r   r   rk   rl   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   rc   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   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   ro   r   )r  r   r  r   rc   r   rq   rr   r   r   r   )	r   rL   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   ro   )r  r   r  r   rT   )r   r  _r   r   r   r	   r	   r   r     s   z8ExecutionLoaderGetCodeTests.test_get_code_source_is_Nonec                 C   r   r   )r  rk   rl   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   ro   r   r   )r  r   rl   r   r  r   rc   r   rq   rr   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   rC   rL   r}   r	   r	   r   __init__  r   zSourceOnlyLoader.__init__c                 C   s   || j krt| jS rC   )rL   r   r   r}   r	   r	   r   r|     s   
zSourceOnlyLoader.get_datac                 C   s   | j S rC   r  r_   r	   r	   r   r     s   zSourceOnlyLoader.get_filenamec                 C   s   dS )Nz<module>r	   r   r	   r	   r   rw        zSourceOnlyLoader.module_reprN)r#   r$   r%   r   r  r|   r   rw   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 )r6   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)rI   r  r   cache_from_sourcerL   bytecode_pathlenr   source_sizeMAGIC_NUMBER	bytearrayextendr   _pack_uint32source_mtimer   marshaldumpsbytesbytecodewritten)r   rL   magicr   code_objectrM   r	   r   r    s   

zSourceLoader.__init__c                    s*   || j krt |S || jkr| jS trC   )rL   rI   r|   r  r  OSErrorr}   rM   r	   r   r|     s
   

zSourceLoader.get_datac                 C   s   || j krt| j| jdS )N)mtimesize)rL   r   r  r  r}   r	   r	   r   
path_stats  s   
zSourceLoader.path_statsc                 C   s   t || j|< || jkS rC   )r  r  r  )r   rL   r   r	   r	   r   set_data  s   
zSourceLoader.set_datarC   )	r#   r$   r%   r  r  r|   r#  r$  rN   r	   r	   rM   r   r6     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__.pyrz   .py)
packageosrL   joinr8   r   r  cachedloader_mockr   )r   r   r?   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            )rc   r#   r8   __file__rL   
__cached__r-  __package__r*  ry   r   r	  splitrx   )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 rC   )rq   rr   r8   rL   r2  r-  r3  r*  r4  r   ry   r   r   r   r7  )r   r  r   r	   r	   r   verify_code  s   z#SourceLoaderTestHarness.verify_codeN)r#   r$   r%   r   r7  r8  r	   r	   r	   r   r%    s    r%  c                   @   sF   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S )SourceOnlyLoaderTestsc                 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 rC   )r   r  r	   r	   r   raise_OSError3  r  z<SourceOnlyLoaderTests.test_get_source.<locals>.raise_OSError)
r   r   decoderc   r   r8   r|   rk   rl   	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   r8   r   r   r	   r	   r   r   :  s
   z%SourceOnlyLoaderTests.test_is_packagec                 C      | j | j}| | d S rC   r   r   r8   r8  r   r  r	   r	   r   r   B     z#SourceOnlyLoaderTests.test_get_codec                 C   s"   | j | j j| j}| | d S rC   )r   r   r   rL   r8  )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   )rs   rt   ru   ImportWarningr>   r   r8   rS   r   re   r7  rc   r   r+  rL   dirnameassertInr   r   r   r	   r	   r   rm   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 )Nrp   Fr&  r   )rs   rt   ru   rE  r   r>   r   r8   rS   r   re   r7  r?  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   r8   rc   )r   r   returned_sourcer	   r	   r   test_get_source_encodingh  s   z.SourceOnlyLoaderTests.test_get_source_encodingN)
r#   r$   r%   r   r   r   rD  rm   rH  rL  r	   r	   r	   r   r9  %  s    r9  )r   r.  zsys.dont_write_bytecode is truec                       s\   e 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 )SourceLoaderBytecodeTestsF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   )rI   r8  rG  r-  r   r  r  r   r  r  r   r  r  r  r  r  rc   r  )r   r  rO  r   rM   r	   r   r8    s   z%SourceLoaderBytecodeTests.verify_codec                 C   r@  rC   rA  rB  r	   r	   r   test_code_with_everything  rC  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>TrN  )r   r  rk   r   r   r  rL   r|   r   r8   r8  )r   r  r  r	   r	   r   test_no_bytecode  s   z*SourceLoaderBytecodeTests.test_no_bytecodec                 C   sV   dD ]&}| j j}|| j _| j jdd  | j _| j | j}| j|dd || j _qd S )N)r   r/     TrN  )r   r  r  r   r8   r8  )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  rS  TrN  )r   r   r  r   r8   r8  rB  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 )NTrQ  F)	r   dont_write_bytecoder   r  r   r8   ZassertNotInr-  r  rB  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 )NrU  rV  r   )r   r   rE   mror$  r   r8   r8  )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    rC   r	   )r   r?   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_exceptionrU  rV  )r   rv   r   r$  r   r8   r8  )r   r_  r  r	   r	   r   test_set_data_raises_exceptions  s
   z9SourceLoaderBytecodeTests.test_set_data_raises_exceptions)r#   r$   r%   r8  rP  rR  rT  rW  rY  r[  r`  rN   r	   r	   rM   r   rM  {  s    
rM  )r   r   r.  c                   @   s&   e Zd Z	 dd Zdd Zdd ZdS )SourceLoaderGetSourceTestsc                 C   8   d}|  d}d}|d|_||}| || d S )Nrz   mod.fileu   x = "ü"r:  SourceOnlyLoaderMockrJ  r   r   rc   r   r8   r   r   rK  r	   r	   r   test_default_encoding  s   

z0SourceLoaderGetSourceTests.test_default_encodingc                 C   rb  )Nrz   rc  u   # coding: Latin-1
x='ü'rI  rd  rf  r	   r	   r   test_decoded_source  s   

z.SourceLoaderGetSourceTests.test_decoded_sourcec                 C   sF   d}|  d}d}|d|_td d|}| ||| d S )Nrz   rc  zx = 42
y = -13
r:  T)re  rJ  r   ioIncrementalNewlineDecoderr<  rc   r   )r   r8   r   r   expectr	   r	   r   test_universal_newlines  s   
z2SourceLoaderGetSourceTests.test_universal_newlinesN)r#   r$   r%   rg  rh  rl  r	   r	   r	   r   ra    s
    	
ra  )re  __main__)NF)kri  r  r+  r   testr   Ztest.supportr   rq   Zunittestr   rs   r   r   r>   Zimport_importlibr   r   r   r   r&   Z	test_bothZ%Frozen_MetaPathFinderInheritanceTestsZ%Source_MetaPathFinderInheritanceTestsr,   Z&Frozen_PathEntryFinderInheritanceTestsZ&Source_PathEntryFinderInheritanceTestsr.   Z%Frozen_ResourceLoaderInheritanceTestsZ%Source_ResourceLoaderInheritanceTestsr0   Z$Frozen_InspectLoaderInheritanceTestsZ$Source_InspectLoaderInheritanceTestsr2   Z&Frozen_ExecutionLoaderInheritanceTestsZ&Source_ExecutionLoaderInheritanceTestsr3   Z!Frozen_FileLoaderInheritanceTestsZ!Source_FileLoaderInheritanceTestsr6   Z#Frozen_SourceLoaderInheritanceTestsZ#Source_SourceLoaderInheritanceTestsrA   rB   rP   ZFrozen_MPFDefaultTestsZSource_MPFDefaultTestsrb   ZFrozen_PEFDefaultTestsZSource_PEFDefaultTestsr/   rf   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%  r9  ZFrozen_SourceOnlyLoaderTestsZSource_SourceOnlyLoaderTestsZskipIfrX  rM  ZFrozen_SLBytecodeTestsZSourceSLBytecodeTestsra  Z%Frozen_SourceOnlyLoaderGetSourceTestsZ%Source_SourceOnlyLoaderGetSourceTestsr#   mainr	   r	   r	   r   <module>   s,   



$
		.
*1,/;
&&R
[#
