
    <ez                         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n# e$ r dZY nw xY w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j+        ,                    d          Z-ej+        ,                    d          Z.ej/        0                    e(dz             Z1dZ2 G d dej3                  Z4 G d de4          Z5 ej6                     G d de5                      Z7 G d dej3                  Z8d Z9e:dk    r ej;                     dS dS )    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        */usr/lib/python3.11/test/test_zipimport.pymake_pycr   &   s[    =D>&FAJJ,d[.@	B 	BBDHIC J    c                 B    |                      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dS )ImportHooksBaseTestCasec                    t           j        d d          | _        t           j        d d          | _        t           j        d d          | _        t           j                                         t          j                    | _        d S N)	sysr&   	meta_path
path_hookspath_importer_cacheclearr   modules_setupmodules_beforeselfs    r   setUpzImportHooksBaseTestCase.setUp@   sc    HQQQK	qqq).+%%'''+9;;r    c                     | j         t          j         d d <   | j        t          j        d d <   | j        t          j        d d <   t          j                                         t          j        | j          d S r1   )	r&   r2   r3   r4   r5   r6   r   modules_cleanupr8   r9   s    r   tearDownz ImportHooksBaseTestCase.tearDownG   sc    i>aaa Oqqq%%'''%t':;;;;r    N)__name__
__module____qualname__r;   r>    r    r   r/   r/   >   s2        < < << < < < <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                            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/        e0j1        d(u d)          d*             Z2d+ Z3d, Z4d- Z5d. Z6d(S )/UncompressedZipImportTestCasec                     t          j                     t          j                                         t
                              |            d S r1   )	linecache
clearcache	zipimport_zip_directory_cacher6   r/   r;   r9   s    r   r;   z#UncompressedZipImportTestCase.setUpS   sB     	&,,...%%d+++++r    c                 v   |                      t          j        |           |                                D ]\  }\  }}t          j                            ||          }|d         t          j        k    r4t          j                            |          st	          j	        |           st          j        
                    |          }t          j                            |          st	          j	        |           t          |d          5 }|                    |           d d d            n# 1 swxY w Y   d S )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22#(;;== 
	# 
	#D-5$7<<..DBx26!!w}}T** &K%%%--w}}U++ 'K&&&$%% #HHTNNN# # # # # # # # # # # # # # #
	# 
	#s   
D,,D0	3D0	c                    |                      t          j        |           t          |d          5 }|                                D ]L\  }\  }}t          |t          j        |                    }| j        |_	        |
                    ||           M|                    dd           }	|	|	|_        d d d            n# 1 swxY w Y   |                    dd           }
|
t          |d          5 }|                                }d d d            n# 1 swxY w Y   t          |d          5 }|                    |
           |                    |           d d d            d S # 1 swxY w Y   d S d S )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22Wc"" 	$a',{{}} ( (#muddnU&;&;<<&*&6#

5$''''ffY--G"#		$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ w%%gt$$  vvxx                             gt$$                  	 s6   BB>>CC1DDD-+E%%E),E)c                     | j         |fi | t          j                            dt                     t          j        d                    |                    }|                    d          }| ||           |rI|	                                }| 
                    |t          j        j        t          g|R  |z              d S d S )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&788vvf~~DIII 	;<<>>DT27< $+")$+ $+ $+-9$: ; ; ; ; ;	; 	;r    c                    dt           j        v r|                     d           dt           j        v rt           j        d= dt          t
          fi}	 |                     d|d           | j        t          k    r| 	                    d           d S d S # t          $ r, | j        t          k    r| 	                    d           Y d S Y d S 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55S[  F#S(O,	@KKuf---
 :--		>????? .-	  	D 	D 	D<//		BCCCCCC 0//	Ds   B /CCc                 n    t           dz   t          t          fi}|                     d|t                      d S Nr,   TESTMODr   r   rz   r   s     r   testPyz$UncompressedZipImportTestCase.testPy   s0    53/2E5'*****r    c                     t           t          z   t          t          fi}|                     t          |t                      d S r1   )r   pyc_extr   test_pycrz   r   s     r   testPycz%UncompressedZipImportTestCase.testPyc   s1    7"S(O4GUG,,,,,r    c                     t           dz   t          t          ft           t          z   t          t          fi}|                     t          |t                      d S r   )r   r   r   r   r   rz   r   s     r   testBothz&UncompressedZipImportTestCase.testBoth   s@    53/7"S(O5GUG,,,,,r    c                 >    d}t           j                            |          }t           j                            t          |dd          |d          }t          dz   t          dft          dz   t          dz
  |fi} fd	}                     d |t          |
           d S )N   state = 'old'???r   Fr,   state = 'new'r-      c                 >                         | j        d           d S )Noldru   staterx   r:   s    r   checkzFUncompressedZipImportTestCase.testUncheckedHashBasedPyc.<locals>.check   !    SY.....r    rp   	r   r   source_hash_bootstrap_external_code_to_hash_pyccompiler   r   rz   r:   sourcer   bytecoderV   r   s   `     r   testUncheckedHashBasedPycz7UncompressedZipImportTestCase.testUncheckedHashBasedPyc   s    !n00880BBFE6**
 

 53"86!C"Hh#79	/ 	/ 	/ 	/ 	/D%u55555r    z_imp.check_hash_based_pycsalwaysc                 >    d}t           j                            |          }t           j                            t          |dd          |d          }t          dz   t          dft          dz   t          dz
  |fi} fd	}                     d |t          |
           d S )Nr   r   r   Fr,   r   r-   r   c                 >                         | j        d           d S )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    !n00880BBFE6**
 

 53"86!C"Hh#79	/ 	/ 	/ 	/ 	/D%u55555r    c                 d    t           dz   t          dfi}|                     d |t                      d S )Nr,    )r   r   rz   r   s     r   testEmptyPyz)UncompressedZipImportTestCase.testEmptyPy   s0    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}|                     d|t                     d S )Nr      r,   	bytearrayr   r   r   r   r   rz   )r:   badmagic_pycrV   s      r   testBadMagicz*UncompressedZipImportTestCase.testBadMagic   sd     **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}	 |                     d|t                     |                     d           d S # t          j        $ rK}| 	                    |j
        t                     |                     d|j
        j                   Y d }~d S 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3333' 	= 	= 	=!!#-===MM.#-*;<<<<<<<<<	=s   1A1 1C A CCc                     t          t                    }|dxx         dz  cc<   t          dz   t          t          ft          t
          z   t          |fi}|                     d|t                     d S )N      r,   r   )r:   badtime_pycrV   s      r   testBadMTimez*UncompressedZipImportTestCase.testBadMTime   sf    )) 	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}|                     d|t                     d S )Nr   r,   )r   test_colenr   r   r   r   rz   )r:   twenty_thirty_eight_pycrV   s      r   test2038MTimez+UncompressedZipImportTestCase.test2038MTime   s]     #+7Is8}}"M"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}|                     t          |t           t                     d S N__init__)TESTPACKr$   r%   r   r   r   r   rz   )r:   packdirrV   s      r   testPackagez)UncompressedZipImportTestCase.testPackage  sY    RV#:%/#x7"W,sHo?GUHg66666r    c                 Z   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}|                     t          |t           t          t                     d S r   )	r   r$   r%   	TESTPACK2r   r   r   r   rz   r:   r   packdir2rV   s       r   testSubPackagez,UncompressedZipImportTestCase.testSubPackage  s     RV#Y&/:%/#xJ&03/G#g-X@ 	GUHiAAAA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}|                     t          |t           t          t
                     d S Nr   )	r   r$   r%   r   r   r   r   r   rz   r   s       r   testSubNamespacePackagez5UncompressedZipImportTestCase.testSubNamespacePackage  sp     RV#Y&/3)C9G#g-X@ 	GUHiAAAAAr    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          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        	                    d          }| 
                    ||           t          }|                     ||           t          j                            d|           t          j                            d|           t          j        t                     }|                     dt%          |j                             |j        \  }	}
|                     t          j                            t                    |	                    t          j                  d                    |                     d|
                    t          j                  d                    t          j        |                    t          j        d          d d	                   }|                     d
t%          |j                             t/          |j                  d                             dt          j        z             d
         }|                     |d d	         |           t          j        d                    t           t
          f                    }|                     d|j                            t          j                  d                    t          j        d                    t           t
          dz   f                    }|                     t          j                            t                    |j                            t          j                  d                    d                    t           t          f          }t          j        |          }|                     dt%          |j                             |j        \  }	}
|                     t          j                            t                    |	                    t          j                  d                    |                     d|
                    t          j                  d                    t          j        d                    |t
          f                    }|                     t          j                            t                    |j                            t          j                  d                    t          j        d                    |t
          dz   f                    }|                     t          j                            t                    |j                            t          j                  d                    t          j        d                    |t
          dz   f                    }|                     d|j                            t          j                  d                    d S )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"  sN    RV#Y&/h&,rv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 w{++VT"""fd### 	4   4   %h//
 	C--...B))(33RXXbf5E5Eb5IJJJbhhrv&6&6r&:;;; %h&6&6rvs&C&CCRC&HIIC--...S\""1%++K"&,@AA!D#2#... %chh'/B&C&CDDcl&8&8&@&@&DEEE %chh'C-/H&I&IJJ))(33++BF33B7	9 	9 	9 8Y/00%f--C--...B))(33RXXbf5E5Eb5IJJJbhhrv&6&6r&:;;; %chh/@&A&ABB))(33++BF33B7	9 	9 	9 %chh#/F&G&GHH))(33++BF33B7	9 	9 	9 %chh#/F&G&GHHcl&8&8&@&@&DEEEE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        	                    d          }| 
                    ||           |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        	                    d          }| 
                    ||           t          j                            d|           t          j                            d|           t          j        t                     }|                     dt!          |j                             |j        \  }	}
|                     d|	                    t          j                  d                    |                     d|
                    t          j                  d                    t          j        |                    t          j        d	          d d
                   }|                     dt!          |j                             t)          |j                  d                             dt          j        z             d         }|                     |d d
         |           t          j        d	                    t           t
          f                    }|                     d|j                            t          j                  d                    t          j        d	                    t           t
          dz   f                    }|                     d|j                            t          j                  d                    d	                    t           t          f          }t          j        |          }|                     dt!          |j                             |j        \  }	}
|                     d|	                    t          j                  d                    |                     d|
                    t          j                  d                    t          j        d	                    |t
          f                    }|                     d|j                            t          j                  d                    t          j        d	                    |t
          dz   f                    }|                     d|j                            t          j                  d                    t          j        d	                    |t
          dz   f                    }|                     d|j                            t          j                  d                    d S )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    RV#Y&/h&,rv5C9G#g-XS"IS"IW$w.hW$s*W4sHoW$w.hA w{++VT"""C9G#c)G3c8_S"IW$s*W4sHoW$w.h	A
 w{++VT""" 	4   4   %h//
 	C--...Bbhhrv&6&6r&:;;;bhhrv&6&6r&:;;; %h&6&6rvs&C&CCRC&HIIC--...S\""1%++K"&,@AA!D#2#... %chh'/B&C&CDDcl&8&8&@&@&DEEE %chh'C-/H&I&IJJcl&8&8&@&@&DEEE 8Y/00%f--C--...Bbhhrv&6&6r&:;;;bhhrv&6&6r&:;;; %chh/@&A&ABBcl&8&8&@&@&DEEE %chh#/F&G&GHHcl&8&8&@&@&DEEE %chh#/F&G&GHHcl&8&8&@&@&DEEEE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}|                     t          j
        t                     t          t          d          5 }|                                D ]S\  }\  }}t          |t          j        |                    }| j        |_        d|_        |                    ||           T	 d d d            n# 1 swxY w Y   t+          j        t                    }	|                     |	j        t                     |                     |	                    t                                t7          j                    5  t7          j        dt<                     |	                    d          }
|                      |
           | !                    |
t*          j                   | "                    |
                    d                     |
#                    d          }|                     |
$                    d          |j%                   |	#                    t                     }|                     |	$                    t                     |j%                   d d d            n# 1 swxY w Y   |	&                    d          }|                      |           | !                    |j'        t*          j                   | "                    |j'                            d                     tP          j)        *                    |          }|j'        +                    |           |                     |j'        $                    d          |j%                   |	&                    t                     }tP          j)        *                    |          }|j'        +                    |           |                     |	$                    t                     |j%                   tQ          j,        t                     j-        d         }t          j.        /                    t          t                     }|                     ||           | "                    |	                    |dz                        |                     |	                    |t          z                        | "                    |	                    |t          z                        |t          z   }ta          |          }tQ          j,        |          }|                     |tb          j2        v            | 3                    |	4                    t                                | 3                    |	4                    |                     |                     |	$                    |          |j%                   |j5        j'        }| 3                    |4                    |                     |                     |$                    |          |j%                   t+          j        t          t          j        z   t           z             }|                     |j        t                     |                     |j6        t           t          j        z              d S )Nr   spamr]      spamignorer   )7r   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find_moduleassertIsNotNoner   assertFalseload_moduleget_filenamer   	find_specloaderr   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   zifind_modload_modrx   specexec_modexisting_pack_pathexpected_path_pathmod_pathmod_namer  zi2s                        r   testZipImporterMethodsz4UncompressedZipImportTestCase.testZipImporterMethods  s   RV#Y&/:%/#xJ&03/G#g-X'!C?4
 		((333Xs## 	(q',{{}} ( (#muddnU&;&;<<&*&6# '

5$''''	(	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( "8,,X...h//000 $&& 
	F 
	F!(,>???~~f--H  ***!!(I,ABBBX0088999++F33HX226::H<MNNN..**CR__X66EEE
	F 
	F 
	F 
	F 
	F 
	F 
	F 
	F 
	F 
	F 
	F 
	F 
	F 
	F 
	F ||F##T"""dk9+@AAA//77888>22488)))11&998;LMMM||H%%n--d33$$$22CLAAA&4X>>GJW\\(H==+-?@@@w';<<===g	&9::;;;x''9::;;;g%-h77%h//CK/000"--11222"--1122222CLAAA $&++H55666,,X66EEE #Hrv$5$@AAh///X%677777s&   A)EEEDK11K58K5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}|                     t          j
        t                     t          t          d          5 }|                                D ]S\  }\  }}t          |t          j        |                    }| j        |_        d|_        |                    ||           T	 d d d            n# 1 swxY w Y   t+          j        t                    }	|                     |	j                                        |                                           |	                                 |                     |	j                                        |                                           dt          z   t
          t          fi}
|                    |
           t          t          d          5 }|
                                D ]S\  }\  }}t          |t          j        |                    }| j        |_        d|_        |                    ||           T	 d d d            n# 1 swxY w Y   |	                                 |                     |	j                                        |                                           |	                    d          }|                     |           |                     |j        t*          j                   t          j         t                     |	                                 | !                    |	j                   | "                    t*          j#        $                    |	j%                             | "                    |	                    d                     d S )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   RV#Y&/:%/#xJ&03/G#g-X'!C?4 		((333Xs## 	(q',{{}} ( (#muddnU&;&;<<&*&6# '

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

5$''''	(	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	))5::<<888||G$$T"""dk9+@AAA
	(
###)8<<RZHHIII",,'=>>?????s&   A)EEE<A)J22J69J6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}|                     t          j
        t                     t          t          d          5 }|                                D ]S\  }\  }}t          |t          j        |                    }| j        |_        d|_        |                    ||           T	 d d d            n# 1 swxY w Y   t+          j        t          t          j        z   |z             }	|                     |	j        t                     |                     |	j        |           |                     |	                    t                               t9          j                    5  t9          j        dt>                     |	                     t                    }
|                     |	!                    t                    |
j"                   d d d            n# 1 swxY w Y   |	#                    t                    }tH          j%        &                    |          }
|j'        (                    |
           |                     |j'        !                    t                    |
j"                   | )                    |	                    t          t          j        z   dz                        | )                    |	                    t          t          j        z   t          z                        t          t          j        z   |z   t          z   }t+          j        |          }t9          j                    5  t9          j        dt>                     |*                    t                    }| +                    |           | ,                    |t*          j                   | )                    |                    t                               |                     t                    }|                     |!                    t                    |j"                   d d d            n# 1 swxY w Y   |#                    t                    }| +                    |           | ,                    |j'        t*          j                   | )                    |j'                            t                               tH          j%        &                    |          }|j'        (                    |           |                     |j'        !                    t                    |j"                   t          t          j        z   t          z   }t[          |          }tI          j.        |          }
|                     |t^          j0        v            | 1                    |	2                    t                               | 1                    |	2                    |                     |                     |	!                    |          |
j"                   |
j3        }| 1                    |2                    |                     |                     |!                    |          |
j"                   d S )Nr   r]   s   eggsr   )4r   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   r'   rs   r2   rw   r  r  
__loader__)r:   r   r   rV   rk   rX   r   r   rl   r  rx   r  pkg_pathr  find_mod_dottedr
  r  r  r  s                      r   $testZipImporterMethodsInSubDirectoryzBUncompressedZipImportTestCase.testZipImporterMethodsInSubDirectory+  s0   RV#Y&/J&03/G#g-X@ 		((333Xs## 	(q',{{}} ( (#muddnU&;&;<<&*&6# '

5$''''	(	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( "8bf#4w#>??X...G,,,i00111$&& 	G 	G!(,>???..++CR__Y77FFF	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G
 ||I&&n--d33$$$11)<<clKKKy26'9J'FGGHHHy26'9G'CDDEEEbf$w.:#H--$&& 	J 	J!(,>???!oog66O  111!!/93HIIIS^^G44555&227;;H,,W55x7HJ J J	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J }}W%%T"""dk9+@AAA//88999>22488)))K$$W--x/@	B 	B 	B rv%/-h77%h//CK/000"--	22333"--1122222CLAAA &++H55666,,X66EEEEEs9   A)DDDA(H88H<?H<C$RR
Rc                    |                      t          j        t                     t	          t          d          5 }| j        |_        d}t          d t          d          D                       }|                    ||           d d d            n# 1 swxY w Y   t          j
        t                    }|                     ||                    |                     |                     dt          |                     d S )Nr]   ztestdata.datc              3      K   | ]}|V  d S r1   rB   ).0xs     r   	<genexpr>z<UncompressedZipImportTestCase.testGetData.<locals>.<genexpr>t  s"      //q//////r       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.testGetDatao  s   	((333Xs## 	#q ,AM!D//E#JJ/////DJJtT"""		# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# "8,,r{{400111*DHH55555s   ABBBc                     d}t          t          |dd          t          t          |                    }t          t
          z   t          |fdt          dfi}|                     t
          |t                     d S )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.testImporterAttr{  si    2
 wsGV44c3s88DD7"S#JsK02GUG,,,,,r    c                 |   d}t           dz   t          |fi}|                     |           t          j                            dt                     t          j        t                     }| 	                    |
                    d          d           	 | 	                    |
                    d          d           d S )Nz[if 1:  # indent hack
        def test(val):
            assert(val)
            return val
r,   r   r   )r   r   rn   r2   r&   rq   rr   r   rs   ru   testassertRaisesAssertionError)r:   r/  rV   rx   s       r   testDefaultOptimizationLevelz:UncompressedZipImportTestCase.testDefaultOptimizationLevel  s     53*-U8$$$%g..!a(((	- SXXa[[!,,,,,r    c                 r    t           dz   t          t          fi}|                     d|t           d           d S )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  sD     53/2E5'* 	 	, 	, 	, 	, 	,r    c                 `    |                      t          j        |          t                     d S r1   )ru   inspect	getsourcer   )r:   modules     r   assertModuleSourcez0UncompressedZipImportTestCase.assertModuleSource  s)    *622H=====r    c                 |    t           dz   t          t          fi}|                     d|t           | j                   d S Nr,   r   )r   r   r   rz   r<  r   s     r   testGetSourcez+UncompressedZipImportTestCase.testGetSource  s7    53/2E5'0GHHHHHr    c                 *   t          t          t          dd          t          t	          t                              }t
          dz   t          t          ft
          t          z   t          |fi}|                     t          |t
          | j                   d S )Nr   r   r,   r   )	r   r   r   r   r   r   r   rz   r<  )r:   r   rV   s      r   testGetCompiledSourcez3UncompressedZipImportTestCase.testGetCompiledSource  sj    wx&993HNN53/7"S#J0GUG$2IJJJJJr    c                     t           dz   t          t          fdt          dfi}|                     d|t           |           d S )Nr,   xyz.txtz>>> log.append(True)
r   r   )r:   callbackrV   s      r   
runDoctestz(UncompressedZipImportTestCase.runDoctest  sA    53/S":;=E5'99999r    c                     g }t           j        d c}t           _        	 t          j        d|dt                                 |t           _        n# |t           _        w xY w|                     |dg           d S NrC  T)packagemodule_relativeglobs)doctestmastertestfilelocalsru   )r:   r;  log
old_masters       r   doDoctestFilez+UncompressedZipImportTestCase.doDoctestFile  s    %,^T"
GN	(64hh   
 (GNNZGN''''dV$$$$$s   $A Ac                 :    |                      | j                   d S r1   )rE  rQ  r9   s    r   testDoctestFilez-UncompressedZipImportTestCase.testDoctestFile  s    *+++++r    c                     g }t          j        d|dt                                                                 |                     |dg           d S rG  )rK  DocFileTestrN  runru   )r:   r;  rO  s      r   doDoctestSuitez,UncompressedZipImportTestCase.doDoctestSuite  sU    vt((	
 	
 	
 #%%%dV$$$$$r    c                 :    |                      | j                   d S r1   )rE  rW  r9   s    r   testDoctestSuitez.UncompressedZipImportTestCase.testDoctestSuite  s    +,,,,,r    c                    	 |                                  t          d          # t          $ r}|j        j        }t          |d          d         \  }}}}|                     |t                                                     t          |j
        d          d         \  }}}}|                     |t                                                     t          j                    }t          |d|           |                     |                                                    t#          j                    rdnd                     Y d }~d S d }~ww xY w)NzThis ought to be impossibler   r   z$    def do_raise(): raise TypeError
z$                    ^^^^^^^^^^^^^^^
)do_raiser4  	Exception__traceback__tb_nextr
   ru   	raise_srcstripr   tb_frameioStringIOr   r   getvalueendswithr   has_no_debug_ranges)	r:   r;  etbrm   lnonliness	            r   doTracebackz)UncompressedZipImportTestCase.doTraceback  sW   	@OO$ !!>???#  	 	 	(B%b!,,Q/LAc!DT9??#4#4555(a88;LAc!DT9??#4#4555ARAOOAJJLL111338  7          	s   % EDE

Ec                 |    t           dz   t          t          fi}|                     d |t           | j                   d S r>  )r   r   r_  rz   rm  r   s     r   testTracebackz+UncompressedZipImportTestCase.testTraceback  s8    53	"23D%t/?@@@@@r    Nzneed an unencodable filenamec                 *   t           j        dz   }|                     t           j        |           t	          |d          5 }t          t          dz   t          j        t                              }| j
        |_        |                    |t                     d d d            n# 1 swxY w Y   t          j        |                              t                    }t"          j                            |          }|j                            |           d S 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33Xs## 	(qGeOT^C-@-@AAE"&"2EJJuh'''	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( $X..88AAn--d33$$$$$s    AB##B'*B'c                    t           j        dz   }|                     t           j        |           t	          |d          5 }t          t          dz   t          j        t                              }| j
        |_        |                    |t                     d d d            n# 1 swxY w Y   t          j        |           |                     t"                    5  t          j        t%          j        |                     d d d            n# 1 swxY w Y   |                     t"                    5  t          j        t)          t%          j        |                               d d d            n# 1 swxY w Y   |                     t"                    5  t          j        t+          t%          j        |                               d d d            d S # 1 swxY w Y   d S rq  )r   TESTFNrM   ra   r   r   r   rb   rc   r   rd   re   rf   r   rH   r   r3  	TypeErrorr$   fsencoder   
memoryview)r:   rs  rk   rl   s       r   testBytesPathz+UncompressedZipImportTestCase.testBytesPath  s   #f,	((333Xs## 	(qGeOT^C-@-@AAE"&"2EJJuh'''	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	(
 	h'''y)) 	9 	9!"+h"7"7888	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9y)) 	D 	D!)BK,A,A"B"BCCC	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	Dy)) 	E 	E!*R[-B-B"C"CDDD	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	EsI    AB##B'*B''DDD44E44E8;E84GG!Gc                 r    t           dz   t          t          fi}|                     d|t           d           d S )Nr,   s   commentr^   r   r   s     r   testCommentz)UncompressedZipImportTestCase.testComment   s4    53/2E5':>>>>>r    c                 t    t           dz   t          t          fi}|                     d|t           dd           d S )Nr,   s@  cruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcrufts   hi)r_   r^   r   r   s     r   testBeginningCruftAndCommentz:UncompressedZipImportTestCase.testBeginningCruftAndComment  s6    53/2E5'NNNNNr    c                 x    t           dz   t          t          fi}|                     d|t           ddz             d S )Nr,      ci  r|  r   r   s     r   testLargestPossibleCommentz8UncompressedZipImportTestCase.testLargestPossibleComment  s9    53/2E5'4=3IJJJJ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-  r0  r5  r7  r<  r?  rA  rE  rQ  rS  rW  rY  rm  ro  skipIfr   rr  rt  rz  r}  r  r  rB   r    r   rD   rD   O   s,       K, , , '/ # # # #" &.    0; ; ; @ @ @B+ + +- - -- - -
6 6 6 ]5x@@6 6 A@6* * *+ + +
= 
= 
=+ + ++ + +7 7 7B B B	B 	B 	BKF KF KFZGF GF GFRG8 G8 G8R(@ (@ (@TBF BF BFH
6 
6 
6	- 	- 	-- - - , , ,> > >I I IK K K: : :

% 
% 
%, , ,% % %- - -@ @ @,A A A X_Y1T935 5	% 	%5 5	%E E E ? ? ?O O OK K K K Kr    rD   c                       e Zd ZeZdS )CompressedZipImportTestCaseN)r?   r@   rA   r	   rd   rB   r    r   r  r    s        KKKr    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dS )BadFileZipImportTestCasec                 \    |                      t          j        t          j        |           d S r1   )r3  rH   r   r   )r:   rs  s     r   assertZipFailurez)BadFileZipImportTestCase.assertZipFailure  s1    )2#/	; 	; 	; 	; 	;r    c                 0    |                      d           d S )NAdfjdkFJKDFJjdklfjsr  r9   s    r   
testNoFilez#BadFileZipImportTestCase.testNoFile  s    344444r    c                 0    |                      d           d S r   r  r9   s    r   testEmptyFilenamez*BadFileZipImportTestCase.testEmptyFilename  s    b!!!!!r    c           	      @   |                      t          t          j        d            |                      t          t          j        t          d            |                      t          t          j        t          t          j        t                                         d S )N)kwd)r3  rw  rH   r   r   r   r$   rx  r9   s    r   testBadArgsz$BadFileZipImportTestCase.testBadArgs  s{    )Y%:DAAA)Y%:GNNN)Y%:r{73344	6 	6 	6 	6 	6r    c                 6    |                      ddz             d S )NAi  r  r9   s    r   testFilenameTooLongz,BadFileZipImportTestCase.testFilenameTooLong#  s     cEk*****r    c                     t          j        t                     t          j        t                     |                     t                     d S 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        |           |                     t          j	                  5 }t          j
        t                     d d d            n# 1 swxY w Y   t          j        t          d           t          j        t                     d S # t          j        t          d           t          j        t                     w xY w)Nr   i  )r   ra   r   r$   rT   O_CREATcloser3  rH   r   r   chmod)r:   fdcms      r   testFileUnreadablez+BadFileZipImportTestCase.testFileUnreadable+  s   !!!WWbj#..		&HRLLL""9#;<< /%g.../ / / / / / / / / / / / / / /
 HWe$$$W%%%%% HWe$$$W%%%%s0    3C 3BC BC  B!C 5Dc                     t          j        t                     t          t          d          }|                    d           |                                 |                     t                     d S )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          }|                    t          j        dd                     |                    d           |                                 t          j	        t                    }	 t          j                    5  t          j        dt                     |                     t          |j        d            d d d            n# 1 swxY w Y   |                     t          |j        d            |                     t          |j        d            |                     t          |j        d            |                     t          |j        d            |                     t          |j        d            |                     t          |j        d            |                     t          |j        d            t          j        }|                     |                    d                     |                     |                    d                     t          j                    5  t          j        dt                     |                     ||j        d           d d d            n# 1 swxY w Y   |                     ||j        d           |                     t4          |j        d           |                     ||j        d           |                     ||j        d           t          j                                         d S # t          j                                         w xY w)Nr  z=IiPKaaaaaaaaaaaaaaaaaar   abc)r   ra   r   rT   rU   r   r   r  rH   r   r   r   r   r   r3  rw  r   r   r   r  r   get_coder+  r  r   r  OSErrorrI   r6   )r:   rZ   rk   errors       r   _testBogusZipFilez*BadFileZipImportTestCase._testBogusZipFileB  sI   !!!'4  
T:..///




!'**	3(** B B%h0BCCC!!)Q]DAAAB B B B B B B B B B B B B B B i===id;;;i===it<<<iT:::iT:::it<<<,EammE22333akk%00111(** ? ?%h0BCCC!!%>>>? ? ? ? ? ? ? ? ? ? ? ? ? ? ? eQZ777gqz5999eQ\5999eQ\5999*0022222I*002222sV   L9 -<C5)L9 5C99L9 <C9=EL9 7JL9 JL9  J!A8L9 9 MN)r?   r@   rA   r  r  r  r  r  r  r  r  r   is_wasir  r  r  rB   r    r   r  r    s        ; ; ;5 5 5" " "6 6 6+ + +' ' '
 X_W_&?@@& & A@&' ' ' 3  3  3  3  3r    r  c                  8    t          j        t                     d S r1   )r   ra   r   rB   r    r   tearDownModuler  e  s    Wr    __main__)<r2   r$   r   r   importlib.utilr   rb   r  unittest.mockr   r2  r   test.supportr   r   zipfiler   r   r   r	   rH   rF   rK  r9  rb  	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 9 9 9 9 9 9 9 9KKKK   DDD '(GV
,
,/	  % % % dikk8GS##h--00 	7??;''7???++>++GeO<<
< < < < <h/ < < <"{
K {
K {
K {
K {
K$; {
K {
K {
K|     "?   P3 P3 P3 P3 P3x0 P3 P3 P3f   zHMOOOOO s   &A+ +A54A5