
    wi                    F   d dl m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 dlmZ d dlmZ  ej        d          Zd0dZd0dZ d1dZ!d2dZ"d3dZ#d4d Z$d5d$Z%d6d)Z&d6d*Z'd6d+Z(d7d.Z)d8d/Z*dS )9    )annotationsN)Sequence)Any)	languages)load_manifest)LOCAL)META)Hook)environment_dir)Prefix)Store)clean_path_on_failure)rmtree
pre_commitvenvstrreturnc                B    t           j                            | d          S )Nz.install_state_v1ospathjoinr   s    e/root/.openclaw/workspace/chatterbox_venv_py311/lib/python3.11/site-packages/pre_commit/repository.py_state_filename_v1r          7<<1222    c                B    t           j                            | d          S )Nz.install_state_v2r   r   s    r   _state_filename_v2r      r   r   additional_depsSequence[str]objectc                
    d| iS )Nadditional_dependencies )r    s    r   _stater&   !   s    %77r   object | Nonec                    t          |           }t          j                            |          sd S t	          |          5 }t          j        |          cd d d            S # 1 swxY w Y   d S N)r   r   r   existsopenjsonload)r   filenamefs      r   _read_stater0   %   s    !$''H7>>(##  t(^^ 	 q9Q<<	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	 s    A!!A%(A%hookr
   boolc                \   t           | j                 }|j        dS t          | j        |j        | j                  }t          j                            t          |                    p$t          |          t          | j                  k    o |                    | j        | j                   S )NT)r   languageENVIRONMENT_DIRr   prefixlanguage_versionr   r   r*   r   r0   r&   r$   health_check)r1   langr   s      r   _hook_installedr:   .   s    T]#D#t D GNN-d3344 F(D!E!EE	B dk4+@AAAr   Nonec           	        t                               d| j         d           t                               d           t                               d           t          | j                 }|j        J t          | j        |j        | j                  }t          j
                            |          rt          |           t          |          5  |                    | j        | j        | j                   |                    | j        | j                  }|rt#          d| j         d|           t%          |          }| d}t'          |d          5 }|                    t+          j        t/          | j                                       d d d            n# 1 swxY w Y   t          j        ||           t'          t3          |          d	                                           d d d            d S # 1 swxY w Y   d S )
NzInstalling environment for .z/Once installed this environment will be reused.zThis may take a few minutes...zBUG: expected environment for zh to be healthy immediately after install, please open an issue describing your environment

more info:

stagingwza+)loggerinfosrcr   r4   r5   r   r6   r7   r   r   r*   r   r   install_environmentr$   r8   AssertionErrorr   r+   writer,   dumpsr&   replacer   close)r1   r9   r   health_errorstate_filenamer>   
state_files          r   _hook_installrL   A   s   
KK9dh999:::
KKABBB
KK0111T]#D+++ D 
w~~d t	t	$	$ 5 5  K.0L	
 	
 	
 ((d6KLL 	 0 0 0 ".0 0   ,D11#,,,'3 	O:TZt/K(L(LMMNNN	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	
7N+++%%t,,22444-5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5s8   BG9:FG9F!	!G9$F!	%AG99G= G=
hook_dictsdict[str, Any]root_configc                   t          |d                   |dd          }}|D ]}|                    |           |d         }|d         t          j        k    r| d         |         |d<   |d         t          j        k    r"t          |                                         |d<   |d         s| d         |d<   t          |         j        |d         t          j        k    r6t                              d|d	          d
| d           t          d           |d         r6t                              d|d	          d| d           t          d           |S )Nr      r4   r7   default_language_versionstagesdefault_stagesz
The hook `idz6` specifies `language_version` but is using language `zW` which does not install an environment.  Perhaps you meant to use a specific language?r$   z=` specifies `additional_dependencies` but is using language `)
dictupdateCDEFAULTr   get_default_versionr5   r@   errorexit)rO   rM   retrestdctr9   s         r   _hookr`   m   s    Z]##Z^C  

3z?D
!)++"-.H"I$"O
!)++"+D/"E"E"G"Gx= 6#$45H&.!"ai//LLASY A A#'A A A   GGG() 	LLASY A A*.A A A   GGGJr   repo_configstorer   tuple[Hook, ...]c                \     d
fdt           fd d	         D                       S )Nlanguage_namer   depsr!   r   r   c                    t           |          }|j         t          t          j                              S t                              |                    S r)   )r   r5   r   r   getcwd
make_local)re   rf   r4   rb   s      r   _prefixz-_non_cloned_repository_hooks.<locals>._prefix   sH    ]+ #+")++&&&%**400111r   c           	   3     K   | ]E}t          j        d           |d         |d                   t          |                    V  FdS )repor4   r$   rO   N)r
   creater`   ).0r1   rj   ra   rO   s     r   	<genexpr>z/_non_cloned_repository_hooks.<locals>.<genexpr>   sw          	GD$d+D&EFF$K000	
 	
     r   hooks)re   r   rf   r!   r   r   tuple)ra   rb   rO   rj   s   ```@r   _non_cloned_repository_hooksrt      so    
2 2 2 2 2 2         (     r   c                     d          d         ct           j                                                          t          j                  }d t          |          D              d         D ]B}|d         vr6t                              d|d          d d           t          d	           Cfd
 d         D             }t           fd|D                       S )Nrl   revc                     i | ]}|d          |S )rU   r%   )ro   r1   s     r   
<dictcomp>z,_cloned_repository_hooks.<locals>.<dictcomp>   s    GGG$T$ZGGGr   rq   rU   `z` is not present in repository z`.  Typo? Perhaps it is introduced in a newer version?  Often `pre-commit autoupdate` fixes this.rQ   c                L    g | ] }t          |d                   |          !S )rU   rm   )r`   )ro   r1   by_idrO   s     r   
<listcomp>z,_cloned_repository_hooks.<locals>.<listcomp>   sA        	eDJ;???  r   c              3     K   | ]H}t          j        d          t                              |d                             |          V  IdS )rl   r$   N)r
   rn   r   clone)ro   r1   rl   ra   rv   rb   s     r   rp   z+_cloned_repository_hooks.<locals>.<genexpr>   sq          	5;;tS$/H*IJJKK	
 	
     r   )r   r   r   r~   rX   MANIFEST_FILEr   r@   r[   r\   rs   )	ra   rb   rO   manifest_pathr1   	hook_dctsr{   rl   rv   s	   ```   @@@r   _cloned_repository_hooksr      sI   
 F#[%7ID#GLLT3!7!7IIMGG-*F*FGGGEG$  :U""LL=DJ = =t = = =  
 GGG    (  I              r   c                r    | d         t           t          hv rt          | ||          S t          | ||          S )Nrl   )r   r	   rt   r   )ra   rb   rO   s      r   _repository_hooksr      s<    
 6udm+++KLLL'UKHHHr   rq   Sequence[Hook]c                     d fd} |            sd S |                                 5   |            D ]}t          |           	 d d d            d S # 1 swxY w Y   d S )Nr   
list[Hook]c                     t                      } g }D ]I}|j        | vr$t          |          s|                    |           |                     |j                   J|S r)   )setinstall_keyr:   appendadd)seenr]   r1   rq   s      r   _need_installedz*install_hook_envs.<locals>._need_installed   sj    >Aee 	' 	'Dt++OD4I4I+

4   HHT%&&&&
r   )r   r   )exclusive_lockrL   )rq   rb   r   r1   s   `   r   install_hook_envsr      s          ? 					    #O%% 	  	 D$	                                    s   AAAc                J     t           fd d         D                       S )Nc              3  D   K   | ]}t          |          D ]}|V  d S r)   )r   )ro   rl   r1   rO   rb   s      r   rp   zall_hooks.<locals>.<genexpr>   sZ        %dE;??   	      r   reposrr   )rO   rb   s   ``r   	all_hooksr      sF         (     r   )r   r   r   r   )r    r!   r   r"   )r   r   r   r'   )r1   r
   r   r2   )r1   r
   r   r;   )rM   rN   rO   rN   r   rN   )ra   rN   rb   r   rO   rN   r   rc   )rq   r   rb   r   r   r;   )rO   rN   rb   r   r   rc   )+
__future__r   r,   loggingr   collections.abcr   typingr   pre_commit.constants	constantsrX   pre_commit.all_languagesr   pre_commit.clientlibr   r   r	   pre_commit.hookr
   pre_commit.lang_baser   pre_commit.prefixr   pre_commit.storer   pre_commit.utilr   r   	getLoggerr@   r   r   r&   r0   r:   rL   r`   rt   r   r   r   r   r%   r   r   <module>r      s1   " " " " " "   				 $ $ $ $ $ $                   . . . . . . . . . . . . & & & & & & % % % % % %             0 0 0 0 0 0 $ $ $ $ $ $ " " " " " " 1 1 1 1 1 1 " " " " " " 
	<	(	(3 3 3 33 3 3 38 8 8 8          &)5 )5 )5 )5X# # # #L   0   @I I I I       $     r   