
    daf                        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 d dlmZ d dlmZ d dlmZmZmZmZ d dlZd dlZd dlZd dlZd dlZd dlmZmZmZ 	 d dlZdZ e edd	      Z!d
Z"d Z#d Z$ ej                         Z% e#e!e% e&e            Z'dZ(dZ)dZ*ejV                  jY                  d      Z-ejV                  jY                  d      Z.ej^                  ja                  e(dz         Z1dZ2 G d dejf                        Z4 G d de4      Z5 ejl                          G d de5             Z7 G d dejf                        Z8d Z9e:dk(  r ejv                          yy# e$ r dZY 
w xY w)    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                     t        j                  |       }t        j                  j                  t        j                  ddt        |      dz  |dz        z   |z   }|S )Nz<iLLr       )marshaldumps	importlibutilMAGIC_NUMBERstructpackint)comtimesizedatapycs        ./root/Python-3.12.4/Lib/test/test_zipimport.pymake_pycr   &   sY    ==D>>&&FAJ,d[.@	BBDHIC J    c                 B    | j                  t        j                  d      S )N.)replaceossep)paths    r   module_path_to_dotted_namer'   -   s    <<$$r    ziptestmoduleziptestpackageziptestpackage2	junk95142zjunk95142.zip.py.pycc                       e Zd Zd Zd Zy)ImportHooksBaseTestCasec                    t         j                  d d  | _        t         j                  d d  | _        t         j                  d d  | _        t         j                  j                          t        j                         | _        y N)	sysr&   	meta_path
path_hookspath_importer_cacheclearr   modules_setupmodules_beforeselfs    r   setUpzImportHooksBaseTestCase.setUp@   sT    HHQK	q)..+%%'+99;r    c                 &   | j                   t        j                   d d  | j                  t        j                  d d  | j                  t        j                  d d  t        j                  j                          t        j                  | j                    y r1   )	r&   r2   r3   r4   r5   r6   r   modules_cleanupr8   r9   s    r   tearDownz ImportHooksBaseTestCase.tearDownG   s]    ii>>a OOq%%'%%t':':;r    N)__name__
__module____qualname__r;   r>    r    r   r/   r/   >   s    <<r    r/   c                      e Zd ZeZd ZefdZefdZ	d Z
d Zd Zd Zd Zd	 Zej"                  j%                  d
d      d        Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Z d Z!d Z"d Z#d Z$d Z%d Z&d  Z'd! Z(d" Z)d# Z*d$ Z+d% Z,d& Z-d' Z. ej^                  e0jb                  d(u d)      d*        Z2d+ Z3d, Z4d- Z5d. Z6y()/UncompressedZipImportTestCasec                     t        j                          t        j                  j	                          t
        j                  |        y r1   )	linecache
clearcache	zipimport_zip_directory_cacher6   r/   r;   r9   s    r   r;   z#UncompressedZipImportTestCase.setUpS   s0     	&&,,.%%d+r    c                 \   | j                  t        j                  |       |j                         D ]  \  }\  }}t        j
                  j                  ||      }|d   t        j                  k(  r6t        j
                  j                  |      r_t	        j                  |       ut        j
                  j                  |      }t        j
                  j                  |      st	        j                  |       t        |d      5 }|j                  |       d d d         y # 1 sw Y   xY w)Nwb)
addCleanupr   rmtreeitemsr$   r&   joinr%   isdirmakedirsdirnameopenwrite)	r:   filesdirNamenamer   r   r&   dnamefps	            r   makeTreez&UncompressedZipImportTestCase.makeTreeZ   s     		(('2#(;;= 
	#D-5$77<<.DBx266!ww}}T*KK%-ww}}U+KK&$% #HHTN# #
	## #s   D""D+	c                    | j                  t        j                  |       t        |d      5 }|j	                         D ]J  \  }\  }}t        |t        j                  |            }| j                  |_	        |j                  ||       L |j                  dd       }	|	|	|_        d d d        |j                  dd       }
|
]t        |d      5 }|j                         }d d d        t        |d      5 }|j                  |
       |j                         d d d        y y # 1 sw Y   {xY w# 1 sw Y   NxY w# 1 sw Y   y xY w)NwcommentstuffrbrL   )rM   r   unlinkr   rO   r   time	localtimecompressioncompress_typewritestrgetr^   rT   readrU   )r:   rV   zipNamekwzrX   r   r   zinfor^   r_   fs               r   makeZipz%UncompressedZipImportTestCase.makeZipk   s,    		(('2Wc" 	$a',{{} (#muddnnU&;<&*&6&6#

5$'( ffY-G"#		$ w%gt$  vvx gt$  	 	$ 	$    s$   A9D D,3#D8 D),D58Ec                     | j                   |fi | t        j                  j                  dt               t        j                  dj                  |            }|j                  d      }| ||       |rH|j                         }| j                  |t        j                  j                  t        g| |z          y y )Nr   r"   call)rn   r2   r&   insertTEMP_ZIPr   import_modulerP   rg   get_fileassertEqualr$   )r:   expected_extrV   modulesrj   modrp   files           r   doTestz$UncompressedZipImportTestCase.doTest   s    U!b!8$%%chhw&78vvf~I<<>DT277<< $+")$+-9$: ; r    c                    dt         j                  v r| j                  d       dt         j                  v rt         j                  d= dt        t
        fi}	 | j                  d|d       | j                  t        k7  r| j                  d       y y # t        $ r) | j                  t        k7  r| j                  d       Y y Y y w xY w)Nzlibzzlib is a builtin modulezzlib.pyr,   z"expected test to raise ImportErrorz&expected test to not raise ImportError)r2   builtin_module_namesskipTestrw   NOWtest_srcrz   rd   r   failImportErrorr	   r:   rV   s     r   testAFakeZlibz+UncompressedZipImportTestCase.testAFakeZlib   s    & S---MM45S[[ F#S(O,	@KKuf-
 :-		>? .	  	D</		BC 0	Ds   B -C Cc                 \    t         dz   t        t        fi}| j                  d|t                y Nr,   TESTMODr   r   rz   r   s     r   testPyz$UncompressedZipImportTestCase.testPy   s$    53/2E5'*r    c                 l    t         t        z   t        t        fi}| j	                  t        |t                y r1   )r   pyc_extr   test_pycrz   r   s     r   testPycz%UncompressedZipImportTestCase.testPyc   s%    7"S(O4GUG,r    c                     t         dz   t        t        ft         t        z   t        t        fi}| j                  t        |t                y r   )r   r   r   r   r   rz   r   s     r   testBothz&UncompressedZipImportTestCase.testBoth   s4    53/7"S(O5GUG,r    c                 "    d}t         j                  j                  |      }t         j                  j	                  t        |dd      |d      }t        dz   t        dft        dz   t        dz
  |fi} fd	} j                  d |t        |
       y )N   state = 'old'???r   Fr,   state = 'new'r-      c                 >    j                  | j                  d       y )Noldru   staterx   r:   s    r   checkzFUncompressedZipImportTestCase.testUncheckedHashBasedPyc.<locals>.check       SYY.r    rp   	r   r   source_hash_bootstrap_external_code_to_hash_pyccompiler   r   rz   r:   sourcer   bytecoderV   r   s   `     r   testUncheckedHashBasedPycz7UncompressedZipImportTestCase.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                 "    d}t         j                  j                  |      }t         j                  j	                  t        |dd      |d      }t        dz   t        dft        dz   t        dz
  |fi} fd	} j                  d |t        |
       y )Nr   r   r   Fr,   r   r-   r   c                 >    j                  | j                  d       y )Nnewr   r   s    r   r   zOUncompressedZipImportTestCase.test_checked_hash_based_change_pyc.<locals>.check   r   r    r   r   r   s   `     r   "test_checked_hash_based_change_pycz@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                 T    t         dz   t        dfi}| j                  d |t                y )Nr,    )r   r   rz   r   s     r   testEmptyPyz)UncompressedZipImportTestCase.testEmptyPy   s$    53),D%)r    c                     t        t              }|dxx   dz  cc<   t        dz   t        t        ft        t
        z   t        |fi}| j                  d|t               y )Nr      r,   	bytearrayr   r   r   r   r   rz   )r:   badmagic_pycrV   s      r   testBadMagicz*UncompressedZipImportTestCase.testBadMagic   sM     *Q453/7"S,$79E5'*r    c                    t        t              }|dxx   dz  cc<   t        t        z   t        |fi}	 | j                  d|t               | j                  d       y # t        j                  $ rP}| j                  |j                  t               | j                  d|j                  j                         Y d }~y d }~ww xY w)Nr   r   r,   zThis should not be reachedzmagic number)r   r   r   r   r   rz   r   rH   ZipImportErrorassertIsInstance	__cause__r   assertInmsg)r:   r   rV   excs       r   testBadMagic2z+UncompressedZipImportTestCase.testBadMagic2   s     *Q47"S,$78	=KKug.II23'' 	=!!#--=MM.#--*;*;<<	=s   (A B?/AB::B?c                     t        t              }|dxx   dz  cc<   t        dz   t        t        ft        t
        z   t        |fi}| j                  d|t               y )N      r,   r   )r:   badtime_pycrV   s      r   testBadMTimez*UncompressedZipImportTestCase.testBadMTime   sO    ) 	B453/7"S+$68E5'*r    c                     t        t        dt        t                    }t        dz   t
        t        ft        t        z   t
        |fi}| j                  d|t               y )Nr   r,   )r   test_colenr   r   r   r   rz   )r:   twenty_thirty_eight_pycrV   s      r   test2038MTimez+UncompressedZipImportTestCase.test2038MTime   sL     #+7Is8}"M53/7"S*A$BDE5'*r    c                     t         t        j                  z   }|dz   t        z   t        t
        f|t        z   t        z   t        t
        fi}| j                  t        |t         t               y N__init__)TESTPACKr$   r%   r   r   r   r   rz   )r:   packdirrV   s      r   testPackagez)UncompressedZipImportTestCase.testPackage  sO    RVV#:%/#x7"W,sHo?GUHg6r    c                 @   t         t        j                  z   }|t        z   t        j                  z   }|dz   t        z   t
        t        f|dz   t        z   t
        t        f|t        z   t        z   t
        t        fi}| j                  t        |t         t        t               y r   )	r   r$   r%   	TESTPACK2r   r   r   r   rz   r:   r   packdir2rV   s       r   testSubPackagez,UncompressedZipImportTestCase.testSubPackage  s|     RVV#Y&/:%/#xJ&03/G#g-X@ 	GUHiAr    c                    t         t        j                  z   }|t        z   t        j                  z   }|t        df|t        df|t
        z   t        z   t        t        fi}| j                  t        |t         t        t
               y Nr   )	r   r$   r%   r   r   r   r   r   rz   r   s       r   testSubNamespacePackagez5UncompressedZipImportTestCase.testSubNamespacePackage  sh     RVV#Y&/3)C9G#g-X@ 	GUHiAr    c                 8   t         t        j                  z   }|t        z   t        j                  z   }|t         z   dz   t        j                  z   }|t        df|t
        z   t        z   t        t        f|t        df|t        df|t
        z   t        z   t        t        f|t
        z   dz   t        z   t        t        f|t
        z   t        z   t        t        fi}|t        df|t
        z   dz   t        z   t        t        f|t        df|t
        z   dz   t        z   t        t        f|t
        z   t        z   t        t        fi}t        j                  j                  d      }| j                  ||       t        }| j                  ||       t        j                  j                  d|       t        j                  j                  d|       t        j                   t               }| j#                  dt%        |j&                               |j&                  \  }	}
| j#                  t        j                  j)                  t              |	j+                  t        j                        d          | j#                  d|
j+                  t        j                        d          t        j                   |j-                  t        j                  d      d d	       }| j#                  d
t%        |j&                               t/        |j&                        d   j+                  dt        j                  z         d
   }| j#                  |d d	 |       t        j                   dj1                  t         t
        f            }| j#                  d|j2                  j+                  t        j                        d          t        j                   dj1                  t         t
        dz   f            }| j#                  t        j                  j)                  t              |j2                  j+                  t        j                        d          dj1                  t         t        f      }t        j                   |      }| j#                  dt%        |j&                               |j&                  \  }	}
| j#                  t        j                  j)                  t              |	j+                  t        j                        d          | j#                  d|
j+                  t        j                        d          t        j                   dj1                  |t
        f            }| j#                  t        j                  j)                  t              |j2                  j+                  t        j                        d          t        j                   dj1                  |t
        dz   f            }| j#                  t        j                  j)                  t              |j2                  j+                  t        j                        d          t        j                   dj1                  |t
        dz   f            }| j#                  d|j2                  j+                  t        j                        d          y )N3r   2	path1.zipr   r   r"   rK      )r   r$   r%   r   r   r   r   r   r&   abspathrn   TEMP_DIRr[   r2   rq   r   rs   ru   r   __path__basenamesplitr#   listrP   __file__)r:   r   r   packdir3files1files2zip1zip2rx   p1p2mpathsubpkgs                r   testMixedNamespacePackagez7UncompressedZipImportTestCase.testMixedNamespacePackage"  s    RVV#Y&/h&,rvv5C9G#g-XS"IS"IW$w.hW$s*W4sHoW$w.hA C9G#c)G3c8_S"IW$s*W4sHoW$w.h	A ww{+VT"fd# 	4 4 %%h/
 	C-.B))(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-/H&IJ))(3++BFF3B7	9 8Y/0%%f-C-.B))(3RXXbff5Eb5IJbhhrvv&6r&:; %%chh/@&AB))(3++BFF3B7	9 %%chh#/F&GH))(3++BFF3B7	9 %%chh#/F&GHcll&8&8&@&DEr    c                     t         t        j                  z   }|t        z   t        j                  z   }|t         z   dz   t        j                  z   }|t        df|t
        z   t        z   t        t        f|t        df|t        df|t
        z   t        z   t        t        f|t
        z   dz   t        z   t        t        f|t
        z   t        z   t        t        fi}t        j                  j                  d      }| j                  ||       |t        df|t
        z   dz   t        z   t        t        f|t        df|t
        z   dz   t        z   t        t        f|t
        z   t        z   t        t        fi}t        j                  j                  d      }| j                  ||       t        j                  j                  d|       t        j                  j                  d|       t        j                  t               }| j                  dt!        |j"                               |j"                  \  }	}
| j                  d|	j%                  t        j                        d          | j                  d|
j%                  t        j                        d          t        j                  |j'                  t        j                  d	      d d
       }| j                  dt!        |j"                               t)        |j"                        d   j%                  dt        j                  z         d   }| j                  |d d
 |       t        j                  d	j+                  t         t
        f            }| j                  d|j,                  j%                  t        j                        d          t        j                  d	j+                  t         t
        dz   f            }| j                  d|j,                  j%                  t        j                        d          d	j+                  t         t        f      }t        j                  |      }| j                  dt!        |j"                               |j"                  \  }	}
| j                  d|	j%                  t        j                        d          | j                  d|
j%                  t        j                        d          t        j                  d	j+                  |t
        f            }| j                  d|j,                  j%                  t        j                        d          t        j                  d	j+                  |t
        dz   f            }| j                  d|j,                  j%                  t        j                        d          t        j                  d	j+                  |t
        dz   f            }| j                  d|j,                  j%                  t        j                        d          y )Nr   r   r   r   z	path2.zipr   r   r   r"   rK   r   r   r   )r   r$   r%   r   r   r   r   r   r&   r   rn   r2   rq   r   rs   ru   r   r   r   r#   r   rP   r   )r:   r   r   r   r   r   r   r   rx   r   r   r   r   s                r   testNamespacePackagez2UncompressedZipImportTestCase.testNamespacePackageo  s|    RVV#Y&/h&,rvv5C9G#g-XS"IS"IW$w.hW$s*W4sHoW$w.hA ww{+VT"C9G#c)G3c8_S"IW$s*W4sHoW$w.h	A
 ww{+VT" 	4 4 %%h/
 	C-.B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-/H&IJcll&8&8&@&DE 8Y/0%%f-C-.Bbhhrvv&6r&:;bhhrvv&6r&:; %%chh/@&ABcll&8&8&@&DE %%chh#/F&GHcll&8&8&@&DE %%chh#/F&GHcll&8&8&@&DEr    c           	         t         t        j                  z   }|t        z   t        j                  z   }|dz   t        z   t
        t        f|dz   t        z   t
        t        f|t        z   t        z   t
        t        fdt        z   t
        t        fi}| j                  t        j                  t               t        t        d      5 }|j                         D ]Q  \  }\  }}t        |t        j                   |            }| j"                  |_        d|_        |j)                  ||       S 	 d d d        t+        j,                  t              }	| j/                  |	j0                  t               | j3                  |	j5                  t                      t7        j8                         5  t7        j:                  dt<               |	j?                  t               }
| j/                  |	jA                  t               |
jB                         d d d        |	jE                  d      }| jG                  |       | jI                  |jJ                  t*        j,                         | jM                  |jJ                  j5                  d             tN        jP                  jS                  |      }|jJ                  jU                  |       | j/                  |jJ                  jA                  d      |jB                         |	jE                  t               }tN        jP                  jS                  |      }
|jJ                  jU                  |
       | j/                  |	jA                  t               |
jB                         tO        jV                  t               jX                  d   }t        jZ                  j]                  t        t               }| j/                  ||       | jM                  |	j5                  |dz                | j3                  |	j5                  |t        z                | jM                  |	j5                  |t        z                |t        z   }t_        |      }tO        jV                  |      }
| j3                  |t`        jb                  v        | je                  |	jg                  t                      | je                  |	jg                  |             | j/                  |	jA                  |      |
jB                         |
jh                  jJ                  }| je                  |jg                  |             | j/                  |jA                  |      |
jB                         t+        j,                  t        t        j                  z   t         z         }| j/                  |j0                  t               | j/                  |jj                  t         t        j                  z          y # 1 sw Y   xY w# 1 sw Y   xY w)Nr   spamr]      spamignorer   )6r   r$   r%   r   r   r   r   r   rM   r   ra   rr   r   rO   r   rb   rc   rd   re   r^   rf   rH   zipimporterru   archive
assertTrue
is_packagewarningscatch_warningssimplefilterDeprecationWarningload_moduleget_filenamer   	find_specassertIsNotNoner   loaderassertFalser   r   module_from_specexec_modulers   r   r&   rP   r'   r2   rw   assertIsNone
get_source__spec__prefix)r:   r   r   rV   rk   rX   r   r   rl   zirx   specexec_modexisting_pack_pathexpected_path_pathmod_pathmod_namer   zi2s                      r   testZipImporterMethodsz4UncompressedZipImportTestCase.testZipImporterMethods  sA   RVV#Y&/:%/#xJ&03/G#g-X'!C?4
 		(((3Xs# 	(q',{{} (#muddnnU&;<&*&6&6# '

5$'	(	( ""8,X.h/0 $$& 	F!!(,>?..*CR__X6E		F ||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7q	( 	(	F 	Fs   A%W AW%W"%W/c           	      n   t         t        j                  z   }|t        z   t        j                  z   }|dz   t        z   t
        t        f|dz   t        z   t
        t        f|t        z   t        z   t
        t        fdt        z   t
        t        fi}| j                  t        j                  t               t        t        d      5 }|j                         D ]Q  \  }\  }}t        |t        j                   |            }| j"                  |_        d|_        |j)                  ||       S 	 d d d        t+        j,                  t              }	| j/                  |	j0                  j3                         |j3                                |	j5                          | j/                  |	j0                  j3                         |j3                                dt        z   t
        t        fi}
|j7                  |
       t        t        d      5 }|
j                         D ]Q  \  }\  }}t        |t        j                   |            }| j"                  |_        d|_        |j)                  ||       S 	 d d d        |	j5                          | j/                  |	j0                  j3                         |j3                                |	j9                  d      }| j;                  |       | j=                  |j>                  t*        j,                         t        j@                  t               |	j5                          | jC                  |	j0                         | jE                  t*        jF                  jI                  |	jJ                               | jE                  |	j9                  d             y # 1 sw Y   xxY w# 1 sw Y   HxY w)Nr   r   r]   r   spam2aname_does_not_matter)&r   r$   r%   r   r   r   r   r   rM   r   ra   rr   r   rO   r   rb   rc   rd   re   r^   rf   rH   r   ru   _fileskeysinvalidate_cachesupdater   r   r   r   remover   r  rI   rg   r   )r:   r   r   rV   rk   rX   r   r   rl   r  newfiler  s               r   testInvalidateCachesz2UncompressedZipImportTestCase.testInvalidateCaches  s   RVV#Y&/:%/#xJ&03/G#g-X'!C?4 		(((3Xs# 	(q',{{} (#muddnnU&;<&*&6&6# '

5$'	(	( ""8,)5::<8
)5::<8W$sHo6WXs# 	(q'.}} (#muddnnU&;<&*&6&6# '

5$'	(	( 	)5::<8||G$T"dkk9+@+@A
		(
#)88<<RZZHI",,'=>?A	( 	(	( 	(s   A%N>A%N*N'*N4c                 
   t         t        j                  z   }|t        z   t        j                  z   }|dz   t        z   t
        t        f|t        z   t        z   t
        t        fi}| j                  t        j                  t               t        t        d      5 }|j                         D ]Q  \  }\  }}t        |t        j                   |            }| j"                  |_        d|_        |j)                  ||       S 	 d d d        t+        j,                  t        t        j                  z   |z         }	| j/                  |	j0                  t               | j/                  |	j2                  |       | j5                  |	j7                  t                     t9        j:                         5  t9        j<                  dt>               |	jA                  t              }
| j/                  |	jC                  t              |
jD                         d d d        |	jG                  t              }tH        jJ                  jM                  |      }
|jN                  jQ                  |
       | j/                  |jN                  jC                  t              |
jD                         | jS                  |	j7                  t        t        j                  z   dz                | jS                  |	j7                  t        t        j                  z   t        z                t        t        j                  z   |z   t        z   }t+        j,                  |      }|jG                  t              }| jU                  |       | jW                  |jN                  t*        j,                         | jS                  |jN                  j7                  t                     tH        jJ                  jM                  |      }|jN                  jQ                  |       | j/                  |jN                  jC                  t              |jD                         t        t        j                  z   t        z   }tY        |      }tI        jZ                  |      }
| j5                  |t\        j^                  v        | ja                  |	jc                  t                     | ja                  |	jc                  |             | j/                  |	jC                  |      |
jD                         |
jd                  }| ja                  |jc                  |             | j/                  |jC                  |      |
jD                         y # 1 sw Y   [xY w# 1 sw Y   `xY w)Nr   r]   s   eggsr   )3r   r$   r%   r   r   r   r   r   rM   r   ra   rr   r   rO   r   rb   rc   rd   re   r^   rf   rH   r   ru   r   r  r   r   r   r   r   r   r   r   r   r   r   r   r  r   r  r   r   r   r'   rs   r2   rw   r  r  
__loader__)r:   r   r   rV   rk   rX   r   r   rl   r  rx   r  pkg_pathr  load_modr  r  r   s                     r   $testZipImporterMethodsInSubDirectoryzBUncompressedZipImportTestCase.testZipImporterMethodsInSubDirectory%  s   RVV#Y&/J&03/G#g-X@ 		(((3Xs# 	(q',{{} (#muddnnU&;<&*&6&6# '

5$'	(	( ""8bff#4w#>?X.G,i01$$& 	G!!(,>?..+CR__Y7F	G
 ||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Ec	( 	(	G 	Gs   A%U'AU$U!$U.c                    | j                  t        j                  t               t	        t        d      5 }| j
                  |_        d}t        d t        d      D              }|j                  ||       d d d        t        j                  t              }| j                  |j                               | j                  dt        |             y # 1 sw Y   _xY w)Nr]   ztestdata.datc              3       K   | ]  }|  y wr1   rB   ).0xs     r   	<genexpr>z<UncompressedZipImportTestCase.testGetData.<locals>.<genexpr>d  s     /q/s      zzipimporter object)rM   r   ra   rr   r   rd   bytesrangerf   rH   r   ru   get_datar   repr)r:   rk   rX   r   r  s        r   testGetDataz)UncompressedZipImportTestCase.testGetData_  s    	(((3Xs# 	#q ,,AM!D/E#J//DJJtT"		# ""8,r{{401*DH5	# 	#s   ACCc                     d}t        t        |dd      t        t        |            }t        t
        z   t        |fdt        dfi}| j                  t
        |t               y )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 data)r   r   r   r   r   r   rz   )r:   srcr   rV   s       r   testImporterAttrz.UncompressedZipImportTestCase.testImporterAttrk  sU    2
 wsGV4c3s8D7"S#JsK02GUG,r    c                 L   d}t         dz   t        |fi}| j                  |       t        j                  j                  dt               t        j                  t               }| j                  |j                  d      d       	 | j                  t        |j                  d       y )Nz[if 1:  # indent hack
        def test(val):
            assert(val)
            return val
r,   r   r   F)r   r   rn   r2   r&   rq   rr   r   rs   ru   testassertRaisesAssertionError)r:   r,  rV   rx   s       r   testDefaultOptimizationLevelz:UncompressedZipImportTestCase.testDefaultOptimizationLevelv  s|     53*-U8$%%g.!a(nchh>r    c                 `    t         dz   t        t        fi}| j                  d|t         d       y )Nr,   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)r_   r   r   s     r   testImport_WithStuffz2UncompressedZipImportTestCase.testImport_WithStuff  s0     53/2E5'* 	 	,r    c                 V    | j                  t        j                  |      t               y r1   )ru   inspect	getsourcer   )r:   modules     r   assertModuleSourcez0UncompressedZipImportTestCase.assertModuleSource  s    **62H=r    c                 t    t         dz   t        t        fi}| j                  d|t         | j                         y Nr,   r   )r   r   r   rz   r9  r   s     r   testGetSourcez+UncompressedZipImportTestCase.testGetSource  s.    53/2E5'0G0GHr    c                     t        t        t        dd      t        t	        t                    }t
        dz   t        t        ft
        t        z   t        |fi}| j                  t        |t
        | j                         y )Nr   r   r,   r   )	r   r   r   r   r   r   r   rz   r9  )r:   r   rV   s      r   testGetCompiledSourcez3UncompressedZipImportTestCase.testGetCompiledSource  sY    wx&93HN53/7"S#J0GUG$2I2IJr    c                 p    t         dz   t        t        fdt        dfi}| j                  d|t         |       y )Nr,   xyz.txtz>>> log.append(True)
r   r   )r:   callbackrV   s      r   
runDoctestz(UncompressedZipImportTestCase.runDoctest  s5    53/S":;=E5'9r    c                     g }t         j                  d c}t         _        	 t        j                  d|dt                      |t         _        | j	                  |dg       y # |t         _        w xY wNr@  T)packagemodule_relativeglobs)doctestmastertestfilelocalsru   )r:   r8  log
old_masters       r   doDoctestFilez+UncompressedZipImportTestCase.doDoctestFile  s^    %,^^T"
GN	(64h
 (GNdV$ (GNs   !A   A-c                 :    | j                  | j                         y r1   )rB  rN  r9   s    r   testDoctestFilez-UncompressedZipImportTestCase.testDoctestFile  s    **+r    c                     g }t        j                  d|dt                     j                          | j	                  |dg       y rD  )rH  DocFileTestrK  runru   )r:   r8  rL  s      r   doDoctestSuitez,UncompressedZipImportTestCase.doDoctestSuite  s<    vt(	
 #%dV$r    c                 :    | j                  | j                         y r1   )rB  rT  r9   s    r   testDoctestSuitez.UncompressedZipImportTestCase.testDoctestSuite  s    ++,r    c                 P   	 |j                          t        d      # t        $ r}|j                  j                  }t        |d      d   \  }}}}| j                  |t        j                                t        |j                  d      d   \  }}}}| j                  |t        j                                t        j                         }t        |d|       | j                  |j                         j!                  t#        j$                         rdnd             Y d }~y d }~ww xY w)NzThis ought to be impossibler   r   z$    def do_raise(): raise TypeError
z$                    ^^^^^^^^^^^^^^^
)do_raiser1  	Exception__traceback__tb_nextr
   ru   	raise_srcstripr   tb_frameioStringIOr   r   getvalueendswithr   has_no_debug_ranges)	r:   r8  etbrm   lnonliness	            r   doTracebackz)UncompressedZipImportTestCase.doTraceback  s    	@OO$ !!>??#  	((B%b!,Q/LAc!DT9??#45(a8;LAc!DT9??#45ARAOOAJJL111137  	s    	D%C5D  D%c                 t    t         dz   t        t        fi}| j                  d |t         | j                         y r;  )r   r   r\  rz   rj  r   s     r   testTracebackz+UncompressedZipImportTestCase.testTraceback  s/    53	"23D%t/?/?@r    Nzneed an unencodable filenamec                    t         j                  dz   }| j                  t         j                  |       t	        |d      5 }t        t        dz   t        j                  t                    }| j                  |_        |j                  |t               d d d        t        j                  |      j!                  t              }t"        j$                  j'                  |      }|j(                  j+                  |       y # 1 sw Y   lxY wNz.zipr]   r,   )r   TESTFN_UNENCODABLErM   ra   r   r   r   rb   rc   r   rd   re   rf   r   rH   r   r   r   r   r  r   r  )r:   filenamerk   rl   r  rx   s         r   testUnencodablez-UncompressedZipImportTestCase.testUnencodable  s     //&8	(((3Xs# 	(qGeOT^^C-@AE"&"2"2EJJuh'	( $$X.88Ann--d3$	( 	(s    AC==Dc                    t         j                  dz   }| j                  t         j                  |       t	        |d      5 }t        t        dz   t        j                  t                    }| j                  |_        |j                  |t               d d d        t        j                  |       | j!                  t"              5  t        j                  t%        j&                  |             d d d        | j!                  t"              5  t        j                  t)        t%        j&                  |                   d d d        | j!                  t"              5  t        j                  t+        t%        j&                  |                   d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   rxY w# 1 sw Y   y xY wrn  )r   TESTFNrM   ra   r   r   r   rb   rc   r   rd   re   rf   r   rH   r   r0  	TypeErrorr$   fsencoder   
memoryview)r:   rp  rk   rl   s       r   testBytesPathz+UncompressedZipImportTestCase.testBytesPath  sR   ##f,	(((3Xs# 	(qGeOT^^C-@AE"&"2"2EJJuh'	(
 	h'y) 	9!!"++h"78	9y) 	D!!)BKK,A"BC	Dy) 	E!!*R[[-B"CD	E 	E	( 	(	9 	9	D 	D	E 	Es1    AF)F!
2F-2F9F!F*-F69Gc                 `    t         dz   t        t        fi}| j                  d|t         d       y )Nr,   s   commentr^   r   r   s     r   testCommentz)UncompressedZipImportTestCase.testComment  s(    53/2E5':>r    c                 b    t         dz   t        t        fi}| j                  d|t         dd       y )Nr,   s@  cruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcrufts   hi)r_   r^   r   r   s     r   testBeginningCruftAndCommentz:UncompressedZipImportTestCase.testBeginningCruftAndComment  s*    53/2E5'Nr    c                 f    t         dz   t        t        fi}| j                  d|t         ddz         y )Nr,      ci  ry  r   r   s     r   testLargestPossibleCommentz8UncompressedZipImportTestCase.testLargestPossibleComment  s-    53/2E5'4=3IJr    )7r?   r@   rA   r   rd   r;   r   r[   rr   rn   rz   r   r   r   r   r   unittestmockpatchr   r   r   r   r   r   r   r   r   r   r   r  r  r  r*  r-  r2  r4  r9  r<  r>  rB  rN  rP  rT  rV  rj  rl  skipIfr   ro  rq  rw  rz  r|  r  rB   r    r   rD   rD   O   sF   K, '/ #" &. 0; @B+--
6 ]]5x@6 A6*+
=++7B	BKFZGFRA8F(@T8Ft
6	-- ,>IK:

%,%-@,A X__Y11T935	%5	%E ?OKr    rD   c                       e Zd ZeZy)CompressedZipImportTestCaseN)r?   r@   rA   r	   rd   rB   r    r   r  r    s    Kr    r  c                       e Zd Zd Zd Zd Zd Zd Zd Z e	j                  ej                  d      d        Zd	 Zd
 Zy)BadFileZipImportTestCasec                 b    | j                  t        j                  t        j                  |       y r1   )r0  rH   r   r   )r:   rp  s     r   assertZipFailurez)BadFileZipImportTestCase.assertZipFailure  s#    )22#//	;r    c                 &    | j                  d       y )NAdfjdkFJKDFJjdklfjsr  r9   s    r   
testNoFilez#BadFileZipImportTestCase.testNoFile  s    34r    c                 &    | j                  d       y r   r  r9   s    r   testEmptyFilenamez*BadFileZipImportTestCase.testEmptyFilename
  s    b!r    c           	      .   | j                  t        t        j                  d        | j                  t        t        j                  t        d        | j                  t        t        j                  t        t        j                  t                           y )N)kwd)r0  rt  rH   r   r   r   r$   ru  r9   s    r   testBadArgsz$BadFileZipImportTestCase.testBadArgs  s`    )Y%:%:DA)Y%:%:GN)Y%:%:r{{734	6r    c                 ,    | j                  ddz         y )NAi  r  r9   s    r   testFilenameTooLongz,BadFileZipImportTestCase.testFilenameTooLong  s    cEk*r    c                     t        j                  t               t        j                  t               | j	                  t               y r1   )r   ra   r   create_empty_filer  r9   s    r   testEmptyFilez&BadFileZipImportTestCase.testEmptyFile  s,    !##G,g&r    zmode 000 not supported.c                 $   t        j                  t               t        j                  t        t        j
                  d      }	 t        j                  |       | j                  t        j                        5 }t        j                  t               d d d        t        j                  t        d       t        j                  t               y # 1 sw Y   =xY w# t        j                  t        d       t        j                  t               w xY w)Nr   i  )r   ra   r   r$   rT   O_CREATcloser0  rH   r   r   chmod)r:   fdcms      r   testFileUnreadablez+BadFileZipImportTestCase.testFileUnreadable  s    !WWWbjj#.		&HHRL""9#;#;< /%%g./
 HHWe$W%/ /
 HHWe$W%s$   4C 8CC CC 5Dc                     t        j                  t               t        t        d      }|j	                  d       |j                          | j                  t               y )Nw+aaaaaaaaaaaaaaaaaaaaaa)r   ra   r   rT   rU   r  r  )r:   rZ   s     r   testNotZipFilez'BadFileZipImportTestCase.testNotZipFile*  s?    !'4 


g&r    c                 @   t        j                  t               t        t        d      }|j	                  t        j                  dd             |j	                  d       |j                          t        j                  t              }	 t        j                         5  t        j                  dt               | j                  t        |j                   d        d d d        | j                  t        |j"                  d        | j                  t        |j$                  d        | j                  t        |j&                  d        | j                  t        |j(                  d        | j                  t        |j*                  d        | j                  t        |j,                  d        | j                  t        |j.                  d        t        j0                  }| j3                  |j%                  d             t        j                         5  t        j                  dt               | j                  ||j                   d       d d d        | j                  ||j*                  d       | j                  t4        |j,                  d       | j                  ||j.                  d       | j                  ||j(                  d       t        j6                  j9                          y # 1 sw Y   xY w# 1 sw Y   xY w# t        j6                  j9                          w xY w)Nr  z=IiPKaaaaaaaaaaaaaaaaaar   abc)r   ra   r   rT   rU   r   r   r  rH   r   r   r   r   r   r0  rt  r   find_moduler   r  r   get_coder(  r  r   r  OSErrorrI   r6   )r:   rZ   rk   errors       r   _testBogusZipFilez*BadFileZipImportTestCase._testBogusZipFile2  s0   !'4 
T:./


!!'*	3((* B%%h0BC!!)Q]]DAB i=id;i=it<iT:iT:it<,,Eakk%01((* ?%%h0BC!!%>? eQZZ7gqzz59eQ\\59eQ\\59**002-B B? ? **002s>   
K= <K$D3K= 8K1B K= $K.)K= 1K:6K= = LN)r?   r@   rA   r  r  r  r  r  r  r  r  r   is_wasir  r  r  rB   r    r   r  r    sQ    ;5"6+'
 X__W__&?@& A&'3r    r  c                  6    t        j                  t               y r1   )r   ra   r   rB   r    r   tearDownModuler  T  s    Wr    __main__)<r2   r$   r   r   importlib.utilr   rb   r  unittest.mockr   r/  r   test.supportr   r   zipfiler   r   r   r	   rH   rF   rH  r6  r_  	tracebackr
   r   r   r|   r   r   r   r   r\  r   r'   r   r   r   r   r   r   r&   r   r   rr   r   cache_from_sourcepyc_filer   TestCaser/   rD   requires_zlibr  r  r  r?   mainrB   r    r   <module>r     s~   
 	          & " > >     	 9 9 (GV
,/	% diikGS#h-0 	77??;'77???+>>++GeO<
<h// <"k
K$; k
K\ "?  O3x00 O3d zHMMO }  Ds   &E* *E54E5