
    daf*<                        d dl mZ d dlmZmZ  ej
                  d      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d dlmZ d dlmZ  G d d      Z ej&                  ee	      \  ZZ G d
 dej$                        Z ej&                  ee	      \  ZZ G d dej$                        Z ej&                  ee	      \  ZZedk(  r ej:                          yy)    )catch_warnings)abcutilzimportlib.machineryN)MISSING_C_DOCSTRINGS)assert_python_failurec                   R    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d Zy)LoaderTestszTest ExtensionFileLoader.c                    | j                   j                  rt        j                  st	        j
                  d      t        j                  j                  t        j                  v r0t	        j
                  t        j                  j                   d      | j                   j                  t        j                  j                  t        j                  j                        | _        y )N!Requires dynamic loading support. is a builtin module)	machineryEXTENSION_SUFFIXESr   
EXTENSIONSunittestSkipTestnamesysbuiltin_module_namesExtensionFileLoader	file_pathloaderselfs    D/root/Python-3.12.4/Lib/test/test_importlib/extension/test_loader.pysetUpzLoaderTests.setUp   s    ~~00##$GHH??3#;#;;##??''((<=  nn889M9M9=9R9RT    c                     t        j                         5  t        j                  dt               | j                  j                  |      cd d d        S # 1 sw Y   y xY wNignore)warningsr   simplefilterDeprecationWarningr   load_module)r   fullnames     r   r#   zLoaderTests.load_module   sF    $$& 	5!!(,>?;;**84	5 	5 	5s   5AAc                     | j                   j                  t        j                  j                  t        j                  j
                        }| j                  | j                  |       y N)r   r   r   r   r   r   assertEqualr   r   others     r   test_equalityzLoaderTests.test_equality$   sD    224??3G3G37??3L3LNe,r   c                     | j                   j                  dt        j                  j                  z   t        j                  j
                        }| j                  | j                  |       y )N_)r   r   r   r   r   r   assertNotEqualr   r(   s     r   test_inequalityzLoaderTests.test_inequality)   sI    2239M9M3M37??3L3LNDKK/r   c                 j   t        j                         5  t        j                  dt               | j                  j                          | j                  j                  d        | j                  t              5  | j                  d       d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)Nr   XXX)r    r   r!   r"   r   r#   assertRaisesImportErrorr   s    r   test_load_module_APIz LoaderTests.test_load_module_API.   s    $$& 	(!!(,>?KK##%KK##D)"";/ (  '(		( 	(( (		( 	(s$   A%B):BB)B&	"B))B2c                 d   t        j                  t         j                  j                        5  | j	                  t         j                  j                        }dt         j                  j                  fdt         j                  j
                  fdfD ]!  \  }}| j                  t        ||      |       # | j                  t         j                  j                  t        j                         | j                  |j                  | j                  j                         d d d        y # 1 sw Y   y xY wN__name____file__)__package__ )r   uncacher   r   r#   r   r'   getattrassertInr   modulesassertIsInstance
__loader__r   r   r   moduleattrvalues       r   test_modulezLoaderTests.test_module7   s    \\$//../ 	F%%doo&:&:;F!+T__-A-A B!+T__-F-F G 3 5 ?e   !6>? MM$//..<!!&"3"3"&.."D"DF	F 	F 	Fs   C/D&&D/Nc                     d}| j                  t              5 }| j                  |       d d d        | j                  j                  j
                  |       y # 1 sw Y   0xY wNzasdfjkl;)r1   r2   r#   r'   	exceptionr   r   r   cms      r   test_unloadablezLoaderTests.test_unloadableK   sT    {+ 	#rT"	#**D1	# 	#   AA"c                 P   t        j                  t         j                  j                        5  | j	                  t         j                  j                        }| j	                  t         j                  j                        }| j                  ||       d d d        y # 1 sw Y   y xY wr&   )r   r:   r   r   r#   assertIsr   module1module2s      r   test_module_reusezLoaderTests.test_module_reuseQ   so    \\$//../ 	,&&t';';<G&&t';';<GMM'7+	, 	, 	,s   A%BB%c                    | j                  | j                  j                  t        j                  j
                               | j                  j                  D ]c  }t        j                  j                  dddd|z         }| j                  j                  d|      }| j                  |j                  d             e y )Nsomepathpkg__init__)assertFalser   
is_packager   r   r   r   r   osrT   joinr   
assertTrue)r   suffixrT   r   s       r   test_is_packagezLoaderTests.test_is_packageW   s    //0D0DEFnn77 	6F77<<zF7JKD^^77tDFOOF--e45	6r   )r6   
__module____qualname____doc__r   r#   r*   r.   r3   rD   test_packagetest_lacking_parenttest_state_after_failurerJ   rQ   r]    r   r   r	   r	      sK    #T5
-
0
(	F L   $2,6r   r	   )r   c                   <    e Zd Zd Zd Zd Zd ZdZdZdZ	d Z
d Zy)SinglePhaseExtensionModuleTestsc                 0   | j                   j                  rt        j                  st	        j
                  d      d| _        | j                  t        j                  v r"t	        j
                  | j                   d      | j                   j                  d       }t        j                  j                  | j                        | _        | j                  sJ | j                   j                  | j                  | j                  j                        | _        y )Nr   _testsinglephaser   r   r   r   r   r   r   r   r   r   
FileFinder	importlib	find_specspecr   originr   r   finders     r   r   z%SinglePhaseExtensionModuleTests.setUpg   s    ~~00##$GHH&	99000##99+12  **40NN,,TYY7	yyynn88IItyy'')r   c                     t        j                         5  t        j                  dt               | j                  j                  | j                        cd d d        S # 1 sw Y   y xY wr   r    r   r!   r"   r   r#   r   r   s    r   r#   z+SinglePhaseExtensionModuleTests.load_moduleu   sJ    $$& 	6!!(,>?;;**4995	6 	6 	6   ?AA'c                 
   | j                   j                  }| j                  j                  ||      }t        j
                  j                  ||      }t        j
                  j                  |      }|j                  |       |S r&   	rm   rn   r   r   rk   r   spec_from_loadermodule_from_specexec_moduler   r$   rn   r   rm   rA   s         r   load_module_by_namez3SinglePhaseExtensionModuleTests.load_module_by_namez   d    !!33HfE~~..x@0066"r   c                 H   t        j                  | j                        5  | j                         }d| j                  fd| j                  j
                  fdfD ]!  \  }}| j                  t        ||      |       # | j                  t              5  |j                   d d d        | j                  |t        j                  | j                            | j                  |j                  | j                   j"                         d d d        y # 1 sw Y   oxY w# 1 sw Y   y xY wr5   r   r:   r   r#   rm   rn   r'   r;   r1   AttributeError__path__rM   r   r=   r>   r?   r   r   r@   s       r   rD   z+SinglePhaseExtensionModuleTests.test_module       \\$))$ 
	F%%'F!+TYY 7!+TYY-=-= > 3 5 ?e   !6>? "">2   MM&#++dii"89!!&"3"3"&.."D"DF
	F 
	F   
	F 
	F%   A1DDA%DD	DD!Nc                     d}| j                  t              5 }| j                  |       d d d        | j                  j                  j
                  |       y # 1 sw Y   0xY wrF   r1   r2   rz   r'   rG   r   rH   s      r   rJ   z/SinglePhaseExtensionModuleTests.test_unloadable   sT    {+ 	+r$$T*	+**D1	+ 	+rK   c                     d}| j                  t              5 }| j                  |       d d d        | j                  j                  j
                  |       y # 1 sw Y   0xY wNu   foór   rH   s      r   test_unloadable_nonasciiz8SinglePhaseExtensionModuleTests.test_unloadable_nonascii   T    {+ 	+r$$T*	+**D1	+ 	+rK   )r6   r^   r_   r   r#   rz   rD   ra   rb   rc   rJ   r   rd   r   r   rf   rf   d   s8    )6
F L   $22r   rf   c                   ~    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d Zd Zd Zd Zd Zd Zd Zd Zy)MultiPhaseExtensionModuleTestsc                 0   | j                   j                  rt        j                  st	        j
                  d      d| _        | j                  t        j                  v r"t	        j
                  | j                   d      | j                   j                  d       }t        j                  j                  | j                        | _        | j                  sJ | j                   j                  | j                  | j                  j                        | _        y )Nr   _testmultiphaser   ri   ro   s     r   r   z$MultiPhaseExtensionModuleTests.setUp   s    ~~00##$GHH%	99000##99+12  **40NN,,TYY7	yyynn88IItyy'')r   c                     t        j                         5  t        j                  dt               | j                  j                  | j                        cd d d        S # 1 sw Y   y xY wr   rr   r   s    r   r#   z*MultiPhaseExtensionModuleTests.load_module   sJ    $$& 	6!!(,>?;;**4995	6 	6 	6rs   c                 
   | j                   j                  }| j                  j                  ||      }t        j
                  j                  ||      }t        j
                  j                  |      }|j                  |       |S r&   ru   ry   s         r   rz   z2MultiPhaseExtensionModuleTests.load_module_by_name   r{   r   Nc                 H   t        j                  | j                        5  | j                         }d| j                  fd| j                  j
                  fdfD ]!  \  }}| j                  t        ||      |       # | j                  t              5  |j                   d d d        | j                  |t        j                  | j                            | j                  |j                  | j                   j"                         d d d        y # 1 sw Y   oxY w# 1 sw Y   y xY wr5   r}   r@   s       r   rD   z*MultiPhaseExtensionModuleTests.test_module   r   r   c                    t        j                  | j                        5  | j                         }| j	                  |t
        j                         |j                         }| j                  |j                  d      d       | j                  |j                         d        | j                  t              5  |j                   d d d        d|_        | j                  |j                  d       | j                  |j                  dd      d       | j	                  |j                         t               | j                  |j                  d      dz   d       | j                  |j                         5  |j!                         # 1 sw Y   xY w# 1 sw Y   nxY w| j                  |j"                  d       | j                  |j$                  d	       d d d        y # 1 sw Y   y xY w)
Nabcdr   	         23123i  something different)r   r:   r   r#   r>   types
ModuleTypeExampler'   demor1   r~   r   fooStrstrerror	int_const	str_const)r   rA   exs      r   test_functionalityz1MultiPhaseExtensionModuleTests.test_functionality   sw   \\$))$ 	F%%'F!!&%*:*:;!BRWWV_f5RWWY-"">2 BFRVVQ'VZZ1-r2!!&**,4VZZ]T159""6<<0 %lln$ % %V--t4V--/DE!	F 	F 	Fs7   BG7FB0G4FF	
GF	?GG'c                    t        j                  | j                        5  | j                         }|j                  }t        j                  |       | j                  ||j                         d d d        y # 1 sw Y   y xY wr&   )r   r:   r   r#   r   rk   reloadrM   )r   rA   ex_classs      r   test_reloadz*MultiPhaseExtensionModuleTests.test_reload   s^    \\$))$ 	4%%'F~~HV$MM(FNN3		4 	4 	4s   AA77B c                    t        j                  | j                        5  | j                         }| j	                  d      5  | j                  |j                  d      d        d d d        | j	                  d      5  | j                  t              5  |j                  d       d d d        d d d        | j	                  d      5  | j                  t              5  |j                  d       d d d        d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   oxY w# 1 sw Y   sxY w# 1 sw Y   >xY w# 1 sw Y   BxY w# 1 sw Y   y xY w)NPyState_FindModuler   PyState_AddModuler   PyState_RemoveModule   )	r   r:   r   r#   subTestr'   call_state_registration_funcr1   SystemErrorr   rA   s     r   test_try_registrationz4MultiPhaseExtensionModuleTests.test_try_registration  s#   \\$))$ 		;%%'F23 O  !D!DQ!GNO12 ;&&{3 ;77:;; 45 ;&&{3 ;77:;;		; 		;O O; ;; ;; ;; ;		; 		;s   "E"D$E=DD%D-ED7D+.D76ED	EDDD(	$E+D40D77E 	<EEc                 
   | j                  d| j                  z         }| j                  |t        j                         | j                  |j                  d| j                  z          | j                  |j                  d       y )Nzpkg.r   )rz   r   r>   r   r   r'   r6   r   r   s     r   test_load_submodulez2MultiPhaseExtensionModuleTests.test_load_submodule  se    ))&499*<=fe&6&67&499*<=))+@Ar   c                    | j                  d      }| j                  |t        j                         | j	                  |j
                  d       | j	                  |j                  d       | j                  dt        j                         y )Nxr   )
rz   r>   r   r   r'   r6   r   assertNotInr   r=   r   s     r   test_load_short_namez3MultiPhaseExtensionModuleTests.test_load_short_name  sg    ))#.fe&6&67#.))+@Ackk*r   c                     | j                  | j                        }| j                  | j                        }| j                  ||       y r&   )rz   r   assertIsNotrN   s      r   test_load_twicez.MultiPhaseExtensionModuleTests.test_load_twice$  s:    **4995**4995'*r   c                     d}| j                  t              5 }| j                  |       d d d        | j                  j                  j
                  |       y # 1 sw Y   0xY wrF   r   rH   s      r   rJ   z.MultiPhaseExtensionModuleTests.test_unloadable*  sT    {+ 	+r$$T*	+**D1	+ 	+rK   c                     d}| j                  t              5 }| j                  |       d d d        | j                  j                  j
                  |       y # 1 sw Y   0xY wr   r   rH   s      r   r   z7MultiPhaseExtensionModuleTests.test_unloadable_nonascii1  r   rK   c                     | j                   dz   }| j                  |      }| j                  t        |      t        t                     | j                  |j                  d       y )N
_nonmodule   )r   rz   r-   typer   r'   threer   r   mods      r   test_nonmodulez-MultiPhaseExtensionModuleTests.test_nonmodule8  sL    yy<'&&t,DItH~6A&r   c                    | j                   dz   }| j                  |      }| j                  t        |      t        t                     | j                  |j                  d       | j                  |j                  dd      d       y )N_nonmodule_with_methodsr   
   r   r   )r   rz   r-   r   r   r'   r   barr   s      r   test_nonmodule_with_methodsz:MultiPhaseExtensionModuleTests.test_nonmodule_with_methods@  sg    yy44&&t,DItH~6A&Q+r   c                     | j                   dz   }| j                  |      }| j                  |t        j                         | j                  |j                  |       y )N_null_slots)r   rz   r>   r   r   r'   r6   )r   r   rA   s      r   test_null_slotsz.MultiPhaseExtensionModuleTests.test_null_slotsH  sJ    yy=())$/fe&6&67$/r   c                 J   dD ]  }| j                  |      5  | j                  dz   |z   }| j                  t              5 }| j	                  |       d d d        d|v r%| j                  j                  j                         d d d         y # 1 sw Y   =xY w# 1 sw Y   xY w)N)bad_slot_largebad_slot_negativecreate_int_with_statenegative_sizeexport_nullexport_uninitializedexport_raiseexport_unreported_exceptioncreate_nullcreate_raisecreate_unreported_exceptionnonmodule_with_exec_slotsexec_err
exec_raiseexec_unreported_exceptionmultiple_create_slots$multiple_multiple_interpreters_slotsr,   unreported_exception)r   r   r1   r   rz   assertIsNotNonerG   	__cause__)r   	name_baser   rI   s       r   test_bad_modulesz/MultiPhaseExtensionModuleTests.test_bad_modulesO  s     	AI& i( Ayy32&&{3 3r,,T23
 *Y6(()?)?@A A'	A*3 3A As"   (BB1BBBB"	c                 .   | j                   dz   dfdg}|D ]q  \  }}| j                  |      5  | j                  |      }| j                  |j                  |       t
        s| j                  |j                  d|z         d d d        s y # 1 sw Y   ~xY w)Nu   _zkouška_načteníCzech)u   ＿インポートテストJapanesezModule named in %s)r   r   rz   r'   r6   r   r`   )r   casesr   langrA   s        r   test_nonasciiz,MultiPhaseExtensionModuleTests.test_nonasciin  s    
 YY88'B
   	RJD$d# R11$7  $7+$$V^^5ID5PQ	R R	RR Rs   ABB	)r6   r^   r_   r   r#   rz   ra   rb   rc   rD   r   r   r   r   r   r   rJ   r   r   r   r   r   r   rd   r   r   r   r      ss    )6 L   $FF(4;B++22',0A>Rr   r   __main__)r    r   test.test_importlibr   r   import_importlibr   os.pathrY   r   r   r   importlib.utilrk   test.supportr   test.support.script_helperr   r	   	test_bothFrozen_LoaderTestsSource_LoaderTestsrf   &Frozen_SinglePhaseExtensionModuleTests&Source_SinglePhaseExtensionModuleTestsr   %Frozen_MultiPhaseExtensionModuleTests%Source_MultiPhaseExtensionModuleTestsr6   mainrd   r   r   <module>r      s    # )!D!!"78	  
      - <K6 K6` T^^K95A2coo A2\ T^^3yI''GRS__ GRX T^^2iH&& zHMMO r   