
    daf)                     P   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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  eed        eed	       ej,                  d
        Zej,                  d        Zej,                  d        Zej,                  d        Z G d d      Z G d de      Z G d de      Z G d dee      Z G d dee      Z G d dee      Z  G d de      Z! G d dee      Z" G d dee      Z# G d  d!ee      Z$ G d" d#ee      Z% G d$ d%ee      Z&ejN                  jP                  e)   Z*ejN                  jW                  e)d&        ejX                  Z-d' Z.d( Z/ G d) d*      Z0d+ Z1 e        G d, d-             Z2d. Z3y# eef$ r d dlZY Nw xY w)/    N)FS_NONASCII)requires_zlib   )_path)	FilesSpec)	resourcesfilesas_filec               #      K   t        j                         } 	 t        j                  |        t	        j
                  |        y # t	        j
                  |        w xY wwN)tempfilemkdtemppathlibPathshutilrmtree)tmpdirs    7/root/Python-3.12.4/Lib/test/test_importlib/fixtures.pytempdirr      s@     Fll6""ffs   AA AAAc               #      K   t        j                         } 	 d  t        j                  |        y # t        j                  |        w xY wwr   )osgetcwdchdir)origs    r   save_cwdr   $   s/     99;D
s   A2 AA		Ac               #      K   t               5 } t               5  t        j                  t	        |              |  d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY wwr   )r   r   r   r   str)tmps    r   tempdir_as_cwdr   -   sU     	 cZ 	HHSXI	 	 	 s2   A$A#AA	A$A	AA!A$c              #      K   t         j                  j                  |        	 d  t         j                  j                  |        y # t         j                  j                  |        w xY wwr   )sys	meta_pathappendremove)finders    r   install_finderr&   5   sD     MM %V$V$s    A+A  A+!A((A+c                       e Zd Zd Zy)Fixturesc                     t        j                         | _        | j                  | j                  j                         y r   )
contextlib	ExitStackfixtures
addCleanupcloseselfs    r   setUpzFixtures.setUp?   s(    ",,.++,    N)__name__
__module____qualname__r1    r2   r   r(   r(   >   s    -r2   r(   c                        e Zd Z fdZ xZS )SiteDirc                 r    t         |           | j                  j                  t	                     | _        y r   )superr1   r,   enter_contextr   site_dirr0   	__class__s    r   r1   zSiteDir.setUpE   s$    33GI>r2   r3   r4   r5   r1   __classcell__r>   s   @r   r8   r8   D   s    ? ?r2   r8   c                   L     e Zd Zeej
                  d               Z fdZ xZS )	OnSysPathc              #      K   t        |       gt        j                  d d 	 d  t        j                  j                  t        |              y # t        j                  j                  t        |              w xY ww)Nr   )r   r!   pathr$   )dirs    r   add_sys_pathzOnSysPath.add_sys_pathK   sM      Cz!	&HHOOCH%CHHOOCH%s   A;A )A;*A88A;c                     t         |           | j                  j                  | j	                  | j
                               y r   )r:   r1   r,   r;   rG   r<   r=   s    r   r1   zOnSysPath.setUpT   s-    ##D$5$5dmm$DEr2   )	r3   r4   r5   staticmethodr*   contextmanagerrG   r1   r@   rA   s   @r   rC   rC   J   s/    &  &F Fr2   rC   c                   B     e Zd ZU ddddddZeed<    fdZd	 Z xZS )
DistInfoPkgaL  
                Name: distinfo-pkg
                Author: Steven Ma
                Version: 1.0.0
                Requires-Dist: wheel >= 1.0
                Requires-Dist: pytest; extra == 'test'
                Keywords: sample package

                Once upon a time
                There was a distinfo pkg
                zmod.py,sha256=abc,20
zi
                [entries]
                main = mod:main
                ns:sub = mod:main
            )METADATARECORDentry_points.txtJ
            def main():
                print("hello world")
            )distinfo_pkg-1.0.0.dist-infomod.pyr	   c                 j    t         |           t        t        j                  | j
                         y r   r:   r1   build_filesrL   r	   r<   r=   s    r   r1   zDistInfoPkg.setUpt        K%%t}}5r2   c                     t        j                  | j                  dz         t        j                  t
        j                        }|d   }|d   j                         |d<   t        || j                         y)z=
        Rewrite metadata with everything uppercase.
        rQ   rM   N)	r   r   r<   copydeepcopyrL   r	   upperrU   )r0   r	   infos      r   make_uppercasezDistInfoPkg.make_uppercasex   s_     	dmm&DDEk//034
+113ZE4==)r2   )	r3   r4   r5   r	   r   __annotations__r1   r\   r@   rA   s   @r   rL   rL   Y   s4    
 /!)
&)E9 46*r2   rL   c                   6     e Zd ZU dddiiZeed<    fdZ xZS )DistInfoPkgWithDotzpkg_dot-1.0.0.dist-inforM   N
                Name: pkg.dot
                Version: 1.0.0
                r	   c                 j    t         |           t        t        j                  | j
                         y r   )r:   r1   rU   r_   r	   r<   r=   s    r   r1   zDistInfoPkgWithDot.setUp   s!    &,,dmm<r2   r3   r4   r5   r	   r   r]   r1   r@   rA   s   @r   r_   r_      s+    ! $
E9 = =r2   r_   c                   <     e Zd ZU ddiddidZeed<    fdZ xZS )DistInfoPkgWithDotLegacyrM   r`   zN
                Name: pkg.lot
                Version: 1.0.0
                )zpkg.dot-1.0.0.dist-infozpkg.lot.egg-infor	   c                 j    t         |           t        t        j                  | j
                         y r   )r:   r1   rU   rd   r	   r<   r=   s    r   r1   zDistInfoPkgWithDotLegacy.setUp   s!    ,22DMMBr2   rb   rA   s   @r   rd   rd      s;      $
  
E9 C Cr2   rd   c                        e Zd Z fdZ xZS )DistInfoPkgOffPathc                 j    t         |           t        t        j                  | j
                         y r   rT   r=   s    r   r1   zDistInfoPkgOffPath.setUp   rV   r2   r?   rA   s   @r   rg   rg      s    6 6r2   rg   c                   @     e Zd ZU ddddddddZeed	<    fd
Z xZS )
EggInfoPkga  
                Name: egginfo-pkg
                Author: Steven Ma
                License: Unknown
                Version: 1.0.0
                Classifier: Intended Audience :: Developers
                Classifier: Topic :: Software Development :: Libraries
                Keywords: sample package
                Description: Once upon a time
                        There was an egginfo package
                zW
                mod.py
                egginfo_pkg.egg-info/top_level.txt
            zG
                [entries]
                main = mod:main
            zq
                wheel >= 1.0; python_version >= "2.7"
                [test]
                pytest
            zmod
)PKG-INFOSOURCES.txtrO   zrequires.txttop_level.txtrP   )zegginfo_pkg.egg-inforR   r	   c                 l    t         |           t        t        j                  | j
                         y N)prefix)r:   r1   rU   rj   r	   r<   r=   s    r   r1   zEggInfoPkg.setUp   s     J$$T]];r2   rb   rA   s   @r   rj   rj      s?    
!
 %3!
69 E9  D< <r2   rj   c                   <     e Zd ZU ddddddZeed<    fdZ xZS )	 EggInfoPkgPipInstalledNoToplevelzName: egg_with_module-pkgz
                egg_with_module.py
                setup.py
                egg_with_module_pkg.egg-info/PKG-INFO
                egg_with_module_pkg.egg-info/SOURCES.txt
                egg_with_module_pkg.egg-info/top_level.txt
            z
                ../egg_with_module.py
                PKG-INFO
                SOURCES.txt
                top_level.txt
            )rk   rl   installed-files.txtrP   )zegg_with_module_pkg.egg-infozegg_with_module.pyr	   c                 l    t         |           t        t        j                  | j
                         y ro   )r:   r1   rU   rr   r	   r<   r=   s    r   r1   z&EggInfoPkgPipInstalledNoToplevel.setUp   s!    4::4==Qr2   rb   rA   s   @r   rr   rr      s6     4$)
,/E9 :R Rr2   rr   c                   <     e Zd ZU ddddddiZeed<    fdZ xZS )	EggInfoPkgPipInstalledNoModulesz egg_with_no_modules_pkg.egg-infozName: egg_with_no_modules-pkgz
                setup.py
                egg_with_no_modules_pkg.egg-info/PKG-INFO
                egg_with_no_modules_pkg.egg-info/SOURCES.txt
                egg_with_no_modules_pkg.egg-info/top_level.txt
            z`
                PKG-INFO
                SOURCES.txt
                top_level.txt
               
)rk   rl   rs   rm   r	   c                 l    t         |           t        t        j                  | j
                         y ro   )r:   r1   rU   rv   r	   r<   r=   s    r   r1   z%EggInfoPkgPipInstalledNoModules.setUp  s!    399$--Pr2   rb   rA   s   @r   rv   rv      s7    *7$ #'-
E9 0Q Qr2   rv   c                   :     e Zd ZU dddddZeed<    fdZ xZS )EggInfoPkgSourcesFallbackzName: sources_fallback-pkgz
                sources_fallback.py
                setup.py
                sources_fallback_pkg.egg-info/PKG-INFO
                sources_fallback_pkg.egg-info/SOURCES.txt
            )rk   rl   rP   )zsources_fallback_pkg.egg-infozsources_fallback.pyr	   c                 l    t         |           t        t        j                  | j
                         y ro   )r:   r1   rU   rz   r	   r<   r=   s    r   r1   zEggInfoPkgSourcesFallback.setUp+  s!    -33DMMJr2   rb   rA   s   @r   rz   rz     s1     5	*
 E9 (K Kr2   rz   c                   2     e Zd ZU ddiZeed<    fdZ xZS )EggInfoFilezegginfo_file.egg-infoaa  
            Metadata-Version: 1.0
            Name: egginfo_file
            Version: 0.1
            Summary: An example package
            Home-page: www.example.com
            Author: Eric Haffa-Vee
            Author-email: eric@example.coms
            License: UNKNOWN
            Description: UNKNOWN
            Platform: UNKNOWN
            r	   c                 l    t         |           t        t        j                  | j
                         y ro   )r:   r1   rU   r}   r	   r<   r=   s    r   r1   zEggInfoFile.setUp@  s     K%%dmm<r2   rb   rA   s   @r   r}   r}   0  s#     "E9 = =r2   r}   c                 ,    t        t        |       |      S r   )r   DALS)contentrE   s     r   <lambda>r   G  s    d7mT1J r2   c                 D    dj                  d t        |       D              S )N c              3   &   K   | ]	  }| d   yw)z,,
Nr6   ).0names     r   	<genexpr>zbuild_record.<locals>.<genexpr>N  s     ETdV4=Es   )joinrecord_names)	file_defss    r   build_recordr   M  s    77E\)-DEEEr2   c                 n    t        j                         }t        j                  | |       |j                  S r   )r   	Recordingbuildrecord)r   	recordings     r   r   r   Q  s(    !I	KK	9%r2   c                       e Zd Zd Zy)FileBuilderc                 4    t         xs | j                  d      S )Nz'File system does not support non-ascii.)r   skipr/   s    r   unicode_filenamezFileBuilder.unicode_filenameX  s    Rdii(QRRr2   N)r3   r4   r5   r   r6   r2   r   r   r   W  s    Sr2   r   c                 H    t        j                  |       j                         S )zDedent and left-strip)textwrapdedentlstrip)r   s    r   r   r   \  s    ??3&&((r2   c                       e Zd ZdZd Zd Zy)ZipFixturesztest.test_importlib.datac                    t        j                  | j                        j                  |      }| j                   j	                  t        j
                  |            }|j                  j                  d      sJ |j                         t        j                  j                  dt        |             | j                   j                  t        j                  j                  d       y )Nexampler   )r   r	   rootjoinpathr;   r
   r   
startswithr!   rE   insertr   callbackpop)r0   filenamepkg_filefiles       r   _fixture_on_pathzZipFixtures._fixture_on_pathe  s    ??499-66x@~~++I,=,=h,GHyy##I.9		9.3t9%a0r2   c                     t        j                         | _        | j                  | j                  j                         y r   )r*   r+   r   r-   r.   r/   s    r   r1   zZipFixtures.setUpl  s(    #--/,,-r2   N)r3   r4   r5   r   r   r1   r6   r2   r   r   r   a  s    %D1.r2   r   c                        fd}|S )z,Run test method with a series of parameters.c                 F     t        j                          fd       }|S )Nc                 t    D ]&  } | j                   di |5   | fi | d d d        ( y # 1 sw Y   3xY w)Nr6   )subTest)r0   argsargs_setfuncs     r   _innerz-parameterize.<locals>.wrapper.<locals>._innerv  sJ      '!T\\)D) '&&' ''' 's   
.7	)	functoolswraps)r   r   r   s   ` r   wrapperzparameterize.<locals>.wrapperu  s%    			' 
	'
 r2   r6   )r   r   s   ` r   parameterizer   r  s     Nr2   )4r   r!   rX   r   r   r   r   r   r*   test.support.os_helperr   test.supportr   r   r   r   	importlibr   getattrImportErrorAttributeErrorimportlib_resourcesrJ   r   r   r   r&   r(   r8   rC   rL   r_   rd   rg   rj   rr   rv   rz   r}   createregistryr   r   registerr   rU   r   r   r   r   r   r   r6   r2   r   <module>r      s   	 
        . &  ,#IwIy!
       % %- -?h ?F F'*)W '*T=G =Cy' C*6 6%<G %<P Ry'  RFQi Q<K	7 K4=)W =, ||S!   cJ K kkFS S
)
 . . . w
 	^$ ,+,s   F F%$F%