U e @sddlmZddlZddlZddlmZddlmZddlm Z ddl m Z ddl m Z ddl m Z dd lmZdd lmZdd lmZd Ze jZe jZe jZd ddddddZdddddZejd dddddZdS)) annotationsN) Generator)Sequence) lang_base) envcontext)PatchesT)Var) FatalError)find_executable)Prefixcoursierr strz Sequence[str]None)prefixversionadditional_dependenciesreturnc std|tdptddkr,tdtt|dddfdd }t|td }tj |rt |D]2}tj |\}}tj |\}}|d d ||q~n |st d |r||W5QRXdS) Nr cszbpre-commit requires system-installed "cs" or "coursier" executables in the application search pathr r)optsrcs<dk s ttdf|tddf|dS)Nfetchinstallz--dir)AssertionErrorrZ setup_cmd)rrenvdirrK/opt/hc_python/lib/python3.8/site-packages/pre_commit/languages/coursier.py_install(s z%install_environment.._installz.pre-commit-channelz--default-channels=falsez --channelz;expected .pre-commit-channel dir or additional_dependencies)rZassert_version_defaultr renvironment_dirENVIRONMENT_DIRin_envpathosisdirlistdirsplitsplitextr ) rrrrZchannelZapp_descriptor_Zapp_fileZapprrrinstall_environments4    r'r) target_dirrcCs&d|tjtdffdtj|dffS)NPATHZCOURSIER_CACHEz .cs-cache)r!pathseprr join)r(rrr get_env_patchAsr,zGenerator[(None, None, None)])rrrc cs0t|t|}tt| dVW5QRXdS)N)rrrrr,)rrrrrrrHsr) __future__r contextlibos.pathr!typingrrZ pre_commitrZpre_commit.envcontextrrrZpre_commit.errorsr Zpre_commit.parse_shebangr Zpre_commit.prefixr rZbasic_get_default_versionZget_default_versionZbasic_health_checkZ health_checkZbasic_run_hookZrun_hookr'r,contextmanagerrrrrrs&          *