
    0hhh                        S SK Jr  S SKJrJr  S SKJrJr  S SKrS SK	r	S SK
r
S SKJr  S SKrS SKrS SKrS SKrS SKrS SKrS SKJr  S SKJr  S SKJr   " S	 S
\R0                  5      r " S S\R0                  5      r " S S\R0                  5      r " S S\R0                  5      r " S S\R0                  5      rS r\S:X  a  \R@                  " 5         gg)    )Path)unloadCleanImport)check_warningsignore_warningsN)spec_from_file_location)DirsOnSysPath)FakePath)uncachec                   \    \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rS rS rS rSrg)PkgutilTests   c                     [         R                  " 5       U l        U R                  [        R
                  U R                  5        [        R                  R                  SU R                  5        g Nr   )	tempfilemkdtempdirname
addCleanupshutilrmtreesyspathinsertselfs    :/opt/python-3.13.8/usr/lib/python3.13/test/test_pkgutil.pysetUpPkgutilTests.setUp   s>    '')t||44<<(    c                 &    [         R                  S	 g r   )r   r   r   s    r   tearDownPkgutilTests.tearDown    s    HHQKr   c                 X   SnSn[         R                  R                  U R                  U5      n[         R                  " U5        [        [         R                  R                  US5      S5      nUR                  5         [        [         R                  R                  US5      S5      nUR                  U5        UR                  5         [         R                  " [         R                  R                  US5      5        [        [         R                  R                  USS5      S5      nUR                  U5        UR                  5         [        R                  " US5      nU R                  XR5        [        R                  " US5      nU R                  Xb5        [        R                  U	 g )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$   !PkgutilTests.test_getdata_filesys#   s$   $ D ggll4<<5
k=94@		k95t<			
k512k5)<dC			 Y/-]3-KKr   c                 0   SnSnSn[         R                  R                  U R                  U5      n[        R
                  " US5      nUR                  US-   S5        UR                  US-   U5        UR                  US-   U5        UR                  5         [        R                  R                  S	U5        [        R                  " US
5      nU R                  Xc5        [        R                  " US5      nU R                  Xs5        / n[        R                  " U/5       H>  n	U R                  U	[        R                  5        UR!                  U	R"                  5        M@     U R                  US/5        [        R                  S		 [        R$                  U	 g )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   r1   r2   r3   iter_modulesassertIsInstance
ModuleInfoappendnamer4   )
r   zipr5   r6   zip_filezr9   r:   names
moduleinfos
             r   r>   !PkgutilTests.test_getdata_zipfile@   sE   ($ 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                    SnSnSn[         R                  R                  U R                  U5      n[        R
                  " US5      nUR                  US-   S5        UR                  US-   U5        UR                  5         [        R                  R                  SU5         [        R                  " US	5      nU R                  Xc5        / n[        R                  " [        U5      /5       H>  nU R                  U[        R                   5        UR#                  UR$                  5        M@     U R                  Xr/5        [        R                  S	 [        R&                  R)                  US 5        S
n	U R+                  [,        U	5         [/        [        R                  " S5      5        S S S 5        g ! [        R                  S	 [        R&                  R)                  US 5        f = f! , (       d  f       g = f)Nr=   r>   r%   r?   r@   rA   rB   r   r(   z9path must be None or list of paths to look for modules ininvalid_path)r+   r   r,   r   rC   rD   rE   r/   r   r   r1   r2   r3   rF   r
   rG   rH   rI   rJ   r4   popassertRaisesRegex
ValueErrorlist)
r   rK   r5   r6   rL   rM   resrN   rO   expected_msgs
             r   test_issue44061_iter_modules)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__- I UE*KKOOC& S##J=%%n56 >= KKOOC& >=s   #BF3 
 G)33G&)
G7c                 8   Sn[         R                  R                  U R                  U5      n[         R                  " US5        U R                  [         R                  U5        [        R                  " U R                  /S9 H  nU R                  S5        M     g )Nunreadable_packager   )r   zunexpected package found)
r+   r   r,   r   r-   r   rmdirr1   walk_packagesfail)r   package_namedts       r   test_unreadable_dir_on_syspath+PkgutilTests.test_unreadable_dir_on_syspath   sh    +GGLL|4 	A!$&&T\\N;AII01 <r   c                    Sn[         R                  R                  U R                  U5      n[         R                  " U5        [        [         R                  R                  US5      S5      nUR                  5         [         R                  " [         R                  R                  US5      5        [        [         R                  R                  USS5      S5      nUR                  5         [        [         R                  R                  USS5      S5      nUR                  5         Sn[         R                  R                  U R                  U5      n[         R                  " U5        [        [         R                  R                  US5      S5      nUR                  5         [         R                  " [         R                  R                  US5      5        [        [         R                  R                  USS5      S5      nUR                  5         [        [         R                  R                  USS5      S5      nUR                  5         / SQn[        R                  " U R                  /5       Vs/ s H  owS   PM	     nnU R                  X5        U H,  n	U	R                  S5      (       a  M  [        R                  U		 M.     g s  snf )	Ntest_walkpackages_filesysr&   r'   r)   zmod.py)r)   zsub.test_walkpackages_filesysz!sub.test_walkpackages_filesys.modrf   ztest_walkpackages_filesys.subz!test_walkpackages_filesys.sub.mod   mod)r+   r   r,   r   r-   r.   r/   r1   r^   r3   endswithr   r4   )
r   pkg1pkg1_dirr8   pkg2pkg2_direxpectedeactualr5   s
             r   rf   &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D!1DE*C||E""C   Fs   4Kc                 *   SnSnSn[         R                  R                  U R                  U5      n[        R
                  " US5      nUR                  US-   S5        UR                  US-   U-   S-   S5        UR                  US-   U-   S-   S5        UR                  US-   S5        UR                  US-   U-   S-   S5        UR                  US-   U-   S-   S5        UR                  5         [        R                  R                  S	U5        / S
Qn[        R                  " U/5       Vs/ s H  owS   PM	     nnU R                  X5        [        R                  S		 U H,  n	U	R                  S5      (       a  M  [        R                  U		 M.     gs  snf )zBTests the same as test_walkpackages_filesys, only with a zip file.ztest_walkpackages_zipfile.ziptest_walkpackages_zipfiler)   r?   r@   rA   /z/mod.pyr   )r)   zsub.test_walkpackages_zipfilez!sub.test_walkpackages_zipfile.modrs   ztest_walkpackages_zipfile.subz!test_walkpackages_zipfile.sub.modrg   rh   N)r+   r   r,   r   rC   rD   rE   r/   r   r   r1   r^   r3   ri   r4   )
r   rK   rj   rl   rL   rM   rn   ro   rp   r5   s
             r   rs   &PkgutilTests.test_walkpackages_zipfile   sa    .*77<<c2OOHc*	

4.("-	

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

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

4.("-	

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

4#:$y0"5		8$
  '44hZ@A@!1@A*HHQKC||E""C  	 Bs   +Fc                 \   SnU R                  [        [        45         [        [        R
                  " U5      5        S S S 5        SnU R                  [        [        45         [        [        R
                  " U5      5        S S S 5        g ! , (       d  f       NT= f! , (       d  f       g = f)Ntest_dirs   test_dir)assertRaises	TypeErrorrU   rV   r1   r^   )r   	str_inputbytes_inputs      r   2test_walk_packages_raises_on_string_or_bytes_input?PkgutilTests.test_walk_packages_raises_on_string_or_bytes_input   sy    		:67&&y12 8 "	:67&&{34 87	 87 87s    B# B
B
B+c                    SS K nSS KnS[        4S[        R                  4S[        R                  R                  4SU4SU4SUR
                  4SUR
                  4S	UR
                  R                  4S
UR
                  R                  4SUR
                  R                  R                  4SUR
                  R                  R                  4S[        4S[        4S[        R                  4S[        R                  4S[        4S[        4S[        R                  44nS [        4S[        4S[        4S[        4S[        4S[        4S[        4S[        4S[        4S[        4S[        4S[        4S[        4S [        4S![        4S"[        4S#[        44nS$nU H  n[        R                  R                  U R                   U5      n [        R"                  " USS%9  [        R                  R                  US&5      n['        US'5       nUR)                  S5        UR+                  5         S S S 5        [,        R.                  " 5         [,        R0                  " U5      nX%U44-  n[3        U5      S:  d  M  X5S S( [        44-  nM     US)[        44-  nU HD  u  pU R5                  U	S*9   [6        R8                  " U	5      nU R;                  X5        S S S 5        MF     U HM  u  pU R5                  U	S*9   U R=                  U5         [6        R8                  " U	5        S S S 5        S S S 5        MO     g ! [$         a     GM  f = f! , (       d  f       GN = f! , (       d  f       M  = f! , (       d  f       NQ= f! , (       d  f       M  = f)+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:pathrg   g       @TrA   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)r   logging.handlersr+   r   pathsephandlersSysLogHandler	LOG_ALERTint
from_bytesr   ry   rU   ImportErrorAttributeErrorr,   r   makedirsUnicodeEncodeErrorr.   r0   flush	importlibinvalidate_cachesimport_modulelensubTestr1   resolve_namer3   rx   )r   r   success_casesfailure_casesunicode_wordsuwra   r8   rh   r   rn   oexcs                r   test_name_resolution!PkgutilTests.test_name_resolution   s/    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  BT\\2.AA-
 Q.Aa	 
 '')))"-C#YZ'M2w{Sb';!7!88%  * 	4jABB(KA"((+  - #" )
 $FA"&&s+((+ , #" $1 ' 
  #" ,+ #"sN   L2	"M*(M4M9M(M92
M M
M	
M%	(
M62M99
N	c                 J   [         R                  R                  [         R                  R                  [        5      SS5      n[        SS5         [        U5         U R                  [        R                  " S5      S5        S S S 5        S S S 5        [        SS5         [        U5         U R                  [        R                  " S5      S5        S S S 5        S S S 5        [        SS5         [        U5         U R                  [        R                  " S5      S	5        U R                  [        R                  " S5      S5        U R                  [        R                  " S5      S	5        S S S 5        S S S 5        [        SS5         [        U5         U R                  [        R                  " S5      S	5        U R                  [        R                  " S5      S5        U R                  [        R                  " S5      S	5        S S S 5        S S S 5        g ! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GNr= f! , (       d  f       GN|= f! , (       d  f       N= f! , (       d  f       GN= f! , (       d  f       N= f! , (       d  f       g = f)
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	   r3   r1   r   r   r   s     r   %test_name_resolution_import_rebinding2PkgutilTests.test_name_resolution_import_rebindingE  s    ww||BGGOOH5}fMZ!56d8KW112KLkZ 9L6Z!56d8KW112KLkZ 9L6Z!56d8KW112KLiXW112KLkZW112KLiX 9L6 Z!56d8KW112KLiXW112KLkZW112KLiX 9L66 9L8K668K8K668K8K66 9L8K66   H*'HH*I*'H<I-I19A3I ,I1JA3JJ
H'	"H**
H9<
I	I
I 
I.	*I11
J 
J	J
J"c                 J   [         R                  R                  [         R                  R                  [        5      SS5      n[        SS5         [        U5         U R                  [        R                  " S5      S5        S S S 5        S S S 5        [        SS5         [        U5         U R                  [        R                  " S5      S5        S S S 5        S S S 5        [        SS5         [        U5         U R                  [        R                  " S5      S	5        U R                  [        R                  " S5      S5        U R                  [        R                  " S5      S5        S S S 5        S S S 5        [        SS5         [        U5         U R                  [        R                  " S5      S	5        U R                  [        R                  " S5      S5        U R                  [        R                  " S5      S5        S S S 5        S S S 5        g ! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GNr= f! , (       d  f       GN|= f! , (       d  f       N= f! , (       d  f       GN= f! , (       d  f       N= f! , (       d  f       g = f)
Nr   r   package4zpackage4.submodulezpackage4.submodule.attrr   zpackage4.submodule:attrzpackage4:submodule.attroriginr   r   s     r   &test_name_resolution_import_rebinding23PkgutilTests.test_name_resolution_import_rebinding2V  s   ww||BGGOOH5}fMZ!56d8KW112KLkZ 9L6Z!56d8KW112KLkZ 9L6Z!56d8KW112KLhWW112KLkZW112KLkZ 9L6 Z!56d8KW112KLhWW112KLkZW112KLkZ 9L66 9L8K668K8K668K8K66 9L8K66r   )r   N)__name__
__module____qualname____firstlineno__r   r!   r$   r>   rY   rc   rf   rs   r|   r   r   r   __static_attributes__ r   r   r   r      sF    )
:!F%7N	2&!P!!F5Y,vY"[r   r   c                   X    \ rS rSr " S S\5      r " S S\5      rS rS rS r	S	 r
S
rg)PkgutilPEP302Testsif  c                   &    \ rS rSrS rS rS rSrg)PkgutilPEP302Tests.MyTestLoaderih  c                     g Nr   )r   specs     r   create_module-PkgutilPEP302Tests.MyTestLoader.create_modulei  s    r   c                 \    UR                   R                  SS5      S-   UR                   S'   g )Nloadsr   rg   )__dict__get)r   rh   s     r   exec_module+PkgutilPEP302Tests.MyTestLoader.exec_modulel  s&    $'LL$4$4Wa$@1$DCLL!r   c                     g)NHello, world!r   r   s     r   r2   (PkgutilPEP302Tests.MyTestLoader.get_datap  s    "r   r   N)r   r   r   r   r   r   r2   r   r   r   r   MyTestLoaderr   h  s    		E	#r   r   c                       \ rS rSrSS jrSrg)!PkgutilPEP302Tests.MyTestImporteris  Nc                 p    [         R                  5       n[        USUR                  R                  -  U/ S9$ )Nz<%s>)loadersubmodule_search_locations)r   r   r   	__class__r   )r   fullnamer   targetr   s        r   	find_spec+PkgutilPEP302Tests.MyTestImporter.find_spect  s;    '446F*8+1F4D4D4M4M+M28FHJ Jr   r   )NN)r   r   r   r   r   r   r   r   r   MyTestImporterr   s  s    	Jr   r   c                 `    [         R                  R                  SU R                  5       5        g r   )r   	meta_pathr   r   r   s    r   r   PkgutilPEP302Tests.setUp{  s    Q 3 3 56r   c                 &    [         R                  S	 g r   )r   r   r   s    r   r!   PkgutilPEP302Tests.tearDown~  s    MM!r   c                 t    U R                  [        R                  " SS5      S5        [        R                  S	 g )Nr   dummyr   )r3   r1   r2   r   r4   r   s    r   test_getdata_pep302&PkgutilPEP302Tests.test_getdata_pep302  s+    ))%9?KKKr   c                     SS K nU R                  UR                  S5        U R                  [        R                  " SS5      S5        U R                  UR                  S5        [
        R                  S	 g )Nr   rg   r   r   r   )r   r3   r   r1   r2   r   r4   )r   r   s     r   test_alreadyloaded%PkgutilPEP302Tests.test_alreadyloaded  sX     	A&))%9?KA&KKr   r   N)r   r   r   r   objectr   r   r   r!   r   r   r   r   r   r   r   r   f  s0    	#v 	#J J7
r   r   c                   >    \ rS rSrS rS rS rS rS rS r	S r
S	rg
)ExtendPathTestsi  c                    [         R                  " 5       n[        R                  R	                  SU5        [
        R                  R                  X!5      n[
        R                  " U5        [        [
        R                  R                  US5      S5       nUR                  S5        S S S 5        U$ ! , (       d  f       U$ = f)Nr   r&   r?   zKfrom pkgutil import extend_path
__path__ = extend_path(__path__, __name__)
)
r   r   r   r   r   r+   r,   r-   r.   r0   )r   pkgnamer   pkgdirfls        r   create_initExtendPathTests.create_init  s    ""$7#g/
"'',,v}5s;rHHde <  <; s   B11
C c                     [         R                  R                  XUS-   5      n[        US5       n[	        SR                  U5      US9  S S S 5        g ! , (       d  f       g = f)N.pyr?   zvalue={})file)r+   r   r,   r.   printformat)r   r   r   submodule_namevaluemodule_namer   s          r   create_submodule ExtendPathTests.create_submodule  sH    ggll7^e5KL+s#r*##E*4 $##s   A
A!c           
         SnU R                  U5      nU R                  U5      nU R                  X!SS5        U R                  X1SS5        SS KnSS KnU R	                  UR
                  R                  S5        U R	                  UR                  R                  S5        U R	                  [        UR                  5      [        [        R                  R                  X!5      [        R                  R                  X15      /5      5        [        R                  " U5        [        R                  " U5        [        R                  S	 [        R                  S	 [        R                   S	 [        R                   S	 [        R                   S	 g )Nr   barr   bazrg   foo.barfoo.baz)r   r   foo.barfoo.bazr3   r   r   r   sorted__path__r+   r   r,   r   r   r   r4   r   r   	dirname_0	dirname_1r   s        r   test_simpleExtendPathTests.test_simple  s   $$W-	$$W-	i%;i%;** 	-i!A!#i!A!C D	E
 	i i HHQKHHQKKKKK	"KK	"r   c                    [         R                  n[         R                  nSnSnU R                  U5      n[        R
                  R                  XS5      nSR                  X45      n[        R                  R                  US 5        [        R                  R                  US 5         U R                  XSUS5        [        R                  " U5        [        U" U5      5      nU" U5      n	U H  n
U
R                  U5      nUR                   n UR                   nU R%                  U
[        R&                  R(                  5        U R+                  X5        U R%                  U[        R&                  R,                  5        U R/                  U
R                  U5      5        M     U R1                  [2        5         [        U" S5      5        S S S 5        U R1                  [2        5         [        U" S5      5        S S S 5        [4        R6                  " U5        [        R
                  S	  [        R                  S	 [        R                  S	 g ! ["         a     GN?f = f! , (       d  f       N= f! , (       d  f       N{= f! [8         a     g f = f! [4        R6                  " U5        [        R
                  S	  [        R                  S	 [        R                  S	 f ! [8         a     f f = f= f)Nspameggsz{}.{}r   zinvalid.modulez.spamz	spam.eggs)r1   iter_importersget_importerr   r+   r   r,   r   r   r4   rS   r   r   r   rV   r   r   r   rG   	machinery
FileFinderr3   SourceFileLoaderassertIsNonerx   r   r   r   KeyError)r   r  r	  r   modnamer   pathitemr   	importersexpected_importerfinderr   r   s                r   test_iter_importers#ExtendPathTests.test_iter_importers  sI    //++""7+77<<1>>'3$'&"	!!'GQ?##H-^H56I ,X 6#''1#]]F
 %%fi.A.A.L.LM  ;%%f&/&9&9&J&JL!!&"2"27";< $ "";/^$456 0 "";/^G,- 0 MM'"KK'KK,) &   0/ 0/   MM'"KK'KK, s   'A$J I
BJ 6IJ %I,7J '"I= 

IJ IJ 
I)%J ,
I:6J =
J
	J
(K)6"KK)
K&#K)%K&&K)c           
      ~   SnU R                  U5      nU R                  U5      nU R                  X!SS5        [        R                  " [        R                  R                  X!S5      5        U R                  X1SS5        SS KnSS KnU R                  UR                  R                  S5        U R                  UR                  R                  S5        U R                  [        UR                  5      [        [        R                  R                  X!5      [        R                  R                  X15      /5      5        [        R                  " U5        [        R                  " U5        [         R                  S	 [         R                  S	 [         R"                  S	 [         R"                  S	 [         R"                  S	 g )	Nr   r   r   r&   r   rg   r   r   )r   r   r+   unlinkr   r,   r   r   r3   r   r   r   r   r   r   r   r   r4   r   s        r   test_mixed_namespace$ExtendPathTests.test_mixed_namespace  s:   $$W-	$$W-	i%;
		"'',,y=ABi%;** 	-i!A!#i!A!C D	E
 	i i HHQKHHQKKKKK	"KK	"r   c                    SnU R                  U5      nU R                  S[        R                  " SS5      5        U R                  S[        R                  " SS5      5        U R                  S[        R                  " SS5      5        U R                  S [        R                  " S S5      5        [        R
                  " U5        [        R                  S	 g )Nr   notalist)notarV   {   r   )r   r3   r1   extend_pathr   r   r   r   )r   r   r  s      r   test_extend_path_argument_types/ExtendPathTests.test_extend_path_argument_types  s    $$W-	 	W%8%8U%KL-w/B/BCWY^/_`g11#u=>w224?@ 	i HHQKr   c                 (   SnU R                  U5      n[        [        R                  R	                  US5      S5       nUR                  SR	                  / SQ5      5        S S S 5        [        R                  " [        R                  S5      nU R                  US S [        R                  5        U R                  US   S5        U R                  US	   S
5        [        R                  " U5        [        R                  S	 g ! , (       d  f       N= f)Nr   zbar.pkgr?   
)r   /foo/bar/bazrA   z#commentr   r   r   r$  r   )r   r.   r+   r   r,   r0   r1   r  r   r3   r   r   )r   r   r  pkg_fileextended_pathss        r   test_extend_path_pkg_files*ExtendPathTests.test_extend_path_pkg_files  s    $$W-	"'',,y)4c:hNN499 &   ; !,,SXXu=,chh7+U3+^< 	i HHQK! ;:s   #D
Dr   N)r   r   r   r   r   r   r  r  r  r   r(  r   r   r   r   r   r     s&    	5
#:-`#:r   r   c                   ,    \ rS rSrS rS rS rS rSrg)NestedNamespacePackageTesti4  c                 h    [         R                  " 5       U l        [        R                  S S  U l        g r   )r   r   basedirr   r   old_pathr   s    r   r    NestedNamespacePackageTest.setUp6  s!    '')r   c                 ~    U R                   [        R                  S S & [        R                  " U R
                  5        g r   )r.  r   r   r   r   r-  r   s    r   r!   #NestedNamespacePackageTest.tearDown:  s#    mmdll#r   c                    UR                  SS5      u  p4[        R                  R                  U R                  UR                  S[        R                  R                  5      5      n[        R                  " USS9  [        [        R                  R                  XTS-   5      S5       nUR                  U5        S S S 5        g ! , (       d  f       g = f)N.rg   Tr   r   r?   )
rsplitr+   r   r,   r-  replacesepr   r.   r0   )r   rJ   contentsbasefinal	base_pathr8   s          r   r   (NestedNamespacePackageTest.create_module>  s    kk#q)GGLLt||C/MN	
I-"'',,y%-8#>!GGH ?>>s   (C
Cc                 p   SnU R                  SU5        U R                  SU5        U R                  SU5        U R                  SU5        U R                  SS5        U R                  SS	5        [        R                  R                  S
[        R                  R                  U R                  S5      5        [        R                  R                  S
[        R                  R                  U R                  S5      5        S
S KnU R                  [        S5        U R                  [        UR                  5      S5        S
S KnU R                  [        S5        U R                  [        UR                  R                  5      S5        S
SKJn  S
SKJn  U R                  US5        U R                  US5        g )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   r  br5      z
pkg.subpkg)c)ra   rg   )r   r   r   r   r+   r,   r-  r5   r   r   r3   r   r   
pkg.subpkgsubpkgpkg.subpkg.cr?  pkg.subpkg.dra   )r   pkgutil_boilerplater5   r?  ra   s        r   test_nested&NestedNamespacePackageTest.test_nestedE  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   )r-  r.  N)	r   r   r   r   r   r!   r   rE  r   r   r   r   r+  r+  4  s    $$r   r+  c                       \ rS rSr\R
                  " \ S:H  S5      \" \S9S 5       5       r\" \S9S 5       r	\" \S9S 5       r
\" \S9S 5       rS	 rS
 r\" \S9S 5       rS rS rS rSrg)ImportlibMigrationTestsi]  __main__znot compatible with __main__)categoryc                 x    [         nB  U R                  [        R                  " [        5      5        Uq g ! Uq f = fr   )
__loader__assertIsNotNoner1   
get_loaderr   )r   this_loaders     r   0test_get_loader_handles_missing_loader_attributeHImportlibMigrationTests.test_get_loader_handles_missing_loader_attributeb  s5     !	%  !3!3H!=>$JJs   )5 9c                    Sn[        [        5      " U5      nU?[        U5          U[        R                  U'   [
        R                  " U5      n[        R                  R                  US 5         S S S 5        U R                  W5        g ! [        R                  R                  US 5        f = f! , (       d  f       NE= fNr  	typer   __spec__r   r4   r1   rN  rS   r  r   rJ   rh   r   s       r   .test_get_loader_handles_missing_spec_attributeFImportlibMigrationTests.test_get_loader_handles_missing_spec_attributem  s    3ioL,$'D! ++D1d+  	&! d+ s"   B0)B B0"B--B00
B>c                    Sn[        [        5      " U5      nS Ul        [        U5          U[        R                  U'   [
        R                  " U5      n[        R                  R                  US 5         S S S 5        U R                  W5        g ! [        R                  R                  US 5        f = f! , (       d  f       NE= frS  rT  rW  s       r   +test_get_loader_handles_spec_attribute_noneCImportlibMigrationTests.test_get_loader_handles_spec_attribute_nonez  s    3io,$'D! ++D1d+  	&! d+ s"   B5)B B5"B22B55
Cc                     SnS [         R                  U'    [        R                  " U5      n[         R                  U	 U R	                  U5        g ! [         R                  U	 f = fNztotally bogus)r   r4   r1   rN  r  r   rJ   r   s      r   #test_get_loader_None_in_sys_modules;ImportlibMigrationTests.test_get_loader_None_in_sys_modules  sT     D	"''-FD!&! D!s   A A#c                     [        S[        45         [        R                  " S5      nS S S 5        U R	                  W5        g ! , (       d  f       N = f)Nz.*\bpkgutil.get_loader\b.*r   )r   DeprecationWarningr1   rN  rM  r   rW   s     r   test_get_loader_is_deprecated5ImportlibMigrationTests.test_get_loader_is_deprecated  sE    *,>?
 $$U+C
 	S!	
 
   A
Ac                     [        S[        45         [        R                  " S5      nS S S 5        U R	                  W5        g ! , (       d  f       N = f)Nz.*\bpkgutil.find_loader\b.*r   )r   rc  r1   find_loaderrM  rd  s     r   test_find_loader_is_deprecated6ImportlibMigrationTests.test_find_loader_is_deprecated  sE    +-?@
 %%e,C
 	S!	
 
rg  c                 V    Sn[         R                  " U5      nU R                  U5        g r^  )r1   ri  r  r_  s      r   test_find_loader_missing_module7ImportlibMigrationTests.test_find_loader_missing_module  s%    $$T*&!r   c                     [        5        nU R                  [        R                  " S5      5        U R	                  [        UR                  5      S5        S S S 5        g ! , (       d  f       g = f)Nz*??r   )r   r  r1   r	  r3   r   warnings)r   r?   s     r   "test_get_importer_avoids_emulation:ImportlibMigrationTests.test_get_importer_avoids_emulation  sG    g2259:S_a0 s   AA
A-c                      [         R                  " [        S5      5        g ! [         a    U R	                  S5         g f = f)Nz/homez3Unexpected AttributeError when calling get_importer)r1   r	  r   r   r_   r   s    r   test_issue44061'ImportlibMigrationTests.test_issue44061  s8    	M  g/ 	MIIKL	Ms   " A A c                     [        5        n[        R                  " 5        H  nM     U R                  [	        UR
                  5      S5        S S S 5        g ! , (       d  f       g = fr   )r   r1   r  r3   r   rp  )r   r?   importers      r   $test_iter_importers_avoids_emulation<ImportlibMigrationTests.test_iter_importers_avoids_emulation  sA    #224d4S_a0 s   AA
A$r   N)r   r   r   r   unittestskipIfr   rc  rP  rX  r[  r`  re  rj  rm  rq  rt  rx  r   r   r   r   rH  rH  ]  s    
 __X+-KL01% 2 M% 01
" 2
" 01
" 2
" 01" 2""" 01" 2"
1M1r   rH  c                  j    SS K n SS KnU R                  R                  5         UR                  " 5         g r   )	zipimportr   _zip_directory_cacheclearr   )r}  r   s     r   tearDownModuler    s&    ""((*!r   rI  )!pathlibr   test.support.import_helperr   r   test.support.warnings_helperr   r   rz  r   r   importlib.utilr   r1   r+   os.pathr   r   rC   r	   test.support.os_helperr
   test.test_importlib.utilr   TestCaser   r   r   r+  rH  r  r   mainr   r   r   <module>r     s     : H  
  2  	     4 + ,J[8$$ J[Z
(** (Z^h'' ^B&!2!2 &RW1h// W1t" zMMO r   