
    dafc                        d dl mZ d dlmZmZ d dlmZmZ d dlZd dl	Z	d dl
Z
d dlm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  G d	 d
ej0                        Z G d dej0                        Z G d dej0                        Z G d dej0                        Z G d dej0                        Zd Zedk(  r ej@                          yy)    )Path)unloadCleanImport)check_warningsignore_warningsN)spec_from_file_location)DirsOnSysPath)FakePath)uncachec                   T    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zy)PkgutilTestsc                     t        j                         | _        | j                  t        j
                  | j                         t        j                  j                  d| j                         y Nr   )	tempfilemkdtempdirname
addCleanupshutilrmtreesyspathinsertselfs    ,/root/Python-3.12.4/Lib/test/test_pkgutil.pysetUpzPkgutilTests.setUp   s>    '')t||44<<(    c                 &    t         j                  d= y r   )r   r   r   s    r   tearDownzPkgutilTests.tearDown    s    HHQKr   c                 T   d}d}t         j                  j                  | j                  |      }t        j                  |       t        t         j                  j                  |d      d      }|j                          t        t         j                  j                  |d      d      }|j                  |       |j                          t        j                  t         j                  j                  |d             t        t         j                  j                  |dd      d      }|j                  |       |j                          t        j                  |d      }| j                  ||       t        j                  |d      }| j                  ||       t        j                  |= y )Ntest_getdata_filesys%   Hello, world!
Second line
Third line__init__.pywbres.txtsubsub/res.txt)osr   joinr   mkdiropenclosewritepkgutilget_dataassertEqualr   modules)r   pkgRESOURCE_DATApackage_dirfres1res2s          r   r!   z!PkgutilTests.test_getdata_filesys#   s(   $ D ggll4<<5
k=94@		k95t<			
k512k5)<dC			 Y/}-]3}-KKr   c                 (   d}d}d}t         j                  j                  | j                  |      }t	        j
                  |d      }|j                  |dz   d       |j                  |dz   |       |j                  |dz   |       |j                          t        j                  j                  d	|       t        j                  |d
      }| j                  ||       t        j                  |d      }| j                  ||       g }t        j                  |g      D ]=  }	| j                  |	t        j                         |j!                  |	j"                         ? | j                  |dg       t        j                  d	= t        j$                  |= y )Ntest_getdata_zipfile.ziptest_getdata_zipfiler"   w/__init__.py /res.txtz/sub/res.txtr   r%   r'   )r(   r   r)   r   zipfileZipFilewritestrr,   r   r   r.   r/   r0   iter_modulesassertIsInstance
ModuleInfoappendnamer1   )
r   zipr2   r3   zip_filezr6   r7   names
moduleinfos
             r   r:   z!PkgutilTests.test_getdata_zipfile@   sN   ($ D 77<<c2OOHc* 	


3',	

3#]3	

3'7		 	8$Y/}-]3}-!..z: 	*J!!*g.@.@ALL)	* 	!7 89HHQKKKr   c                    d}d}d}t         j                  j                  | j                  |      }t	        j
                  |d      }|j                  |dz   d       |j                  |dz   |       |j                          t        j                  j                  d|       	 t        j                  |d	      }| j                  ||       g }t        j                  t        |      g      D ]=  }| j                  |t        j                          |j#                  |j$                         ? | j                  ||g       t        j                  d= t        j&                  j)                  |d        d
}	| j+                  t,        |	      5  t/        t        j                  d             d d d        y # t        j                  d= t        j&                  j)                  |d        w xY w# 1 sw Y   y xY w)Nr9   r:   r"   r;   r<   r=   r>   r   r%   z9path must be None or list of paths to look for modules ininvalid_path)r(   r   r)   r   r?   r@   rA   r,   r   r   r.   r/   r0   rB   r
   rC   rD   rE   rF   r1   popassertRaisesRegex
ValueErrorlist)
r   rG   r2   r3   rH   rI   resrJ   rK   expected_msgs
             r   test_issue44061_iter_modulesz)PkgutilTests.test_issue44061_iter_modulesc   s   ($ D 77<<c2OOHc* 	


3',	

3#]3		 	8$	'""3	2CS-0 E%22HX4F3GH .
%%j'2D2DEZ__-. USE*KKOOC& S##J= 	7%%n56	7 	7 KKOOC&	7 	7s   "BF/ G%/3G"%G.c                 6   d}t         j                  j                  | j                  |      }t        j                  |d       | j                  t         j                  |       t        j                  | j                  g      D ]  }| j                  d        y )Nunreadable_packager   )r   zunexpected package found)
r(   r   r)   r   r*   r   rmdirr.   walk_packagesfail)r   package_namedts       r   test_unreadable_dir_on_syspathz+PkgutilTests.test_unreadable_dir_on_syspath   sm    +GGLL|4 	A!$&&T\\N; 	2AII01	2r   c                 ~   d}t         j                  j                  | j                  |      }t        j                  |       t        t         j                  j                  |d      d      }|j                          t        j                  t         j                  j                  |d             t        t         j                  j                  |dd      d      }|j                          t        t         j                  j                  |dd      d      }|j                          d}t         j                  j                  | j                  |      }t        j                  |       t        t         j                  j                  |d      d      }|j                          t        j                  t         j                  j                  |d             t        t         j                  j                  |dd      d      }|j                          t        t         j                  j                  |dd      d      }|j                          g d}t        j                  | j                  g      D cg c]  }|d   	 }}| j                  ||       |D ]%  }	|	j                  d      rt        j                  |	= ' y c c}w )	Ntest_walkpackages_filesysr#   r$   r&   zmod.py)r&   zsub.test_walkpackages_filesysz!sub.test_walkpackages_filesys.modr_   ztest_walkpackages_filesys.subz!test_walkpackages_filesys.sub.mod   mod)r(   r   r)   r   r*   r+   r,   r.   rX   r0   endswithr   r1   )
r   pkg1pkg1_dirr5   pkg2pkg2_direxpectedeactualr2   s
             r   r_   z&PkgutilTests.test_walkpackages_filesys   s   *77<<d3
h6=		
h./h}=tD		hx8$?		 77<<d3
h6=		
h(CDEh(C]SUYZ		h(CXNPTU		
  '44dll^DE!1EE* 	!C||E"C 	! Fs   /J:c                    d}d}d}t         j                  j                  | j                  |      }t	        j
                  |d      }|j                  |dz   d       |j                  |dz   |z   dz   d       |j                  |dz   |z   dz   d       |j                  |dz   d       |j                  |dz   |z   dz   d       |j                  |dz   |z   dz   d       |j                          t        j                  j                  d	|       g d
}t        j                  |g      D cg c]  }|d   	 }}| j                  ||       t        j                  d	= |D ]%  }	|	j                  d      rt        j                  |	= ' yc c}w )zBTests the same as test_walkpackages_filesys, only with a zip file.ztest_walkpackages_zipfile.ziptest_walkpackages_zipfiler&   r;   r<   r=   /z/mod.pyr   )r&   zsub.test_walkpackages_zipfilez!sub.test_walkpackages_zipfile.modrk   ztest_walkpackages_zipfile.subz!test_walkpackages_zipfile.sub.modr`   ra   N)r(   r   r)   r   r?   r@   rA   r,   r   r   r.   rX   r0   rb   r1   )
r   rG   rc   re   rH   rI   rg   rh   ri   r2   s
             r   rk   z&PkgutilTests.test_walkpackages_zipfile   sd    .*77<<c2OOHc*	

4.("-	

4#:$~5r:	

4#:$y0"5	

4.("-	

4#:$~5r:	

4#:$y0"5		8$
  '44hZ@A!1AA*HHQK 	!C||E"C 	!	 Bs   )Fc                 D   d}| j                  t        t        f      5  t        t	        j
                  |             d d d        d}| j                  t        t        f      5  t        t	        j
                  |             d d d        y # 1 sw Y   NxY w# 1 sw Y   y xY w)Ntest_dirs   test_dir)assertRaises	TypeErrorrP   rQ   r.   rX   )r   	str_inputbytes_inputs      r   2test_walk_packages_raises_on_string_or_bytes_inputz?PkgutilTests.test_walk_packages_raises_on_string_or_bytes_input   s    		:67 	3&&y12	3 "	:67 	5&&{34	5 	5		3 	3	5 	5s   B
"B
BBc                    dd l }dd l}dt        fdt        j                  fdt        j                  j                  fd|fd|fd|j
                  fd|j
                  fd	|j
                  j                  fd
|j
                  j                  fd|j
                  j                  j                  fd|j
                  j                  j                  fdt        fdt        fdt        j                  fdt        j                  fdt        fdt        fdt        j                  ff}d t        fdt        fdt        fdt        fdt        fdt        fdt        fdt        fdt        fdt        fdt        fdt        fdt        fd t        fd!t        fd"t        fd#t        ff}d$}|D ]  }t        j                  j                  | j                   |      }	 t        j"                  |d%       t        j                  j                  |d&      }t'        |d'      5 }|j)                  d       |j+                          d d d        t-        j.                          t-        j0                  |      }|||ffz  }t3        |      dkD  s||d d( t        ffz  } |d)t        ffz  }|D ]G  \  }	}
| j5                  |	*      5  t7        j8                  |	      }| j;                  ||
       d d d        I |D ]O  \  }	}| j5                  |	*      5  | j=                  |      5  t7        j8                  |	       d d d        d d d        Q y # t$        $ r Y w xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   =xY w# 1 sw Y   xY w)+Nr   r(   zos.pathzos.path:pathseploggingzlogging:zlogging.handlerszlogging.handlers:zlogging.handlers:SysLogHandlerzlogging.handlers.SysLogHandlerz(logging.handlers:SysLogHandler.LOG_ALERTz(logging.handlers.SysLogHandler.LOG_ALERTzbuiltins.intzbuiltins:intzbuiltins.int.from_byteszbuiltins:int.from_byteszbuiltins.ZeroDivisionErrorzbuiltins:ZeroDivisionErrorzos:pathr`   g       @Tr=   z?abczabc/foofoozos.foozos.foo:zos.pth:pathsepzlogging.handlers:NoSuchHandlerz,logging.handlers:SysLogHandler.NO_SUCH_VALUEz,logging.handlers.SysLogHandler.NO_SUCH_VALUEZeroDivisionErrorzos.path.9abc9abc)	u	   वमस   é   Èu   안녕하세요u   さよならu   ありがとうu   Хорошоu   спасибоu   现代汉语常用字表exist_okr#   r;   u   ०वमस)s)ru   logging.handlersr(   r   pathsephandlersSysLogHandler	LOG_ALERTint
from_bytesrw   rp   rP   ImportErrorAttributeErrorr)   r   makedirsUnicodeEncodeErrorr+   r-   flush	importlibinvalidate_cachesimport_modulelensubTestr.   resolve_namer0   ro   )r   ru   success_casesfailure_casesunicode_wordsuwr[   r5   ra   r~   rg   oexcs                r   test_name_resolutionz!PkgutilTests.test_name_resolution   si    2J 0 !!1!12 '"2"23-w/?/?/M/MN-w/?/?/M/MN7  ..88:7  ..88:S!S!&7&7)+<=)+<= )
0 9	N)9Z 
#K ~&${+-~>;^L;^L +.Z(Z #
,M   	9BT\\2.AA-
 Q.Aa 	
 '')))"-Cb#YZ'M2w{"Sb';!7!88%	9* 	4jABB( 	.KAx" .((+  H-. .	.
 $ 	,FAs" ,&&s+ ,((+,, ,	,1 ' 
 . ., ,, ,sN   L3"M,(M8M(
M M(3	M ?M M	M	M%!M((M1	c                    t         j                  j                  t         j                  j                  t              dd      }t        dd      5  t        |      5  | j                  t        j                  d      d       d d d        d d d        t        dd      5  t        |      5  | j                  t        j                  d      d       d d d        d d d        t        dd      5  t        |      5  | j                  t        j                  d      d	       | j                  t        j                  d      d       | j                  t        j                  d      d	       d d d        d d d        t        dd      5  t        |      5  | j                  t        j                  d      d	       | j                  t        j                  d      d       | j                  t        j                  d      d	       d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   ]xY w# 1 sw Y   bxY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   ^xY w# 1 sw Y   y xY w)
Ntest_importdatapackage3zpackage3.submodulezpackage3.submodule.attr	submodulezpackage3.submodule:attrzpackage3:submodule.attrrebound
r(   r   r)   r   __file__r   r	   r0   r.   r   r   r   s     r   %test_name_resolution_import_rebindingz2PkgutilTests.test_name_resolution_import_rebindingE  s    ww||BGGOOH5}fMZ!56 	[d8K 	[W112KLkZ	[ 	[Z!56 	[d8K 	[W112KLkZ	[ 	[Z!56 	Yd8K 	YW112KLiXW112KLkZW112KLiX	Y 	Y Z!56 	Yd8K 	YW112KLiXW112KLkZW112KLiX	Y 	Y 	Y	[ 	[ 	[ 	[	[ 	[ 	[ 	[	Y 	Y 	Y 	Y	Y 	Y 	Y 	Y   H&HHH7)&H*H7+I7A0I'II(A0I?I(H	HH'*H4	/H77II		III%	!I((I1c                    t         j                  j                  t         j                  j                  t              dd      }t        dd      5  t        |      5  | j                  t        j                  d      d       d d d        d d d        t        dd      5  t        |      5  | j                  t        j                  d      d       d d d        d d d        t        dd      5  t        |      5  | j                  t        j                  d      d	       | j                  t        j                  d      d       | j                  t        j                  d      d       d d d        d d d        t        dd      5  t        |      5  | j                  t        j                  d      d	       | j                  t        j                  d      d       | j                  t        j                  d      d       d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   ]xY w# 1 sw Y   bxY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   ^xY w# 1 sw Y   y xY w)
Nr   r   package4zpackage4.submodulezpackage4.submodule.attrr   zpackage4.submodule:attrzpackage4:submodule.attroriginr   r   s     r   &test_name_resolution_import_rebinding2z3PkgutilTests.test_name_resolution_import_rebinding2V  s   ww||BGGOOH5}fMZ!56 	[d8K 	[W112KLkZ	[ 	[Z!56 	[d8K 	[W112KLkZ	[ 	[Z!56 	[d8K 	[W112KLhWW112KLkZW112KLkZ	[ 	[ Z!56 	[d8K 	[W112KLhWW112KLkZW112KLkZ	[ 	[ 	[	[ 	[ 	[ 	[	[ 	[ 	[ 	[	[ 	[ 	[ 	[	[ 	[ 	[ 	[r   N)__name__
__module____qualname__r   r   r!   r:   rT   r]   r_   rk   rs   r   r   r    r   r   r   r      sF    )
:!F%7N	2&!P!!F5Y,vY"[r   r   c                   P    e Zd Z G d de      Z G d de      Zd Zd Zd Zd Z	y	)
PkgutilPEP302Testsc                       e Zd Zd Zd Zd Zy)PkgutilPEP302Tests.MyTestLoaderc                      y Nr   )r   specs     r   create_modulez-PkgutilPEP302Tests.MyTestLoader.create_modulei  s    r   c                 \    |j                   j                  dd      dz   |j                   d<   y )Nloadsr   r`   )__dict__get)r   ra   s     r   exec_modulez+PkgutilPEP302Tests.MyTestLoader.exec_modulel  s&    $'LL$4$4Wa$@1$DCLL!r   c                      y)NHello, world!r   r   s     r   r/   z(PkgutilPEP302Tests.MyTestLoader.get_datap  s    "r   N)r   r   r   r   r   r/   r   r   r   MyTestLoaderr   h  s    		E	#r   r   c                       e Zd ZddZy)!PkgutilPEP302Tests.MyTestImporterNc                 v    t         j                         }t        |d|j                  j                  z  |g       S )Nz<%s>)loadersubmodule_search_locations)r   r   r   	__class__r   )r   fullnamer   targetr   s        r   	find_specz+PkgutilPEP302Tests.MyTestImporter.find_spect  s;    '446F*8+1F4D4D4M4M+M28FHJ Jr   )NN)r   r   r   r   r   r   r   MyTestImporterr   s  s    	Jr   r   c                 `    t         j                  j                  d| j                                y r   )r   	meta_pathr   r   r   s    r   r   zPkgutilPEP302Tests.setUp{  s    Q 3 3 56r   c                 &    t         j                  d= y r   )r   r   r   s    r   r   zPkgutilPEP302Tests.tearDown~  s    MM!r   c                 r    | j                  t        j                  dd      d       t        j                  d= y )Nrv   dummyr   )r0   r.   r/   r   r1   r   s    r   test_getdata_pep302z&PkgutilPEP302Tests.test_getdata_pep302  s+    ))%9?KKKr   c                     dd l }| j                  |j                  d       | j                  t        j                  dd      d       | j                  |j                  d       t
        j                  d= y )Nr   r`   rv   r   r   )rv   r0   r   r.   r/   r   r1   )r   rv   s     r   test_alreadyloadedz%PkgutilPEP302Tests.test_alreadyloaded  sX     	A&))%9?KA&KKr   N)
r   r   r   objectr   r   r   r   r   r   r   r   r   r   r   f  s0    	#v 	#J J7
r   r   c                   *    e Zd Zd Zd Zd Zd Zd Zy)ExtendPathTestsc                 z   t        j                         }t        j                  j	                  d|       t
        j                  j                  ||      }t        j                  |       t        t
        j                  j                  |d      d      5 }|j                  d       d d d        |S # 1 sw Y   |S xY w)Nr   r#   r;   zKfrom pkgutil import extend_path
__path__ = extend_path(__path__, __name__)
)
r   r   r   r   r   r(   r)   r*   r+   r-   )r   pkgnamer   pkgdirfls        r   create_initzExtendPathTests.create_init  s    ""$7#gw/
"'',,v}5s; 	frHHde	f 	f s   B00B:c                     t         j                  j                  |||dz         }t        |d      5 }t	        dj                  |      |       d d d        y # 1 sw Y   y xY w)N.pyr;   zvalue={})file)r(   r   r)   r+   printformat)r   r   r   submodule_namevaluemodule_namer   s          r   create_submodulez ExtendPathTests.create_submodule  sS    ggll7G^e5KL+s# 	5r*##E*4	5 	5 	5s   AA c           
         d}| j                  |      }| j                  |      }| j                  ||dd       | j                  ||dd       dd l}dd l}| j	                  |j
                  j                  d       | j	                  |j                  j                  d       | j	                  t        |j                        t        t        j                  j                  ||      t        j                  j                  ||      g             t        j                  |       t        j                  |       t        j                  d= t        j                  d= t        j                   d= t        j                   d= t        j                   d= y )Nrv   barr   bazr`   foo.barfoo.baz)r   r   foo.barfoo.bazr0   r   r   r   sorted__path__r(   r   r)   r   r   r   r1   r   r   	dirname_0	dirname_1rv   s        r   test_simplezExtendPathTests.test_simple  s'   $$W-	$$W-	i%;i%;** 	-i!A!#i!A!C D	E
 	i i HHQKHHQKKKKK	"KK	"r   c                    t         j                  }t         j                  }d}d}| j                  |      }t        j
                  j                  ||      }dj                  ||      }t        j                  j                  |d        t        j                  j                  |d        	 | j                  |||d       t        j                  |       t         ||            } ||      }	|D ]  }
|
j                  |      }|j                   }	 |j                   }| j%                  |
t        j&                  j(                         | j+                  |
|	       | j%                  |t        j&                  j,                         | j/                  |
j                  |              | j1                  t2              5  t         |d             d d d        | j1                  t2              5  t         |d             d d d        t5        j6                  |       t        j
                  d= 	 t        j                  d= t        j                  d= y # t"        $ r Y <w xY w# 1 sw Y   xY w# 1 sw Y   oxY w# t8        $ r Y y w xY w# t5        j6                  |       t        j
                  d= 	 t        j                  d= t        j                  d= w # t8        $ r Y w w xY wxY w)Nspameggsz{}.{}r   zinvalid.modulez.spamz	spam.eggs)r.   iter_importersget_importerr   r(   r   r)   r   r   r1   rN   r   r   r   rQ   r   r   r   rC   	machinery
FileFinderr0   SourceFileLoaderassertIsNonero   r   r   r   KeyError)r   r   r   r   modnamer   pathitemr   	importersexpected_importerfinderr   r   s                r   test_iter_importersz#ExtendPathTests.test_iter_importers  se    //++""7+77<<1>>'73$'&"	!!'7GQ?##H-^H56I ,X 6# =''1#]]F
 %%fi.A.A.L.LM  ):;%%f&/&9&9&J&JL!!&"2"27";<= "";/ 7^$4567 "";/ .^G,-. MM'"KK'KK,) &  7 7. .   MM'"KK'KK, s   )A$J I
BJ 7I	J &I&8J '"I2 
	IJ IJ I#J &I/+J 2	I>=I>'K)"KK	KKKKc           
         d}| j                  |      }| j                  |      }| j                  ||dd       t        j                  t        j                  j                  ||d             | j                  ||dd       dd l}dd l}| j                  |j                  j                  d       | j                  |j                  j                  d       | j                  t        |j                        t        t        j                  j                  ||      t        j                  j                  ||      g             t        j                  |       t        j                  |       t         j                  d= t         j                  d= t         j"                  d= t         j"                  d= t         j"                  d= y )	Nrv   r   r   r#   r   r`   r   r   )r   r   r(   unlinkr   r)   r   r   r0   r   r   r   r   r   r   r   r   r1   r   s        r   test_mixed_namespacez$ExtendPathTests.test_mixed_namespace  sD   $$W-	$$W-	i%;
		"'',,y'=ABi%;** 	-i!A!#i!A!C D	E
 	i i HHQKHHQKKKKK	"KK	"r   N)r   r   r   r   r   r   r   r   r   r   r   r   r     s    	5
#:-`#r   r   c                   $    e Zd Zd Zd Zd Zd Zy)NestedNamespacePackageTestc                 f    t        j                         | _        t        j                  d d  | _        y r   )r   r   basedirr   r   old_pathr   s    r   r   z NestedNamespacePackageTest.setUp  s!    '')r   c                 |    | j                   t        j                  d d  t        j                  | j
                         y r   )r  r   r   r   r   r  r   s    r   r   z#NestedNamespacePackageTest.tearDown  s#    mmdll#r   c                    |j                  dd      \  }}t        j                  j                  | j                  |j                  dt        j                  j                              }t        j                  |d       t        t        j                  j                  ||dz         d      5 }|j                  |       d d d        y # 1 sw Y   y xY w)N.r`   Tr{   r   r;   )
rsplitr(   r   r)   r  replacesepr   r+   r-   )r   rF   contentsbasefinal	base_pathr5   s          r   r   z(NestedNamespacePackageTest.create_module  s    kk#q)eGGLLt||C/MN	
I-"'',,y%%-8#> 	!GGH	 	 	s   ,CCc                 p   d}| j                  d|       | j                  d|       | j                  d|       | j                  d|       | j                  dd       | j                  dd	       t        j                  j                  d
t        j                  j                  | j                  d             t        j                  j                  d
t        j                  j                  | j                  d             d
d l}| j                  t        d       | j                  t        |j                        d       d
d l}| j                  t        d       | j                  t        |j                  j                        d       d
dlm} d
dlm} | j                  |d       | j                  |d       y )NzBimport pkgutil; __path__ = pkgutil.extend_path(__path__, __name__)za.pkg.__init__zb.pkg.__init__za.pkg.subpkg.__init__zb.pkg.subpkg.__init__za.pkg.subpkg.czc = 1zb.pkg.subpkg.dzd = 2r   abr2      z
pkg.subpkg)c)r[   r`   )r   r   r   r   r(   r)   r  r2   r   r   r0   r   r   
pkg.subpkgsubpkgpkg.subpkg.cr  pkg.subpkg.dr[   )r   pkgutil_boilerplater2   r  r[   s        r   test_nestedz&NestedNamespacePackageTest.test_nested!  sC   A 	 	+-@A+-@A24GH24GH+W5+W5277<<c:;277<<c:;&S\\*A.-SZZ00115""AAr   N)r   r   r   r   r   r   r  r   r   r   r   r     s    $$r   r   c                       e Zd Z ej                  e dk(  d       ee      d               Z ee      d        Z ee      d        Z	 ee      d        Z
d Zd	 Z ee      d
        Zd Zd Zd Zy)ImportlibMigrationTests__main__znot compatible with __main__)categoryc                 v    t         }b 	 | j                  t        j                  t                     |a y # |a w xY wr   )
__loader__assertIsNotNoner.   
get_loaderr   )r   this_loaders     r   0test_get_loader_handles_missing_loader_attributezHImportlibMigrationTests.test_get_loader_handles_missing_loader_attribute>  s5     !	%  !3!3H!=>$JJs   (4 8c                     d} t        t              |      }|`t        |      5  |t        j                  |<   t        j                  |      }d d d        | j                         y # 1 sw Y   xY wNr   typer   __spec__r   r1   r.   r  r   r   rF   ra   r   s       r   .test_get_loader_handles_missing_spec_attributezFImportlibMigrationTests.test_get_loader_handles_missing_spec_attributeI  sf    d3ioL 	. #CKK''-F	. 	&!	. 	.s   )A((A1c                     d} t        t              |      }d |_        t        |      5  |t        j                  |<   t        j                  |      }d d d        | j                         y # 1 sw Y   xY wr#  r$  r'  s       r   +test_get_loader_handles_spec_attribute_nonezCImportlibMigrationTests.test_get_loader_handles_spec_attribute_noneS  sh    d3io 	. #CKK''-F	. 	&!	. 	.s   )A--A6c                     d}d t         j                  |<   	 t        j                  |      }t         j                  |= | j	                  |       y # t         j                  |= w xY wNztotally bogus)r   r1   r.   r  r   r   rF   r   s      r   #test_get_loader_None_in_sys_modulesz;ImportlibMigrationTests.test_get_loader_None_in_sys_modules]  sT     D	"''-FD!&! D!s   A A"c                     t        dt        f      5  t        j                  d      }d d d        | j	                         y # 1 sw Y   xY w)Nz.*\bpkgutil.get_loader\b.*r   )r   DeprecationWarningr.   r  r  r   rR   s     r   test_get_loader_is_deprecatedz5ImportlibMigrationTests.test_get_loader_is_deprecatedg  sJ    *,>?
 	, $$U+C	, 	S!		, 	,   AAc                     t        dt        f      5  t        j                  d      }d d d        | j	                         y # 1 sw Y   xY w)Nz.*\bpkgutil.find_loader\b.*r   )r   r0  r.   find_loaderr  r1  s     r   test_find_loader_is_deprecatedz6ImportlibMigrationTests.test_find_loader_is_deprecatedn  sJ    +-?@
 	- %%e,C	- 	S!		- 	-r3  c                 T    d}t        j                  |      }| j                  |       y r,  )r.   r5  r   r-  s      r   test_find_loader_missing_modulez7ImportlibMigrationTests.test_find_loader_missing_moduleu  s%    $$T*&!r   c                     t               5 }| j                  t        j                  d             | j	                  t        |j                        d       d d d        y # 1 sw Y   y xY w)Nz*??r   )r   r   r.   r   r0   r   warnings)r   r;   s     r   "test_get_importer_avoids_emulationz:ImportlibMigrationTests.test_get_importer_avoids_emulation{  sP     	1g2259:S_a0	1 	1 	1s   A
AA'c                     	 t        j                  t        d             y # t        $ r | j	                  d       Y y w xY w)Nz/homez3Unexpected AttributeError when calling get_importer)r.   r   r   r   rY   r   s    r   test_issue44061z'ImportlibMigrationTests.test_issue44061  s8    	M  g/ 	MIIKL	Ms   ! >>c                     t               5 }t        j                         D ]  } | j                  t	        |j
                        d       d d d        y # 1 sw Y   y xY wr   )r   r.   r   r0   r   r:  )r   r;   importers      r   $test_iter_importers_avoids_emulationz<ImportlibMigrationTests.test_iter_importers_avoids_emulation  sK     	1#224::S_a0	1 	1 	1s   ?AAN)r   r   r   unittestskipIfr   r0  r!  r(  r*  r.  r2  r6  r8  r;  r=  r@  r   r   r   r  r  9  s    
 X__X+-KL01% 2 M% 01" 2" 01" 2" 01" 2""" 01" 2"
1M1r   r  c                  j    dd l } dd l}| j                  j                           |j                          y r   )	zipimportr   _zip_directory_cacheclearr   )rD  r   s     r   tearDownModulerG    s(    ""((*I!r   r  )!pathlibr   test.support.import_helperr   r   test.support.warnings_helperr   r   rA  r   r   importlib.utilr   r.   r(   os.pathr   r   r?   r	   test.support.os_helperr
   test.test_importlib.utilr   TestCaser   r   r   r   r  rG  r   mainr   r   r   <module>rQ     s     : H  
  2  	     4 + ,J[8$$ J[Z
(** (Zx#h'' x#z&!2!2 &RQ1h// Q1h" zHMMO r   