grthtrhthjhtyjytjytkergtrhtrjytjerhrfh4:24 29/09/2026B €W1Œ†Gàã@s¾ddlZddlZddlZddlZddlZddlZddlZdddgZdZej   d¡rXdZ ne  ¡Z Gdd„de ƒZejd d „ƒZd d „Zdd d„Zddd„Zdd„Zddd„ZedkrºeƒdS)éNÚ ZipAppErrorÚcreate_archiveÚget_interpreterz8# -*- coding: utf-8 -*- import {module} {module}.{fn}() Úwinzutf-8c@s eZdZdS)rN)Ú__name__Ú __module__Ú __qualname__©r r ú+/opt/alt/python37/lib64/python3.7/zipapp.pyr!sc cs8t|ttjfƒr.t||ƒ� }|VWdQRXn|VdS)N)Ú isinstanceÚstrÚosÚPathLikeÚopen)ÚarchiveÚmodeÚfr r r Ú _maybe_open%s rcCs$|r d| t¡d}| |¡dS)zWrite a shebang line.s#!ó N)ÚencodeÚshebang_encodingÚwrite)rÚ interpreterZshebangr r r Ú_write_file_prefix.src Cs–t|dƒ�Z}| d¡}|dkr*d}| ¡t|dƒ�&}t||ƒ| |¡t ||¡WdQRXWdQRX|r’t|tƒr’t   |t   |¡j t j B¡dS)z8Copy an application archive, modifying the shebang line.Úrbés#!óÚwbN)rÚreadÚreadlinerrÚshutilZ copyfileobjr r r ÚchmodÚstatÚst_modeÚS_IEXEC)rZ new_archiverÚsrcZfirst_2Údstr r r Ú _copy_archive5s      r'Fc Csød}t|dƒrt|dƒrd}nt |¡}| ¡r4d}|rHt|||ƒdS| ¡sXtdƒ‚|d ¡}|rt|rttdƒ‚|s„|s„td ƒ‚d}|rö| d ¡\} } } td d „|   d ¡Dƒƒ} tdd „|   d ¡Dƒƒ} | d krÜ| rÜ| sètd|ƒ‚t j | | d�}|dk�r |  d¡}nt|dƒ�s"t |¡}t |dƒ�š}t||ƒ|�rDtjntj}tj|d|d��b}xB| d¡D]4}| |¡}|dk�sŠ||ƒ�rh| || ¡¡�qhW|�r¸| d| d¡¡WdQRXWdQRX|�rôt|dƒ�sô| | ¡jtjB¡dS)abCreate an application archive from SOURCE. The SOURCE can be the name of a directory, or a filename or a file-like object referring to an existing archive. The content of SOURCE is packed into an application archive in TARGET, which can be a filename or a file-like object. If SOURCE is a directory, TARGET can be omitted and will default to the name of SOURCE with .pyz appended. The created application archive will have a shebang line specifying that it should run with INTERPRETER (there will be no shebang line if INTERPRETER is None), and a __main__.py which runs MAIN (if MAIN is not specified, an existing __main__.py will be used). It is an error to specify MAIN for anything other than a directory source with no __main__.py, and it is an error to omit MAIN if the directory has no __main__.py. FrrTNzSource does not existz __main__.pyz8Cannot specify entry point if the source has __main__.pyzArchive has no entry pointú:css|]}| ¡VqdS)N)Ú isidentifier)Ú.0Úpartr r r ú {sz!create_archive..Ú.css|]}| ¡VqdS)N)r))r*r+r r r r,|szInvalid entry point: )ÚmoduleÚfnz.pyzrrÚw)Ú compressionÚ*zutf-8)ÚhasattrÚpathlibZPathÚis_filer'ÚexistsrÚ partitionÚallÚsplitÚ MAIN_TEMPLATEÚformatZ with_suffixrrÚzipfileZ ZIP_DEFLATEDZ ZIP_STOREDZZipFileZrglobZ relative_torZas_posixZwritestrrr!r"r#r$)ÚsourceÚtargetrÚmainÚfilterÚ compressedZsource_is_fileZhas_mainZmain_pyÚmodÚsepr/Zmod_okZfn_okÚfdr1ÚzZchildZarcnamer r r rLsT            &c Cs:t|dƒ�&}| d¡dkr,| ¡ ¡ t¡SWdQRXdS)Nrrs#!)rrrÚstripÚdecoder)rrr r r r–s cCs<ddl}| ¡}|jddddd�|jdddd d�|jd d dd d�|jd dddd�|jddddd�|jddd�| |¡}|jrÄtj |j¡sžt dƒ‚t |jƒ}t d  |p´d¡ƒt  d¡tj |j¡�r|jdk�stj |j¡�r tj |j|j¡�r t dƒ‚|j�rt dƒ‚t|j|j|j|j|jd�dS)zÞRun the zipapp command line interface. The ARGS parameter lets you specify the argument list directly. Omitting ARGS (or setting it to None) works as for argparse, using sys.argv[1:] as the argument list. rNz--outputz-ozAThe name of the output archive. Required if SOURCE is an archive.)ÚdefaultÚhelpz--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.)ÚactionrIz--infoFz)Display the interpreter from the archive.)rHrKrIr=z'Source directory (or existing archive).)rIz%Can only get info for an archive filezInterpreter: {}zz-In-place editing of archives is not supportedz,Cannot change the main function when copying)rr?rA)ÚargparseÚArgumentParserÚ add_argumentÚ parse_argsÚinfor ÚpathÚisfiler=Ú SystemExitrÚprintr;ÚsysÚexitÚoutputr6Úsamefiler?rÚpythonÚcompress)ÚargsrLÚparserrr r r r?œs<         r?Ú__main__)N)NNNNF)N)Ú contextlibr r4r r"rUr<Ú__all__r:ÚplatformÚ startswithrÚgetfilesystemencodingÚ ValueErrorrÚcontextmanagerrrr'rrr?rr r r r Ús*     I 1