zmc
2023-12-22 9fdbf60165db0400c2e8e6be2dc6e88138ac719a
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
U
W±dåã@sxdZddlZddlZddlmZmZGdd„deƒZdZdZ    dZ
d    Z d
Z d Z d Zd ZdZdZGdd„dƒZddd„ZdS)z]
Python-based CArchive (PKG) reader implementation. Used only in the archive_viewer utility.
éN)ÚZlibArchiveReaderÚArchiveReadErrorc@s eZdZdS)ÚNotAnArchiveErrorN)Ú__name__Ú
__module__Ú __qualname__©rrúRd:\z\workplace\vscode\pyvenv\venv\Lib\site-packages\PyInstaller/archive/readers.pyrsrÚbÚdÚzÚZÚMÚmÚsÚxÚoÚlc@s`eZdZdZdZdZe e¡ZdZ    e e    ¡Z
dd„Z e dd„ƒZ ed    d
„ƒZd d „Zd d„ZdS)ÚCArchiveReaderz:
    Reader for PyInstaller's CArchive (PKG) archive.
    sMEI
z
!8sIIii64sz!iIIIBBc     CsÎ||_d|_d|_d|_i|_t|jdƒš}| ||j¡}|dkrJtdƒ‚|     |t
j ¡|  |j ¡}t |j|¡\}}}}}    }
||j ||_|
sštdƒ‚|     |j|¡|  |¡} | | ¡|_W5QRXdS)NrÚrbéÿÿÿÿz$Could not find COOKIE magic pattern!z2Python shared library name not set in the archive!)Ú    _filenameÚ _start_offsetZ _toc_offsetZ _toc_lengthÚtocÚopenÚ_find_magic_patternÚ_COOKIE_MAGIC_PATTERNrÚseekÚosÚSEEK_SETÚreadÚ_COOKIE_LENGTHÚstructÚunpackÚ_COOKIE_FORMATÚ
_parse_toc) ÚselfÚfilenameÚfpZcookie_start_offsetZ cookie_dataÚmagicZarchive_lengthZ
toc_offsetZ
toc_lengthZpyversZ
pylib_nameZtoc_datarrr    Ú__init__Ms&  ÿ
zCArchiveReader.__init__c    Cs˜| dtj¡| ¡}d}d}|t|ƒkr”t||dƒ}||}|t|ƒkrNq”| |tj¡| |¡}| |¡}|dkr‚||}q”|t|ƒd}q|S)Nri ré)    rrÚSEEK_ENDÚtellÚlenÚmaxrr Úrfind)    r(Z magic_patternZend_posZSEARCH_CHUNK_SIZEZ magic_offsetZ    start_posÚ
chunk_sizeÚbufÚposrrr    rps"  
 
z"CArchiveReader._find_magic_patternc Csªi}d}|t|ƒkr¦t |j||||j…¡\}}}}}}    ||j7}||j}
t |
›d||||
…¡^} } ||
7}|  d¡ d¡} t|    ƒ}    |||||    f|| <q|S)Nrrózutf-8)r.r"r#Ú_TOC_ENTRY_FORMATÚ_TOC_ENTRY_LENGTHÚrstripÚdecodeÚchr) ÚclsÚdatarZcur_posZ entry_lengthÚ entry_offsetÚ data_lengthÚuncompressed_lengthÚcompression_flagÚtypecodeZ name_lengthÚnameÚ_rrr    r%‹s ÿ
 
"zCArchiveReader._parse_tocc     Cs‚|j |¡}|dkr$td|›dƒ‚|\}}}}}t|jdƒ$}| |j|tj¡|     |¡}    W5QRX|r~ddl
}
|
  |    ¡}    |    S)z8
        Extract data for the given entry name.
        NúNo entry named ú found in the archive!rr) rÚgetÚKeyErrorrrrrrrr ÚzlibÚ
decompress) r&rAÚentryr<r=r>r?r@r(r;rGrrr    Úextract¢s 
zCArchiveReader.extractcCsr|j |¡}|dkr$td|›dƒ‚|\}}}}}|tkrLt|j|j|ƒS|tkr^tdƒ‚ntd|›dƒ‚dS)zC
        Open new archive reader for the embedded archive.
        NrCrDz#Zipfile archives not supported yet!zEntry z% is not a supported embedded archive!)    rrErFÚ PKG_ITEM_PYZrrrÚPKG_ITEM_ZIPFILEr)r&rArIr<r=r>r?r@rrr    Úopen_embedded_archive¶s 
z$CArchiveReader.open_embedded_archiveN)rrrÚ__doc__rr$r"Úcalcsizer!r5r6r*Ú staticmethodrÚ classmethodr%rJrMrrrr    r&s
 
#
 
rTc    Cshg}t|ƒ}|j ¡D]L\}}|^}}| |¡|tkr|r| |¡}|j ¡D]}| |¡qRq|S)z¶
    List the contents of the PKG / CArchive. If `recursive` flag is set (the default), the contents of the embedded PYZ
    archive is included as well.
 
    Used by the tests.
    )rrÚitemsÚappendrKrMÚkeys)    r'Ú    recursiveÚcontentsZ pkg_archiverAÚ    toc_entryrBr@Z pyz_archiverrr    Úpkg_archive_contentsÊs
 
 
rX)T)rNrr"Z#PyInstaller.loader.pyimod01_archiverrÚ    TypeErrorrZPKG_ITEM_BINARYZPKG_ITEM_DEPENDENCYrKrLZPKG_ITEM_PYPACKAGEZPKG_ITEM_PYMODULEZPKG_ITEM_PYSOURCEZ PKG_ITEM_DATAZPKG_ITEM_RUNTIME_OPTIONZPKG_ITEM_SPLASHrrXrrrr    Ú<module> s"%