
    wi                       d dl m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 dlmZ d dlmZ d dlmZ dZej        Zej        d0d            Z d1dZ!d2dZ"d3dZ#d4dZ$d5dZ%d6d Z& ej'        d!"          d5d#            Z(d7d%Z)d4d&Z*ej+        d8d*            Z,d9d+Z-d:d/Z.dS );    )annotationsN)	Generator)Sequence)	lang_base)
envcontext)PatchesT)UNSET)Var)find_executable)Prefix)CalledProcessError)
cmd_output)cmd_output_b)win_exepy_envexestrreturnc                    d}	 t          | dd|          d                                         S # t          $ r	 d|  dcY S w xY w)Nz<import sys;print(".".join(str(p) for p in sys.version_info))z-S-c   z <<error retrieving version from z>>)r   stripr   )r   progs     k/root/.openclaw/workspace/chatterbox_venv_py311/lib/python3.11/site-packages/pre_commit/languages/python.py_version_infor      sc    ID:#tT400399;;; : : :9#999999:s   ). A Afilenamedict[str, str]c                   i }t          | d          5 }|D ]T}	 |                    d          \  }}|                                ||                                <   E# t          $ r Y Qw xY w	 d d d            n# 1 swxY w Y   |S )NUTF-8)encoding=)opensplitr   
ValueError)r   retflinekvs         r   _read_pyvenv_cfgr*   $   s    
C	h	)	)	) +Q 	+ 	+D+zz#1 "#AGGII    	++ + + + + + + + + + + + + + + Js3   A9A*A9
A)&A9(A))A99A= A=venvc                j    t           j        dk    rdnd}t          j                            | |          S )z;On windows there's a different directory for the virtualenvwin32Scriptsbin)sysplatformospathjoin)r+   bin_parts     r   bin_dirr6   1   s-    LG33yyH7<<h'''    r   c           	     r    ddt           fd| fdt          |           t          j        t	          d          fffS )N)PIP_DISABLE_PIP_VERSION_CHECK1
PYTHONHOMEVIRTUAL_ENVPATH)r	   r6   r2   pathsepr
   )r+   s    r   get_env_patchr?   7   s<    .	u		'$--S[[9:	 r7   version
str | Nonec                   |                      d          rn|                     d          }dd| ddf}t          t          j        d          }	 t          |d|id	                                         S # t          $ r Y nw xY wd S )
Npythonpy-r   z!import sys; print(sys.executable)r   )PYTHONIOENCODINGenvr   )
startswithremoveprefixdictr2   environr   r   r   )r@   numcmdrG   s       r   _find_by_py_launcherrN   @   s     (## ""8,,YYY&IJ2:888	s,,,Q/55777! 	 	 	D	4s   #A4 4
B Bc                 R    t           j        j        dk    rdS t           j        j        S )NcpythonrC   )r0   implementationname r7   r   _impl_exe_namerT   N   s$    
)++x!&&r7   c                     dd} t           j        t          j                            t           j                  fD ]} | |          }|r|c S d S )Nr3   r   r   rA   c                    t           j                            |                                           \  }}|                    d          \  }}}|dvrt          |          r|S d S )Nz.exe>   rC   pythonw)r2   r3   r#   lower	partitionr   )r3   _r   s      r   _normz&_find_by_sys_executable.<locals>._normV   s[    tzz||,,3MM&))	Q+++0D0D+Jtr7   )r3   r   r   rA   )r0   
executabler2   r3   realpath)r[   r3   r   s      r   _find_by_sys_executabler^   U   sh        !1!1#.!A!AB  eDkk 	JJJ	4r7   r   )maxsizec                 V   t           j        d          } t           j        d          dt           j        d          }|| fD ]'}t                       | }t          |          r|c S (t	                      }|r|S t           j        dk    rd| }t          |          r|S t          j        S )Nr   .r   r-   rC   )	r0   version_inforT   r   r^   r1   rN   CDEFAULT)v_majorv_minor	potentialr   	maybe_exes        r   get_default_versionri   l   s    !!$&G!!$<<s'7':<<G w'  	!!.9..3 	JJJ	 ())I  |w w  $$ 	J 9r7   boolc                .   | dk    rdS |                      d          sdS 	 t          d |                     d                              d          D                       }n# t          $ r Y dS w xY wt
          j        d t          |                   |k    S )NrC   TFc              3  4   K   | ]}t          |          V  d S N)int).0ps     r   	<genexpr>z*_sys_executable_matches.<locals>.<genexpr>   s(      OOSVVOOOOOOr7   ra   )rH   tuplerI   r#   r$   r0   rb   len)r@   infos     r   _sys_executable_matchesru      s    (t)) uOOW%9%9(%C%C%I%I#%N%NOOOOO   uu JSYYJ'4//s   ?A! !
A/.A/c                    | t           j        k    rd S t          |           rd S t          j        dk    r,t          |           }|r|S t          |           }|r|| k    r|S t          j        	                    |           S )Nr-   )
rc   rd   ru   r0   r1   rN   r   r2   r3   
expanduser)r@   version_execs     r   norm_versionry      s    !)t	 	)	) t
|w+G44 	  'w// 	 LG33 7g&&&r7   prefixr   Generator[None]c              #     K   t          j        | t          |          }t          t	          |                    5  d V  d d d            d S # 1 swxY w Y   d S rm   )r   environment_dirENVIRONMENT_DIRr   r?   )rz   r@   envdirs      r   in_envr      s      &vHHF	M&))	*	*                   s   AAAc                "   t          j        | t          |          }t          j                            |d          }t          j                            |          sdS t          d          }|                     t          |          |          }t          |          }d|vrdS t                              |          }||d         k    rd| d|d          dS d	|vrd S t          |d	                   }||d         k    rd
| d|d          dS d S )Nz
pyvenv.cfgz+pyvenv.cfg does not exist (old virtualenv?)rC   rb   z9created virtualenv's pyvenv.cfg is missing `version_info`zKvirtualenv python version did not match created version:
- actual version: z
- expected version: 
zbase-executablezZbase executable python version does not match created version:
- base-executable version: )r   r}   r~   r2   r3   r4   existsr   r6   r*   r   __wrapped__)	rz   r@   r   
pyvenv_cfgexe_namepy_execfgvirtualenv_versionbase_exe_versions	            r   health_checkr      sL   &vHHFfl33J 7>>*%% =<<x  H[[(33F
:
&
&CS  JJ '226::S000;!3; ;#&~#6; ; ;	
 ##t$S):%;<<3~...;*:; ;#&~#6; ; ;	
 tr7   additional_dependenciesSequence[str]Nonec                P   t          j        | t          |          }t          j        d|g}t          |          }||                    d|f           ddddg|R }t          |ddi t          | |          5  t          j	        | |           d d d            d S # 1 swxY w Y   d S )	Nz-mvirtualenvz-prC   z-mpipinstallra   cwd/)
r   r}   r~   r0   r\   ry   extendr   r   	setup_cmd)rz   r@   r   r   venv_cmdrC   install_cmds          r   install_environmentr      s    
 &vHHF7H'""Fv'''WiO7NOOK($$$$		 	  1 1FK0001 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1s   8BB"B)r   r   r   r   )r   r   r   r   )r+   r   r   r   )r+   r   r   r   )r@   r   r   rA   )r   r   )r   rA   )r@   r   r   rj   )rz   r   r@   r   r   r{   )rz   r   r@   r   r   rA   )rz   r   r@   r   r   r   r   r   )/
__future__r   
contextlib	functoolsr2   r0   collections.abcr   r   pre_commit.constants	constantsrc   
pre_commitr   pre_commit.envcontextr   r   r	   r
   pre_commit.parse_shebangr   pre_commit.prefixr   pre_commit.utilr   r   r   r   r~   basic_run_hookrun_hookcacher   r*   r6   r?   rN   rT   r^   	lru_cacheri   ru   ry   contextmanagerr   r   r   rS   r7   r   <module>r      s   " " " " " "         				 



 % % % % % % $ $ $ $ $ $                         , , , , , , * * * * * * ' ' ' ' ' ' % % % % % % 4 4 4 4 4 4 $ $ $ $ $ $ . . . . . . & & & & & & ( ( ( ( ( ( # # # # # ## : : : :
 
 
 
( ( ( (      ' ' ' '   . Q    20 0 0 0' ' ' '(    $ $ $ $N1 1 1 1 1 1r7   