
    daf                         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     =/root/Python-3.12.4/Lib/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                   d    e Zd ZdZej
                  d        Zd Zd Zd Z	d Z
d Zd Zd	 Zd
 Zy)CommonTestsz>
    Tests shared by test_open, test_path, and test_read.
    c                      y)zl
        Call the pertinent legacy API function (e.g. open_text, path)
        on package and path.
        Nr   )r   r   r   s      r   executezCommonTests.executeK   s    r   c                 D    | j                  t        j                  d       y)z=
        Passing in the package name should succeed.
        
utf-8.fileN)rK   r   r6   r4   s    r   test_package_namezCommonTests.test_package_nameR   s     	V__l3r   c                 0    | j                  t        d       y)z?
        Passing in the package itself should succeed.
        rM   NrK   r   r4   s    r   test_package_objectzCommonTests.test_package_objectX   s     	V\*r   c                 4    d}| j                  t        |       y)zB
        Passing in a string for the path should succeed.
        rM   NrP   r   s     r   test_string_pathzCommonTests.test_string_path^   s     VT"r   c                 Z    t        j                  d      }| j                  t        |       y)zS
        Passing in a pathlib.PurePath object for the path should succeed.
        rM   N)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)z=
        The anchor package can already be imported.
        rM   N)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)z
        Attempting to open or read or request the path for a
        non-existent path should succeed if open_resource
        can return a viable data stream.
           Hello, world!r   r   rM   N)ioBytesIOrG   FileNotFoundErrorrK   assertEqualr@   r   )r   
bytes_datar   s      r   test_missing_pathzCommonTests.test_missing_paths   sM     ZZ 01
 j7H7JKWl+++11<@r   c                     t        j                  d      }t        }t        ||      }| j	                  |d       | j                  |j                  j                  d       y )Nr]   r^   rM   )r_   r`   __file__rG   rK   rb   r@   r   )r   rc   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^   rM   )rG   ra   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   __doc__abcabstractmethodrK   rN   rQ   rS   rW   r[   rd   rg   rj   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)rU   Path
ZIP_MODULErf   parentstr	_zip_pathrY   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   )rY   r   removerw   
ValueErrorpath_importer_cacherZ   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   rZ   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_   rY   r=   rU    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   