o
    Wi                     @  st  d dl mZ d dlZd dlZd dlZd dlZd dlZd dlZd dlm	Z	 d dlm
Z
 d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d d	lmZ d d
lmZ d dlmZ d dlmZ dZedZG dd deZdMddZdNddZdOd"d#Z dPd&d'Z!dQd+d,Z"dRd-d.Z#dSd0d1Z$dTd4d5Z%ej&dUd7d8Z'dVd:d;Z(dWd>d?Z)dXdDdEZ*dYdHdIZ+dZdKdLZ,dS )[    )annotationsN)	Generator)Sequence)Any)ContextManager)NoReturn)Protocol)parse_shebang)xargs)Prefix)cmd_output_bi^[z[/\\]shims[/\\]c                   @  sL   e Zd Zed ddZd!ddZd"ddZd#ddZd$ddZd%ddZ	dS )&Languagereturn
str | Nonec                 C     d S N selfr   r   H/home/ubuntu/.local/lib/python3.10/site-packages/pre_commit/lang_base.pyENVIRONMENT_DIR      zLanguage.ENVIRONMENT_DIRstrc                 C  r   r   r   r   r   r   r   get_default_version        zLanguage.get_default_versionprefixr   versionc                 C  r   r   r   r   r   r   r   r   r   health_check"   r   zLanguage.health_checkadditional_dependenciesSequence[str]Nonec                 C  r   r   r   )r   r   r   r   r   r   r   install_environment%   s   zLanguage.install_environmentContextManager[None]c                 C  r   r   r   r   r   r   r   in_env.   r   zLanguage.in_enventryargs	file_argsis_localboolrequire_serialcolortuple[int, bytes]c                C  r   r   r   )r   r   r%   r&   r'   r(   r*   r+   r   r   r   run_hook1   s   zLanguage.run_hookN)r   r   r   r   )r   r   r   r   r   r   )r   r   r   r   r   r    r   r!   )r   r   r   r   r   r#   r   r   r%   r   r&   r    r'   r    r(   r)   r*   r)   r+   r)   r   r,   )
__name__
__module____qualname__propertyr   r   r   r"   r$   r-   r   r   r   r   r      s    



	r   exer   r   r)   c                 C  sr   t | }|d u rdS tjd}z
tj||f}W n ty&   d }Y nw t| o8tj	||kp8||kS )NF~)
r	   find_executableospath
expanduser
commonpath
ValueErrorSHIMS_REsearchdirname)r4   foundhomedircommonr   r   r   
exe_exists?   s   
rB   r   r   cmdtuple[str, ...]kwargsr   r!   c                 K  s   t |d| ji| d S )Ncwd)r   
prefix_dir)r   rC   rE   r   r   r   	setup_cmdV   s   rH   dlanguage_versionc                 C  s   |  | d| S )N-)r8   )r   rI   rJ   r   r   r   environment_dirZ   s   rL   binaryr   c                 C  s$   |t jkrtd|  d| dd S )Nz.for now, pre-commit requires system-installed z$ -- you selected `language_version: `)CDEFAULTAssertionError)rM   r   r   r   r   assert_version_default^   s   
rR   langadditional_depsr    c                 C  s   |rt d|  d| dd S )NzAfor now, pre-commit does not support additional_dependencies for z+ -- you selected `additional_dependencies: rN   rQ   )rS   rT   r   r   r   assert_no_additional_depsf   s   rV   c                   C  s   t jS r   )rO   rP   r   r   r   r   basic_get_default_versionr   s   rW   r   c                 C  r   r   r   )r   rJ   r   r   r   basic_health_checkv   r   rX   r   r   c                 C  s   t d)Nz This language is not installablerU   )r   r   r   r   r   r   
no_installz   s   rY   Generator[None]c                 c  s    d V  d S r   r   )r   r   r   r   r   no_env   s   
r[   intc                   C  s$   dt jv rdS dt jv rdS t S )NPRE_COMMIT_NO_CONCURRENCY   TRAVIS   )r7   environr
   	cpu_countr   r   r   r   target_concurrency   s
   

rc   seq	list[str]c                 C  s,   t  }|jtdd t| } ||  | S )zDeterministically shuffler^   )r   )randomRandomseedFIXED_RANDOM_SEEDlistshuffle)rd   fixed_randomr   r   r   	_shuffled   s
   
rm   r'   r*   r+   r,   c                C  s*   |rd}nt |}t }tj| |||dS )Nr^   )rc   r+   )rm   rc   r
   )rC   r'   r*   r+   jobsr   r   r   	run_xargs   s
   ro   r%   r&   c                 C  sD   t | }|d d ddgkrtjddg|dd  }g ||R S )Nr`   z
pre-commithazmatz-mzpre_commit.commands.hazmat)shlexsplitsys
executable)r%   r&   rC   r   r   r   hook_cmd   s   
ru   r(   c                C  s   t t|||||dS )N)r*   r+   )ro   ru   )r   r%   r&   r'   r(   r*   r+   r   r   r   basic_run_hook   s   
rv   )r4   r   r   r)   )r   r   rC   rD   rE   r   r   r!   )r   r   rI   r   rJ   r   r   r   )rM   r   r   r   r   r!   )rS   r   rT   r    r   r!   r.   )r   r   rJ   r   r   r   )r   r   r   r   r   r    r   r   )r   r   r   r   r   rZ   )r   r\   )rd   r    r   re   )
rC   rD   r'   r    r*   r)   r+   r)   r   r,   )r%   r   r&   r    r   rD   r/   )-
__future__r   
contextlibr7   rf   rerq   rs   collections.abcr   r   typingr   r   r   r   pre_commit.constants	constantsrO   
pre_commitr	   r
   pre_commit.prefixr   pre_commit.utilr   ri   compiler<   r   rB   rH   rL   rR   rV   rW   rX   rY   contextmanagerr[   rc   rm   ro   ru   rv   r   r   r   r   <module>   sH    

$











