
    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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dZddd<dZddd=dZddd=dZd>dZd>dZd?d!Zd@d#Z ej!        dAd%            Z"dBd(Z#ej!        dCd*            Z$dDd/Z%dEd0Z&dFd1Z'dGd3Z(dHd5Z)dId6Z*dJd;Z+dS )K    )annotationsN)	Generator)Sequence)	lang_base)
envcontext)PatchesT)UNSET)Prefix)
cmd_output)win_exerenv)z	--no-savez--no-restorez--no-site-filez--no-environ )argscodestrprefixr
   versionr   Sequence[str]cwdcli_optsreturnc                  t          ||          5  t          |           5 }t          t                      g|||R d|i\  }}}d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   |                    d          S )Nr   
)in_env_r_code_in_tempfiler   _rscript_execrstrip)	r   r   r   r   r   r   f_outs	            f/root/.openclaw/workspace/chatterbox_venv_py311/lib/python3.11/site-packages/pre_commit/languages/r.py
_execute_rr"      s#   
 
	 	  
 
"5d";"; 
qOO
&
()
,0
 
 
69
 
	3
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 ::ds4   A)%AA)A	A)A	A))A-0A-c               6    t          | ||||t                    S )Nr   r   r   r   r   r   )r"   _RENV_ACTIVATED_OPTSr   r   r   r   r   s        r!   _execute_r_in_renvr'   (   s)     &'#%       c               ,    t          | ||||d          S )N)z	--vanillar$   )r"   r&   s        r!   _execute_vanilla_rr*   2   s)     &'#   r(   envdirc                (    t          d|||           S )Nzcat(renv::settings$r.version())r   r   r   r'   r+   r   r   s      r!   _read_installed_versionr0   <   s$    )w   r(   c                (    t          d|||           S )Nz cat(as.character(getRversion()))r-   r.   r/   s      r!   _read_executable_versionr2   D   s$    *w   r(   Nonec                ,    t          d|||            d S )Nz5renv::settings$r.version(as.character(getRversion()))r-   r.   r/   s      r!   _write_current_r_versionr5   L   s0     ?w     r(   
str | Nonec                    t          j        | t          |          }t          || |          }t	          || |          }|dv rd| S ||k    rd| d| S d S )Nr/   >    NULLzSHooks were installed with an unknown R version. R version for hook repo now set to z#Hooks were installed for R version z', but current R executable has version )r   environment_dirENVIRONMENT_DIRr0   r2   )r   r   r+   r_version_installationr_version_current_executables        r!   health_checkr>   V   s    &vHHF4fg   $<fg$ $ $  --C$@C C	
 
 #?	?	?.2H . .+. .	
 4r(   Generator[str]c           	   #  b  K   t          j                    5 }t          j                            |d          }t          |d          5 }|                    t          t          j	        |                                ddd           n# 1 swxY w Y   |V  ddd           dS # 1 swxY w Y   dS )z
    To avoid quoting and escaping issues, avoid `Rscript [options] -e {expr}`
    but use `Rscript [options] path/to/file_with_expr.R`
    zscript.RwN)
tempfileTemporaryDirectoryospathjoinopenwrite_inline_r_setuptextwrapdedent)r   tmpdirfnamer   s       r!   r   r   n   s      
	$	&	& &VZ00% 	<GGOHOD$9$9::;;;	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	<	                 s5   1B$5B<B$B	B$B	B$$B(+B(venvr   c                X    dt           j                            | d          fdt          ffS )NR_PROFILE_USERz
activate.RRENV_PROJECT)rD   rE   rF   r	   )rN   s    r!   get_env_patchrR   {   s,    	27<<l;;<	 r(   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 )N)r   r:   r;   r   rR   )r   r   r+   s      r!   r   r      s      &vHHF	M&))	*	*                   s   AAAentry	list[str]is_localboolc               j    | d         dk    s|r
| dd          S |                     | d                   fS )N   -e)rE   )rU   r   rW   s      r!   _prefix_if_file_entryr\      s?     Qx48QRRyE!H%%''r(   c                     t           j                            d          } | dS t           j                            | dt          d                    S )NR_HOMERscriptbin)rD   environgetrE   rF   r   )r_homes    r!   r   r      s?    Z^^H%%F~yw||FE79+=+=>>>r(   c                    | d         dk    rt          d          | d         dk    r$t          |           dk    rt          d          d
S t          |           dk    rt          d	          d
S )zK
    Allowed entries:
    # Rscript -e expr
    # Rscript path/to/file
    r   r_   z entry must start with `Rscript`.rZ   r[      z&You can supply at most one expression.   zLThe only valid syntax is `Rscript -e {expr}`or `Rscript path/to/hook/script`N)
ValueErrorlen)rU   s    r!   _entry_validateri      s     Qx9;<<<Qx4u::>>EFFF >	Ua/
 
 	
 
r(   tuple[str, ...]c                   t          j        |          }t          |           t          || |          }|d         gt          ||R S )NrW   r   )shlexsplitri   r\   r%   )r   rU   r   rW   cmdcmd_parts         r!   _cmd_from_hookrq      sU     +e

CC$S&8DDDHF<)<H<t<<<r(   additional_dependenciesc                   t          j        d|           t          j        | t          |          }t	          j        |d           t          j        |                     d          |           t          j	        |                     d          t          j        
                    |d                     d| j        d}t          || ||           t          || |	           |rd
}t          || |||           d S d S )NrT)exist_okz	renv.lockr   z        prefix_dir <- a3  
        options(
            repos = c(CRAN = "https://cran.rstudio.com"),
            renv.consent = TRUE
        )
        source("renv/activate.R")
        renv::restore()
        activate_statement <- paste0(
          'suppressWarnings({',
          'old <- setwd("', getwd(), '"); ',
          'source("renv/activate.R"); ',
          'setwd(old); ',
          'renv::load("', getwd(), '");})'
        )
        writeLines(activate_statement, 'activate.R')
        is_package <- tryCatch(
          {
              path_desc <- file.path(prefix_dir, 'DESCRIPTION')
              suppressWarnings(desc <- read.dcf(path_desc))
              "Package" %in% colnames(desc)
          },
          error = function(...) FALSE
        )
        if (is_package) {
            renv::install(prefix_dir)
        }
        r-   r/   z/renv::install(commandArgs(trailingOnly = TRUE))r&   )r   assert_version_defaultr:   r;   rD   makedirsshutilcopyrE   copytreerF   
prefix_dirr*   r5   r'   )r   r   rr   env_dirr_code_inst_environmentr_code_inst_adds         r!   install_environmentr      s(   
 $S'222'IIGK$''''
KK(('222
OFKK''gv)F)FGGG(  8 wG   
 GFGLLLL 
K (	
 	
 	
 	
 	
 	

 
r(   c                X    t          j        d          | g}d                    |          S )z
    Some behaviour of R cannot be configured via env variables, but can
    only be configured via R options once R has started. These are set here.
    z~        options(
            install.packages.compile.from.source = "never",
            pkgType = "binary"
        )
        r   )rJ   rK   rF   )r   with_options     r!   rI   rI      s8     	  	 	 	K 99[!!!r(   	file_argsrequire_serialcolortuple[int, bytes]c               X    t          | |||          }t          j        ||||          S )Nrl   )r   r   )rq   r   	run_xargs)r   rU   r   r   rW   r   r   ro   s           r!   run_hookr     s@     x
@
@
@C%	   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   r   r   r3   )r   r
   r   r   r   r6   )r   r   r   r?   )rN   r   r   r   )r   r
   r   r   r   rS   )rU   rV   r   r
   rW   rX   r   r   )r   r   )rU   rV   r   r3   )
r   r
   rU   r   r   r   rW   rX   r   rj   )r   r
   r   r   rr   r   r   r3   )r   r   r   r   )r   r
   rU   r   r   r   r   r   rW   rX   r   rX   r   rX   r   r   ),
__future__r   
contextlibrD   rm   rx   rB   rJ   collections.abcr   r   
pre_commitr   pre_commit.envcontextr   r   r	   pre_commit.prefixr
   pre_commit.utilr   r   r;   basic_get_default_versionget_default_versionr%   r"   r'   r*   r0   r2   r5   r>   contextmanagerr   rR   r   r\   r   ri   rq   r   rI   r   r   r(   r!   <module>r      s   " " " " " "     				     % % % % % % $ $ $ $ $ $             , , , , , , * * * * * * ' ' ' ' ' ' $ $ $ $ $ $ & & & & & & # # # # # #9   =?	 	 	 	 	 	 =?      =?                 0 	 	 	 	       	( 	( 	( 	(? ? ? ?
 
 
 
&= = = =4
 4
 4
 4
n" " " ""     r(   