
    daf                        d dl mZmZ  ej                  d      Zd dlmZmZ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Ze
j"                  d        Ze
j"                  ddd       Zdd	Z G d
 dej*                        Z ej.                  ee      \  ZZ G d d      Z ej.                  ee      \  ZZedk(  r ej<                          yy)    )abcutilzimportlib.machinery)captured_stdoutimport_helper
STDLIB_DIRNc               #      K   t        j                         5  t        j                  dt               d  d d d        y # 1 sw Y   y xY ww)Nignore)warningscatch_warningssimplefilterDeprecationWarning     A/root/Python-3.12.4/Lib/test/test_importlib/frozen/test_loader.py
deprecatedr      s:     		 	 	" h(:;  s   A?	AAAF)oldapic             #     K   t        j                  |       5  t        j                         5  |rt	               5  d  d d d        n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wN)r   uncacher   frozen_modulesr   )namer   s     r   freshr      sv     	d	 ))+ 	\   	  	 	 sI   BA5A)AA)A5	BA&"A))A2	.A55A>:Bc                     | sJ |r5t        j                  j                  t        g| j	                  d      d S t        j                  j                  t        g| j	                  d       dz   S )N.z__init__.pyz.py)ospathjoinr   split)r   ispkgs     r   resolve_stdlib_filer    !   sV    K4ww||JHCH-HHww||J9C9EAAr   c                   6    e Zd ZddZd Zd Zd Zd ZdZd Z	y)	ExecModuleTestsNc                 n   t        j                         5  | j                  j                  j	                  |      }d d d        | j                  j                  || j                  j                  dt        j                  |xs |t        |xs ||                  }t        j                  |      }||_
        t        |d      rJ t        |      5  | j                  j                  j                  |       d d d        t               5 }|j                          d d d        | j!                  |j"                         | j!                  t        |d             | j%                  |j                  j&                  d       |j)                         fS # 1 sw Y   YxY w# 1 sw Y   xY w# 1 sw Y   xY w)Nfrozen)orignamefilename)origin
is_packageloader_stateinitialized__spec__)r   r   	machineryFrozenImporterr(   
ModuleSpectypesSimpleNamespacer    
ModuleTyper+   hasattrr   exec_moduler   main
assertTruer*   assertEqualr'   getvalue)selfr   r%   r(   specmodulestdouts          r   r3   zExecModuleTests.exec_module+   sk   ))+ 	H66AA$GJ	H~~((NN))!..!)T,X-=zJ ) 	
 !!$'6=1114[ 	>NN))55f=	> 	&KKM	 	**+
34//:v(((1	H 	H 	> 	>	 	s#   &F&FF+FF(+F4c                 Z   d}| j                  |      \  }}d|i}|j                         D ]!  \  }}| j                  t        ||      |       # | j                  |d       | j	                  t        |d             | j                  |j                  j                  j                  |       y )N	__hello____name__Hello world!
r+   )	r3   itemsr6   getattrr5   r2   r+   r)   r%   )r8   r   r:   outputcheckattrvalues          r   test_modulezExecModuleTests.test_moduleF   s    ))$/T" ;;= 	;KD%WVT2E:	;!12
3455>>Er   c                 P   d}| j                  |      \  }}d|i}|j                         D ]7  \  }}t        ||      }| j                  ||dj	                  ||||             9 | j                  |d       | j                  |j
                  j                  j                  |       y )N
__phello__r>   z,for {name}.{attr}, {given!r} != {expected!r}r   rD   givenexpectedr?   )r3   r@   rA   r6   formatr+   r)   r%   r8   r   r:   rB   rC   rD   rE   
attr_values           r   test_packagezExecModuleTests.test_packageP   s    ))$/T" ;;= 	2KD% .JZFMM&*Z*/ N 12	2 	!1255>>Er   c                 D   d}t        j                  d      5  | j                  |      \  }}d d d        d|i}|j                         D ]7  \  }}t	        |      }| j                  ||dj                  ||||             9 | j                  d       y # 1 sw Y   jxY w)N__phello__.spamrH   r>   z*for {name}.{attr}, {given} != {expected!r}rI   r?   )r   r   r3   r@   rA   r6   rL   rM   s           r   test_lacking_parentz#ExecModuleTests.test_lacking_parent]   s     \\,' 	4!--d3NFF	4T" ;;= 	.KD% .JZ@GG"&T&+ H -.	. 	!12	4 	4s   BBc                 f    d}| j                  |      \  }}| j                  t        |      d       y )Nr=   z<module '__hello__' (frozen)>)r3   r6   repr)r8   r   r:   rB   s       r   &test_module_repr_indirect_through_specz6ExecModuleTests.test_module_repr_indirect_through_specj   s2    ))$/f8	:r   c                 h   t        j                         5  | j                  j                  j	                  d      J 	 d d d        | j                  t              5 }| j                  d       d d d        | j                  j                  j                  d       y # 1 sw Y   _xY w# 1 sw Y   <xY w)N	_not_real)r   r   r,   r-   	find_specassertRaisesImportErrorr3   r6   	exceptionr   )r8   cms     r   test_unloadablezExecModuleTests.test_unloadables   s    ))+ 	P>>00::;GOOO	P{+ 	*r[)	***K8		P 	P	* 	*s   (BB(B%(B1r   )
r>   
__module____qualname__r3   rF   rO   rR   rU   test_state_after_failurer]   r   r   r   r"   r"   )   s*    )6FF3:  $9r   r"   )r,   c                   (    e Zd ZdZd Zd Zd Zd Zy)InspectLoaderTestsz7Tests for the InspectLoader methods for FrozenImporter.c                    d}t        j                         5  | j                  j                  j	                  |      }t        j                  |      }t        ||j                         d d d        t               5 }j                          d d d        | j                  t        d             | j                  j                         d       y # 1 sw Y   hxY w# 1 sw Y   QxY w)Nr=   r*   r?   )r   r   r,   r-   get_coder/   r1   exec__dict__r   r4   r5   r2   r6   r7   )r8   r   codemodr;   s        r   test_get_codez InspectLoaderTests.test_get_code   s    ))+ 	%>>0099$?D""4(Cs||$	%  	&HHJ	]34*,<=	% 	%	 	s   AC:CCC$c                     t        j                         5  | j                  j                  j	                  d      }d d d        | j                         y # 1 sw Y   xY w)Nr=   )r   r   r,   r-   
get_sourceassertIsNone)r8   results     r   test_get_sourcez"InspectLoaderTests.test_get_source   sO    ))+ 	K^^22==kJF	K&!	K 	Ks   &AAc                     d}|D ]b  \  }}t        j                         5  | j                  j                  j	                  |      }d d d        | j                  t              |       d y # 1 sw Y   'xY w)N))r=   F)rH   T)rQ   F)r   r   r,   r-   r(   r6   bool)r8   test_forr   r(   rm   s        r   test_is_packagez"InspectLoaderTests.test_is_package   sp    0 ( 	7D*--/ H66AA$GHT&\:6	7H Hs   &A++A4	c                 T   dD ]  }t        | j                  j                  |      }| j                  t              5 }t        j                         5   |d       d d d        d d d        | j                  j                  j                  d        y # 1 sw Y   :xY w# 1 sw Y   >xY w)N)rd   rk   r(   	importlib)
rA   r,   r-   rY   rZ   r   r   r6   r[   r   )r8   	meth_namemethodr\   s       r   test_failurezInspectLoaderTests.test_failure   s    A 	=IT^^::IFF"";/ (2"113 (;'(( R\\..<	=( (( (s#   B	BBBBB'	N)r>   r^   r_   __doc__ri   rn   rr   rw   r   r   r   rb   rb      s    A
>"7=r   rb   __main__)F)test.test_importlibr   r   import_importlibr,   test.supportr   r   r   _imp
contextlibmarshalos.pathr   r/   unittestr
   contextmanagerr   r   r    LoaderTestsr"   	test_bothFrozen_ExecModuleTestsSource_ExecModuleTestsrb   Frozen_ILTestsSource_ILTestsr>   r4   r   r   r   <module>r      s    )!D!!"78	 C C            BO9coo O9h T^^Oy9&= &=T T^^&)< zHMMO r   