
    wi$                    b   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Zd	Zej        Zej        Zej        Z ej        d
ej                  Zd-dZd.dZd/dZd0dZd1dZ d2dZ! ej"        d          d3d             Z#d4d"Z$d5d$Z%d5d%Z&d6d,Z'dS )7    )annotationsN)Sequence)	lang_base)Prefix)CalledProcessError)cmd_output_bdocker
PRE_COMMITsg   
    /containers
    (?:/overlay-containers)?
    /([a-z0-9]{64})
    (?:/userdata)?
    /hostname
    return
str | Nonec                 d   t          j        t                    5  t          dd          5 } | D ]R}t                              |          }|r4|d                                         c cd d d            cd d d            S S	 d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   d S )Nz/proc/1/mountinforb   )
contextlibsuppressFileNotFoundErroropen_HOSTNAME_MOUNT_REsearchdecode)flinems      k/root/.openclaw/workspace/chatterbox_venv_py311/lib/python3.11/site-packages/pre_commit/languages/docker.py_get_container_idr   "   sg   		.	/	/ ) )%t,, 	) ) )&--d33 )Q4;;==((		) 	) 	) 	) 	) 	) 	)) ) ) ) ) ) ) )))	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	)) ) ) ) ) ) ) ) ) ) ) ) ) ) ) 4s@   B%<B'B% BB%B	B%B	B%%B),B)pathstrc                X   t                      }|| S 	 t          dd|          \  }}}n# t          $ r | cY S w xY wt          j        |          \  }|d         D ]O}|d         }|d         }t
          j                            | |f          |k    r|                     ||          c S P| S )Nr	   inspectMountsSourceDestination)	r   r   r   jsonloadsosr   
commonpathreplace)r   container_id_out	containermountsrc_pathto_paths           r   _get_docker_pathr/   -   s    $&&L 9lCC	3    CJI8$ 3 3?&7tWo..'99 <<22222 : Ks   * 99sc                r    t          j        |                                                                           S )N)hashlibmd5encode	hexdigest)r0   s    r   r3   r3   E   s&    ;qxxzz"",,...    prefixr   c                    t          t          j                            | j                                                            }d| S )Nzpre-commit-)r3   r%   r   basename
prefix_dirlower)r7   md5sums     r   
docker_tagr=   I   s<    !!&"34455;;==F!!!!r6   pullboolNonec               |    dddt          |           dt          f}|r|dz  }|dz  }t          j        | |           d S )Nr	   buildz--tagz--label)z--pull).)r=   PRE_COMMIT_LABELr   	setup_cmd)r7   r>   cmds      r   build_docker_imagerG   N   sY     	'F###C
  {6MC$$$$$r6   versionadditional_dependenciesSequence[str]c                    t          j        d|           t          j        d|           t          j        | t          |          }t          | d           t          j        |           d S )Nr	   Tr>   )r   assert_version_defaultassert_no_additional_depsenvironment_dirENVIRONMENT_DIRrG   r%   mkdir)r7   rH   rI   	directorys       r   install_environmentrS   _   sj     $Xw777'2IJJJ)&/7KKI vD))))HYr6   r   )maxsizec                     t          ddddd          \  } }}| dk    rdS t          j        |          }	 d|                    d	          pd
v p|d         d         d         S # t          $ r Y dS w xY w)Nr	   systeminfoz--formatz{{ json . }}r   Fzname=rootlessSecurityOptions hostsecurityrootless)r   r#   r$   getKeyError)retcoder*   r)   rW   s       r   _is_rootlessr`   m   s    "(FJ OGS! !||u:c??D
 ): ; ; ArB 1 L$Z0	
    uus   ,A" "
A0/A0tuple[str, ...]c                     t                      rdS 	 dt          j                     dt          j                     fS # t          $ r Y dS w xY w)NrY   z-u:)r`   r%   getuidgetgidAttributeErrorrY   r6   r   get_docker_userrg      s_    ~~ r44ry{{4455   rrs   *= 
A
Acolorc                    | rdndS )N)z--ttyrY   rY   rh   s    r   get_docker_ttyrk      s    'JJR(r6   c                    dddgt          |           t                      dt          t          j                               dddR S )	Nr	   runz--rmrj   z-vz
:/src:rw,Zz	--workdirz/src)rk   rg   r/   r%   getcwdrj   s    r   
docker_cmdro      s}    %
 
e	$	$	$
 
			
 	
 "")++..:::
 	
 
 
 
r6   entryargs	file_argsis_localrequire_serialtuple[int, bytes]c                   t          | d           t          j        ||          ^}}d|t          |           f}	t          j        g t          |          |	|R |||          S )NFrL   z--entrypointrj   )rt   rh   )rG   r   hook_cmdr=   	run_xargsro   )
r7   rp   rq   rr   rs   rt   rh   	entry_execmd_rest	entry_tags
             r   run_hookr|      s     vE****$-eT::IJv,>,>?I9*5
!
!
!9I999%	   r6   )r   r   )r   r   r   r   )r0   r   r   r   )r7   r   r   r   )r7   r   r>   r?   r   r@   )r7   r   rH   r   rI   rJ   r   r@   )r   r?   )r   ra   )rh   r?   r   ra   )r7   r   rp   r   rq   rJ   rr   rJ   rs   r?   rt   r?   rh   r?   r   ru   )(
__future__r   r   	functoolsr2   r#   r%   recollections.abcr   
pre_commitr   pre_commit.prefixr   pre_commit.utilr   r   rP   rD   basic_get_default_versionget_default_versionbasic_health_checkhealth_checkno_envin_envcompileVERBOSEr   r   r/   r3   r=   rG   rS   	lru_cacher`   rg   rk   ro   r|   rY   r6   r   <module>r      s   " " " " " "           				 				 $ $ $ $ $ $             $ $ $ $ $ $ . . . . . . ( ( ( ( ( ( 9 +		RZ J	 	       0/ / / /" " " "
% % % %"    Q    *   ) ) ) )        r6   