
    0hhۜ                     z   S SK r S SKrS SKrS SKrS SKrS SKrS SKrS SKrS SKrS SK	r	S SK
r	S SKrS SKJr  S SKJr  S SKJr  S SKJrJrJrJr  S SKrS SKrS SKrS SKrS SKrS SKJrJrJr   S SKrSr!\"" \!SS	5      r#S
r$S r%S r&\R                  " 5       r'\%" \#\'\(" \!5      5      r)Sr*Sr+Sr,Sr-Sr.Sr/\R`                  Rc                  S5      r2\R`                  Rc                  S5      r3\R`                  Ri                  \R`                  Rk                  \65      S5      r7\Rp                  Rs                  \*S-   5      r:Sr; " S S\	Rx                  5      r= " S S\=5      r>\R~                  " 5        " S S\>5      5       r@ " S S\	Rx                  5      rAS  rB\CS!:X  a  \	R                  " 5         gg! \  a    Sr GNGf = f)"    N)support)import_helper)	os_helper)ZipFileZipInfo
ZIP_STOREDZIP_DEFLATED)
extract_tbextract_stackprint_tbzHdef get_name():
    return __name__
def get_file():
    return __file__
<???>execz def do_raise(): raise TypeError
c                     [         R                  " U 5      n[        R                  R                  [
        R                  " SS[        U5      S-  US-  5      -   U-   nU$ )Nz<iLLr       )marshaldumps	importlibutilMAGIC_NUMBERstructpackint)comtimesizedatapycs        </opt/python-3.13.8/usr/lib/python3.13/test/test_zipimport.pymake_pycr   (   sY    ==D>>&&FAJ,d[.@	BBDHIC J    c                 B    U R                  [        R                  S5      $ )N.)replaceossep)paths    r   module_path_to_dotted_namer'   /   s    <<$$r    ziptestmoduleziptestmodule2ziptestmodule3ziptestpackageziptestpackage2ziptestpackage3	junk95142zjunk95142.zipzipimport_data.py.pycc                        \ rS rSrS rS rSrg)ImportHooksBaseTestCaseD   c                    [         R                  S S  U l        [         R                  S S  U l        [         R                  S S  U l        [         R                  R                  5         [        R                  " 5       U l        g N)	sysr&   	meta_path
path_hookspath_importer_cacheclearr   modules_setupmodules_beforeselfs    r   setUpImportHooksBaseTestCase.setUpF   sT    HHQK	q)..+%%'+99;r    c                 (   U R                   [        R                   S S & U R                  [        R                  S S & U R                  [        R                  S S & [        R                  R                  5         [        R                  " U R                  6   g r6   )	r&   r7   r8   r9   r:   r;   r   modules_cleanupr=   r>   s    r   tearDown ImportHooksBaseTestCase.tearDownM   s]    ii>>a OOq%%'%%t':':;r    )r8   r=   r&   r9   N)__name__
__module____qualname____firstlineno__r@   rD   __static_attributes__ r    r   r3   r3   D   s    <<r    r3   c                      \ rS rSr\rS r\4S jr\	4SSSSS.S jjr
SSS.S	 jrS
 rS rSSS.S jrS rS rS rS rS r\R*                  R-                  SS5      S 5       rS rS rS rS rS rS rS rS rS r S r!S  r"S! r#S" r$S# r%S$ r&S% r'S& r(S' r)S( r*S) r+S* r,S+ r-S, r.S- r/S. r0S/ r1S0 r2S1 r3\Rh                  " \5Rl                  SL S25      S3 5       r7S4 r8S5 r9S6 r:S7 r;S8 r<S9 r=S: r>S;r?g)<UncompressedZipImportTestCaseU   c                     [         R                  " 5         [        R                  R	                  5         [
        R                  U 5        g r6   )	linecache
clearcache	zipimport_zip_directory_cacher;   r3   r@   r>   s    r   r@   #UncompressedZipImportTestCase.setUpY   s0     	&&,,.%%d+r    c                    U R                  [        R                  U5        UR                  5        GH#  u  p4[	        U[
        5      (       a  Uu  pT[        R                  R                  " U/UR                  S5      Q76 nUS   [        R                  :X  a>  [        R                  R                  U5      (       d  [        R                  " U5        M  M  [        R                  R                  U5      n[        R                  R                  U5      (       d  [        R                  " U5        [        US5       nUR                  U5        S S S 5        GM&     g ! , (       d  f       GM9  = f)N/wb)
addCleanupr   rmtreeitems
isinstancetupler$   r&   joinsplitr%   isdirmakedirsdirnameopenwrite)	r?   filesdirNamenamer   r   r&   dnamefps	            r   makeTree&UncompressedZipImportTestCase.makeTree`   s     		(('2++-JD$&&"77<<:$**S/:DBx266!ww}}T**KK% + -ww}}U++KK&$%HHTN &% ( &%s   :E
E*	N )commentfile_commentstuffprefixc                   U R                  [        R                  U5        [        USU R                  S9 nU R                  XXFS9  Ub  X8l        S S S 5        Ub]  [        US5       n	U	R                  5       n
S S S 5        [        US5       n	U	R                  U5        U	R                  W
5        S S S 5        g g ! , (       d  f       No= f! , (       d  f       NX= f! , (       d  f       g = f)Nwcompressionrn   rp   rbrX   )
rY   r   unlinkr   rt   writeZiprm   rc   readrd   )r?   re   zipNamerm   rn   ro   rp   kwzfr   s              r   makeZip%UncompressedZipImportTestCase.makeZips   s    
 		(('2Wct/?/?@AMM!MM"#	 A
 gt$vvx %gt$ %$	  A@ %$$$s#   B9'C
#C9
C

C
C)ru   c                   UR                  5        H  u  pV[        U[        5      (       a  Uu  pvO[        nUR	                  [
        R                  S5      n[        XE-   [        R                  " U5      5      nU R                  Ul        Ub  X8l        Uc  SUl        UR                  U5        M  UR                  X5        M     g )NrV   r   )r[   r\   r]   NOWr#   r$   r%   r   time	localtimert   compress_typerm   CRCmkdirwritestr)	r?   r|   re   rn   rp   rg   r   r   zinfos	            r   rx   &UncompressedZipImportTestCase.writeZip   s    ++-JD$&&"t<<,DFM4>>%+@AE"&"2"2E' ,|	 

5' (r    c                 V    [        S5       Vs0 s H  nSU S3[        _M     sn$ s  snf )Ni  r}   r0   )rangetest_src)r?   ns     r   getZip64Files+UncompressedZipImportTestCase.getZip64Files   s+    .3El;l!A3c
H$l;;;s   &c                 l    SU;  a  SUS'   U R                   " U40 UD6  U R                  " U/UQ70 UD6  g )Nrp   zpre/fix/)r~   doTestWithPreBuiltZip)r?   expected_extre   modulesr{   s        r   doTest$UncompressedZipImportTestCase.doTest   s<    2%BxLU!b!""<@'@R@r    )callrp   c                   [         R                  R                  " [        /UR	                  S5      S S Q76 n[
        R                  R                  SU5        [        R                  " SR                  U5      5      nUb  U" U5        U(       aE  UR                  5       nU R                  U[         R                  R                  " U/UQ76 U-   5        g g )NrV   rW   r   r"   )r$   r&   r^   TEMP_ZIPr_   r7   insertr   import_moduleget_fileassertEqual)	r?   r   r   rp   r   r{   zip_pathmodfiles	            r   r   3UncompressedZipImportTestCase.doTestWithPreBuiltZip   s    77<<B6<<+<Sb+AB8$%%chhw&78I<<>DT277<< $+")$+-9$: ; r    c                    S[         R                  ;   a  U R                  S5        S[         R                  ;   a  [         R                  S	 S[        0n U R                  SUS5        U R                  [        :w  a  U R                  S5        g g ! [         a*    U R                  [        :w  a  U R                  S5         g  g f = f)Nzlibzzlib is a builtin modulezzlib.pyr0   z"expected test to raise ImportErrorz&expected test to not raise ImportError)r7   builtin_module_namesskipTestr   r   r   rt   r   failImportErrorr	   r?   re   s     r   testAFakeZlib+UncompressedZipImportTestCase.testAFakeZlib   s    & S---MM45S[[ F#H%	@KKuf-
 :-		>? .	  	D</		BC 0	Ds   B /CCc                 P    [         S-   [        0nU R                  SU[         5        g Nr0   TESTMODr   r   r   s     r   testPy$UncompressedZipImportTestCase.testPy   s     5(+E5'*r    c                 `    [         [        -   [        0nU R                  [        U[         5        g r6   )r   pyc_exttest_pycr   r   s     r   testPyc%UncompressedZipImportTestCase.testPyc   s!    7"H-GUG,r    c                 z    [         S-   [        [         [        -   [        0nU R	                  [        U[         5        g r   )r   r   r   r   r   r   s     r   testBoth&UncompressedZipImportTestCase.testBoth   s,    5(7"H.GUG,r    c                   ^  Sn[         R                  R                  U5      n[         R                  R	                  [        USS5      US5      n[        S-   [        S4[        S-   [        S-
  U40nU 4S	 jnT R                  S U[        US
9  g )N   state = 'old'???r   Fr0   state = 'new'r1      c                 >   > TR                  U R                  S5        g )Noldr   stater   r?   s    r   checkFUncompressedZipImportTestCase.testUncheckedHashBasedPyc.<locals>.check       SYY.r    r   	r   r   source_hash_bootstrap_external_code_to_hash_pyccompiler   r   r   r?   sourcer   bytecodere   r   s   `     r   testUncheckedHashBasedPyc7UncompressedZipImportTestCase.testUncheckedHashBasedPyc   s    !nn00800BBFE6*

 53"86!C"Hh#79	/D%u5r    z_imp.check_hash_based_pycsalwaysc                   ^  Sn[         R                  R                  U5      n[         R                  R	                  [        USS5      US5      n[        S-   [        S4[        S-   [        S-
  U40nU 4S	 jnT R                  S U[        US
9  g )Nr   r   r   Fr0   r   r1   r   c                 >   > TR                  U R                  S5        g )Nnewr   r   s    r   r   OUncompressedZipImportTestCase.test_checked_hash_based_change_pyc.<locals>.check   r   r    r   r   r   s   `     r   "test_checked_hash_based_change_pyc@UncompressedZipImportTestCase.test_checked_hash_based_change_pyc   s    !nn00800BBFE6*

 53"86!C"Hh#79	/D%u5r    c                 H    [         S-   S0nU R                  S U[         5        g )Nr0   rl   )r   r   r   s     r   testEmptyPy)UncompressedZipImportTestCase.testEmptyPy   s     5"%D%)r    c                     [        [        5      nUS==   S-  ss'   [        S-   [        [        [        -   U0nU R                  SU[        5        g )Nr      r0   	bytearrayr   r   r   r   r   )r?   badmagic_pycre   s      r   testBadMagic*UncompressedZipImportTestCase.testBadMagic  sD     *Q45(7"L2E5'*r    c                 z   [        [        5      nUS==   S-  ss'   [        [        -   U0n U R	                  SU[        5        U R                  S5        g ! [        R                   aP  nU R                  UR                  [        5        U R                  SUR                  R                  5         S nAg S nAff = f)Nr   r   r0   zThis should not be reachedzmagic number)r   r   r   r   r   r   rR   ZipImportErrorassertIsInstance	__cause__r   assertInmsg)r?   r   re   excs       r   testBadMagic2+UncompressedZipImportTestCase.testBadMagic2	  s     *Q47"L1	=KKug.II23'' 	=!!#--=MM.#--*;*;<<	=s   (A B:*AB55B:c                     [        [        5      nUS==   S-  ss'   [        S-   [        [        [        -   U0nU R                  SU[        5        g )N      r0   r   )r?   badtime_pycre   s      r   testBadMTime*UncompressedZipImportTestCase.testBadMTime  sF    ) 	B45(7"K1E5'*r    c                     [        [        S[        [        5      5      n[        S-   [        [        [
        -   U0nU R                  SU[        5        g )Nr   r0   )r   test_colenr   r   r   r   )r?   twenty_thirty_eight_pycre   s      r   test2038MTime+UncompressedZipImportTestCase.test2038MTime  sB     #+7Is8}"M5(7"$;=E5'*r    c                     [         [        R                  -   nUS-   [        -   [        U[
        -   [        -   [        0nU R                  [        U[         [
        5        g N__init__)TESTPACKr$   r%   r   r   r   r   )r?   packdirre   s      r   testPackage)UncompressedZipImportTestCase.testPackage&  sG    RVV#:%/7"W,h8GUHg6r    c                    [         [        R                  -   nU[        -   [        R                  -   nUS-   [        -   [
        US-   [        -   [
        U[        -   [        -   [
        0nU R                  [        U[         [        [        5        g r   )r   r$   r%   	TESTPACK2r   r   r   r   r?   r   packdir2re   s       r   testSubPackage,UncompressedZipImportTestCase.testSubPackage,  so     RVV#Y&/:%/J&0(G#g-x9 	GUHiAr    c                     [         [        R                  -   nU[        -   [        R                  -   nUS US U[        -   [
        -   [        0nU R                  [
        U[         [        [        5        g r6   )r   r$   r%   r   r   r   r   r   r   s       r   testSubNamespacePackage5UncompressedZipImportTestCase.testSubNamespacePackage6  s[     RVV#Y&/$4G#g-x9 	GUHiAr    c                    [         [        R                  -   nU[        -   [        R                  -   nU[        -   [        R                  -   nUS U[
        -   [        -   [        US US U[
        -   [        -   [        U[        -   [        -   [        U[
        -   [        -   [        0nUS U[        -   [        -   [        US U[        -   [        -   [        U[
        -   [        -   [        0n[        R                  R                  S5      nU R                  XF5        [        nU R                  XW5        [        R                  R!                  SU5        [        R                  R!                  SU5        ["        R$                  " [         5      nU R'                  S[)        UR*                  5      5        UR*                  u  pU R'                  [        R                  R-                  [        5      U	R/                  [        R                  5      S   5        U R'                  SU
R/                  [        R                  5      S   5        ["        R$                  " UR1                  [        R                  S5      S S 5      nU R'                  S[)        UR*                  5      5        [3        UR*                  5      S   R/                  S[        R                  -   5      S   nU R'                  US S U5        ["        R$                  " SR5                  [         [
        45      5      nU R'                  SUR6                  R/                  [        R                  5      S   5        ["        R$                  " SR5                  [         [        45      5      nU R'                  [        R                  R-                  [        5      UR6                  R/                  [        R                  5      S   5        SR5                  [         [        45      n["        R$                  " U5      nU R'                  S[)        UR*                  5      5        UR*                  u  pU R'                  [        R                  R-                  [        5      U	R/                  [        R                  5      S   5        U R'                  SU
R/                  [        R                  5      S   5        ["        R$                  " SR5                  U[
        45      5      nU R'                  [        R                  R-                  [        5      UR6                  R/                  [        R                  5      S	   5        ["        R$                  " SR5                  U[        45      5      nU R'                  [        R                  R-                  [        5      UR6                  R/                  [        R                  5      S	   5        ["        R$                  " SR5                  U[        45      5      nU R'                  SUR6                  R/                  [        R                  5      S	   5        g )
N	path1.zipr   r   r"   rW      )r   r$   r%   r   	TESTPACK3r   r   r   TESTMOD3TESTMOD2r&   abspathr~   TEMP_DIRrj   r7   r   r   r   r   r   __path__basenamer_   r#   listr^   __file__)r?   r   r   packdir3files1files2zip1zip2r   p1p2mpathsubpkgs                r   testMixedNamespacePackage7UncompressedZipImportTestCase.testMixedNamespacePackageA  si    RVV#Y&/i'"&&04G#g-xDDW$w.X%/W$w.: 4H$w.DX%/W$w.	: ww{+V"f# 	4 4 %%h/
 	C-.))(3RXXbff5Eb5IJbhhrvv&6r&:; %%h&6&6rvvs&CCR&HIC-.S\\"1%++K"&&,@A!D#2. %%chh'/B&CDcll&8&8&@&DE %%chh(/C&DE))(3++BFF3B7	9 8Y/0%%f-C-.))(3RXXbff5Eb5IJbhhrvv&6r&:; %%chh/@&AB))(3++BFF3B7	9 %%chh/A&BC))(3++BFF3B7	9 %%chh/A&BCcll&8&8&@&DEr    c                 n   [         [        R                  -   nU[        -   [        R                  -   nU[        -   [        R                  -   nUS U[
        -   [        -   [        US US U[
        -   [        -   [        U[        -   [        -   [        U[
        -   [        -   [        0n[        R                  R                  S5      nU R                  XE5        US U[        -   [        -   [        US U[        -   [        -   [        U[
        -   [        -   [        0n[        R                  R                  S5      nU R                  Xg5        [        R                  R                  SU5        [        R                  R                  SU5        [        R                   " [         5      nU R#                  S[%        UR&                  5      5        UR&                  u  pU R#                  SU	R)                  [        R                  5      S   5        U R#                  SU
R)                  [        R                  5      S   5        [        R                   " UR+                  [        R                  S5      S S 5      nU R#                  S[%        UR&                  5      5        [-        UR&                  5      S   R)                  S[        R                  -   5      S   nU R#                  US S U5        [        R                   " SR/                  [         [
        45      5      nU R#                  SUR0                  R)                  [        R                  5      S	   5        [        R                   " SR/                  [         [        45      5      nU R#                  SUR0                  R)                  [        R                  5      S	   5        SR/                  [         [        45      n[        R                   " U5      nU R#                  S[%        UR&                  5      5        UR&                  u  pU R#                  SU	R)                  [        R                  5      S	   5        U R#                  SU
R)                  [        R                  5      S	   5        [        R                   " SR/                  U[
        45      5      nU R#                  SUR0                  R)                  [        R                  5      S
   5        [        R                   " SR/                  U[        45      5      nU R#                  SUR0                  R)                  [        R                  5      S
   5        [        R                   " SR/                  U[        45      5      nU R#                  SUR0                  R)                  [        R                  5      S
   5        g )Nr  z	path2.zipr   r   r  r"   rW   r	  r
  r  )r   r$   r%   r   r  r   r   r   r  r&   r  r~   r  r7   r   r   r   r   r   r  r_   r#   r  r^   r  )r?   r   r   r  r  r  r  r  r   r  r  r  r  s                r   testNamespacePackage2UncompressedZipImportTestCase.testNamespacePackage  s"    RVV#Y&/i'"&&04G#g-xDDW$w.X%/W$w.: ww{+V"4H$w.DX%/W$w.	:
 ww{+V" 	4 4 %%h/
 	C-.bhhrvv&6r&:;bhhrvv&6r&:; %%h&6&6rvvs&CCR&HIC-.S\\"1%++K"&&,@A!D#2. %%chh'/B&CDcll&8&8&@&DE %%chh(/C&DEcll&8&8&@&DE 8Y/0%%f-C-.bhhrvv&6r&:;bhhrvv&6r&:; %%chh/@&ABcll&8&8&@&DE %%chh/A&BCcll&8&8&@&DE %%chh/A&BCcll&8&8&@&DEr    c                 
   [         [        R                  -   nU[        -   [        R                  -   nUS-   [        -   [
        US-   [        -   [
        U[        -   [        -   [
        S[        -   [
        0nU R                  USS9  [        R                  " [        5      nU R                  UR                  [        5        U R                  UR                  [         5      5        [        R                   " 5          [        R"                  " S[$        5        UR'                  [         5      nU R                  UR)                  [         5      UR*                  5        S S S 5        UR-                  S5      nU R/                  U5        U R1                  UR2                  [        R                  5        U R5                  UR2                  R                  S5      5        [6        R8                  R;                  U5      nUR2                  R=                  U5        U R                  UR2                  R)                  S5      UR*                  5        UR-                  [         5      n[6        R8                  R;                  U5      nUR2                  R=                  U5        U R                  UR)                  [         5      UR*                  5        [6        R>                  " [         5      R@                  S   n[        RB                  RE                  [        [         5      n	U R                  X5        U R5                  UR                  US-   5      5        U R                  UR                  U[        -   5      5        U R5                  UR                  U[        -   5      5        U[        -   n
[G        U
5      n[6        R>                  " U5      nU R                  U[H        RJ                  ;   5        U RM                  URO                  [         5      5        U RM                  URO                  U
5      5        U R                  UR)                  U
5      UR*                  5        URP                  R2                  nU RM                  URO                  U5      5        U R                  UR)                  U5      UR*                  5        [        R                  " [        [        R                  -   [         -   5      nU R                  UR                  [        5        U R                  URR                  [         [        R                  -   5        g ! , (       d  f       GN= f)Nr   spam   spamrn   ignorer   )*r   r$   r%   r   r   r   r   r~   rR   zipimporterr   r   archive
assertTrue
is_packagewarningscatch_warningssimplefilterDeprecationWarningload_moduleget_filenamer  	find_specassertIsNotNoner   loaderassertFalser   r   module_from_specexec_moduler   r  r&   r^   r'   r7   r   assertIsNone
get_source__spec__rp   )r?   r   r   re   zir   specexec_modexisting_pack_pathexpected_path_pathmod_pathmod_namer4  zi2s                 r   testZipImporterMethods4UncompressedZipImportTestCase.testZipImporterMethods  s   RVV#Y&/:%/J&0(G#g-x'!8- 	U1""8,X.h/0 $$&!!(,>?..*CR__X6E	 ' ||F#T"dkk9+@+@A//78>>2248)11&98;L;LM||H%nn--d3$2CLLA&44X>GGJWW\\(H=+@w';<=g	&9:;x''9:;g%-h7%%h/CKK/0"--12"--122CLLA $$&++H56,,X6E ##Hrvv$5$@Ah/X%67Y '&s   8A T44
Uc                    [         [        R                  -   nU[        -   [        R                  -   nUS-   [        -   [
        US-   [        -   [
        U[        -   [        -   [
        S[        -   [
        0nU R                  USS9  [        R                  " [        5      nU R                  UR                  5       R                  5       UR                  5       5        UR                  5         U R                  UR                  5       R                  5       UR                  5       5        S[        -   [
        0nUR                  U5        [!        [        SU R"                  S9 nU R%                  XeSS9  S S S 5        UR                  5         U R                  UR                  5       R                  5       UR                  5       5        UR'                  S5      nU R)                  U5        U R+                  UR,                  [        R                  5        [        R.                  " [        5        UR                  5         U R1                  UR                  5       5        U R3                  [        R4                  R7                  UR8                  5      5        U R3                  UR'                  S5      5        g ! , (       d  f       GNI= f)	Nr   r$  r%  r&  spam2ars   name_does_not_matter)r   r$   r%   r   r   r   r   r~   rR   r(  r   r   
_get_fileskeysinvalidate_cachesupdater   rt   rx   r2  r3  r   r4  remover5  r8  rS   getr)  )r?   r   r   re   r;  newfiler|   r<  s           r   testInvalidateCaches2UncompressedZipImportTestCase.testInvalidateCaches  s   RVV#Y&/:%/J&0(G#g-x'!8- 	U1""8,--/>
--/>W$h/WXs0@0@AQMM!7M; B 	--/>||G$T"dkk9+@+@A
		(
))88<<RZZHI",,'=>? BAs    J33
Kc                 Z   [         [        R                  -   nU[        -   [        R                  -   nUS-   [        -   [
        US-   [        -   [
        U[        -   [        -   [
        S[        -   [
        0nU R                  USS9  [        R                  " [        5      nU R                  UR                  5       R                  5       UR                  5       5        [        R                  " [        5      nU R                  UR                  5       R                  5       UR                  5       5        S[        -   [
        0nUR                  U5        [        [        SU R                   S9 nU R#                  XvSS9  S S S 5        UR%                  5         U R                  UR                  5       R                  5       UR                  5       5        UR'                  S5      nU R)                  U5        U R+                  UR,                  [        R                  5        g ! , (       d  f       N= f)Nr   r$  r%  r&  rF  rG  rs   )r   r$   r%   r   r   r   r   r~   rR   r(  r   r   rI  rJ  rL  r   rt   rx   rK  r2  r3  r   r4  )	r?   r   r   re   r;  rB  rO  r|   r<  s	            r   *testInvalidateCachesWithMultipleZipimportsHUncompressedZipImportTestCase.testInvalidateCachesWithMultipleZipimports3  s   RVV#Y&/:%/J&0(G#g-x'!8- 	U1""8,--/>##H-)..0%**,?W$h/WXs0@0@AQMM!7M; B 	)..0%**,?}}W%T"dkk9+@+@A BAs   *H
H*c                 	   [         [        R                  -   nU[        -   [        R                  -   nUS-   [        -   [
        U[        -   [        -   [
        0nU R                  USS9  [        R                  " [        [        R                  -   U-   5      nU R                  UR                  [        5        U R                  UR                  U5        U R                  UR                  [        5      5        [         R"                  " 5          [         R$                  " S[&        5        UR)                  [        5      nU R                  UR+                  [        5      UR,                  5        S S S 5        UR/                  [        5      n[0        R2                  R5                  U5      nUR6                  R9                  U5        U R                  UR6                  R+                  [        5      UR,                  5        U R;                  UR                  [        [        R                  -   S-   5      5        U R;                  UR                  [        [        R                  -   [        -   5      5        [        [        R                  -   U-   [        -   n[        R                  " U5      nUR/                  [        5      nU R=                  U5        U R?                  UR6                  [        R                  5        U R;                  UR6                  R                  [        5      5        [0        R2                  R5                  U5      n	UR6                  R9                  U	5        U R                  UR6                  R+                  [        5      U	R,                  5        [        [        R                  -   [        -   n
[A        U
5      n[0        RB                  " U5      nU R                  U[D        RF                  ;   5        U RI                  URK                  [        5      5        U RI                  URK                  U
5      5        U R                  UR+                  U
5      UR,                  5        URL                  nU RI                  URK                  U5      5        U R                  UR+                  U5      UR,                  5        g ! , (       d  f       GN[= f)Nr   s   eggsr&  r'  )'r   r$   r%   r   r   r   r   r~   rR   r(  r   r   r)  rp   r*  r+  r,  r-  r.  r/  r0  r1  r  r2  r   r   r6  r4  r7  r5  r3  r   r'   r   r7   r   r8  r9  
__loader__)r?   r   r   re   r;  r   r<  pkg_pathrB  load_modr@  rA  r4  s                r   $testZipImporterMethodsInSubDirectoryBUncompressedZipImportTestCase.testZipImporterMethodsInSubDirectoryN  sK   RVV#Y&/J&0(G#g-x9U1""8bff#4w#>?X.G,i01$$&!!(,>?..+CR__Y7F '
 ||I&nn--d3$11)<cllKy266'9J'FGHy266'9G'CDEbff$w.:##H- }}W%T"dkk9+@+@A//89>>2248)KK$$W-x/@/@	B rvv%/-h7%%h/CKK/0"--	23"--122CLLA &++H56,,X6EK '&s   A R??
Sc                    U R                  [        R                  [        5        [	        [        S5       nU R
                  Ul        Sn[        S [        S5       5       5      nUR                  X#5        S S S 5        [        R                  " [        5      nU R                  WUR                  W5      5        U R                  S[        U5      5        g ! , (       d  f       Ne= f)Nrr   ztestdata.datc              3   $   #    U  H  ov   M     g 7fr6   rK   ).0xs     r   	<genexpr><UncompressedZipImportTestCase.testGetData.<locals>.<genexpr>  s     /JqJs      zzipimporter object)rY   r   rw   r   r   rt   bytesr   r   rR   r(  r   get_datar   repr)r?   r|   rg   r   r;  s        r   testGetData)UncompressedZipImportTestCase.testGetData  s    	(((3Xs#q ,,AM!D/E#J//DJJt"	 $ ""8,r{{401*DH5 $#s   A C
C"c                     Sn[        [        USS5      [        [        U5      5      n[        [
        -   USS0nU R                  [
        U[        SS9  g )Nzif 1:  # indent hack
        def get_file():
            return __file__
        if __loader__.get_data("some.data") != b"some data":
            raise AssertionError("bad data")
r   r   z	some.dataz	some datarl   )rp   )r   r   r   r   r   r   r   )r?   srcr   re   s       r   testImporterAttr.UncompressedZipImportTestCase.testImporterAttr  sP    2
 wsGV4c3s8D7"Ck+GUGB7r    c                 B   Sn[         S-   U0nU R                  U5        [        R                  R	                  S[
        5        [        R                  " [         5      nU R                  UR                  S5      S5         U R                  UR                  S5      S5        g )Nz[if 1:  # indent hack
        def test(val):
            assert(val)
            return val
r0   r   r	  )r   r~   r7   r&   r   r   r   r   r   testassertRaisesAssertionError)r?   rh  re   r   s       r   testDefaultOptimizationLevel:UncompressedZipImportTestCase.testDefaultOptimizationLevel  s|     5#&U8$%%g.!a( SXXa[!,r    c                 N    [         S-   [        0nU R                  SU[         SS9  g )Nr0   s6  Some StuffSome StuffSome StuffSome StuffSome StuffSome StuffSome StuffSome StuffSome StuffSome StuffSome StuffSome StuffSome StuffSome StuffSome StuffSome StuffSome StuffSome StuffSome StuffSome StuffSome StuffSome StuffSome StuffSome StuffSome StuffSome StuffSome StuffSome StuffSome StuffSome StuffSome Stuff)ro   r   r   s     r   testImport_WithStuff2UncompressedZipImportTestCase.testImport_WithStuff  s,     5(+E5'* 	 	,r    c                 X    U R                  [        R                  " U5      [        5        g r6   )r   inspect	getsourcer   )r?   modules     r   assertModuleSource0UncompressedZipImportTestCase.assertModuleSource  s    **62H=r    c                 b    [         S-   [        0nU R                  SU[         U R                  S9  g Nr0   r   )r   r   r   rx  r   s     r   testGetSource+UncompressedZipImportTestCase.testGetSource  s*    5(+E5'0G0GHr    c                     [        [        [        SS5      [        [	        [        5      5      n[
        S-   [        [
        [        -   U0nU R                  [        U[
        U R                  S9  g )Nr   r   r0   r   )	r   r   r   r   r   r   r   r   rx  )r?   r   re   s      r   testGetCompiledSource3UncompressedZipImportTestCase.testGetCompiledSource  sQ    wx&93HN5(7"C)GUG$2I2IJr    c                 R    [         S-   [        SS0nU R                  SU[         US9  g )Nr0   xyz.txtz>>> log.append(True)
r   r   )r?   callbackre   s      r   
runDoctest(UncompressedZipImportTestCase.runDoctest  s,    5(46E5'9r    c                     / n[         R                  S sn[         l         [         R                  " SUS[        5       S9  U[         l        U R	                  US/5        g ! U[         l        f = fNr  T)packagemodule_relativeglobs)doctestmastertestfilelocalsr   )r?   rw  log
old_masters       r   doDoctestFile+UncompressedZipImportTestCase.doDoctestFile  s^    %,^^T"
GN	(64h
 (GNdV$ (GNs   A A+c                 :    U R                  U R                  5        g r6   )r  r  r>   s    r   testDoctestFile-UncompressedZipImportTestCase.testDoctestFile  s    **+r    c                     / n[         R                  " SUS[        5       S9R                  5         U R	                  US/5        g r  )r  DocFileTestr  runr   )r?   rw  r  s      r   doDoctestSuite,UncompressedZipImportTestCase.doDoctestSuite  s<    vt(	
 #%dV$r    c                 :    U R                  U R                  5        g r6   )r  r  r>   s    r   testDoctestSuite.UncompressedZipImportTestCase.testDoctestSuite  s    ++,r    c                 Z    UR                  5         [        S5      e! [         Ga  nUR                  R                  n[        US5      S   u  pEpgU R                  U[        R                  5       5        [        UR                  S5      S   u  pEpgU R                  U[        R                  5       5        [        R                  " 5       n[        USU5        U R                  UR                  5       R!                  ["        R$                  " 5       (       a  SOS5      5         S nAg S nAff = f)NzThis ought to be impossibler	  r   z$    def do_raise(): raise TypeError
z$                    ^^^^^^^^^^^^^^^
)do_raisern  	Exception__traceback__tb_nextr
   r   	raise_srcstripr   tb_frameioStringIOr   r*  getvalueendswithr   has_no_debug_ranges)	r?   rw  etbr}   lnor   liness	            r   doTraceback)UncompressedZipImportTestCase.doTraceback  s    	@OO$ !!>??#  	((B%b!,Q/LA!T9??#45(a8;LA!T9??#45ARAOOAJJL1111337  	s    D*C8D%%D*c                 b    [         S-   [        0nU R                  S U[         U R                  S9  g r{  )r   r  r   r  r   s     r   testTraceback+UncompressedZipImportTestCase.testTraceback  s*    5),D%t/?/?@r    zneed an unencodable filenamec                 .   [         R                  S-   nU R                  [        S-   [        0U5        [
        R                  " U5      R                  [        5      n[        R                  R                  U5      nUR                  R                  U5        g Nz.zipr0   )r   TESTFN_UNENCODABLEr~   r   r   rR   r(  r2  r   r   r6  r4  r7  )r?   filenamer<  r   s       r   testUnencodable-UncompressedZipImportTestCase.testUnencodable  sl     //&8gox0(;$$X.88Ann--d3$r    c                    [         R                  S-   nU R                  [        S-   [        0U5        [
        R                  " U5        U R                  [        5         [
        R                  " [        R                  " U5      5        S S S 5        U R                  [        5         [
        R                  " [        [        R                  " U5      5      5        S S S 5        U R                  [        5         [
        R                  " [        [        R                  " U5      5      5        S S S 5        g ! , (       d  f       N= f! , (       d  f       Nq= f! , (       d  f       g = fr  )r   TESTFNr~   r   r   rR   r(  rm  	TypeErrorr$   fsencoder   
memoryviewr?   r  s     r   testBytesPath+UncompressedZipImportTestCase.testBytesPath  s    ##f,gox0(;h'y)!!"++h"78 *y)!!)BKK,A"BC *y)!!*R[[-B"CD *)	 *)))))s$   +D4&4E74E4
E
E
E$c                 N    [         S-   [        0nU R                  SU[         SS9  g )Nr0   s   commentrm   r   r   s     r   testComment)UncompressedZipImportTestCase.testComment
  s$    5(+E5':>r    c                 P    [         S-   [        0nU R                  SU[         SSS9  g )Nr0   s@  cruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcrufts   hi)ro   rm   r   r   s     r   testBeginningCruftAndComment:UncompressedZipImportTestCase.testBeginningCruftAndComment  s&    5(+E5'Nr    c                 T    [         S-   [        0nU R                  SU[         SS-  S9  g )Nr0      c  r  r   r   s     r   testLargestPossibleComment8UncompressedZipImportTestCase.testLargestPossibleComment  s)    5(+E5'4=3IJr    c                 J    U R                  5       nU R                  SUS5        g )Nr0   f6r   r   r   s     r   	testZip64'UncompressedZipImportTestCase.testZip64  s     ""$E5$'r    c                 N    U R                  5       nU R                  SUSSS-  S9  g )Nr0   f65536r  r  r  r  r   s     r   testZip64CruftAndComment6UncompressedZipImportTestCase.testZip64CruftAndComment  s)    ""$E5(DM4JKr    c                 <  ^ ^ [         R                  " SSS S35        ST R                  S S3n[        R                  R                  [        U5      n[        R                  " U5      nT R                  [        R                  [        5        U(       Gd  T R                  [        :w  a  [         R                  " SS	5        T R                  [        R                  [        R                  5        [        [        R                  S
5       nUR                  S5        UR                  [        R                   R#                  5       5        UR%                  S[        R&                  5        UR                  [        R                   R#                  5       5        S S S 5        [        R(                  " [        R                  S5        [+        [        ST R                  SS9 mTR                  [        R                  S5        TR-                  [/        SS5      [0        5        TR                  [        R                  S5        S S S 5        U 4S jnT R                  [        :X  a  [3        S[         S35        U" [        5        GO.S nU Vs/ s H  ov" U5      U4PM     nn[        [        S
5       n[5        U5       HY  u  p[        U
S5       nUR%                  U	[        R6                  5        UR                  UR9                  5       5        S S S 5        M[     S S S 5        [+        [        S5       mT R;                  TR=                  S5      R>                  S5        T R;                  TR9                  S5      [0        R#                  5       SU S3S9  U U4S jnU" S5        U" S5        S S S 5        T RA                  SS5        g ! , (       d  f       GN3= f! , (       d  f       GN= fs  snf ! , (       d  f       GMB  = f! , (       d  f       N= f! , (       d  f       Nn= f) N	largefileztest generates files >r   z# bytes and takes a long time to runsparse-zip64-cdz	-0x*.partcpuz+test requires a lot of CPU for compression.rX   s   data)        r  rr   F)rt   strict_timestampsdata1z	module.pyi  r	  r	  r   r   r   data2c           	        > Sn[        U S5       nS n  UR                  5       nUR                  [        U5      5      nU(       d  OXQ:w  a  U(       d  [        R
                  R                  [        STR                  S SUS S35      n[        R                  " [        R
                  R                  U5      SS	9  [        US
5      n[        SU5        UR                  U5        OU(       a  UR                  5         S nM  U(       a  UR                  5         S S S 5        g ! U(       a  UR                  5         f f = f! , (       d  f       g = f)Ns                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   rv   Tr  r  -z#011xz.part)exist_okrX   Created)rc   tellry   r   r$   r&   r^   TEST_DATA_DIRrt   ra   rb   printrd   close)rg   
empty_pager}   partoffsetr   part_fullnamer?   s          r   make_sparse_zip_partsOUncompressedZipImportTestCase.testZip64LargeFile.<locals>.make_sparse_zip_partsQ  s   )
$%D)"%&VVXF#$66#j/#:D#' %#1'+46GGLL(5*89I9I!8LA+1%.)?5&M
 %'KK(*(F15%& ,0t+DD$))]$C $

4 0#'$(JJL'+- #0   JJL9 &%6   JJL  7 &%s#   D>C-D!D>!D;;D>>
Ez'Creating sparse parts to check in into :c                     [         R                  " SU 5      =n(       a  [        UR                  S5      SS9$ [	        SU < S35      e)Nz-(0x[0-9a-f]{9})\.part$r	     )basezname=z does not fit expected pattern.)researchr   group
ValueError)rg   ms     r   extract_offsetHUncompressedZipImportTestCase.testZip64LargeFile.<locals>.extract_offsetv  sC    		"<dCC1Cqwwqz33 ED7*I!JKKr    rv   rz	Recreate z, unexpected contents.)r   c                    > TR                  U 5      nTR                  UR                  S5        TR                  UR                  S5        g )Nr  r   )getinfor   	date_timeassertGreater	file_size)rg   r   r?   r|   s     r   assertDataEntryIUncompressedZipImportTestCase.testZip64LargeFile.<locals>.assertDataEntry  s9    IIdOE$$U__6KL&&uDr    r0   rw  )!r   requiresrt   r$   r&   r^   r  globrY   r   rw   r   r   r  rc   rd   linesepencodeseekSEEK_CURutimer   r   r   r   r  sortedSEEK_SETry   r   r  r  r   )r?   
parts_globfull_parts_globpre_built_zip_partsr}   r  r  r   offset_partsr  part_fnr  r  r|   s   `            @r   testZip64LargeFile0UncompressedZipImportTestCase.testZip64LargeFile  s   $ZL 1 	
" &d&6&6q%9C
'',,}jA"ii8	(((3":-  A OOI,,i.>.>?i&&- 

))+,{BKK0

))+,	 .
 HHY%%z2 ,,"'	
 	(('2

K)>? 	(('2)@ :-?aPQ%h/L =PP<Oq^A.2<OLPh%'-l';OFgt,vr{{3		, -, (< & 3'1  IIk*446K   FF;'):#O#44JK ! E  (( ( 	""5(3i .- p Q -, &% ('sR   BO A!OO$+O<A O)O<,A9P 
O
O!)
O93	O<<
P

PrK   )@rF   rG   rH   rI   r   rt   r@   r  rj   r   r~   rx   r   r   r   r   r   r   r   r   unittestmockpatchr   r   r   r   r   r   r   r  r  r  r!  rC  rP  rS  rY  re  ri  ro  rr  rx  r|  r  r  r  r  r  r  r  r  skipIfr   r  r  r  r  r  r  r  r  r  rJ   rK   r    r   rM   rM   U   s   K, '/ #& &. 4tB( 26b ($<A $(;@B+--
6 ]]5x@6 A6*+
=++7B	BKFZGFR:8x@@B61Ff
6	8- ,>IK:

%,%-@,A __Y11T935%5%
E?OK(Lr4r    rM   c                       \ rS rSr\rSrg)CompressedZipImportTestCasei  rK   N)rF   rG   rH   rI   r	   rt   rJ   rK   r    r   r  r    s    Kr    r  c                       \ rS rSrS rS rS rS rS rS r	\
R                  " \R                  S5      S	 5       rS
 rS rSrg)BadFileZipImportTestCasei  c                 b    U R                  [        R                  [        R                  U5        g r6   )rm  rR   r   r(  r  s     r   assertZipFailure)BadFileZipImportTestCase.assertZipFailure  s#    )22#//	;r    c                 &    U R                  S5        g )NAdfjdkFJKDFJjdklfjsr  r>   s    r   
testNoFile#BadFileZipImportTestCase.testNoFile  s    34r    c                 &    U R                  S5        g )Nrl   r   r>   s    r   testEmptyFilename*BadFileZipImportTestCase.testEmptyFilename  s    b!r    c           	      *   U R                  [        [        R                  S 5        U R                  [        [        R                  [        S S9  U R                  [        [        R                  [        [        R                  " [        5      5      5        g )N)kwd)rm  r  rR   r(  r   r  r$   r  r>   s    r   testBadArgs$BadFileZipImportTestCase.testBadArgs  s`    )Y%:%:DA)Y%:%:GN)Y%:%:r{{734	6r    c                 ,    U R                  SS-  5        g )NAi  r   r>   s    r   testFilenameTooLong,BadFileZipImportTestCase.testFilenameTooLong  s    cEk*r    c                     [         R                  " [        5        [         R                  " [        5        U R	                  [        5        g r6   )r   rw   r   create_empty_filer  r>   s    r   testEmptyFile&BadFileZipImportTestCase.testEmptyFile  s,    !##G,g&r    zmode 000 not supported.c                 >   [         R                  " [        5        [        R                  " [        [        R
                  S5      n [        R                  " U5        U R                  [        R                  5       n[        R                  " [        5        S S S 5        [        R                  " [        S5        [         R                  " [        5        g ! , (       d  f       ND= f! [        R                  " [        S5        [         R                  " [        5        f = f)Nr   i  )r   rw   r   r$   rc   O_CREATr  rm  rR   r   r(  chmod)r?   fdcms      r   testFileUnreadable+BadFileZipImportTestCase.testFileUnreadable  s    !WWWbjj#.		&HHRL""9#;#;<%%g. =
 HHWe$W% =<
 HHWe$W%s$   5C% ;CC% 
C"C% %7Dc                     [         R                  " [        5        [        [        S5      nUR	                  S5        UR                  5         U R                  [        5        g )Nw+aaaaaaaaaaaaaaaaaaaaaa)r   rw   r   rc   rd   r  r  )r?   ri   s     r   testNotZipFile'BadFileZipImportTestCase.testNotZipFile  s?    !'4 


g&r    c                 Z   [         R                  " [        5        [        [        S5      nUR	                  [
        R                  " SS5      5        UR	                  S5        UR                  5         [        R                  " [        5      n [        R                  " 5          [        R                  " S[        5        U R                  [        UR                   S 5        S S S 5        U R                  [        UR"                  S 5        U R                  [        UR$                  S 5        U R                  [        UR&                  S 5        U R                  [        UR(                  S 5        U R                  [        UR*                  S 5        U R                  [        UR,                  S 5        U R                  [        UR.                  S 5        [        R0                  nU R3                  UR%                  S5      5        [        R                  " 5          [        R                  " S[        5        U R                  X2R                   S5        S S S 5        U R                  X2R*                  S5        U R                  [4        UR,                  S5        U R                  X2R.                  S5        U R                  X2R(                  S5        [        R6                  R9                  5         g ! , (       d  f       GN= f! , (       d  f       N= f! [        R6                  R9                  5         f = f)Nr:  z=IiPKaaaaaaaaaaaaaaaaaar'  abc)r   rw   r   rc   rd   r   r   r  rR   r(  r,  r-  r.  r/  rm  r  r0  find_moduler2  r7  r+  get_coderc  r9  r   r8  OSErrorrS   r;   )r?   ri   r|   errors       r   _testBogusZipFile*BadFileZipImportTestCase._testBogusZipFile  s   !'4 
T:./


!!'*	3((*%%h0BC!!)Q]]DA + i=id;i=it<iT:iT:it<,,Eakk%01((*%%h0BC!!%> + eZZ7gqzz59e\\59e\\59**002- +* +* **002s>   L
 "=K'D4L
 8K9A=L
 '
K61L
 9
LL
 
 L*rK   N)rF   rG   rH   rI   r  r!  r$  r(  r,  r0  r  r  r   is_wasir7  r<  rE  rJ   rK   r    r   r  r    sO    ;5"6+'
 __W__&?@& A&'3r    r  c                  8    [         R                  " [        5        g r6   )r   rw   r   rK   r    r   tearDownModulerI    s    Wr    __main__)Er7   r$   r   r  r   importlib.utilr  r   r   r  unittest.mockr,  rl  r   test.supportr   r   zipfiler   r   r   r	   rR   rP   r  ru  r  	tracebackr
   r   r   r   r   r   r   r   r  r   r'   r   r   r   r   r  r  r   r   r  r&   r  r  r   r^   rb   r  r  r   cache_from_sourcepyc_filer   TestCaser3   rM   requires_zlibr  r  rI  rF   mainrK   r    r   <module>rU     s   
 	     	       & " > >     	 9 9 (GV
,/	% iikGS#h-0 		77??;'77???+RWW__X68HI>>++GeO<
<h// <"{4$; {4| 	"?  O3x00 O3d zMMO e  Ds   .F. .F:9F: