
    wiA                       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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        d          Z ej        ej        ej                  Z dZ!g e!dR Z"ddZ#ddZ$ddZ%ddddZ&ddZ' ej(         ej)        dd ej*        dej                   ej+        d  ej,        ej                  g                               Z-dd#Z. G d$ d%e          Z/ G d& d'e/          Z0 G d( d)e          Z1 G d* d+e          Z2dd-Z3 G d. d/e          Z4 G d0 d1e4          Z5 ej)        dd ej+        d2 ej        ej        e%          d3           ej*        dej                   ej*        d,ej                   ej*        d4ej                   e5d5 ej6        e                     ej+        d6ej        d7           ej+        d8e d7           ej+        d9e d:           ej+        d; ej,        e#          d<g           ej+        d= ej,        e#          g            ej+        d> ej,        e#          g            ej+        d? ej,        ej                  g            ej+        d@ ej,        ej                  g            ej+        dAej7        dB           ej+        dCej7        dB           ej+        dDej7        dE           ej+        dFej        d7           ej+        dGej        ej8                   ej+        dHej        d7           ej+        dIej7        dB           e0d g            ej+        dJej7        dB                    Z9 ej(        e9          Z: G dK dLe          Z;ddOZ< ej=        ej>        e:e<e;P          Z?dQZ@dRZA G dS dTejB                  ZC G dU dVejD                  ZE G dW dXejD                  ZFddZZGdd`ZHddaZIdbdcd8dd ejJ        ejK                   defd4 eGdf          fffdgdhd8dd ejJ        ejK                   defd4 eGdi          fffdjdkdld4 eGdj          ffffZL G dm dnejD                  ZM eEd8ej                   eEd9ej                   e1d           fZN ej)        dd ej*        dej                   ej*        d ej6         eOdo eLD                                            ej+        d5 ej6        dph          dp           eMd4ejP                  gdq eLD             dr e9jQ        D             eNR  ZR ej)        dd ej*        dej                  gds e9jQ        D              e/d g            e4d5 ej6        e                    eNR  ZS ej)        ddge9jQ        eNR  ZT ej)        dtd! ej*        d!ej                   ejU        du ej(        eS          d! ejV        e@eA                     ejU        du ej(        eT          d!e@           ejU        du ej(        eR          d!eA           eCdvej        d! ejV        e@eA          dEw           ejW        dxeI                    ZX ej)        dyd ejY        e          gdz eD             R  ZZ ej)        d{d ej+        d2 ej        ej        e%          d3           ej[        d| ej(        eX                     ej+        d} ej,         ej6        e!                    dg           ej\        d~eZi            e0de"           e2d           ej+        d8e d7           ej+        d9e d:           ej+        dCej7        dB           ejW        deH           eFd8ej                   eFd9ej                   ejD        d ej]        e^                              Z_ G d de          Z` ej=        ej>        e_ee`P          ZadS )    )annotationsN)Callable)Sequence)Any)
NamedTuple)ALL_TAGS)language_names)
FatalError)	yaml_load
pre_commit)
z
commit-msgzpost-checkoutzpost-commitz
post-mergezpost-rewrite
pre-commitpre-merge-commitpre-pushz
pre-rebasezprepare-commit-msgmanualtagstrreturnNonec                H    | t           vrt          j        d| d          d S )Nz	Type tag z; is not recognized.  Try upgrading identify and pre-commit?)r   cfgvValidationError)r   s    d/root/.openclaw/workspace/chatterbox_venv_py311/lib/python3.11/site-packages/pre_commit/clientlib.pycheck_type_tagr   *   s@    
("6 6 6 6
 
 	
     stuple[int, ...]c                Z    t          d |                     d          D                       S )zpoor man's version comparisonc              3  4   K   | ]}t          |          V  d S N)int).0ps     r   	<genexpr>z parse_version.<locals>.<genexpr>4   s(      ..AQ......r   .)tuplesplit)r   s    r   parse_versionr'   2   s)    ........r   versionc                    t          |           t          t          j                  k    r%t          j        d|  dt          j         d          d S )Nzpre-commit version z is required but version z? is installed.  Perhaps run `pip install --upgrade pre-commit`.)r'   CVERSIONr   r   )r(   s    r   check_min_versionr,   7   sa    Wai 8 888"?' ? ?y? ? ?
 
 	
 98r   r   r   r   )commitzmerge-commitpushstagec                8    t                               | |           S r   )_STAGESget)r/   s    r   transform_stager3   G   s    ;;ue$$$r   Hookidstagesrepo	directoryc           
        	 t          j        t          j                            |t
          j                  t          t          t                    }n# t          $ r Y d S w xY wi }|D ])}|
                    dd          D ]}|t          v rd||<   *|rKt                              d|  dd                    |           dt          j        |            d	           d S d S )
Nschemaload_strategyexc_tpr6    Tzrepo `` uses deprecated stage names (, zX) which will be removed in a future version.  Hint: often `pre-commit autoupdate --repo zM` will fix this.  if it does not -- consider reporting an issue to that repo.)r   load_from_filenameospathjoinr*   MANIFEST_FILEMINIMAL_MANIFEST_SCHEMAr   InvalidManifestErrorr2   r1   loggerwarningshlexquote)r7   r8   manifestlegacy_stageshookr/   s         r   warn_for_stages_on_repo_initrO   T   s4   *GLLAO44*#'	
 
 
      M , ,XXh++ 	, 	,E'+e$	,  
KT K K		-((K K :?T9J9JK K K	
 	
 	
 	
 	

 
s   AA 
A A c                  <    e Zd ZU ded<   ded<   dd	Zdd
ZddZdS )StagesMigrationNoDefaultr   keySequence[str]defaultdctdict[str, Any]r   r   c                n   | j         |vrd S t          j        d| j                    5  || j                  } t          j        t          j                  |           d |D             } t          j        t          j        t                              |           d d d            d S # 1 swxY w Y   d S )NAt key: c                ,    g | ]}t          |          S r>   r3   r!   vs     r   
<listcomp>z2StagesMigrationNoDefault.check.<locals>.<listcomp>|   s     333!?1%%333r   )rR   r   validate_contextcheck_array	check_anycheck_one_ofSTAGES)selfrU   vals      r   checkzStagesMigrationNoDefault.checkt   s    83F"#8dh#8#899 	= 	=dh-C,DT^,,S11133s333C7DT.v6677<<<	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	=s   A5B**B.1B.c                Z    | j         |vrd S d || j                  D             || j         <   d S )Nc                ,    g | ]}t          |          S r>   rZ   r[   s     r   r]   z:StagesMigrationNoDefault.apply_default.<locals>.<listcomp>   s     CCC++CCCr   )rR   rc   rU   s     r   apply_defaultz&StagesMigrationNoDefault.apply_default   s7    83FCCS]CCCDHr   c                    t           r   NotImplementedErrorrh   s     r   remove_defaultz'StagesMigrationNoDefault.remove_default       !!r   NrU   rV   r   r   __name__
__module____qualname____annotations__re   ri   rm   r>   r   r   rQ   rQ   p   sk         HHH	= 	= 	= 	=D D D D
" " " " " "r   rQ   c                        e Zd Zd fdZ xZS )StagesMigrationrU   rV   r   r   c                    |                     | j        | j                   t                                          |           d S r   )
setdefaultrR   rT   superri   rc   rU   	__class__s     r   ri   zStagesMigration.apply_default   s9    tx...c"""""r   ro   )rq   rr   rs   ri   __classcell__r{   s   @r   rv   rv      s=        # # # # # # # # # #r   rv   c                  2    e Zd ZU ded<   ddZddZdd	Zd
S )DeprecatedStagesWarningr   rR   rU   rV   r   r   c                   | j         |vrd S || j                  } t          j        t          j                  |           d |D             }|r<t                              d|d          dd                    |           d           d S d S )Nc                $    g | ]}|t           v |S r>   r1   r!   r/   s     r   r]   z1DeprecatedStagesWarning.check.<locals>.<listcomp>   "    DDD55G3C3C3C3C3Cr   z	hook id `r5   r?   r@   i) which will be removed in a future version.  run: `pre-commit migrate-config` to automatically fix this.rR   r   r_   r`   rH   rI   rD   rc   rU   rd   rM   s       r   re   zDeprecatedStagesWarning.check   s    83F$(m(((---DDCDDD 	NNOCI O OIIm,,O O O    	 	r   c                    d S r   r>   rh   s     r   ri   z%DeprecatedStagesWarning.apply_default       r   c                    t           r   rk   rh   s     r   rm   z&DeprecatedStagesWarning.remove_default   rn   r   Nro   rp   r>   r   r   r   r      [         HHH       " " " " " "r   r   c                  2    e Zd ZU ded<   ddZddZdd	Zd
S )DeprecatedDefaultStagesWarningr   rR   rU   rV   r   r   c                   | j         |vrd S || j                  } t          j        t          j                  |           d |D             }|r3t                              dd                    |           d           d S d S )Nc                $    g | ]}|t           v |S r>   r   r   s     r   r]   z8DeprecatedDefaultStagesWarning.check.<locals>.<listcomp>   r   r   z8top-level `default_stages` uses deprecated stage names (r@   r   r   r   s       r   re   z$DeprecatedDefaultStagesWarning.check   s    83F$(m(((---DDCDDD 	NNOIIm,,O O O    	 	r   c                    d S r   r>   rh   s     r   ri   z,DeprecatedDefaultStagesWarning.apply_default   r   r   c                    t           r   rk   rh   s     r   rm   z-DeprecatedDefaultStagesWarning.remove_default   rn   r   Nro   rp   r>   r   r   r   r      r   r   r   namec                4    ddd                     | |           S )Nunsupportedunsupported_script)systemscript)r2   )r   s    r   _translate_languager      s&    &  
c$oor   c                  <    e Zd ZU ded<   ded<   dd	Zdd
ZddZdS )LanguageMigrationr   rR   zCallable[[object], None]check_fnrU   rV   r   r   c                    | j         |vrd S t          j        d| j                    5  |                     t	          || j                                       d d d            d S # 1 swxY w Y   d S )NrX   )rR   r   r^   r   r   rh   s     r   re   zLanguageMigration.check   s    83F"#8dh#8#899 	> 	>MM-c$(m<<===	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	>s   .A##A'*A'c                `    | j         |vrd S t          || j                            || j         <   d S r   )rR   r   rh   s     r   ri   zLanguageMigration.apply_default   s1    83F+CM::DHr   c                    t           r   rk   rh   s     r   rm   z LanguageMigration.remove_default   rn   r   Nro   rp   r>   r   r   r   r      sg         HHH&&&&> > > >; ; ; ;" " " " " "r   r   c                        e Zd Zd fdZ xZS )LanguageMigrationRequiredrU   rV   r   r   c                    | j         |vrt          j        d| j                    t                                          |           d S )NzMissing required key: )rR   r   r   ry   re   rz   s     r   re   zLanguageMigrationRequired.check   sH    83&'J'J'JKKKcr   ro   rq   rr   rs   re   r|   r}   s   @r   r   r      s=                 r   r   minimum_pre_commit_version0entrylanguagealias filesexcludez^$typesfiletypes_orexclude_typesadditional_dependenciesargs
always_runF	fail_fastpass_filenamesTdescriptionlanguage_versionlog_filerequire_serialverbosec                      e Zd ZdS )rG   Nrq   rr   rs   r>   r   r   rG   rG             Dr   rG   contentsobjectc                    t          |           }t          |t                    rt          d           t	          d          |S )N5unreachable)r   
isinstancedictr,   AssertionError)r   objs     r   _load_manifest_forward_compatr     sB    
H

C#t #]+++
r   r:   localmetac                        e Zd Zd fdZ xZS )WarnMutableRevrU   rV   r   r   c                   t                                          |           | j        |v rT|| j                 }d|vrEt          j        d|          s2t
                              d| j        d|d         d           d S d S d S d S )Nr$   z^[a-fA-F0-9]+$The z field of repo r7   a   appears to be a mutable reference (moving tag / branch).  Mutable references are never updated after first install and are not supported.  See https://pre-commit.com/#using-the-latest-version-for-a-repository for more details.  Hint: `pre-commit autoupdate` often fixes this.)ry   re   rR   rematchrH   rI   )rc   rU   revr{   s      r   re   zWarnMutableRev.check'  s    c8s??dh-C#~~bh/@#&F&F~G48 G Gc&k G G G    	 ? ~~~r   ro   r   r}   s   @r   r   r   &  =                 r   r   c                        e Zd Zd fdZ xZS )OptionalSensibleRegexAtHookrU   rV   r   r   c           	        t                                          |           d|                    | j        d          v r9t                              d| j        d|                    d          d           dD ]Z}||                    | j        d          v r;t                              d| j        d|                    d          d	|            [d S )
N/*r   r   z field in hook r5   zJ is a regex, not a glob -- matching '/*' probably isn't what you want herez[\\/]z[\/]z[/\\]z%pre-commit normalizes slashes in the z1 to forward slashes, so you can use / instead of ry   re   r2   rR   rH   rI   rc   rU   fwd_slash_rer{   s      r   re   z!OptionalSensibleRegexAtHook.check:  s   c37748R((((NNtx  #''$--     
 : 	 	Lswwtx4444CTX C C&)ggdmmC C4@C C  	 	r   ro   r   r}   s   @r   r   r   9  r   r   r   c                        e Zd Zd fdZ xZS )OptionalSensibleRegexAtToprU   rV   r   r   c                X   t                                          |           d|                    | j        d          v r#t                              d| j        d           dD ]D}||                    | j        d          v r%t                              d| j        d|            Ed S )Nr   r   zThe top-level zP field is a regex, not a glob -- matching '/*' probably isn't what you want herer   z3pre-commit normalizes the slashes in the top-level z7 field to forward slashes, so you can use / instead of r   r   s      r   re   z OptionalSensibleRegexAtTop.checkM  s    c37748R((((NNC C C C   : 	 	Lswwtx4444<< <-9< <  	 	r   ro   r   r}   s   @r   r   r   L  s=                 r   r   modnamec                H    t          j        t          j                   d|  S )zthe hook `entry` is passed through `shlex.split()` by the command
    runner, so to prevent issues with spaces and backslashes (on Windows)
    it must be quoted here.
    z -m pre_commit.meta_hooks.)rJ   rK   sys
executable)r   s    r   _entryr   ^  s$    
 k#.))NNWNNNr   extrarS   	orig_keysrU   dict[str, str]c                f    t                               dd                    |                       d S )Nz#Unexpected key(s) present at root: r@   rH   rI   rD   r   r   rU   s      r   warn_unknown_keys_rootr   f  s1    
 NNK59I9IKKLLLLLr   c                x    t                               d|d          dd                    |                       d S )NzUnexpected key(s) present on r7   z: r@   r   r   s      r   warn_unknown_keys_repor   n  sG    
 NNIFIItyy7G7GII    r   zcheck-hooks-apply)r   z#Check hooks apply to the repository^$check_hooks_applyzcheck-useless-excludes)r   zCheck for useless excludescheck_useless_excludesidentity)r   r   )r   Tc                      e Zd ZddZdS )
NotAllowedrU   rV   r   r   c                P    | j         |v rt          j        | j         d          d S )Nz cannot be overridden)rR   r   r   rh   s     r   re   zNotAllowed.check  s0    8s??&$('K'K'KLLL ?r   Nro   )rq   rr   rs   re   r>   r   r   r   r     s.        M M M M M Mr   r   c              #      K   | ]	\  }}|V  
d S r   r>   )r!   k_s      r   r#   r#     s&      /D/Dda/D/D/D/D/D/Dr   r   c           	   #  p   K   | ]1\  }}|D ])\  }}t          j        |t           j        |d |          V  *2dS )r5   N)r   ConditionalOptionalr`   )r!   hook_idvaluesrR   values        r   r#   r#     sl         GV 	  C 	 dneT7KK      r   c              #  j   K   | ].}|j         d v rt          j        |j         |j                  n|V  /dS )>   r   r   r   NrR   r   OptionalNoDefaultr   r!   items     r   r#   r#     sa          8444 	tx777 	     r   c              #     K   | ]D}|j         d k    r7|j         dk    r,|j         dk    #t          j        |j         |j                  V  EdS )r5   r6   r   Nr   r   s     r   r#   r#     sh        8t8x8z!!	 	tx77 "!!! r   
Repositoryhooksr   )condition_keycondition_valueensure_absent)r7   r   r   DefaultLanguageVersionc              #  j   K   | ].}t          j        |t           j        t          j                  V  /d S r   )r   Optionalcheck_stringr*   DEFAULT)r!   xs     r   r#   r#     s5      MMdmAt(!)44MMMMMMr   Configreposdefault_install_hook_typesdefault_language_versiondefault_stages)	r  r  r  r  r   r   r   r   cir  c                      e Zd ZdS )InvalidConfigErrorNr   r>   r   r   r  r    r   r   r  )r   r   r   r   )r   r   r   r   )r(   r   r   r   )r/   r   r   r   )r7   r   r8   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   rS   r   rS   rU   r   r   r   )b
__future__r   	functoolsloggingos.pathrB   r   rJ   r   collections.abcr   r   typingr   r   r   identify.identifyr   pre_commit.constants	constantsr*   pre_commit.all_languagesr	   pre_commit.errorsr
   pre_commit.yamlr   	getLoggerrH   	check_andr  check_regexcheck_string_regex
HOOK_TYPESrb   r   r'   r,   r1   r3   ArrayMapRequiredr  r_   rF   rO   rQ   rv   r   r   r   r   r   ra   
check_boolr  MANIFEST_HOOK_DICTMANIFEST_SCHEMArG   r   partialrA   load_manifestLOCALMETAConditionalr   r   r   r   r   r   r   escapeCONFIG_FILE_metar   _COMMON_HOOK_WARNINGSr%   r`   itemsMETA_HOOK_DICTCONFIG_HOOK_DICTLOCAL_HOOK_DICTConditionalRecurseNotInWarnAdditionalKeysCONFIG_REPO_DICTNoAdditionalKeysDEFAULT_LANGUAGE_VERSIONRequiredRecurseOptionalRecurse
check_typer   CONFIG_SCHEMAr  load_configr>   r   r   <module>rA     s    " " " " " "       				  



 $ $ $ $ $ $ $ $ $ $ $ $              & & & & & &             3 3 3 3 3 3 ( ( ( ( ( ( % % % % % %		<	(	(#T^D$5t7GHH 
 
!:	 x	 	 
 
 
 
/ / / /

 
 
 
 & % % % % %$*DHdD-..h 0 01B C CRHH   
 
 
 
8" " " " "z " " "0# # # # #. # # #" " " " "j " " "4" " " " "Z " " "4   " " " " "
 " " "*     1    TX
D DM$t(*;<<  DM$)**DM&$+,,DM'4,--j*;$*;N*K*KLLDM'4,b11DM'-r22DM)/66DM'+4+N;;fXFFDM*.d.~>>CCDM/#34#3N#C#CRHHDM!#34#3D4E#F#F  DM&*$*4+<==rBBDM,77DM+t66DM"DOT::DM-!2B77DM$d&7CCDM*d/44DM"DOU;;OHb!!DM)T_e44E# # H $*/00	 	 	 	 	: 	 	 	    "	!/	   	    T%   &    $"8   &    !7   $O O O OM M M M    	;5)")AM225556ff0112
 	!25)")AM225556ff5667#
 	 ffZ(()
	2M M M M M' M M M  ):;;	4+<==H%%  
DDM$)**DM$))%%/D/De/D/D/D*D*DEEFFDM%D%}o66  Jw''   %     ',  !0 1  4 48
DDM$)** &,    Xr**!" j"3$"3N"C"CDD#$ %   ( $(
D  	   48&DM&$+,,D,--

5$''  DO,,  DN++ 
 Nt "
5$//	   D46LMM1  4 $48dD.)) NMnMMM   
 d DM$t(*;<<  D*$*-=">">??DM$**:6677	 
 D"$<b  O$f--""#344DM'-r22DM)/66DM+t66D
	
 	  w(9::y$*;<< D4!6!677U+ +\	 	 	 	 	 	 	 	  i	  r   