o ?Ogo@sddlZddlZddlZddlZddlZddlZddlZgdZdZej dr+dZ ne Z Gddde Zejdd Zd d Zdd d Z  dddZddZdddZedkr`edSdS)N) ZipAppErrorcreate_archiveget_interpreterz8# -*- coding: utf-8 -*- import {module} {module}.{fn}() winutf-8c@s eZdZdS)rN)__name__ __module__ __qualname__r r -/opt/alt/python310/lib64/python3.10/zipapp.pyr!srccsRt|ttjfr$t|| }|VWddS1swYdS|VdSN) isinstancestrosPathLikeopen)archivemodefr r r _maybe_open%s  " rcCs* |rd|td}||dSdS)N#! )encodeshebang_encodingwrite)r interpreterZshebangr r r _write_file_prefix.s rc Cs t|d<}|d}|dkrd}|t|d}t||||t||Wdn1s6wYWdn1sEwY|r`t|trbt |t |j t j BdSdSdS)Nrbrwb)rreadreadlinerrshutilZ copyfileobjr rrchmodstatst_modeS_IEXEC)rZ new_archiversrcZfirst_2Zdstr r r _copy_archive5s      r)Fc Cs d}t|drt|drd}n t|}|rd}|r%t|||dS|s-td|d}|r;|r;td|sC|sCtdd}|r||d \} } } td d | d D} td d | d D} | d kro| ro| sutd|t j | | d}|dur| d}n t|dst|}t |dU}t|||rtjntj}tj|d|d0}|dD]}||}|dus||r|||q|r|d|dWdn1swYWdn1swY|rt|ds ||jtjBdSdSdS)NFr!r"TzSource does not existz __main__.pyz8Cannot specify entry point if the source has __main__.pyzArchive has no entry point:cs|]}|VqdSr  isidentifier.0partr r r {z!create_archive...csr+r r,r.r r r r1|r2zInvalid entry point: )modulefnz.pyzrr w) compression*r)hasattrpathlibZPathis_filer)existsr partitionallsplit MAIN_TEMPLATEformatZ with_suffixrrzipfileZ ZIP_DEFLATEDZ ZIP_STOREDZZipFileZrglobZ relative_torZas_posixZwritestrrr$r%r&r')sourcetargetrmainfilter compressedZsource_is_fileZhas_mainZmain_pymodsepr5Zmod_okZfn_okfdr7zchildZarcnamer r r rLsf            rcCs^t|d }|ddkr|tWdSWddS1s(wYdS)Nrrr)rr!r"stripdecoder)rrr r r rs "rcCs4 ddl}|}|jddddd|jddddd|jd d dd d|jd d ddd|jddddd|jddd||}|jrctj|jsPt dt |j}t d |p[dt dtj|jr|jdustj|jrtj|j|jrt d|jrt dt|j|j|j|j|jddS)Nrz--outputz-ozAThe name of the output archive. Required if SOURCE is an archive.)defaulthelpz--pythonz-pzEThe name of the Python interpreter to use (default: no shebang line).z--mainz-mzLThe main function of the application (default: use an existing __main__.py).z --compressz-c store_truezQCompress files with the deflate method. Files are stored uncompressed by default.)actionrPz--infoFz)Display the interpreter from the archive.)rOrRrPrCz'Source directory (or existing archive).)rPz%Can only get info for an archive filezInterpreter: {}zz-In-place editing of archives is not supportedz,Cannot change the main function when copying)rrErG)argparseArgumentParser add_argument parse_argsinforpathisfilerC SystemExitrprintrAsysexitoutputr<samefilerErZpythoncompress)argsrSparserrr r r rEsN          rE__main__r )NNNNF) contextlibrr:r#r%r\rB__all__r@platform startswithrgetfilesystemencoding ValueErrorrcontextmanagerrrr)rrrErr r r r s2    J 1