PNG  IHDR;IDATxܻn0K )(pA 7LeG{ §㻢|ذaÆ 6lذaÆ 6lذaÆ 6lom$^yذag5bÆ 6lذaÆ 6lذa{ 6lذaÆ `}HFkm,mӪôô! x|'ܢ˟;E:9&ᶒ}{v]n&6 h_tڠ͵-ҫZ;Z$.Pkž)!o>}leQfJTu іچ\X=8Rن4`Vwl>nG^is"ms$ui?wbs[m6K4O.4%/bC%t Mז -lG6mrz2s%9s@-k9=)kB5\+͂Zsٲ Rn~GRC wIcIn7jJhۛNCS|j08yiHKֶۛkɈ+;SzL/F*\Ԕ#"5m2[S=gnaPeғL lذaÆ 6l^ḵaÆ 6lذaÆ 6lذa; _ذaÆ 6lذaÆ 6lذaÆ RIENDB`  mY@sddlZddlZddlZddlZddlZddlZddlZdddgZdZej j drdZ n ej Z Gddde Zejd d Zd d Zdd dZdddddZddZdddZedkredS)N ZipAppErrorcreate_archiveget_interpreterz8# -*- coding: utf-8 -*- import {module} {module}.{fn}() winzutf-8c@seZdZdS)rN)__name__ __module__ __qualname__r r %/opt/python35/lib/python3.5/zipapp.pyr!s c csWt|tjrt|}t|trNt|| }|VWdQRXn|VdS)N) isinstancepathlibPathstropen)archivemodefr r r _maybe_open%s  rcCs.|r*d|jtd}|j|dS)zWrite a shebang line.s#!s N)encodeshebang_encodingwrite)r interpreterZshebangr r r _write_file_prefix0srcCst|du}|jd}|dkr=d}|jt|d1}t|||j|tj||WdQRXWdQRX|rt|trt j |t j |j t j BdS)z8Copy an application archive, modifying the shebang line.rbs#!wbN)rreadreadlinerrshutil copyfileobjr roschmodstatst_modeS_IEXEC)rZ new_archiversrcZfirst_2dstr r r _copy_archive7s    r(cCsd}t|dr-t|dr-d}n!tj|}|jrNd}|rht|||dS|jstd|dj}|r|rtd|p|std d}|rh|jd \}}} td d |j d D} tdd | j d D} |d ko=| o=| sPtd|t j d|d| }|dkr|j d}nt|dstj|}t |d} t| |tj| dz} tj|}xB|jdD]1}t|j|}| jt||qW|rK| jd|jdWdQRXWdQRX|rt|d r|j|jjtjBdS)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|]}|jVqdS)N) isidentifier).0partr r r |sz!create_archive...css|]}|jVqdS)N)r*)r+r,r r r r-}szInvalid entry point: modulefnz.pyzrrw*zutf-8)hasattrr r is_filer(existsr partitionallsplit MAIN_TEMPLATEformatZ with_suffixrrzipfileZipFileZrglobrZ relative_torZwritestrrr"r#r$r%)sourcetargetrmainZsource_is_fileZhas_mainZmain_pymodsepr0Zmod_okZfn_okfdzrootZchildZarcnamer r r rNsP        ""  'c CsKt|d5}|jddkr@|jjjtSWdQRXdS)Nrrs#!)rrrstripdecoder)rrr r r rscCsddl}|j}|jdddddd|jdd dddd |jd d dddd |jddddddd|jddd|j|}|jr tjj|jst dt |j}t dj |pdt jdtjj|jr|jdks`tjj|jrltjj|j|jrlt d|jrt dt|j|jd|jd|jdS)zRun 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-odefaulthelpzAThe name of the output archive. Required if SOURCE is an archive.z--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--infoFaction store_truez)Display the interpreter from the archive.r=z'Source directory (or existing archive).z%Can only get info for an archive filezInterpreter: {}zz-In-place editing of archives is not supportedz,Cannot change the main function when copyingrr?)argparseArgumentParser add_argument parse_argsinfor!pathisfiler= SystemExitrprintr:sysexitoutputr5samefiler?rpython)argsrKparserrr r r r?s6      $   r?__main__) contextlibr!r rr#rTr;__all__r9platform startswithrgetfilesystemencoding ValueErrorrcontextmanagerrrr(rrr?rr r r r s(           G -