
    daf                        d dl mZmZ  ej                  d      Z ej                  d      Z ej                  d      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Zd dlZd dlZd dlmZmZ d dlmZ d d	lmZ  G d
 dej0                        Z ej4                  eeeee      \  ZZ G d de ee            Z G d deed      Z G d d      Z G d de      Z  G d de      Z! G d d      Z" G d de"e       Z# ej4                  e#eeee      \  Z$Z% G d de"e!      Z& ej4                  e&eeee      \  Z'Z( G d d       Z) G d! d"e)e       Z* ej4                  e*eeee      \  Z+Z, G d# d$e)e!      Z- ej4                  e-eeee      \  Z.Z/e0d%k(  r ejb                          yy)&    )abcutil	importlibzimportlib.abczimportlib.machineryzimportlib.utilN)make_legacy_pycunload)without_source_date_epoch)SourceDateEpochTestMetac                      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ej$                  d        Zd Zej$                  d        Zej$                  d        Zej$                  d        Zej$                  d        Zy)
SimpleTestzShould have no issue importing a source module [basic]. And if there is
    a syntax error, it should raise a SyntaxError [syntax error].

    c                     d| _         t        j                  j                  d| j                   dz         | _        | j
                  j                  | j                   | j                        | _        y )Nspamhamz.py)nameospathjoinfilepath	machinerySourceFileLoaderloaderselfs    F/root/Python-3.12.4/Lib/test/test_importlib/source/test_file_loader.pysetUpzSimpleTest.setUp    sH    	UDII,=>nn55diiO    c                 &    G d d| j                   j                        } |dd      }| j                  t        d       t	        j
                         5  t	        j                  dt               |j                         }d d d        y # 1 sw Y   y xY w)Nc                       e Zd Zd Zd Zy)/SimpleTest.test_load_module_API.<locals>.Testerc                      y)Nz	attr = 42 r   _s     r   
get_sourcez:SimpleTest.test_load_module_API.<locals>.Tester.get_source'   s    Kr   c                      y)NFr    r!   s     r   
is_packagez:SimpleTest.test_load_module_API.<locals>.Tester.is_package(   s    Er   N)__name__
__module____qualname__r#   r%   r    r   r   Testerr   &   s    71r   r)   blahzblah.pyignore)	r   
FileLoader
addCleanupr   warningscatch_warningssimplefilterDeprecationWarningload_module)r   r)   r   modules       r   test_load_module_APIzSimpleTest.test_load_module_API%   st    	2TXX(( 	2 	*'$$& 	*!!(,>?'')F	* 	* 	*s   +BBc                     G d d| j                   j                        }d}d} |||      }| j                  ||j                  |             | j                  ||j                                | j                  ||j                  d              | j	                  t
              5  |j                  |dz          d d d        y # 1 sw Y   y xY w)Nc                       e Zd Zd Zd Zd Zy)0SimpleTest.test_get_filename_API.<locals>.Testerc                      y Nr    r!   s     r   get_codez9SimpleTest.test_get_filename_API.<locals>.Tester.get_code3   s    4r   c                      y r9   r    r!   s     r   r#   z;SimpleTest.test_get_filename_API.<locals>.Tester.get_source4       Tr   c                      y r9   r    r!   s     r   r%   z;SimpleTest.test_get_filename_API.<locals>.Tester.is_package5   r<   r   N)r&   r'   r(   r:   r#   r%   r    r   r   r)   r7   2   s    '))r   r)   	some_path	some_nameXXX)r   r,   assertEqualget_filenameassertRaisesImportError)r   r)   r   r   r   s        r   test_get_filename_APIz SimpleTest.test_get_filename_API0   s    	*TXX(( 	*
 d#v22489v2245v22489{+ 	.u-	. 	. 	.s   $CCc                     | j                   j                  | j                  | j                        }| j	                  | j
                  |       y r9   )r   r   r   r   rA   r   r   others     r   test_equalityzSimpleTest.test_equality@   s4    //		4==Ie,r   c                     | j                   j                  d| j                  z   | j                        }| j	                  | j
                  |       y )Nr"   )r   r   r   r   assertNotEqualr   rG   s     r   test_inequalityzSimpleTest.test_inequalityD   s8    //diiODKK/r   c                    t        j                  d      5 }| j                  j                  d|d         }t	        j
                         5  t	        j                  dt               |j                  d      }d d d        | j                  dt        j                         d|d   dd}|j                         D ]!  \  }}| j                  t        |      |       # 	 d d d        y # 1 sw Y   pxY w# 1 sw Y   y xY w)N_tempr+    r&   __file____package__r   create_modulesr   r   r.   r/   r0   r1   r2   assertInsysmodulesitemsrA   getattrr   mappingr   r3   checkattrvalues          r   test_modulezSimpleTest.test_moduleI   s      ) 		?W^^44Wgg>NOF((* 5%%h0BC++G45 MM'3;;/!(gg6F$&(E${{} ?e  !6>?		? 		?5 5		? 		?s$   4C1
,C%6A%C1%C.	*C11C:c                 >   t        j                  d      5 }| j                  j                  d|d         }t	        j
                         5  t	        j                  dt               |j                  d      }d d d        | j                  dt        j                         d|d   t        j                  j                  |d         gdd}|j                         D ]!  \  }}| j!                  t#        |      |       # 	 d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)N_pkg.__init___pkgr+   )r&   rQ   __path__rR   )r   rT   r   r   r.   r/   r0   r1   r2   rU   rV   rW   r   r   dirnamerX   rA   rY   rZ   s          r   test_packagezSimpleTest.test_packageU   s      1 	?W^^44V181IKF((* 4%%h0BC++F34 MM&#++.!'W_5M"$''//'/2J"K!L$*,E  %{{} ?e  !6>?	? 	?4 4	? 	?s$   4D
,D6BDD	DDc                    t        j                  dd      5 }| j                  j                  d|d         }t	        j
                         5  t	        j                  dt               |j                  d      }d d d        | j                  dt        j                         d|d   dd}|j                         D ]!  \  }}| j                  t        |      |       # 	 d d d        y # 1 sw Y   pxY w# 1 sw Y   y xY w)Nra   z_pkg.modr+   rb   rP   rS   rZ   s          r   test_lacking_parentzSimpleTest.test_lacking_parentd   s      *= 
	?^^44Z4;J4GIF((* 8%%h0BC++J78 MM*ckk2!+9L$*,E${{} ?e  !6>?
	? 
	?8 8
	? 
	?s$   4C2,C&7A%C2&C/	+C22C;c                     fdS )z-Fake mtime to always be higher than expected.c                      |       dz   S )N   r    )r   fxns    r   <lambda>z'SimpleTest.fake_mtime.<locals>.<lambda>s   s    CIM r   r    )r   rk   s    `r   
fake_mtimezSimpleTest.fake_mtimeq   s	    ))r   c                    t        j                  d      5 }| j                  j                  d|d         }t	        j
                         5  t	        j                  dt               |j                  d      }d d d        t              }t        |j                        }t        |d   dd      5 }|j                  d       d d d        t	        j
                         5  t	        j                  dt               |j                  d      }d d d        | j                  d|j                  dj                  t        |j                  j!                                            | j#                  |t$        j&                  d          | j#                  t        |      |       | j#                  t        |j                        |       d d d        y # 1 sw Y   VxY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   y xY w)	NrN   r+   wutf-8encodingztesting_var = 42
testing_varz'testing_var' not in {0})r   rT   r   r   r.   r/   r0   r1   r2   id__dict__openwriterU   formatlistkeysrA   rV   rW   )r   r[   r   r3   	module_idmodule_dict_idfiles          r   test_module_reusezSimpleTest.test_module_reuseu   s     ) 	BW^^44Wgg>NOF((* 5%%h0BC++G45 6
I0Ngg&g> 1$

/01((* 5%%h0BC++G45 MM-""(&foo.B.B.D)E"FH VS[[%9:RZ3R0.A#	B 	B5 5
1 15 5	B 	BsT   4G0
,G
69G0/GG0,G$	B8G0
G	G0G!	G0$G-	)G00G9c                 d   d}d}d}t        j                  |      5 }t        j                  |      }|D ]  }t	        |||        t        ||   dd      5 }|j                  d       d d d        | j                  j                  d|d         }| j                  t              5  |j                  |       d d d        |D ]  }| j                  t        ||      |         | j                  t              5  t        j                         5  t        j                   dt"               |j%                  |       d d d        d d d        |D ]  }| j                  t        ||      |         	 d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   WxY w# 1 sw Y   [xY w# 1 sw Y   y xY w)	N)rQ   rc   rR   z<test>rN   ro   rp   rq   z+++ bad syntax +++r+   )r   rT   types
ModuleTypesetattrrv   rw   r   r   rC   SyntaxErrorexec_modulerA   rY   r.   r/   r0   r1   r2   )	r   
attributesr^   r   r[   orig_moduler]   r}   r   s	            r   test_state_after_failurez#SimpleTest.test_state_after_failure   s   <
  & 	D'**40K" 2T512gdmS7; 1t

/01^^44Wgg>NOF"";/ 0"";/0" D  d!;UCD"";/ -,,. -))(4FG&&t,-- # D  d!;UCD	D 	D1 10 0
- -- -	D 	Dsl   ;F&E5)<F&%F7A F&7F,F8F +F&5E?	:F&F	F&FFF#	F&&F/c                 @   t        j                  d      5 }t        |d   dd      5 }|j                  d       d d d        | j                  j                  d|d         }| j                  t              5  t        j                         5  t        j                  dt               |j                  d       d d d        d d d        | j                  dt        j                         d d d        y # 1 sw Y   xY w# 1 sw Y   FxY w# 1 sw Y   JxY w# 1 sw Y   y xY w)NrN   ro   rp   rq   =r+   )r   rT   rv   rw   r   r   rC   r   r.   r/   r0   r1   r2   assertNotInrV   rW   )r   r[   r}   r   s       r   test_bad_syntaxzSimpleTest.test_bad_syntax   s      ) 	3Wgg&g>  $

3 ^^44Wgg>NOF"";/ 0,,. 0))(4FG&&w/00 Wckk2	3 	3   0 00 0		3 	3sQ   DC0<D6D,C<7D?(D0C9	5D<DDD	DDc                 \   d}t        |dd      5 }|j                  d       d d d        	 t        j                  d      5  | j                  j                  d|      }t        j                         5  t        j                  dt               |j                  d      }d d d        | j                  |j                         | j                  | j                  j                  |      |j                         d d d        t        j                   |       t        j"                  j%                  | j                  j                  |            }t        j"                  j'                  |      rt)        j*                  |       y y # 1 sw Y   axY w# 1 sw Y   xY w# 1 sw Y   xY w# t        j                   |       t        j"                  j%                  | j                  j                  |            }t        j"                  j'                  |      rt)        j*                  |       w w xY w)Nz_temp.pyro   rp   rq   z# test file for importlibrN   r+   )rv   rw   r   uncacher   r   r.   r/   r0   r1   r2   rA   rQ   cache_from_source
__cached__r   unlinkr   rd   existsshutilrmtree)r   	file_pathr}   r   modpycaches         r   test_file_from_empty_string_dirz*SimpleTest.test_file_from_empty_string_dir   s    	)S73 	4tJJ23	4	'g& 188)L,,. 6))(4FG ,,W5C6   CLL9  !<!<Y!G!$11 IIi ggoodii&A&A)&LMGww~~g&g& '	4 	4
6 61 1 IIi ggoodii&A&A)&LMGww~~g&g& 'sH   FF' 1F2,FAF7F' FF	FF$ F' 'BH+c                    t        j                  d      5 }|d   }| j                   j                  |      }t        |dd      5 }|j	                  d       d d d        	 t        j                  |d       | j                  j                  d|d         }t        j                   d      }| j                   j#                  d|      |_        |j'                  |       | j)                  |j*                  d
       | j-                  t
        j.                  j1                  |             t        j2                  |       t5        j6                         5  t5        j8                  dt:               |j=                  d      }d d d        | j)                  j>                  |       | j)                  |j*                  d
       | j-                  t
        j.                  j1                  |             d d d        y # 1 sw Y   xY w# t        $ r | j                  d       Y t        $ rJ}|j                  t        t        dd       k7  r | j                  d	j                  |             Y d }~d }~ww xY w# 1 sw Y   xY w# 1 sw Y   y xY w)NrN   ro   rp   rq   zx = 5)    r   z-cannot set modification time to large integer	EOVERFLOWz2cannot set modification time to large integer ({})   r+   ) r   rT   r   rv   rw   r   utimeOverflowErrorskipTestOSErrorerrnorY   rx   r   r   r   r   spec_from_loader__spec__r   rA   x
assertTruer   r   r   r.   r/   r0   r1   r2   r   )	r   r[   sourcecompiledfer   r3   r   s	            r   test_timestamp_overflowz"SimpleTest.test_timestamp_overflow   s      ) 	6WW%Fyy226:HfcG4 ! !^!;< ^^44Wgg>NOF%%g.F"ii88&IFOv&VXXq)OOBGGNN845IIh((* 2%%h0BC((12 S^^X6SUUA&OOBGGNN845;	6 	6! ! ! OMN ^77ge[$??RYYZ[\]]^2 2-	6 	6ss   /I=G2I= G?6CI=,I1;A.I=2G<	7I=?I.I=I.$?I)#I=)I..I=1I:	6I==Jc                    | j                   j                  di       }t        j                  d      }| j                   j	                  d|      |_        | j                  t              5  |j                  |       d d d        | j                  t              5  t        j                         5  t        j                  dt               |j                  d       d d d        d d d        y # 1 sw Y   pxY w# 1 sw Y   xY w# 1 sw Y   y xY w)Nz	good namezbad namer+   )r   r   r   r   
ModuleSpecr   rC   rD   r   r.   r/   r0   r1   r2   )r   r   r3   s      r   test_unloadablezSimpleTest.test_unloadable   s    00bA!!*-..33JG{+ 	'v&	'{+ 	/((* /%%h0BC"":./	/ 	/	' 	'/ /	/ 	/s0   (C)D,,C5D)C25C>	:DD
c                    t        j                  d      5 }|d   }| j                   j                  |      }t        |d      5 }|j	                  d       d d d        t        j                  |d       t        j                  |t        j                  j                         | j                  j                  d|      }t        j                  d      }| j                   j                  d|      |_        |j#                  |       | j%                  |j&                  d       t        |d      5 }|j	                  d       d d d        t        j                  |d       |j#                  |       | j%                  |j&                  d       t        |d	      5 }|j)                         }d d d        | j%                  t*        j-                  d
d d      d       | j%                  | j                   j/                  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   y xY w)NrN   wb   state = "old"2   r   invalidation_modeold   state = "new"newrb      little      )r   rT   r   rv   rw   r   r   
py_compilecompilePycInvalidationModeCHECKED_HASHr   r   r   r   r   r   r   rA   statereadint
from_bytessource_hashr   r[   r   pycfpr   r   datas           r   test_checked_hash_based_pycz&SimpleTest.test_checked_hash_based_pyc   s     ) 	WW%F))--f5Cfd# +r)*+HHVX&","@"@"M"M ^^44WfEF""7+C9955gvFCLs#SYY.fd# +r)*+HHVX&s#SYY.c4 !Bwwy!S^^D1Ix@$G		%%&67Qr
1	 	+ ++ +
! !+	 	sV   -H4HCH4-H?AH4H('AH4H	H4H%	!H4(H1	-H44H=c                    t        j                  d      5 }t        j                  j	                  dd      5  |d   }| j                   j                  |      }t        |d      5 }|j                  d       d d d        t        j                  |d       t        j                  |t        j                  j                         | j                  j                  d|      }t!        j"                  d      }| j                   j%                  d|      |_        |j)                  |       | j+                  |j,                  d       t        |d      5 }|j                  d	       d d d        t        j                  |d       |j)                  |       | j+                  |j,                  d       d d d        d d d        y # 1 sw Y   HxY w# 1 sw Y   jxY w# 1 sw Y   +xY w# 1 sw Y   y xY w)
NrN   _imp.check_hash_based_pycsneverr   r   r   r   r   r   )r   rT   unittestmockpatchr   rv   rw   r   r   r   r   r   r   r   r   r   r   r   r   r   rA   r   )r   r[   r   r   r   r   r   s          r   &test_overridden_checked_hash_based_pycz1SimpleTest.test_overridden_checked_hash_based_pyc  s     ) 	/W]]  !=wG	/W%F))--f5Cfd# +r)*+HHVX&","@"@"M"M ^^44WfEF""7+C9955gvFCLs#SYY.fd# +r)*+HHVX&s#SYY.+	/ 	/ 	/+ ++ +#	/ 	/ 	/ 	/sT   !G!-G$F<6CGG	 AG+G!<GG	GGG	G!!G*c                 T   t        j                  d      5 }|d   }| j                   j                  |      }t        |d      5 }|j	                  d       d d d        t        j                  |d       t        j                  |t        j                  j                         | j                  j                  d|      }t        j                  d      }| j                   j                  d|      |_        |j#                  |       | j%                  |j&                  d       t        |d      5 }|j	                  d       d d d        |j#                  |       | j%                  |j&                  d       t        |d      5 }|j)                         }d d d        | j%                  t*        j-                  d	d
 d      d       | j%                  | j                   j/                  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   y xY w)NrN   r   r   r   r   r   r   r   r   r   r   rj   r   )r   rT   r   rv   rw   r   r   r   r   r   UNCHECKED_HASHr   r   r   r   r   r   r   rA   r   r   r   r   r   r   s           r   test_unchecked_hash_based_pycz(SimpleTest.test_unchecked_hash_based_pyc'  s     ) 	WW%F))--f5Cfd# +r)*+HHVX&","@"@"O"O ^^44WfEF""7+C9955gvFCLs#SYY.fd# +r)*+s#SYY.c4 !Bwwy!S^^D1Ix@#F		%%&67Qr
/	 	+ ++ +! !)	 	sV   -HG9CH-H?AH HAH9H	>HH	HH	HH'c           	         t        j                  d      5 }t        j                  j	                  dd      5  |d   }| j                   j                  |      }t        |d      5 }|j                  d       d d d        t        j                  |d       t        j                  |t        j                  j                         | j                  j                  d|      }t!        j"                  d      }| j                   j%                  d|      |_        |j)                  |       | j+                  |j,                  d       t        |d      5 }|j                  d	       d d d        |j)                  |       | j+                  |j,                  d
       t        |d      5 }|j/                         }d d d        | j+                  t0        j3                  dd d      d       | j+                  | j                   j5                  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   xY w# 1 sw Y   7xY w# 1 sw Y   y xY w)NrN   r   alwaysr   r   r   r   r   r   r   r   r   r   r   rj   r   )r   rT   r   r   r   r   rv   rw   r   r   r   r   r   r   r   r   r   r   r   r   r   rA   r   r   r   r   r   r   s           r   (test_overridden_unchecked_hash_based_pycz3SimpleTest.test_overridden_unchecked_hash_based_pycE  s     ) 	W]]  !=xH	W%F))--f5Cfd# +r)*+HHVX&","@"@"O"O ^^44WfEF""7+C9955gvFCLs#SYY.fd# +r)*+s#SYY.c4 !Bwwy!S^^D1Ix@#F		%%&67Qr
1	 	 	+ ++ +! !+	 	 	 	sm   !I-I$H"6CIH/ AI!H;2AII"H,'I/H84I;I II	IIN)r&   r'   r(   __doc__r   r4   rE   rI   rL   r_   re   rg   rm   r~   r   r   r   r   writes_bytecode_filesr   r   r   r   r   r   r    r   r   r   r      s    
P
	*. -0

???*B(D0	3'* 
 6   6D	/ 
  < 
/  /0 
  : 
  r   r   )r   r   r   r   c                       e Zd Zy)r	   Nr&   r'   r(   r    r   r   r	   r	   k      r   r	   c                       e Zd Zy)SourceDateEpoch_SimpleTestNr   r    r   r   r   r   p  s     	r   r   T)	metaclasssource_date_epochc                       e Zd Zd Zdej
                  j                  ddZdddZe	j                  ddd       ZdddZddd	Zddd
ZdddZdddZdddZdddZdddZdddZy)BadBytecodeTestc                     t         r9   )NotImplementedError)r   r}   module_names      r   import_zBadBytecodeTest.import_x  s    !!r   F
del_sourcer   c                   	 t         j                  d= t        j                  ||   |       |s| j
                  j                  ||         }n&t        j                  ||          t        ||         }|rWt        |d      5 }|j                         } ||      }	ddd       t        |d      5 }	|j                  |	       ddd       |S |S # t        $ r Y w xY w# 1 sw Y   DxY w# 1 sw Y   |S xY w)zwManipulate the bytecode of a module by passing it into a callable
        that returns what to use as the new bytecode.rN   r   r   Nr   )rV   rW   KeyErrorr   r   r   r   r   r   r   rv   r   rw   )
r   r   r[   manipulatorr   r   bytecode_pathr}   bcnew_bcs
             r   manipulate_bytecodez#BadBytecodeTest.manipulate_bytecode{  s    	G$ 	74=<MN II77FMIIgdm$+GDM:MmT* )dYY[$R) mT* 'd%JJv&' }  		) )' s)   C C/C*	CCC'*C4r   c                    t        j                  d      5 }| j                  d|d |      } |d||       d d d        y # 1 sw Y   y xY w)NrN   c                      y)Nr   r    r   s    r   rl   z2BadBytecodeTest._test_empty_file.<locals>.<lambda>  s    r   r   r   rT   r   r   testr   r[   bc_paths        r   _test_empty_filez BadBytecodeTest._test_empty_file  sU      ) 	,W..w0>;E / GG '7+		, 	, 	,   !A  A	c                    t        j                  d      5 }| j                  d|d |      } |d||       d d d        y # 1 sw Y   y xY w)NrN   c                     | d d S )Nr   r    r   s    r   rl   z5BadBytecodeTest._test_partial_magic.<locals>.<lambda>      2bq6 r   r   r   r   s        r   _test_partial_magicz#BadBytecodeTest._test_partial_magic  sW       ) 	,W..w0A;E / GG '7+		, 	, 	,r   c                    t        j                  d      5 }| j                  d|d |      } |d||       d d d        y # 1 sw Y   y xY w)NrN   c                     | d d S )Nr   r    r   s    r   rl   z2BadBytecodeTest._test_magic_only.<locals>.<lambda>  r   r   r   r   r   s        r   _test_magic_onlyz BadBytecodeTest._test_magic_only  sU      ) 	,W..w0A;E / GG '7+		, 	, 	,r   c                    t        j                  d      5 }| j                  d|d |      } |d||       d d d        y # 1 sw Y   y xY w)NrN   c                     | d d S )N   r    r   s    r   rl   z5BadBytecodeTest._test_partial_flags.<locals>.<lambda>  s    "Ra& r   r   r   r   s        r   _test_partial_flagsz#BadBytecodeTest._test_partial_flags  sU      ) 	,W..w/@:D / FG '7+		, 	, 	,r   c                   t        j                  d      5 }| j                  d|d |t        j                  j
                        } |d||       d d d        t        j                  d      5 }| j                  d|d |t        j                  j                        } |d||       d d d        y # 1 sw Y   axY w# 1 sw Y   y xY w)NrN   c                     | d d S N   r    r   s    r   rl   z4BadBytecodeTest._test_partial_hash.<locals>.<lambda>      2cr7 r   r   c                     | d d S r  r    r   s    r   rl   z4BadBytecodeTest._test_partial_hash.<locals>.<lambda>  r	  r   )r   rT   r   r   r   r   r   r   s        r   _test_partial_hashz"BadBytecodeTest._test_partial_hash  s      ) 	,W.."%","@"@"M"M / G '7+	,   ) 	,W.."%","@"@"O"O / G '7+	, 	,	, 	,	, 	,s   :B0-:B<0B9<Cc                    t        j                  d      5 }| j                  d|d |      } |d||       d d d        y # 1 sw Y   y xY w)NrN   c                     | d d S )N   r    r   s    r   rl   z9BadBytecodeTest._test_partial_timestamp.<locals>.<lambda>      2cr7 r   r   r   r   s        r   _test_partial_timestampz'BadBytecodeTest._test_partial_timestamp  U      ) 	,W..w0B;E / GG '7+		, 	, 	,r   c                    t        j                  d      5 }| j                  d|d |      } |d||       d d d        y # 1 sw Y   y xY w)NrN   c                     | d d S )N   r    r   s    r   rl   z4BadBytecodeTest._test_partial_size.<locals>.<lambda>  r  r   r   r   r   s        r   _test_partial_sizez"BadBytecodeTest._test_partial_size  r  r   c                   t        j                  d      5 }| j                  d|d |      }|s|d   n|}| 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)NrN   c                     | d d S )Nr   r    r   s    r   rl   z2BadBytecodeTest._test_no_marshal.<locals>.<lambda>  r  r   r   r   rT   r   rC   EOFErrorr   )r   r   r[   r   r   s        r   _test_no_marshalz BadBytecodeTest._test_no_marshal  s      ) 	1W..w0B;E / GG 1;(I""8, 1Y01	1 	1
1 1	1 	1#   5A;A/A;/A8	4A;;Bc                   t        j                  d      5 }| j                  d|d |      }|s|d   n|}| j                  t              5 }| j                  |d       d d d        | j                  j                  j                  d       | j                  |j                  j                  |       d d d        y # 1 sw Y   ^xY w# 1 sw Y   y xY w)NrN   c                 8    | d d t        j                  d      z   S )Nr   s   abcd)marshaldumpsr   s    r   rl   z8BadBytecodeTest._test_non_code_marshal.<locals>.<lambda>  s    r#2ww9O/O r   r   )
r   rT   r   rC   rD   r   rA   	exceptionr   r   )r   r   r[   r   r   cms         r   _test_non_code_marshalz&BadBytecodeTest._test_non_code_marshal  s      ) 	?W 44Wg$O/9 5 ;M 1;(I"";/ 12Y01R\\..8R\\..>	? 	?
1 1	? 	?s$   5CB;AC;C	 CCc                   t        j                  d      5 }| j                  d|d |      }|s|d   n|}| 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)NrN   c                     | d d dz   S )Nr   s   <test>r    r   s    r   rl   z3BadBytecodeTest._test_bad_marshal.<locals>.<lambda>  s    2cr7Y;N r   r   r  )r   r   r[   r   r   s        r   _test_bad_marshalz!BadBytecodeTest._test_bad_marshal  s      ) 	1W 44Wg0N;E 5 GM 1;(I""8, 1Y01	1 	1
1 1	1 	1r  c                    t        j                  d      5 }| j                  d|d       } |d||       d d d        y # 1 sw Y   y xY w)NrN   c                     d| dd  z   S )N       r   r    r   s    r   rl   z1BadBytecodeTest._test_bad_magic.<locals>.<lambda>  s    /BRV/K r   r   r   s        r   _test_bad_magiczBadBytecodeTest._test_bad_magic  sK      ) 	,W..w$KMG'7+	, 	, 	,s	   >AN)r&   r'   r(   r   r   r   	TIMESTAMPr   r   r   r   r   r   r  r  r  r  r  r"  r%  r)  r    r   r   r   r   v  s    "
 (-.8.L.L.V.V2 49 , 
6; ,  , 49 , 7< , 6; ,( ;@ , 6; , .3 1 49 	? /4 1 38 ,r   r   c                       e Zd Zd Zy)BadBytecodeTestPEP451c                     | j                  ||      }t        j                  |      }| j                  j	                  ||      |_        |j                  |       y r9   )r   r   r   r   r   r   r   r   r}   r   r   r3   s        r   r   zBadBytecodeTestPEP451.import_  sH    [$/!!+.))44[&I6"r   Nr&   r'   r(   r   r    r   r   r,  r,    s    #r   r,  c                       e Zd Zd Zy)BadBytecodeTestPEP302c                    | j                  ||      }t        j                         5  t        j                  dt               |j                  |      }d d d        | j                  |t        j                         y # 1 sw Y   *xY w)Nr+   )	r   r.   r/   r0   r1   r2   rU   rV   rW   r.  s        r   r   zBadBytecodeTestPEP302.import_  sh    [$/$$& 	5!!(,>?''4F	5 	k3;;/	5 	5s   ,A<<BNr/  r    r   r   r1  r1    s    0r   r1  c                      e Zd Zed        Zej                  d        Zd Zej                  d        Z	ej                  d        Z
ej                  d        Zej                  d        Zej                  d        Zej                  d	        Zej                  d
        Zej                  d        Zej                  d        Zej                  ed               Zej                  d        Zy)SourceLoaderBadBytecodeTestc                 :    | j                   j                  | _        y r9   )r   r   r   clss    r   
setUpClassz&SourceLoaderBadBytecodeTest.setUpClass  s    ]]33
r   c                 2      fd} j                  |       y )Nc                     j                  ||    |        t        |d      5 }j                  t        |j	                               d       d d d        y # 1 sw Y   y xY wNr   r   r   rv   assertGreaterlenr   r   r[   r   r}   r   s       r   r   z9SourceLoaderBadBytecodeTest.test_empty_file.<locals>.test  Q    LL-mT* 9d""3tyy{#3R89 9 9   *AAr   r   r   s   ` r   test_empty_filez+SourceLoaderBadBytecodeTest.test_empty_file      	9
 	d#r   c                 2      fd} j                  |       y )Nc                     j                  ||    |        t        |d      5 }j                  t        |j	                               d       d d d        y # 1 sw Y   y xY wr;  r<  r?  s       r   r   z<SourceLoaderBadBytecodeTest.test_partial_magic.<locals>.test  r@  rA  r   rC  s   ` r   test_partial_magicz.SourceLoaderBadBytecodeTest.test_partial_magic  s    	9
 	  &r   c                 2      fd} j                  |       y )Nc                     j                  ||    |        t        |d      5 }j                  t        |j	                               d       d d d        y # 1 sw Y   y xY wr;  r<  r?  s       r   r   z9SourceLoaderBadBytecodeTest.test_magic_only.<locals>.test)  r@  rA  r   rC  s   ` r   test_magic_onlyz+SourceLoaderBadBytecodeTest.test_magic_only%  rE  r   c                 2      fd} j                  |       y )Nc                     j                  ||    |        t        |d      5 }j                  |j                  d      j                  j
                         d d d        y # 1 sw Y   y xY w)Nr   r   )r   rv   rA   r   r   MAGIC_NUMBER)r   r[   r   bytecode_filer   s       r   r   z8SourceLoaderBadBytecodeTest.test_bad_magic.<locals>.test4  s^    LL-mT* 9m  !3!3A!6!%!7!799 9 9s   6A""A+r)  rC  s   ` r   test_bad_magicz*SourceLoaderBadBytecodeTest.test_bad_magic0  s    	9 	T"r   c                 2      fd} j                  |       y )Nc                     j                  ||    |        t        |d      5 }j                  t        |j	                               d       d d d        y # 1 sw Y   y xY wr;  r<  r   r[   r   r}   r   s       r   r   z@SourceLoaderBadBytecodeTest.test_partial_timestamp.<locals>.test@  Q    LL-gt$ 9""3tyy{#3R89 9 9rA  r  rC  s   ` r   test_partial_timestampz2SourceLoaderBadBytecodeTest.test_partial_timestamp<  s    	9
 	$$T*r   c                 2      fd} j                  |       y )Nc                     j                  ||    |        t        |d      5 }j                  t        |j	                               d       d d d        y # 1 sw Y   y xY wr;  r<  rV  s       r   r   z<SourceLoaderBadBytecodeTest.test_partial_flags.<locals>.testJ  rW  rA  r  rC  s   ` r   test_partial_flagsz.SourceLoaderBadBytecodeTest.test_partial_flagsG  s    	9
 	  &r   c                 2      fd} j                  |       y )Nc                     j                  ||    |        t        |d      5 }j                  t        |j	                               d       d d d        y # 1 sw Y   y xY wr;  r<  rV  s       r   r   z;SourceLoaderBadBytecodeTest.test_partial_hash.<locals>.testT  rW  rA  r  rC  s   ` r   test_partial_hashz-SourceLoaderBadBytecodeTest.test_partial_hashQ  s    	9
 	%r   c                 2      fd} j                  |       y )Nc                     j                  ||    |        t        |d      5 }j                  t        |j	                               d       d d d        y # 1 sw Y   y xY wr;  r<  rV  s       r   r   z;SourceLoaderBadBytecodeTest.test_partial_size.<locals>.test_  rW  rA  r  rC  s   ` r   test_partial_sizez-SourceLoaderBadBytecodeTest.test_partial_size[  s    	9
 	%r   c                 $    | j                          y r9   r  r   s    r   test_no_marshalz+SourceLoaderBadBytecodeTest.test_no_marshalf  s     	r   c                 $    | j                          y r9   r"  r   s    r   test_non_code_marshalz1SourceLoaderBadBytecodeTest.test_non_code_marshalk  s    ##%r   c                 $    | j                          y r9   )r%  r   s    r   test_bad_marshalz,SourceLoaderBadBytecodeTest.test_bad_marshalq  s     	 r   c                    d}t        j                  d      5 }t        j                  |d          | j                   j	                  |d         }t        |d      5 }|j                  d       |j                  |       d d d        | j                  |d   d       t        j                  j                  |d         }| j                  j                  |      }t        |d      5 }|j                  d       | j                  |j                  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(  rN   r+br   r   r   )r   rT   r   r   r   rv   seekrw   r   r   r   getmtimer   _pack_uint32rA   r   )r   zerosr[   r   rQ  source_mtimesource_timestamps          r   test_old_timestampz.SourceLoaderBadBytecodeTest.test_old_timestampw  s3   
 $  ) 	JWww/0 II778HIMmU+ +}""1%##E*+ LL)7377++GG,<=L#~~::<HmT* Jm""1%  !3!3A!68HIJ	J 	J+ +J J	J 	Js=   AE #D(>A&E $3D4E (D1	-E 4D=	9E  E	c                    t        j                  d      5 }t        j                  |d          | j                   j	                  |d         }t        |d      5 }|j                  d       |j                  d       d d d        t        j                  |t        j                  t        j                  z  t        j                  z         	 | j                  |d   d       t        j                  |t        j                         	 d d d        y # 1 sw Y   xY w# t        j                  |t        j                         w xY w# 1 sw Y   y xY w)NrN   ro  r   r(  )r   rT   r   r   r   rv   rp  rw   r   chmodstatS_IRUSRS_IRGRPS_IROTHr   S_IWUSR)r   r[   r   rQ  s       r   test_read_only_bytecodez3SourceLoaderBadBytecodeTest.test_read_only_bytecode  s      ) 	6Www/0 II778HIMmU+ 9}""1%##$789 HH]t||3dllBD6WW-w7 5	6 	69 9 5	6 	6s=   AE#D<AED $ED	E&E  EEN)r&   r'   r(   classmethodr8  r   r   rD  rI  rM  rS  rY  r]  ra  re  rh  rk  rm  r   rv  r~  r    r   r   r4  r4    s[   4 4 
$  $' 
$  $ 
	#  	# 
+  + 
'  ' 
&  & 
&  & 
     
&  &
 
!  !
 
J   J$ 
6  6r   r4  c                       e Zd Zy)!SourceLoaderBadBytecodeTestPEP451Nr   r    r   r   r  r    r   r   r  c                       e Zd Zy)!SourceLoaderBadBytecodeTestPEP302Nr   r    r   r   r  r    r   r   r  c                   X    e Zd Zed        Zd Zd Zd Zd Zd Z	d Z
d Zd	 Zd
 Zd Zy)SourcelessLoaderBadBytecodeTestc                 :    | j                   j                  | _        y r9   )r   SourcelessFileLoaderr   r6  s    r   r8  z*SourcelessLoaderBadBytecodeTest.setUpClass  s    ]]77
r   c                 6      fd} j                  |d       y )Nc                    j                  t              5 }j                  ||        d d d        j                  j                  j
                  |        j                  |j                  j                  |       y # 1 sw Y   VxY wr9   rC   rD   r   rA   r   r   r   r   r[   r   r!  r   s       r   r   z=SourcelessLoaderBadBytecodeTest.test_empty_file.<locals>.test  j    "";/ 22]D12R\\..5R\\..>2 2   A??BTr   rB  rC  s   ` r   rD  z/SourcelessLoaderBadBytecodeTest.test_empty_file  s    	? 	dt4r   c                 6      fd} j                  |d       y )Nc                    j                  t              5 }j                  ||        d d d        j                  j                  j
                  |        j                  |j                  j                  |       y # 1 sw Y   VxY wr9   r  r  s       r   r   z@SourcelessLoaderBadBytecodeTest.test_partial_magic.<locals>.test  r  r  Tr   rH  rC  s   ` r   rI  z2SourcelessLoaderBadBytecodeTest.test_partial_magic  s    	?
 	  $ 7r   c                 6      fd} j                  |d       y )Nc                 ~    j                  t              5  j                  ||        d d d        y # 1 sw Y   y xY wr9   rC   r  r   r   r[   r   r   s      r   r   z=SourcelessLoaderBadBytecodeTest.test_magic_only.<locals>.test  4    ""8, 2]D12 2 2   3<Tr   rL  rC  s   ` r   rM  z/SourcelessLoaderBadBytecodeTest.test_magic_only  s    	2 	dt4r   c                 6      fd} j                  |d       y )Nc                    j                  t              5 }j                  ||        d d d        j                  j                  j
                  |        j                  |j                  j                  |       y # 1 sw Y   VxY wr9   r  r  s       r   r   z<SourcelessLoaderBadBytecodeTest.test_bad_magic.<locals>.test  r  r  Tr   rR  rC  s   ` r   rS  z.SourcelessLoaderBadBytecodeTest.test_bad_magic  s    	? 	Td3r   c                 6      fd} j                  |d       y )Nc                 ~    j                  t              5  j                  ||        d d d        y # 1 sw Y   y xY wr9   r  r  s      r   r   zDSourcelessLoaderBadBytecodeTest.test_partial_timestamp.<locals>.test  r  r  Tr   rX  rC  s   ` r   rY  z6SourcelessLoaderBadBytecodeTest.test_partial_timestamp  s    	2 	$$Td$;r   c                 6      fd} j                  |d       y )Nc                 ~    j                  t              5  j                  ||        d d d        y # 1 sw Y   y xY wr9   r  r  s      r   r   z@SourcelessLoaderBadBytecodeTest.test_partial_flags.<locals>.test  r  r  Tr   r\  rC  s   ` r   r]  z2SourcelessLoaderBadBytecodeTest.test_partial_flags  s    	2 	  $ 7r   c                 6      fd} j                  |d       y )Nc                 ~    j                  t              5  j                  ||        d d d        y # 1 sw Y   y xY wr9   r  r  s      r   r   z?SourcelessLoaderBadBytecodeTest.test_partial_hash.<locals>.test  r  r  Tr   r`  rC  s   ` r   ra  z1SourcelessLoaderBadBytecodeTest.test_partial_hash      	2 	6r   c                 6      fd} j                  |d       y )Nc                 ~    j                  t              5  j                  ||        d d d        y # 1 sw Y   y xY wr9   r  r  s      r   r   z?SourcelessLoaderBadBytecodeTest.test_partial_size.<locals>.test  r  r  Tr   rd  rC  s   ` r   re  z1SourcelessLoaderBadBytecodeTest.test_partial_size  r  r   c                 (    | j                  d       y NTr   rg  r   s    r   rh  z/SourcelessLoaderBadBytecodeTest.test_no_marshal  s    .r   c                 (    | j                  d       y r  rj  r   s    r   rk  z5SourcelessLoaderBadBytecodeTest.test_non_code_marshal  s    ##t#4r   N)r&   r'   r(   r  r8  rD  rI  rM  rS  rY  r]  ra  re  rh  rk  r    r   r   r  r    sF    8 85854<877/5r   r  c                       e Zd Zy)%SourcelessLoaderBadBytecodeTestPEP451Nr   r    r   r   r  r    r   r   r  c                       e Zd Zy)%SourcelessLoaderBadBytecodeTestPEP302Nr   r    r   r   r  r    r   r   r  __main__)2test.test_importlibr   r   import_importlibr   importlib_abcr   importlib_utilr   r  r   r   r   ry  rV   r   r   r.   test.support.import_helperr   r   test.test_py_compiler   r	   LoaderTestsr   	test_bothFrozen_SimpleTestSource_SimpleTesttyper   r   r,  r1  r4  r  Frozen_SourceBadBytecodePEP451Source_SourceBadBytecodePEP451r  Frozen_SourceBadBytecodePEP302Source_SourceBadBytecodePEP302r  r  "Frozen_SourcelessBadBytecodePEP451"Source_SourcelessBadBytecodePEP451r  "Frozen_SourcelessBadBytecodePEP302"Source_SourcelessBadBytecodePEP302r&   mainr    r   r   <module>r     s   )!D!!+.	%%%o6!D!!"78	&&&'78   	    
    > : 8I I\
 T^^J)y%N<
	5"#45	
	!2+B37	@, @,F#O #0O 0Q6 Q6h	#%:	 T^^5']')	#%:	 T^^5']')G5 G5T	,K	 T^^9Y']')##	,K	 T^^9Y']')## zHMMO r   