
    dafF                        d dl mZ  ej                  d      Z ej                  d      Z ej                  d      Zd dlZd dlZd dl	m
Z
 d dl	mZ d dlZd dlZd dlZ G d d	      Z ej                   eeee
      \  ZZ G d d      Z G d de      Z ej                   eeee
      \  ZZ G d d      Z ej                   eeee
      \  ZZ G d d      Z ej                   eeee
      \  ZZ G d dej:                        Z G d d      Z ej                   ee      \  Z Z!e"dk(  r ejF                          yy)    )util	importlibzimportlib.utilzimportlib.machineryN)import_helper)	os_helperc                   :    e Zd ZdZd Zd Zd Zd Zd Zd Z	d Z
y	)
ImportModuleTestszTest importlib.import_module.c                    t        j                  d      5 }t        j                  |g      5  | j                  j	                  d      }| j                  |j                  d       d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)N	top_level	meta_path	test_util	mock_specimport_stateinitimport_moduleassertEqual__name__)selfmockmodules      7/root/Python-3.12.4/Lib/test/test_importlib/test_api.pytest_module_importz$ImportModuleTests.test_module_import   sy      - 	?''4&9 ?00=  +>?	? 	?? ?	? 	?s"   B8A7&B7B 	<BBc                 h   d}dj                  |      }dj                  |      }t        j                  ||      5 }t        j                  |g      5  | j                  j                  |      }| j                  |j                  |       d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY wNpkg{0}.__init__z{0}.modr   formatr   r   r   r   r   r   r   r   pkg_namepkg_long_namenamer   r   s         r   test_absolute_package_importz.ImportModuleTests.test_absolute_package_import   s    &--h7)  5 	8''4&9 8006  $78	8 	88 8	8 	8s#   B(8BB(B%	!B((B1c                    d}dj                  |      }d}dj                  ||      }dj                  |      }t        j                  ||      5 }t        j                  |g      5  | j                  j                  |       | j                  j                  ||      }| j                  |j                  |       d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)Nr   r   modz{0}.{1}z.{0}r   r   )r   r!   r"   module_nameabsolute_namerelative_namer   r   s           r   $test_shallow_relative_package_importz6ImportModuleTests.test_shallow_relative_package_import%   s    &--h7!((;?k2  > 	A$''4&9 A		''100I  -@A	A 	AA A	A 	As%   C'AC;CC	CC!c                    g d}t        j                  | 5 }t        j                  |g      5  | j                  j	                  d       | j                  j	                  d       | j                  j	                  dd      }| j                  |j                  d       d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)N)
a.__init__za.b.__init__a.cr   aa.bz..cr-   r   )r   modulesr   r   s       r   !test_deep_relative_package_importz3ImportModuleTests.test_deep_relative_package_import2   s    7  '* 	9d''4&9 9		'',		''.00>  %8	9	9 	99 9	9 	9s#   B;A/B/B;/B8	4B;;Cc                    d}dj                  |      }dj                  |      }t        j                  ||      5 }t        j                  |g      5  | j                  j                  |       | j                  j                  ||      }| j                  |j                  |       d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY wr   r   r    s         r   !test_absolute_import_with_packagez3ImportModuleTests.test_absolute_import_with_package;   s     &--h7)  5 	8''4&9 8		''100x@  $78	8 	88 8	8 	8s$   CAB8'C8C	=CCc                     | j                  t              5  | j                  j                  d       d d d        y # 1 sw Y   y xY w)Nz.support)assertRaises	TypeErrorr   r   r   s    r   test_relative_import_wo_packagez1ImportModuleTests.test_relative_import_wo_packageG   s9     y) 	0II##J/	0 	0 	0s	   ;Ac                 8    d fd}fd}||d}ddg}t        j                  |d|i5 }t        j                  |g      5   j                  j	                  d       d d d        d d d         j                  d	       y # 1 sw Y   $xY w# 1 sw Y   (xY w)
Nr   c                  <     j                   j                  d       y )Nr/   )r   r   r7   s   r   load_az2ImportModuleTests.test_loaded_once.<locals>.load_aS   s    II##E*    c                       dz   y )N    )b_load_counts   r   load_bz2ImportModuleTests.test_loaded_once.<locals>.load_bU   s    ALr<   )r.   r/   r,   r/   module_coder   r>   )r   r   r   r   r   r   )r   r;   rA   coder0   r   r@   s   `     @r   test_loaded_oncez"ImportModuleTests.test_loaded_onceN   s     	+	 F+'  '<t< 	/''4&9 /		''./	/ 	q)/ /	/ 	/s#   BB!BB		BBN)r   
__module____qualname____doc__r   r$   r*   r1   r3   r8   rD   r?   r<   r   r   r      s)    '?8A9
80*r<   r   )r   r   	machineryc                   4    e Zd ZdZd Zd Zd Zd Zd Zd Z	y)FindLoaderTestsNc                    d}t        j                  |      5  t        j                  |      }d}| j                  j                  ||      |_        |t        j                  |<   | j                  j                  |      }| j                  |       | j                  |j                  |       d d d        y # 1 sw Y   y xY w)Nsome_modz	a loader!)r   uncachetypes
ModuleTyperH   
ModuleSpec__spec__sysr0   r   	find_specassertIsNotNoner   loader)r   r#   r   rU   specs        r   test_sys_modulesz FindLoaderTests.test_sys_modulesj   s    t$ 	2%%d+F F"nn77fEFO &CKK99&&t,D  &T[[&1	2 	2 	2s   BB55B>c                 D   d}t        j                  |      5  t        j                  |      }d |_        |t
        j                  |<   | j                  t              5  | j                  j                  |       d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY wNrL   )r   rM   rN   rO   
__loader__rR   r0   r5   
ValueErrorr   rS   r   r#   r   s      r   test_sys_modules_loader_is_Nonez/FindLoaderTests.test_sys_modules_loader_is_Nonev   s    t$ 	*%%d+F $F &CKK"":. *		##D)*		* 	** *		* 	*s$   ABB
9B
B	BBc                 n   d}t        j                  |      5  t        j                  |      }	 |j                  `|t        j                  |<   | j                  t              5  | j                  j                  |       d d d        d d d        y # t        $ r Y `w xY w# 1 sw Y   !xY w# 1 sw Y   y xY wrY   )r   rM   rN   rO   rQ   rU   AttributeErrorrR   r0   r5   r[   r   rS   r\   s      r   "test_sys_modules_loader_is_not_setz2FindLoaderTests.test_sys_modules_loader_is_not_set   s     t$ 	*%%d+FOO* !'CKK"":. *		##D)*	* 	* " * *	* 	*sE   B+B(B+#B?B+	BB+BB+B(	$B++B4c                 V   d}t        j                  |      5  t        j                  | j                  g      5  | j                  j                  |      }| j                  ||d ff|j                  |j                  f       d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)NrL   r   )	r   rM   r   FakeMetaFinderr   rS   r   r#   rU   )r   r#   rV   s      r   test_successzFindLoaderTests.test_success   s    t$ 	Q''43F3F2GH Qyy**40  $t!5		4;;7OPQ	Q 	QQ Q	Q 	Qs#   "BABBB	BB(c                 <   d}d}t        j                  |      5  t        j                  | j                  g      5  | j                  j                  ||      }| j                  ||j                         d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)NrL   zpath to some placer   )r   rM   r   rb   r   rS   r   r#   )r   r#   pathrV   s       r   test_success_pathz!FindLoaderTests.test_success_path   s    #t$ 	2''43F3F2GH 2yy**46  tyy12	2 	22 2	2 	2s"   "B9B5BB	BBc                 X    | j                  | j                  j                  d             y )Nnevergoingtofindthismodule)assertIsNoner   rS   r7   s    r   test_nothingzFindLoaderTests.test_nothing   s     $))--.JKLr<   )
r   rE   rF   rb   rW   r]   r`   rc   rf   rj   r?   r<   r   rJ   rJ   f   s'    N
2**Q2Mr<   rJ   c                        e Zd Z G d d      Zy)FindLoaderPEP451Testsc                       e Zd Zedd       Zy)$FindLoaderPEP451Tests.FakeMetaFinderNc                 8    t         d   j                  | | |f      S )NSource)rH   rP   )r#   re   targets      r   rS   z.FindLoaderPEP451Tests.FakeMetaFinder.find_spec   s    X&11$tEEr<   )NN)r   rE   rF   staticmethodrS   r?   r<   r   rb   rn      s    		F 
	Fr<   rb   N)r   rE   rF   rb   r?   r<   r   rl   rl      s    F Fr<   rl   c                   <    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
y	)
ReloadTestsc                     dD ]q  }| j                  |      5  t        j                  |      5  | j                  j	                  |      }| j                  j                  |       d d d        d d d        s y # 1 sw Y   xY w# 1 sw Y   xY w)N)tokenizetimemarshal)r   )subTestr   CleanImportr   r   reload)r   r&   r   s      r   test_reload_moduleszReloadTests.test_reload_modules   s    2 	-CS) -"..s3 -!YY44S9FII$$V,-- -	-- -- -s"   B7A8%B8B=BB	c                    d }t        j                  dd|i      }|5  t        j                  |g      5  | j                  j	                  d      }| j                  j                  |      }t        j                  d   }| j                  |j                  d       | j                  |j                  d       d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)Nc                  Z    dd l }  t        |       d      }d|_        || j                  d<   y )Nr   r
      )rR   typespamr0   )rR   r   s     r   rC   z.ReloadTests.test_module_replaced.<locals>.code   s*    T#Y{+FFK'-CKK$r<   r
   )rB   r   r   )
r   r   r   r   r   r{   rR   r0   r   r   )r   rC   r   r   reloadedactuals         r   test_module_replacedz ReloadTests.test_module_replaced   s    	.
 "";0;T/BD 	3''4&9 300=99++F3[1  a0  23	3 	33 3	3 	3s#   CBC
9C
C	CCc                 |   t        j                  d      5  dd l}|j                  }|`| j                  j                  |      }| j                  ||       | j                  t        j                  d   |       | j                  |j                  j                  |j                         d d d        y # 1 sw Y   y xY wNrN   r   )r   rz   rN   rZ   r   r{   assertIsrR   r0   r   re   )r   rN   rU   r   s       r   test_reload_missing_loaderz&ReloadTests.test_reload_missing_loader   s    &&w/ 	D%%F yy''.HMM(E*MM#++g.6X0055v{{C	D 	D 	Ds   BB22B;c                 z   t        j                  d      5  dd l}d |_        | j                  j                          | j                  j                  |      }| j                  |j                  d        | j                  ||       | j                  t        j                  d   |       d d d        y # 1 sw Y   y xY wr   )r   rz   rN   rZ   r   invalidate_cachesr{   assertIsNotr   rR   r0   )r   rN   r   s      r   test_reload_loader_replacedz'ReloadTests.test_reload_loader_replaced   s    &&w/ 	7#EII'')yy''.HX00$7MM(E*MM#++g.6	7 	7 	7s   BB11B:c           
         d}t        j                  d       5 }t        j                  d      5  t	        j
                  |      5  | j                  j                          t        j                  j                  ||dz         }| j                  j                  |      }|d||d d}t        j                  |       | j                  j                  |      }t        |      j!                         }|j#                  d      }|j#                  d      }	|j#                  dd        | j%                  |	j&                  |       | j%                  |	j(                  |       | j%                  |j                  |       | j%                  ||       | j                  j                          t        j                  j                  ||d      }
| j                  j                  |
      }|||
|t        j                  j+                  |
      gd d	}t        j,                  |       t        j.                  ||
       | j                  j1                  |      }t        |      j!                         }|j#                  d      }|j#                  d      }	|j#                  dd        | j%                  |	j&                  |       | j%                  |	j(                  |       | j3                  ||       | j%                  |j                  |
       d | _        | j%                  ||       d 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   y xY w)
Nr   z.py )r   __package____file__
__cached__rG   rZ   rQ   __builtins____init__.py)r   r   r   r   __path__rG   )r   temp_cwdr   rM   r   DirsOnSysPathr   r   osre   joinr   cache_from_sourcecreate_empty_filer   varscopypopr   r#   rU   dirnamemkdirrenamer{   r   maxDiff)r   r#   cwdre   cachedexpectedr   nsrU   rV   	init_pathr   s               r   test_reload_location_changedz(ReloadTests.test_reload_location_changed   s   % /	3""6* .3"005 -3II//177<<TE\:D!YY88>F,0/1,0.4+/	 "H //5!YY44T:Ff**,BVVL1F66*-DFF>40$$TYY5$$T[[&9$$V[[$7$$R2 II//1 "S$ FI!YY88CF,0/3,5.4-/WW__Y-G,H+/ "H HHTNIIdI.#yy//7Hh,,.BVVL1F66*-DFF>40$$TYY5$$T[[&9MM(F3$$V[[)<#'DL$$R2[-3.3/	3 /	3-3 -3.3 .3/	3 /	3s;   ML<KL0L<M0L95L<<M	MMc                    d}t        j                  d       5 }t        j                  d      5  t        j                  |g      5  | j
                  j                  j                  | j
                  j                         | j
                  j                          t        j                  j                  ||d      }| j                  j                  |      }||d d d}t        j                  |       t!        |dd      5 }|j#                  d       d d d        | j
                  j%                  |      }t'        |      j)                         }|j+                  d	      }	|j+                  d
      }
|j+                  d      }|j+                  dd        | j-                  |j.                  |       | j1                  |j2                         | j1                  |	       | j-                  |j2                  |	       | j-                  t5        |
      t5        t        j                  j7                  |      g             | j9                  t:              5  |	j                   d d d        | j-                  ||       | j
                  j                          t        j                  j                  ||d      }| j                  j                  |      }||||t        j                  j7                  |      gd d d}t        j<                  ||       | j
                  j?                  |      }t'        |      j)                         }|j+                  d	      }	|j+                  d      }|j+                  dd        | j-                  |j.                  |       | j-                  |j2                  |	       | jA                  ||       | j-                  |	j                  |       | j-                  ||       d 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   4xY w# 1 sw Y   8xY w# 1 sw Y   y xY w)Nr   )re   z	__init.py)r   r   rG   r   wzutf-8)encodingzeggs = NonerZ   r   rQ   r   r   )r   r   r   r   r   rG   eggs)!r   r   r   rM   r   r   _bootstrap_external_install
_bootstrapr   r   re   r   r   r   r   openwriter   r   r   r   r   r#   rT   rU   setr   r5   r_   r   r{   r   )r   r#   r   bad_pathr   r   	init_filer   r   rU   re   rV   r   r   s                 r   test_reload_namespace_changedz)ReloadTests.test_reload_namespace_changed  sV   % 7	3""6* 63++#7 53II11::499;O;OPII//1!ww||C{CH!YY88BF,0/3+/,0 "H
 HHTNhg> 7)!67!YY44T:Ff**,BVVL1F66*-D66*-DFF>40$$TYY5((5((0$$T[[&9$$SY%("''//(*C)D%EG**>: $$ $$R2 II//1 "S$ FI!YY88CF,0/3,5.4-/WW__Y-G,H+/(, "H IIh	2#yy//7Hh,,.BVVL1F66*-DFF>40$$TYY5$$T[[&9MM(F3$$V[[)<$$R2k53637	3 7	37 7$ $553 5363 637	3 7	3sm   P4P(B:P P	D<PP	FP)P(1P4PPPPP%!P((P1	-P44P=c                 (   d}d}t        j                  |d      5 }t        j                  |||      \  }}| j                  j	                  |      }| j                  j                  |      }| j                  ||       d d d        y # 1 sw Y   y xY w)Nr   hamT)r   )r   temp_module	submoduler   r   r{   r   )r   r#   subnamepkg_dirfullname_r   r   s           r   test_reload_submodulez!ReloadTests.test_reload_submoduleO  s    ""4T2 	)g#--dGWEKHa))))(3Cyy'',HMM(C(		) 	) 	)s   A#BBc                    d}t        j                  |      5  t        j                  |      x}t        j
                  |<   | j                  j                  |      }| j                  |j                         | j                  t              5  | j                  j                  |       d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)Nr   )r   rM   rN   rO   rR   r0   r   r   ri   rQ   r5   ModuleNotFoundErrorr{   r\   s      r   test_module_missing_specz$ReloadTests.test_module_missing_specY  s     t$ 	)).)9)9$)??FS[[&YY,,T2Ffoo.""#67 )		  ()	) 	)
) )	) 	)s$   A4CB9(C9C	>CCN)r   rE   rF   r|   r   r   r   r   r   r   r   r?   r<   r   rt   rt      s-    -3 	D	713f93v)
)r<   rt   c                       e Zd Zd Zd Zy)InvalidateCacheTestsc                     G d d      }t         j                  j                  d       |        |       }t        j                  j                  d       | j                  fd       |t        j                  <   | j                  fd       | j                  j                          | j                  j                         | j                  |j                         y )Nc                       e Zd Zd Zd Zy)GInvalidateCacheTests.test_method_called.<locals>.InvalidatingNullFinderc                     d| _         y )NFcalled)r   ignoreds     r   __init__zPInvalidateCacheTests.test_method_called.<locals>.InvalidatingNullFinder.__init__q  s	    #r<   c                     d| _         y )NTr   r7   s    r   r   zYInvalidateCacheTests.test_method_called.<locals>.InvalidatingNullFinder.invalidate_cachess  s	    "r<   N)r   rE   rF   r   r   r?   r<   r   InvalidatingNullFinderr   p  s    $#r<   r   gobledeegookr   c                  B    t         j                  j                         S N)rR   path_importer_cache__delitem__keys   r   <lambda>z9InvalidateCacheTests.test_method_called.<locals>.<lambda>z  s     7 7 C CC H r<   c                  B    t         j                  j                         S r   )rR   r   remove)meta_inss   r   r   z9InvalidateCacheTests.test_method_called.<locals>.<lambda>|  s     4 4X > r<   )r   re   abspathrR   r   insert
addCleanupr   r   r   
assertTruer   )r   r   path_insr   r   s      @@r   test_method_calledz'InvalidateCacheTests.test_method_calledn  s    	# 	# ggoon-)+)+Q)HI'/$>?		##%((r<   c                     dd t         j                  <   | j                  fd       | j                  j	                          y )Ngobbledeegookc                  D    t         j                  j                   d       S r   )rR   r   r   r   s   r   r   z:InvalidateCacheTests.test_method_lacking.<locals>.<lambda>  s     7 7 ; ;C F r<   )rR   r   r   r   r   )r   r   s    @r   test_method_lackingz(InvalidateCacheTests.test_method_lacking  s5    '+$FG		##%r<   N)r   rE   rF   r   r   r?   r<   r   r   r   l  s    )&&r<   r   c                       e Zd Zd Zy)FrozenImportlibTestsc                 v    t         d   }| j                  |j                  j                  j                  d       y )Nrp   FrozenImporter)r   assertNotEqualrZ   	__class__r   )r   source_inits     r   test_no_frozen_importlibz-FrozenImportlibTests.test_no_frozen_importlib  s2    
 8nK22<<EE,	.r<   N)r   rE   rF   r   r?   r<   r   r   r     s    .r<   r   c                       e Zd Zd Zd Zy)StartupTestsc                 0   t         j                  j                         D ]  \  }}t        |t        j
                        s!| j                  |      5  | j                  t        |d      dj                  |             | j                  j                  j                  |      r| j                  |j                  d        nA| j                  j                  j                  |      r| j                  |j                  d        d d d         y # 1 sw Y   xY w)Nr#   rZ   z!{!r} lacks a __loader__ attribute)rR   r0   items
isinstancerN   rO   ry   r   hasattrr   rH   BuiltinImporterrS   r   rZ   r   r\   s      r   test_everyone_has___loader__z)StartupTests.test_everyone_has___loader__  s    KK--/ 	BLD&&%"2"23\\t\, BOOGFL$A$G$N$Nt$TV~~55??E(():):DA66@@F(():):DAB B	BB Bs   B/DD	c                    t         j                  j                         D ]  \  }}t        |t        j
                        s!| j                  |      5  | j                  t        |d             | j                  j                  j                  |      r| j                  |j                  d        nA| j                  j                  j                  |      r| j                  |j                  d        d d d         y # 1 sw Y   xY w)Nr   rQ   )rR   r0   r   r   rN   rO   ry   r   r   rH   r   rS   r   rQ   r   r\   s      r   test_everyone_has___spec__z'StartupTests.test_everyone_has___spec__  s    KK--/ 	@LD&&%"2"23\\t\, @OOGFJ$?@~~55??E(($?66@@F(($?@ @	@@ @s   BC<<D	N)r   rE   rF   r   r   r?   r<   r   r   r     s    
B@r<   r   )rH   __main__)$test.test_importlibr   r   import_importlibr   rH   os.pathr   rR   test.supportr   r   rN   unittestwarningsr   	test_bothFrozen_ImportModuleTestsSource_ImportModuleTestsrJ   rl   Frozen_FindLoaderPEP451TestsSource_FindLoaderPEP451Testsrt   Frozen_ReloadTestsSource_ReloadTestsr   Frozen_InvalidateCacheTestsSource_InvalidateCacheTestsTestCaser   r   Frozen_StartupTestsSource_StartupTestsr   mainr?   r<   r   <module>r	     s   1!y!!+.!y!!"23&I&&'<=	  
 & "   M* M*d YT	C
;M ;M|FO F YDIG
q) q)l Yt$)=
& &> Y49F
	.8,, 	.@ @6 Y; zHMMO r<   