zmc
2023-08-08 e792e9a60d958b93aef96050644f369feb25d61b
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
U
X±dß"ã@s\dZddlZddlZddlZddlZddlmZmZGdd„dƒZ    dd„Z
e dkrXe
ƒdS)    z,
Viewer for PyInstaller-generated archives.
éN)ÚCArchiveReaderÚZlibArchiveReaderc@sXeZdZdd„Zdd„Zdd„Zdd„Zd    d
„Zd d „Zddd„Z    ddd„Z
dd„Z d S)Ú ArchiveViewercCs.||_||_||_||_g|_|jr*d|_dS)NF)ÚfilenameÚinteractive_modeÚrecursive_modeÚ
brief_modeÚstack)Úselfrrrr©r ú`d:\z\workplace\vscode\pyvenv\venv\Lib\site-packages\PyInstaller/utils/cliutils/archive_viewer.pyÚ__init__szArchiveViewer.__init__cCs&| |j¡}tj |j¡}|j ||f¡|js8| ¡S|     ||¡zt
dƒ  dd¡}Wn&t k
r~t tjdYq"YnX|sŽ| ¡qD|d ¡}|dkr¨q"qD|dkrº| ¡qD|dkrÖ|j|dd…ŽqD|dkrò|j|dd…ŽqD|d    kr|jd
\}}|     ||¡qD| ¡qDdS) Nz? é©ÚfilerÚQÚUÚOÚXÚSéÿÿÿÿ)Ú_open_toplevel_archiverÚosÚpathÚbasenamer    ÚappendrÚ_non_interactive_processingÚ_show_archive_contentsÚinputÚsplitÚEOFErrorÚprintÚsysÚstderrÚ _print_usageÚupperÚ_move_up_the_stackÚ_open_embedded_archiveÚ _extract_file)r
ÚarchiveÚ archive_nameÚtokensÚcommandr r r Úmain$s6     
 
zArchiveViewer.mainc     CsÒd}|jrÎ|j ¡\}}|d7}|dkr0tdƒ| ||¡|jsDqt|tƒr|j ¡D]r\}^}}|dkrXz|     |¡}Wn<t
k
r¸}ztd|›d|›t j dW5d}~XYnX|j  ||f¡qXqdS)NrrÚÚzú Could not open embedded archive ú: r)r    Úpopr!rrÚ
isinstancerÚtocÚitemsÚopen_embedded_archiveÚ    Exceptionr"r#r)    r
Z archive_countr*r)ÚnameÚ_ÚtypecodeZembedded_archiveÚer r r rPs" 
,z)ArchiveViewer._non_interactive_processingcCsJtdtjdtdtjdtdtjdtdtjdtdtjddS)NzU: go up one levelrz/O <name>: open embedded archive with given namez&X <name>: extract file with given namez-S: list the contents of current archive againzQ: quit)r!r"r#)r
r r r r$hs
zArchiveViewer._print_usagecCsFt|jƒdkr4|j ¡|jd\}}| ||¡ntdtjddS)NrrzAlready in the top archive!r)Úlenr    r2rr!r"r#)r
r*r)r r r r&os
 
z ArchiveViewer._move_up_the_stackcCsPtj |¡s,td|›dtjdt d¡|dd… ¡dkrHt|ƒSt    |ƒS)NzArchive z does not exist!rréüÿÿÿz.pyz)
rrÚisfiler!r"r#ÚexitÚlowerrr)r
rr r r rws  
z$ArchiveViewer._open_toplevel_archiveNc
Cs¸|s tdƒ}| ¡}|sdS|jd\}}t|dƒsFtdtjddSz| |¡}WnBtk
r–}z$td|›d|›tjdWY¢dSd}~XYnX|j     ||f¡| 
||¡dS)Nz Open name? rr6z+Archive does not support embedded archives!rr0r1) rÚstripr    Úhasattrr!r"r#r6r7rr)r
r*r9Zparent_archiver)r;r r r r'€s 
z$ArchiveViewer._open_embedded_archivec
Csì|s tdƒ}| ¡}|jd\}}zHt|tƒr:| |¡}n.t|tƒrT|j|dd}ntdt|ƒ›dƒ‚WnBt    k
r¬}z$t
d|›d|›d    |›t j d
W5d}~XYnXtd ƒ}|sÈt
t |ƒƒn t|d ƒ}| |¡W5QRXdS) NzExtract name? rT)ÚrawzExtraction from archive type z not implemented!z!Failed to extract data for entry z from r1rzOutput filename? Úwb)rrAr    r3rÚextractrÚNotImplementedErrorÚtyper7r!r"r#ÚreprÚopenÚwrite)r
r8r*r)Údatar;rÚfpr r r r(›s"
 
2 zArchiveViewer._extract_filec
CsBt|tƒr”td|›dƒ|jr@|j ¡D]}td|›ƒq*nRtdƒ|j ¡D]>\}\}}}}}td|›d|›d|›d|›d|›d|› ƒqRnªt|tƒrtd|›dƒ|jrÖ|j ¡D]}td|›ƒqÀnBtdƒ|j ¡D].\}\}    }}td|    ›d|›d|›d|›ƒqèn$td|›dƒtd    t|ƒ›d
ƒdS) Nz Contents of z (PKG/CArchive):ú zE position, length, uncompressed_length, is_compressed, typecode, namez, z (PYZ):z# is_package, position, length, namez
 (unknown)z2FIXME: implement content listing for archive type ú!)    r3rr!rr4Úkeysr5rrG)
r
r*r)r8ÚpositionÚlengthZuncompressed_lengthZ is_compressedr:Ú
is_packager r r r·s$
0 $z$ArchiveViewer._show_archive_contents)N)N) Ú__name__Ú
__module__Ú __qualname__r r-rr$r&rr'r(rr r r r rs ,    
 
rcCsÄt ¡}|jddddddd|jdd    ddd
d d|jd d dddddtj |¡|jdddd| ¡}tj ||¡z&t|j    |j
|j |j d}|  ¡Wntk
r¾tdƒ‚YnXdS)Nz-lz--listFÚ
store_trueÚ listing_modez:List the archive contents and exit (default: %(default)s).)ÚdefaultÚactionÚdestÚhelpz-rz --recursiveÚ    recursivezHRecursively print an archive log (default: %(default)s). Implies --list.z-bz--briefÚbriefzOWhen displaying archive contents, show only file names. (default: %(default)s).rZ pyi_archivezPyInstaller archive to process.)Úmetavarr[)rrrrzAborted by user.)ÚargparseÚArgumentParserÚ add_argumentÚ PyInstallerÚlogZ __add_optionsÚ
parse_argsZ__process_optionsrrrWr\r]r-ÚKeyboardInterruptÚ
SystemExit)ÚparserÚargsZviewerr r r ÚrunÏsVúúú ýü riÚ__main__) Ú__doc__r_rr"ZPyInstaller.logrbZPyInstaller.archive.readersrrrrirSr r r r Ú<module> s90