
    7bhh                        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    ;/opt/python-3.12.12/usr/lib/python3.12/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@   sI   ($ 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__- I USE*KKOOC& S##J=%%n56 >= KKOOC& >=s   "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   sh    +GGLL|4 	A!$&&T\\N;AII01 <r   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D!1D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   sb    .*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                 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   sy    		:67&&y12 8 "	:67&&{34 87	 87 87s   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   s9    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b#YZ'M2w{"Sb';!7!88%  * 	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 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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 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   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                   6    e Zd Zd 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;rHHde <  < 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  sJ    ggll7G^e5KL+s#r*##E*4 $##s   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  sR    //++""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";< $ "";/^$456 0 "";/^G,- 0 MM'"KK'KK,) &   0/ 0/   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   c                    d}| j                  |      }| j                  dt        j                  dd             | j                  dt        j                  dd             | j                  dt        j                  dd             | j                  d t        j                  d d             t	        j
                  |       t        j                  d= y )Nrv   notalist)notarQ   {   r   )r   r0   r.   extend_pathr   r   r   r   )r   r   r   s      r   test_extend_path_argument_typesz/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                    d}| j                  |      }t        t        j                  j	                  |d      d      5 }|j                  dj	                  g d             d d d        t        j                  t        j                  d      }| j                  |d d t        j                         | j                  |d   d       | j                  |d	   d
       t        j                  |       t        j                  d= y # 1 sw Y   xY w)Nrv   zbar.pkgr;   
)r   /foo/bar/bazr=   z#commentr   r   r}   r  r   )r   r+   r(   r   r)   r-   r.   r  r   r0   r   r   )r   r   r   pkg_fileextended_pathss        r   test_extend_path_pkg_filesz*ExtendPathTests.test_extend_path_pkg_files  s    $$W-	"'',,y)4c:hNN499 &   ; !,,SXXu=,chh7+U3+^< 	i HHQK! ;:s   #DD
N)
r   r   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.setUp6  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   r  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_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   N)r   r   r   r   r   r   r$  r   r   r   r  r  4  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_attributeb  s5     !	%  !3!3H!=>$JJs   (4 8c                 v   d} t        t              |      }|`t        |      5  	 |t        j                  |<   t        j                  |      }t        j                  j                  |d        	 d d d        | j                         y # t        j                  j                  |d        w xY w# 1 sw Y   @xY wNr   	typer   __spec__r   r1   r.   r,  rN   r   r   rF   ra   r   s       r   .test_get_loader_handles_missing_spec_attributezFImportlibMigrationTests.test_get_loader_handles_missing_spec_attributem  s    d3ioL,$'D! ++D1d+  	&! d+ s"   B/(B
 B/
"B,,B//B8c                    d} t        t              |      }d |_        t        |      5  	 |t        j                  |<   t        j                  |      }t        j                  j                  |d        	 d d d        | j                         y # t        j                  j                  |d        w xY w# 1 sw Y   @xY wr0  r1  r4  s       r   +test_get_loader_handles_spec_attribute_nonezCImportlibMigrationTests.test_get_loader_handles_spec_attribute_nonez  s    d3io,$'D! ++D1d+  	&! d+ s"   B4(B B4"B11B44B=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_deprecated  sE    *,>?
 $$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   r=  r.   find_loaderr+  r>  s     r   test_find_loader_is_deprecatedz6ImportlibMigrationTests.test_find_loader_is_deprecated  sE    +-?@
 %%e,C
 	S!	
 
r@  c                 T    d}t        j                  |      }| j                  |       y r9  )r.   rB  r   r:  s      r   test_find_loader_missing_modulez7ImportlibMigrationTests.test_find_loader_missing_module  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  sG    g2259:S_a0 s   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   rG  )r   r;   importers      r   $test_iter_importers_avoids_emulationz<ImportlibMigrationTests.test_iter_importers_avoids_emulation  s?    #2244S_a0 s   ?AAN)r   r   r   unittestskipIfr   r=  r.  r5  r7  r;  r?  rC  rE  rH  rJ  rM  r   r   r   r&  r&  ]  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   )rQ  r   s     r   tearDownModulerT    s(    ""((*I!r   r'  )!pathlibr   test.support.import_helperr   r   test.support.warnings_helperr   r   rN  r   r   importlib.utilr   r.   r(   os.pathr   r   r?   r	   test.support.os_helperr
   test.test_importlib.utilr   TestCaser   r   r   r  r&  rT  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HMMO r   