
    z%i                         d dl Z d dlZ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	m
Z
 d dlmZ d dlmZ  G d d	e
      Zdd
ZddZ G d de j$                        Z G d d      Z G d de      Zy)    N   )data01)	zipdata01)ResourceReader)import_helper)
ModuleSpecc                   0    e Zd Zd Zd Zd Zd Zd Zd Zy)Readerc                 8    t        |       j                  |       y N)varsupdate)selfkwargss     V/home/uftp/.pyenv/versions/3.12.0/lib/python3.12/test/test_importlib/resources/util.py__init__zReader.__init__   s    T
&!    c                     | S r    r   packages     r   get_resource_readerzReader.get_resource_reader   s    r   c                 t    || _         t        | j                  t              r| j                  | j                  S r   )_path
isinstancefile	Exceptionr   paths     r   open_resourcezReader.open_resource   s*    
dii+))Oyyr   c                 t    || _         t        | j                  t              r| j                  | j                  S r   )r   r   r   r   )r   path_s     r   resource_pathzReader.resource_path   s*    
dii+))Oyyr   c                     | _         t        | j                  t              r| j                  d }t	        fdt        || j                        D              S )Nc                 $    | j                  d      S )N/)split)entrys    r   partz Reader.is_resource.<locals>.part)   s    ;;s##r   c              3   N   K   | ]  }t        |      d k(  xr |d   k(    yw)r   r   N)len).0partsr"   s     r   	<genexpr>z%Reader.is_resource.<locals>.<genexpr>,   s/      
6;CJ!O1aE 11
s   "%)r   r   r   r   anymap	_contents)r   r"   r)   s    ` r   is_resourcezReader.is_resource$   sM    
dii+))O	$  
?B4?X
 
 	
r   c              #      K   t        | j                  t              r| j                  | j                  E d {    y 7 wr   )r   r   r   r1   r   s    r   contentszReader.contents0   s*     dii+))O>>!!s   6A >A N)	__name__
__module____qualname__r   r   r    r#   r2   r5   r   r   r   r
   r
      s     "

"r   r
   c                 n    d}t        j                  |      }t        || d|      }||_        | |_        |S )Ntestingpackagezdoes-not-exist)origin
is_package)types
ModuleTyper   __spec__
__loader__)loaderr<   namemodulespecs        r   create_package_from_loaderrE   6   s<    Dd#FdF+;
SDFOFMr   c                 2    t        t        | ||      |      S )N)r   r   r1   )rE   r
   )r   r   r<   r5   s       r   create_packagerG   ?   s    %Dtx8 r   c                   b    e Zd Z	 ej                  d        Zd Zd Zd Zd Z	d Z
d Zd Zd	 Zy
)CommonTestsc                      y r   r   )r   r   r   s      r   executezCommonTests.executeK   s    	r   c                 F    	 | j                  t        j                  d       y N
utf-8.file)rK   r   r6   r4   s    r   test_package_namezCommonTests.test_package_nameR   s    	 	V__l3r   c                 2    	 | j                  t        d       y rM   rK   r   r4   s    r   test_package_objectzCommonTests.test_package_objectX   s    	 	V\*r   c                 6    	 d}| j                  t        |       y rM   rQ   r   s     r   test_string_pathzCommonTests.test_string_path^   s    	 VT"r   c                 \    	 t        j                  d      }| j                  t        |       y rM   )pathlibPurePathrK   r   r   s     r   test_pathlib_pathzCommonTests.test_pathlib_pathe   s'    	 -VT"r   c                     	 t         j                  t        j                  = | j	                  t        j                  d       y rM   )sysmodulesr   r6   rK   r4   s    r   $test_importing_module_as_side_effectz0CommonTests.test_importing_module_as_side_effectl   s+    	 KK(V__l3r   c                     	 t        j                  d      }t        |t                     }| j	                  |d       | j                  |j                  j                  d       y Ns   Hello, world!r   r   rN   )ioBytesIOrG   FileNotFoundErrorrK   assertEqualr@   r   )r   
bytes_datar   s      r   test_missing_pathzCommonTests.test_missing_paths   sR    	
 ZZ 01
 j7H7JKWl+++11<@r   c                     t        j                  d      }t        }t        ||      }| j	                  |d       | j                  |j                  j                  d       y r^   )r`   ra   __file__rG   rK   rc   r@   r   )r   rd   r   r   s       r   test_extant_pathzCommonTests.test_extant_path~   sN     ZZ 01
 jt<Wl+++11<@r   c                     t        t               t                     }| j                  t              5  | j                  |d       d d d        y # 1 sw Y   y xY w)Nr_   rN   )rG   rb   assertRaisesrK   r   s     r   test_useless_loaderzCommonTests.test_useless_loader   sH     &7&9@Q@ST01 	0LL,/	0 	0 	0s   AAN)r6   r7   r8   abcabstractmethodrK   rO   rR   rT   rX   r\   re   rh   rk   r   r   r   rI   rI   F   sK     	 4+##4	A	A0r   rI   )	metaclassc                   6    e Zd ZdZed        Zed        Zd Zy)ZipSetupBaseNc                    t        j                  | j                  j                        }|j                  }t        |dz        | _        t        j                  j                  | j                         t        j                  d      | _        y )Nzziptestdata.zipziptestdata)rV   Path
ZIP_MODULErg   parentstr	_zip_pathrZ   r   append	importlibimport_moduledata)cls	data_pathdata_dirs      r   
setUpClasszZipSetupBase.setUpClass   s]    LL!8!89	##H'889&**=9r   c                 >   	 t         j                  j                  | j                         	 t         j
                  | j                  = t         j                  | j                  j                  = 	 | `| `y # t        $ r Y Rw xY w# t        $ r Y  w xY w# t        $ r Y y w xY wr   )rZ   r   removerw   
ValueErrorpath_importer_cacher[   r{   r6   KeyErrorAttributeError)r|   s    r   tearDownClasszZipSetupBase.tearDownClass   s    	HHOOCMM*	''6CHH--.	  		  		  		s5   )A2 A B -B 2	A>=A>	BB	BBc                 n    t        j                         } | j                  t         j                  g|  y r   )r   modules_setup
addCleanupmodules_cleanup)r   r[   s     r   setUpzZipSetupBase.setUp   s)    --/55@@r   )r6   r7   r8   rt   classmethodr   r   r   r   r   r   rp   rp      s3    J: :  $Ar   rp   c                       e Zd ZeZy)ZipSetupN)r6   r7   r8   r   rt   r   r   r   r   r      s    Jr   r   )T)NNTr   )rl   ry   r`   rZ   r=   rV    r   r   importlib.resources.abcr   test.supportr   importlib.machineryr   r
   rE   rG   ABCMetarI   rp   r   r   r   r   <module>r      sk    
  	 
     2 & +""^ ""JF0CKK F0R A  AF| r   