JFIFxxC      C  " }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3RbrJFIFxxC      C  " }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3RbrB YI~dR @sddlZddlZddlZddlZddlZddlZddlZeeZ GdddZ d ddZ dddZ ed krd Z ye dZ Wn4ek rZzed eejd WddZ[XYnXee dS)Nc@seZdZdddZddZddZd d Zd d Zej d krHdddZ n dddZ ddZ ddZ ddZ ddZddZddZdS) EnvBuilderFNcCs(||_||_||_||_||_||_dS)N)system_site_packagesclearsymlinksupgradewith_pipprompt)selfrrrrrrr 2/opt/alt/python37/lib64/python3.7/venv/__init__.py__init__+s zEnvBuilder.__init__cCsxtj|}||}|j}d|_|||||jrF|||j s`| || ||rtd|_||dS)NFT) ospathabspathensure_directoriesrcreate_configuration setup_pythonr _setup_pipr setup_scripts post_setup)r env_dircontextZtrue_system_site_packagesr r r create4s       zEnvBuilder.createcCs`xZt|D]L}tj||}tj|s6tj|rBt|q tj|r t |q WdS)N) r listdirrjoinislinkisfileremoveisdirshutilZrmtree)r rfnr r r clear_directoryNs   zEnvBuilder.clear_directorycCsdd}tj|r$|jr$||t}||_tj|d|_ |j dk rT|j n|j }d||_ ||tj }t t dt j}tjtj|\}}||_||_||_t jdkrd} d} tj|d d } n(d } d } tj|d dt jddd } tj|| |_} || || t jdkrftjdkrft jdkrftj|d} tj| sftd | tj|| |_}| |_tj|||_|||S)NcSs@tj|st|n$tj|s0tj|r.create_if_neededz(%s) _base_executablewin32ZScriptsZIncludeLibz site-packagesbinZincludelibz python%d.%dlposixdarwinlib64)r rr"rr!typesSimpleNamespacersplitenv_namerenvirongetattrsys executabler python_dirZ python_exeplatformr version_infoZinc_pathmaxsizenamesymlinkbin_pathbin_nameenv_exe)r rr&rrenvr8dirnameZexenameZbinnameZincpathZlibpathrZ link_pathbinpathr r r rVsJ      zEnvBuilder.ensure_directoriesc Csztj|jd|_}t|dddL}|d|j|jrBd}nd}|d||d t j dd WdQRXdS) Nz pyvenv.cfgwzutf-8)encodingz home = %s trueZfalsez"include-system-site-packages = %s zversion = %d.%d.%d ) r rrrZcfg_pathopenwriter9rr7r;)r rrfZinclr r r rs zEnvBuilder.create_configurationntcCs~|j }|sjy6tj|s@|r4ttj||n t||Wn&tk rhtd||d}YnX|rzt ||dS)NzUnable to symlink %r to %rT) rr rrr>basename Exceptionloggerwarningrcopyfile)r srcdstrelative_symlinks_okZ force_copyr r r symlink_or_copys  zEnvBuilder.symlink_or_copycCsZtj|otj| }|jr~|s~tj|s~y*|rLttj||n t||dStk r|t d||YnXtj tj|\}}tj tj tdd||}tdstj|s"|drd|}|dd}|dkrd}n|d krd }tj tj |||}n|}tj|sJ|sFt d |dSt||dS) NzUnable to symlink %r to %rscriptsrLTZ_dpythonZ venvlauncherZpythonwZ venvwlauncherzUnable to copy %r)r rlexistsr"rrr>rMrNrOrPsplitextrrC__file__ sysconfigis_python_buildrendswithrrQ)r rRrSrTZbad_srcrMZextZsrcfnr r r rUs:      cCs|j}|j}|j}|j}tjdkr||j|tj|sFt |dxNdD]F}tj ||}tj |sL||j|ddtj|sLt |dqLWn|j rddt |D}tdrdd|D}n d d d d g}x:|D]2}tj ||}tj|r||tj ||qWtdrxt|jD]v\} } } d | kr0tj| } tj |jd| } tj | szt| tj | d }tj | d } t|| Pq0WdS)NrLi)rXZpython3T)rTcSs,g|]$}tjtj|ddkr|qS)r')z.exez.dll)r rnormcaserZ).0rKr r r sz+EnvBuilder.setup_python..cSs"g|]}tj|dr|qS))rXZ vcruntime)r rr_ startswith)r`rKr r r rasz python.exez python_d.exez pythonw.exez pythonw_d.exezinit.tclr*)r?rArUr9r r=r8rrchmodrr"rrr\r]rYwalkrMrr#rrQ)r rrDrZcopierrCsuffixsuffixesrRrootdirsfilesZtcldirrSr r r rsF               zEnvBuilder.setup_pythoncCs$|jddddg}tj|tjddS)Nz-ImZ ensurepipz --upgradez --default-pip)stderr)rA subprocessZ check_outputZSTDOUT)r rcmdr r r rs zEnvBuilder._setup_pipcCs2tjtjt}tj|d}|||dS)NrV)r rrrCr[rinstall_scripts)r rrr r r r"s zEnvBuilder.setup_scriptscCsdS)Nr )r rr r r r1szEnvBuilder.post_setupcCsJ|d|j}|d|j}|d|j}|d|j}|d|j}|S)NZ __VENV_DIR__Z __VENV_NAME__Z__VENV_PROMPT__Z__VENV_BIN_NAME__Z__VENV_PYTHON__)replacerr4rr@rA)r textrr r r replace_variables;s zEnvBuilder.replace_variablesc Cs|j}t|}xt|D]\}}}||kr`x,|ddD]}|dtjfkr>||q>WqxR|D]H} tjdkr| dr| drqhtj || } ||d tj dd} | s|} ntjj |f| } tj | st | tj | | } t| d} | }WdQRX| ds~y$|d}|||}|d}Wn6tk r|}zd}td| |Wdd}~XYnX|dk rht| d } | |WdQRXt| | qhWqWdS) NcommonrLrX)z.exez.pdbr-rbzutf-8z+unable to copy script %r, may be binary: %swb)r?lenr rdr=rrbr^rrr3sepr"r#rIreaddecoderpencode UnicodeErrorrOrPrJrZcopymode)r rrrDZplenrgrhrir%rKZsrcfilereZdstdirZdstfiledataer r r rmMsF         zEnvBuilder.install_scripts)FFFFFN)F)F)__name__ __module__ __qualname__r rr!rrr r=rUrrrrrprmr r r r rs 5   +<  rFcCs t|||||d}||dS)N)rrrrr)rr)rrrrrrbuilderr r r rsrc Csbd}tjdkrd}nttds"d}|s2tdn,ddl}|jtddd }|jd d d d d|jddddddtj dkrd}nd}| }|jd|dddd|jd| dddd|jdddddd|jddddd d|jd!d"ddd#d$|jd%d&d'| |}|j r"|j r"td(t|j|j |j|j |j|jd)}x|jD]}||qJWdS)*NT)rHrHF base_prefixz.This script is only for use with Python >= 3.3rzFCreates virtual Python environments in one or more target directories.z|Once an environment has been created, you may wish to activate it, e.g. by sourcing an activate script in its bin directory.)prog descriptionepilogrhZENV_DIR+z)A directory to create the environment in.)metavarnargshelpz--system-site-packages store_true system_sitezDGive the virtual environment access to the system site-packages dir.)defaultactiondestrrLz --symlinksrz[Try to use symlinks rather than copies, when symlinks are not the default for the platform.z--copies store_falsez\Try to use copies rather than symlinks, even when symlinks are the default for the platform.z--clearrzcDelete the contents of the environment directory if it already exists, before environment creation.z --upgraderzlUpgrade the environment directory to use this version of Python, assuming Python has been upgraded in-place.z --without-piprz]Skips installing or upgrading pip in the virtual environment (pip is bootstrapped by default))rrrrz--promptz;Provides an alternative prompt prefix for this environment.)rz1you cannot supply --upgrade and --clear together.)rrrrrr)r7r;hasattrr$argparseArgumentParserr| add_argumentr r=add_mutually_exclusive_group parse_argsrrrrrrrrhr) argsZ compatiblerparserZ use_symlinksgroupoptionsrr%r r r mains\             r__main__r'z Error: %s)file)FFFFN)N)Zloggingr rrkr7r\r1Z getLoggerr|rOrrrZrcrNr{printrjexitr r r r s* p  H$