
    wiO!                    <   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  ej        e          ZdZd7dZd8d9dZd:dZd;d<dZd;d<dZd=dZd>dZd?dZd8d@d ZdAd!ZdAd"ZdBd%ZdCd'Zdd(dDd+Zd=d,Z dEd/Z!d;dFd0Z"d;dGd2Z#dHd3Z$dId6Z%dS )J    )annotationsN)Mapping)
FatalError)CalledProcessError)
cmd_outputcmd_output_b)z-czcore.useBuiltinFSMonitor=falsesstrreturn	list[str]c                ^    |                      d          } | r|                     d          S g S )N )stripsplit)r
   s    ^/root/.openclaw/workspace/chatterbox_venv_py311/lib/python3.11/site-packages/pre_commit/git.pyzsplitr      s.    	A wwt}}	    _envMapping[str, str] | Nonedict[str, str]c                ^    | | nt           j        } d |                                 D             S )Nc                v    i | ]6\  }}|                     d           r|                     d          s|dv 3||7S )GIT_)GIT_CONFIG_KEY_GIT_CONFIG_VALUE_>	   GIT_SSHGIT_ASKPASSGIT_EXEC_PATHGIT_SSL_CAINFOGIT_SSH_COMMANDGIT_CONFIG_COUNTGIT_SSL_NO_VERIFYGIT_ALLOW_PROTOCOLGIT_HTTP_PROXY_AUTHMETHOD)
startswith).0kvs      r   
<dictcomp>zno_git_env.<locals>.<dictcomp>%   sm       A||F## 	
=>> 	
 
 	
 	
 	
1	
 	
 	
r   )osenvironitems)r   s    r   
no_git_envr.      s=     #44D    r   c                 L   	 t           j                            t          ddd          d                                                   } t          ddd          d                                         }n# t
          $ r t          d          w xY w|dk    rt          d          | S )	Ngit	rev-parsez--show-cdup   z--is-inside-git-dirzGgit failed. Is it installed, and are you in a Git repository directory?falsezfgit toplevel unexpectedly empty! make sure you are not inside the `.git` directory of your repository.)r+   pathabspathr   r   r   r   )rootinside_git_dirs     r   get_rootr8   3   s    

wuk=99!<BBDD
 
 $; 5
 

UWW 	  
 
 

 
 	


   >
 
 	
 Ks   A/A2 2B.git_rootc                    d}t          dd||           \  }}}|                                }||k    r=t          j                            t          j                            | |                    S t          d          )Nz	--git-dirr0   r1   cwdzunreachable: no git dir)r   r   r+   r4   normpathjoinAssertionError)r:   opt_outgit_dirs        r   get_git_dirrE   L   sn    
C5+sAAAIAsAiikkG#~~wXw ? ?@@@6777r   c                    d}t          dd||           \  }}}|                                }||k    r=t          j                            t          j                            | |                    S t          |           S )Nz--git-common-dirr0   r1   r<   )r   r   r+   r4   r>   r?   rE   )r:   rA   rB   rC   git_common_dirs        r   get_git_common_dirrH   V   so    
C5+sAAAIAsAYY[[NwX~ F FGGG8$$$r   boolc                    t          d          } t          j                            t          j                            | d                    o<t          j                            t          j                            | d                    S )Nr9   	MERGE_MSG
MERGE_HEAD)rE   r+   r4   existsr?   )rD   s    r   is_in_merge_conflictrN   `   s[    #G
rw||G[99:: 	<
rw||G\::;;r   	merge_msgbytesc                >    d |                                  D             S )Nc                    g | ]P}|                     d           |                    d                                                                          QS ))   	s   #	   #)r&   lstripr   decode)r'   lines     r   
<listcomp>z1parse_merge_msg_for_conflicts.<locals>.<listcomp>j   s^       ???++	D!!((**  r   )
splitlines)rO   s    r   parse_merge_msg_for_conflictsrZ   h   s/     ((**   r   set[str]c                    t                               d           t          t          j                            t          d          d          d          5 } |                                 }d d d            n# 1 swxY w Y   t          |          }t          dd          d         
                                }t          t          ddd	d
dd|ddd
  
        d                   }t          |          t          |          z  S )Nz#Checking merge-conflict files only.r9   rK   rbr0   z
write-treer2   diff--name-only--no-ext-diff-zz-mHEADrL   z--)loggerinfoopenr+   r4   r?   rE   readrZ   r   r   r   set)frO   merge_conflict_filenames	tree_hashmerge_diff_filenamess        r   get_conflicted_filesrl   r   s*   
KK5666 
bgll;s++[994	@	@ AFFHH	              <YGG
 5,//288::I!6=/4)V\4	
 	
 	  '((3/C+D+DDDs   A77A;>A;r=   
str | Nonec                V    t          t          ddddddd|           d	                   S )
Nr0   r^   z--stagedr_   r`   ra   z--diff-filter=ACMRTUXBr<   r2   r   r   r<   s    r   get_staged_filesrp      sC    6:}ot$		
 	
 	

 	  r   c            	     R    t          ddddddd          \  } }} t          |          S )Nr0   r^   r`   z--ignore-submodulesz--diff-filter=Ar_   ra   )r   r   )rB   stdouts     r   intent_to_add_filesrs      s6    v(==$ LAvq &>>r   c                 J    t          t          ddd          d                   S )Nr0   zls-filesra   r2   ro    r   r   get_all_filesrv      s!    *UJ55a8999r   oldnewc                    d}	 t          g ||  d| R  \  }}}n'# t          $ r t          g ||  d| R  \  }}}Y nw xY wt          |          S )N)r0   r^   r_   r`   ra   z...z..)r   r   r   )rw   rx   diff_cmdrB   rC   s        r   get_changed_filesr{      s    DH;;;S*:*:S*:*:;;;	3 ; ; ; ::S//C//:::	3;
 #;;s    !A A remotec                d    t          ddd| d          \  }}}|                                d         S )Nr0   z	ls-remotez--exit-coderb   r   )r   r   )r|   rB   rC   s      r   head_revr~      s/    5+}ffMMIAsA99;;q>r   )repoargsr   c                B    ddddg|R }t          || ddd         dk    S )	Nr0   r^   z--quietr`   F)r=   checkr   r2   r   )r   r   cmds      r   has_diffr      s7    &)_
<t
<
<C$e444Q71<<r   c                 r    t          dddd          \  } }} t          |                                          S )Nr0   configzcore.hooksPathF)r   )r	   rI   r   )rB   rC   s     r   has_core_hookpaths_setr      s5    UH.>eLLLIAsA		r   r4   Nonec                   t           j                            |          rt           j                            |          }dgt          R }t                      }t          g |dd| R d|i t          g |ddd|R | |d d S )	Nr0   initz--template=envr|   addoriginr=   r   )r+   r4   isdirr5   NO_FS_MONITORr.   r	   )r4   r|   r0   r   s       r   	init_repor      s    	w}}V )((
!=
!
!C
,,C<#<v<}<d<<<<<<L#LxLLL&LLdLLLLLLr   c                r    t                      }d\  }}|x|d<   |d<   |x|d<   |d<   d}t          || |d d S )N)z
pre-commitzasottile+pre-commit@umich.eduGIT_AUTHOR_NAMEGIT_COMMITTER_NAMEGIT_AUTHOR_EMAILGIT_COMMITTER_EMAIL)r0   commitz	--no-editz--no-gpg-signz-nz-minitr   )r.   r	   )r   r   nameemailr   s        r   r   r      s`    
,,C?KD%9==CS!56;@@Cc"78
IC#4S))))))r   r   c                    t          ddd| |          \  }}}t          j                            ||                                          S )Nr0   r1   z
--git-pathr<   )r   r+   r4   r?   r   )r   r   rB   rC   s       r   git_pathr      s>    5+|TtLLLIAsA7<<ciikk***r   c                 $   t           j        dv rt           j        dk    } 	 t                      }n# t          $ r Y dS w xY w|                    d          }| |z  r6ddd}t
                              d||           d	||          d
           dS dS dS )z7See https://github.com/pre-commit/pre-commit/issues/354)cygwinwin32r   N/z(cygwin)z	(windows))TFa
  pre-commit has detected a mix of cygwin python / git
This combination is not supported, it is likely you will receive an error later in the program.
Make sure to use cygwin git+python while using cygwin
These can be installed through the cygwin installer.
 - python z
 - git 
)sysplatformr8   r   r&   rc   warning)is_cygwin_pythontoplevelis_cygwin_gitexe_types       r   check_for_cygwin_mismatchr      s    
|***<83	zzHH 	 	 	FF	 ++C00m+ 
	(==HNN6
 &&676 6 #=16 6 6     +*
	 
	s   / 
==revgit_repoc                    t          dgt          dd| R d|id                                         }|D ]
}d|v r|c S | S )zGet the best tag candidate.

    Multiple tags can exist on a SHA. Sometimes a moving tag is attached
    to a version tag. Try to pick the tag that looks like a version.
    r0   tagz--points-atr=   r2   r9   )r   r   rY   )r   r   tagsr   s       r   get_best_candidate_tagr      s     $&358  >F 		 	   #::JJJ Jr   )r
   r   r   r   )N)r   r   r   r   )r   r   )r9   )r:   r   r   r   )r   rI   )rO   rP   r   r   )r   r[   )r=   rm   r   r   )r   r   )rw   r   rx   r   r   r   )r|   r   r   r   )r   r   r   r   r   rI   )r4   r   r|   r   r   r   )r   r   r   r   )r   r   r   r   r   r   )r   r   )r   r   r   r   r   r   )&
__future__r   loggingos.pathr+   r   collections.abcr   pre_commit.errorsr   pre_commit.utilr   r   r	   	getLogger__name__rc   r   r   r.   r8   rE   rH   rN   rZ   rl   rp   rs   rv   r{   r~   r   r   r   r   r   r   r   ru   r   r   <module>r      st   " " " " " "   



 # # # # # # ( ( ( ( ( ( . . . . . . & & & & & & ( ( ( ( ( (		8	$	$ 9       0   28 8 8 8 8% % % % %      E E E E*       : : : :	 	 	 	   
 &) = = = = = =
   
M M M M* * * * *+ + + + +
   .     r   