
    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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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*        Z+ddddddZ, ej-                    .                                Z/e,0                    e/e/          Z/ G d de          Z1e	j        dk    rdZ2d5dZ3ndZ2d5d Z3 ej4        d!"          d6d$            Z5d7d(Z6ej4        d8d)            Z7d8d*Z8d9d-Z9ej:        d:d1            Z;d;d4Z<dS )<    )annotationsN)	Generator)Sequence)ContextManager)IO)Protocol)	lang_base)
envcontext)PatchesT)Var)
no_git_env)Prefix)
cmd_output)rmtree	golangenvamd64386arm64armv6l)x86_64i386aarch64armv8armv7lc                      e Zd ZddZdS )
ExtractAllpathstrreturnNonec                    d S N )selfr   s     k/root/.openclaw/workspace/chatterbox_venv_py311/lib/python3.11/site-packages/pre_commit/languages/golang.py
extractallzExtractAll.extractall/   s          N)r   r   r   r    )__name__
__module____qualname__r&   r#   r'   r%   r   r   .   s        000000r'   r   win32zipbio	IO[bytes]r   ContextManager[ExtractAll]c                *    t          j        |           S r"   )zipfileZipFiler-   s    r%   _open_archiver4   5   s    s###r'   ztar.gzc                ,    t          j        |           S )N)fileobj)tarfileopenr3   s    r%   r4   r4   :   s    |C((((r'      )maxsizer   c                 F    t          j        d          rdS t          j        S )Ngosystem)r	   
exe_existsCDEFAULTr#   r'   r%   get_default_versionrA   >   s"    D!! xyr'   venvversionr   c           
        |dk    r=dt           j                            | d          t           j        t	          d          fffS dt           j                            | d          fddt           j                            | d          t           j        t           j                            | dd          t           j        t	          d          fffS )Nr=   PATHbinGOROOT.go)GOTOOLCHAINlocal)osr   joinpathsepr   )rB   rC   s     r%   get_env_patchrN   F   s    (bgll4//S[[IJ
 	

 
27<<e,,- T5))2:T5%00"*c&kk	
	 	r'   c                    | t           j        k    r| S t          j                            d          }t          j        |          d         d                             d          S )Nzhttps://go.dev/dl/?mode=jsonr   rC   r<   )r?   r@   urllibrequesturlopenjsonloadremoveprefix)rC   resps     r%   _infer_go_versionrW   X   sP    !)>!!"@AAD9T??1i(55d;;;r'   c                    t          j                                                    }t          |           } d|  d| dt           dt
           S )Nzhttps://dl.google.com/go/go.-)platformr=   lowerrW   _ARCH_EXT)rC   os_names     r%   _get_urlr`   `   sN    o%%''G((GKKK7KKUKKTKKKr'   destr    c                   	 t           j                            t          |                     }t	          j                    5 }t          j        ||           |                    d           t          |          5 }|
                    |           d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   t          j        t          j                            |d          t          j                            |d                     d S # t           j        j        $ rP}|j        dk    r?t%          dt'          j                                                     dt,           d          | d }~ww xY w)Nr   r<   rH   i  z?Could not find a version matching your system requirements (os=z; arch=))rP   rQ   rR   r`   tempfileTemporaryFileshutilcopyfileobjseekr4   r&   moverK   r   rL   error	HTTPErrorcode
ValueErrorr[   r=   r\   r]   )rC   ra   rV   farchivees         r%   _install_gorq   f   s   I~%%hw&7&788 #%% 	)tQ'''FF1IIIq!! )W""4((() ) ) ) ) ) ) ) ) ) ) ) ) ) )		) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	BGLLt,,bgll4.G.GHHHHH <!   6S==B((..00B B9>B B B  
 sN   ,D :B4;BB4B!	!B4$B!	%B44B8;B8E6&AE11E6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 r"   )r	   environment_dirENVIRONMENT_DIRr
   rN   )rr   rC   envdirs      r%   in_envrx   {   s      &vHHF	M&'22	3	3                   s   AAAadditional_dependenciesSequence[str]c                j   t          j        | t          |          }|dk    rt          ||           t          j        dk    r*t          dd|          d                                         }n|}t          t          t          j        |                    }|                    dd            |dk    r{d|d	<   t          j                            |d
          |d<   t          j                            t          j                            |d
d          t          j        d         f          |d<   t          j        | d|           |D ]}t          j        | dd|f|           t          j                            |d          }t          j                            |          rt%          |           d S d S )Nr=   cygwincygpathz-wr9   )GOPATHGOBINrJ   rI   rH   rG   rF   rE   )r<   installz./...)envr<   r   pkg)r	   ru   rv   rq   sysr[   r   stripr   dictrK   environpopr   rL   rM   	setup_cmdexistsr   )rr   rC   ry   env_dirgopathr   
dependencypkgdirs           r%   install_environmentr      s   
 'IIG(GW%%%
|xItW55a8>>@@
T"*V444
5
5CGGGT($MWe44HjooGLL%//F1C'
  F  :DDDD- L L
FT9j$AsKKKKK W\\'5))F	w~~f v r'   )r-   r.   r   r/   )r   r   )rB   r   rC   r   r   r   )rC   r   r   r   )rC   r   ra   r   r   r    )rr   r   rC   r   r   rs   )rr   r   rC   r   ry   rz   r   r    )=
__future__r   
contextlib	functoolsrS   os.pathrK   r[   rf   r   r7   rd   urllib.errorrP   urllib.requestr1   collections.abcr   r   typingr   r   r   pre_commit.constants	constantsr?   
pre_commitr	   pre_commit.envcontextr
   r   r   pre_commit.gitr   pre_commit.prefixr   pre_commit.utilr   r   rv   basic_health_checkhealth_checkbasic_run_hookrun_hook_ARCH_ALIASESmachiner\   r]   getr   r^   r4   	lru_cacherA   rN   rW   r`   rq   contextmanagerrx   r   r#   r'   r%   <module>r      s=   " " " " " "             



            % % % % % % $ $ $ $ $ $ ! ! ! ! ! !                                     , , , , , , * * * * * * % % % % % % % % % % % % $ $ $ $ $ $ & & & & & & " " " " " "+#   	  ""%''1 1 1 1 1 1 1 1 <7D$ $ $ $ $ D) ) ) ) Q       $ < < < <L L L LI I I I*         r'   