U e@sddlmZddlZddlZddlZddlZddlmZddlmZddl m Z ddl m Z ddlmZddlmZddlmZdd lmZdd lmZdd lmZdd lmZdd lmZddlmZddlmZdZe jZejdddddddZ dddddZ!dddddZ"dddddZ#dd d!d"d#Z$d d$d%d&Z%ejd'ddd$d(d)Z&dd*d!d+d,Z'dd d!d-d.Z(ej)d/dd0d1d2d3Z*d/dd d1d4d5Z+d/dd6d7d8d9d:Z,dS);) annotationsN) Generator)Sequence) lang_base) envcontext)PatchesT)UNSET)Var)find_executable)Prefix)CalledProcessError) cmd_output) cmd_output_b)win_exeZpy_env)maxsizestr)exereturncCsBd}zt|dd|dWStk r<d|dYSXdS)Nz>)r stripr )rprogrI/opt/hc_python/lib/python3.8/site-packages/pre_commit/languages/python.py _version_infos rzdict[str, str])filenamerc Csfi}t|ddL}|D]@}z|d\}}Wntk rDYqYqX|||<qW5QRX|S)NUTF-8)encoding=)opensplit ValueErrorr)rretflinekvrrr_read_pyvenv_cfg$s r')venvrcCs tjdkrdnd}tj||S)z;On windows there's a different directory for the virtualenvwin32Scriptsbin)sysplatformospathjoin)r(Zbin_partrrrbin_dir1sr1rcCs(ddtfd|fdt|tjtdfffS)N)ZPIP_DISABLE_PIP_VERSION_CHECK1Z PYTHONHOMEZ VIRTUAL_ENVPATH)rr1r.pathsepr )r(rrr get_env_patch7s r5 str | None)versionrcCsl|drh|tdd}dd|ddf}ttjdd}zt|d|id WStk rfYnXdS) Npythonpy-rz!import sys; print(sys.executable)r)PYTHONIOENCODINGenvr) startswithlendictr.environr rr )r7numcmdr<rrr_find_by_py_launcher@s rC)rcCsBddddd}tjtjtjfD]}||}|r$|Sq$dS)Nrr6)r/rcSs<tj|\}}|d\}}}|dkr8t|r8|SdS)Nz.exe>pythonwr8)r.r/r lower partitionr )r/_rrrr_normOs z&_find_by_sys_executable.._norm)r, executabler.r/realpath)rHr/rrrr_find_by_sys_executableNs  rKrcCsHt}|r|Sdtjddtjd}t|r6|St|rB|StjS)Nr8r.r)rKr, version_infor rCCDEFAULT)rrrrget_default_versionesrPboolcCsp|dkr dS|dsdSz(tdd|tdddD}Wntk rXYdSXtjdt||kS)Nr8TFcss|]}t|VqdSN)int).0prrr sz*_sys_executable_matches..rL)r=tupler>r r!r,rM)r7inforrr_sys_executable_matchesxs (rYcCsX|tjkrdSt|rdStjdkrLt|}|r4|St|}|rL||krL|Stj |S)Nr)) rNrOrYr,r-rCr r.r/ expanduser)r7Z version_execrrr norm_versions   r[r zGenerator[(None, None, None)])prefixr7rc cs0t|t|}tt| dVW5QRXdSrR)renvironment_dirENVIRONMENT_DIRrr5)r\r7envdirrrrin_envsr`c Cst|t|}tj|d}tj|s,dStd}|t||}t |}d|krXdSt |}||dkrd|d|ddSd |krdSt |d }||dkrd |d|ddSdSdS) Nz pyvenv.cfgz+pyvenv.cfg does not exist (old virtualenv?)r8rMz9created virtualenv's pyvenv.cfg is missing `version_info`zKvirtualenv python version did not match created version: - actual version: z - expected version:  zbase-executablezZbase executable python version does not match created version: - base-executable version: ) rr]r^r.r/r0existsrr1r'r __wrapped__) r\r7r_Z pyvenv_cfgexe_nameZpy_execfgZvirtualenv_versionZbase_exe_versionrrr health_checks(     rfz Sequence[str]None)r\r7additional_dependenciesrc Cstt|t|}tjd|g}t|}|dk r8|d|fd |}t|ddit||t ||W5QRXdS) Nz -mvirtualenvz-pr8-mpipinstallrLcwd/)r8rirjrL) rr]r^r,rIr[extendrr`Z setup_cmd)r\r7rhr_Zvenv_cmdr8Z install_cmdrrrinstall_environments  rn)- __future__r contextlib functoolsr.r,typingrrZpre_commit.constants constantsrNZ pre_commitrZpre_commit.envcontextrrrr Zpre_commit.parse_shebangr Zpre_commit.prefixr Zpre_commit.utilr r rrr^Zbasic_run_hookZrun_hook lru_cacherr'r1r5rCrKrPrYr[contextmanagerr`rfrnrrrrsF                   '