U .e?@sddlmZddlZddlZddlZddlZddlZddlmZm Z m Z ddl m Z ddl mZmZmZmZmZeeZdZedZd Zd d ZGd d d eZdS))BytesION) sysconfigdetect_encodingZipFile)finder) FileOperatorget_export_entry convert_pathget_executablein_venva s^#!.*pythonw?[0-9.]*([ ].*)?$z# -*- coding: utf-8 -*- import re import sys from %(module)s import %(import_name)s if __name__ == '__main__': sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0]) sys.exit(%(func)s()) cCsXd|krT|drB|dd\}}d|krT|dsTd||f}n|dsTd|}|S)N z /usr/bin/env r"z%s "%s"z"%s") startswithsplit) executableenvZ _executabler?/usr/lib/python3.8/site-packages/pip/_vendor/distlib/scripts.py_enquote_executable3s  rc@seZdZdZeZdZd'ddZddZe j d rBd d Z d d Z ddZd(ddZddZeZddZddZd)ddZddZeddZejddZejd ksejd krejd krd!d"Zd*d#d$Zd+d%d&ZdS), ScriptMakerz_ A class to copy or create scripts from source scripts or callable specifications. NTFcCsz||_||_||_d|_d|_tjdkp:tjdko:tjdk|_t d|_ |pRt ||_ tjdkprtjdkortjdk|_ dS)NFposixjava)X.Ynt) source_dir target_dir add_launchersforceclobberosname_nameset_modesetvariantsr_fileop_is_nt)selfrrrdry_runZfileoprrr__init__Ls  zScriptMaker.__init__cCs@|ddr<|jr %srspythonwr|rd)!r!r/r1rr rr`rr'Znewerr:ror6r9r*readliner;Zget_command_name FIRST_LINE_REmatchr0groupcloseZ copy_filer$rprqinforseekrUryr7)r)rrsZadjustrvfZ first_linerrIrSlinesrTrtrwrrr _copy_script)sX        zScriptMaker._copy_scriptcCs|jjSr_r'r*)r)rrrr*]szScriptMaker.dry_runcCs ||j_dSr_r)r)valuerrrr*asrcCsHtddkrd}nd}d||f}tddd}t||j}|S) NPZ64Z32z%s%s.exerVrr)structcalcsize__name__rsplitrfindbytes)r)Zkindbitsr"Zdistlib_packagerJrrrrhis zScriptMaker._get_launchercCs6g}t|}|dkr"|||n|j|||d|S)a Make a script. :param specification: The specification, which is either a valid export entry specification (to make a script from a callable) or a filename (to make a script by copying from a source location). :param options: A dictionary of options controlling script generation. :return: A list of all absolute pathnames written to. Nrz)r rr)r) specificationr2rsr]rrrmakews zScriptMaker.makecCs$g}|D]}||||q|S)z Take a list of specifications and make scripts from them, :param specifications: A list of specifications. :return: A list of all absolute pathnames written to, )extendr)r)Zspecificationsr2rsrrrr make_multipleszScriptMaker.make_multiple)TFN)rLN)N)N)N) r __module__ __qualname____doc__SCRIPT_TEMPLATErYrr+r4rGrHrr=r@rKrUr^_DEFAULT_MANIFESTrarcryrrpropertyr*setterr!r"r#rhrrrrrrrCs6     84 4   r)iorZloggingr!rerrGcompatrrrZ resourcesrutilrr r r r Z getLoggerrr:striprcompilerrrobjectrrrrrs