
    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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 dlmZ d dlmZ d dl m!Z! d dl m"Z"  G d de          Z# G d de$          Z%d7dZ&d8d%Z' ej(        d&          Z)	 d9d:d.Z*d;d/Z+	 	 d<d=d6Z,dS )>    )annotationsN)Sequence)Any)
NamedTuple)git)output)xargs)InvalidManifestError)load_config)load_manifest)LOCAL)META)migrate_config)CalledProcessError)
cmd_output)cmd_output_b)	yaml_dump)	yaml_loadc                  p    e Zd ZU ded<   ded<   dZded<    e            Zded<   edd            ZddZ	dS )RevInfostrreporevNz
str | Nonefrozenzfrozenset[str]hook_idsconfigdict[str, Any]returnc                2     | |d         |d                   S )Nr   r    )clsr   s     n/root/.openclaw/workspace/chatterbox_venv_py311/lib/python3.11/site-packages/pre_commit/commands/autoupdate.pyfrom_configzRevInfo.from_config"   s    s6&>6%=111    	tags_onlyboolfreezec                L   t          j                    5 }dgt          j        d|R }|rd}nd}g |ddd|R }t          j        || j                   t          g |dd	d
R   t          g |ddddddR   	 t          | d                                         }|rt          j	        ||          }n8# t          $ r+ t          g |ddR  d                                         }Y nw xY wd }|r2t          g |d|R  d                                         }	|	|k    r|	|}}	 t          g |d| dt          j         R   t          g |d|dt          j        R   n# t          $ r Y nw xY w	 t          t          j                            |t          j                            }
t#          d |
D                       }n,# t$          $ r}t'          d| j         d|           d }~ww xY w	 d d d            n# 1 swxY w Y   |                     |||          S )Nr   z-Cz
--abbrev=0z--exactdescribe
FETCH_HEADz--tagsr   zextensions.partialClonetruefetchoriginHEADz--quietz--filter=blob:none   z	rev-parseshow:checkoutz--c              3  &   K   | ]}|d          V  dS )idNr    .0hooks     r"   	<genexpr>z!RevInfo.update.<locals>.<genexpr>P   s&      $E$EDT$Z$E$E$E$E$E$Er$   [] )r   r   r   )tempfileTemporaryDirectoryr   NO_FS_MONITOR	init_repor   r   r   stripget_best_candidate_tagr   CMANIFEST_FILEr   ospathjoin	frozensetr
   RepositoryCannotBeUpdatedError_replace)selfr%   r'   tmp_gittag_opttag_cmdr   r   exactmanifestr   es                r"   updatezRevInfo.update&   sW   (** )	Fc9C-9t9S99D $&#JJjJ,JJ'JJGM#ty)))L$LL*CLVLLLL  (*0/19   
? '*1-3355  ?4S#>>C	 & N N N B$BB\BBB1EKKMMN F -";D;+;s;;;A>DDFFC<<"'CGdGFGs,F,FQ_,F,FGGGGIDI*IcI4IIIIII%   F(c1?)K)KLL %$E$EH$E$E$EEE ( K K K45I5I5Ia5I5IJJJK S)	F )	F )	F )	F )	F )	F )	F )	F )	F )	F )	F )	F )	F )	F )	FV }}Vh}GGGs~   A-H!B;#H;2C0-H/C009H*=E('H(
E52H4E55H97G
0H

G3G..G33HH
H)r   r   r   r   )r%   r&   r'   r&   r   r   )
__name__
__module____qualname____annotations__r   rF   r   classmethodr#   rQ   r    r$   r"   r   r      s         IIIHHHF(y{{H****2 2 2 [2,H ,H ,H ,H ,H ,Hr$   r   c                      e Zd ZdS )rG   N)rR   rS   rT   r    r$   r"   rG   rG   U   s        Dr$   rG   repo_configr   infor   Nonec           
         d | d         D             }||j         z
  }|r:t          d|j         dd                    t	          |                               d S )Nc                    h | ]
}|d          S )r4   r    r5   s     r"   	<setcomp>z2_check_hooks_still_exist_at_rev.<locals>.<setcomp>^   s    999DT$Z999r$   hooksr9   zB] Cannot update because the update target is missing these hooks: z, )r   rG   r   rE   sorted)rX   rY   r^   hooks_missings       r"   _check_hooks_still_exist_at_revra   Y   s    
 :9K$8999EDM)M 
,G	 G G$(IIf].C.C$D$DG G
 
 	

 
r$   iintr   r%   r&   r'   tuple[int, RevInfo, RevInfo]c                   t                               |          }|                    ||          }t          ||           | ||fS )Nr%   r'   )r   r#   rQ   ra   )rb   r   r%   r'   oldnews         r"   _update_oneri   g   sH     

d
#
#C
**y*
8
8C#D#...c3;r$   z,^(\s+)rev:(\s*)([\'"]?)([^\s#]+)(.*)(\r?\n)$FrD   r   	rev_infoslist[RevInfo | None]retrytuple[list[str], list[int]]c                   t          | d          5 }|                                }ddd           n# 1 swxY w Y   |                    d          }d t          |          D             }t	          |          t	          |          k    r||fS |rt          d          t          | d          5 }|                    t          t          |                               ddd           n# 1 swxY w Y   t          | |d          S )	z(detect `rev:` lines or reformat the file newlineNTc                L    g | ]!\  }}t                               |          |"S r    )REV_LINE_REmatch)r6   rb   lines      r"   
<listcomp>z#_original_lines.<locals>.<listcomp>   s/    III'!T1B1B41H1HIAIIIr$   zcould not find rev linesw)rl   )
openread
splitlines	enumeratelenAssertionErrorwriter   r   _original_lines)rD   rj   rl   foriginallinesidxss          r"   r   r   w   su    
dB			 16688               %%EIIYu--IIID
4yyC	NN""d{	 <7888$__ 	4GGIi1122333	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4tYd;;;;s   37710C--C14C1c                   t          | |          \  }}t          ||          D ]\  }}|t                              ||                   }|J t	          d|j        i|d                   }|                    dd          d                                         }|j        d|j         }	n8|d                                         	                    d          rd	}	n|d         }	|d          d
|d          | |	 |d          ||<   t          | dd	          5 }
|
                    d	                    |                     d d d            d S # 1 swxY w Y   d S )Nr      )default_styler1   r/   z  # frozen:    z	# frozen:ro   zrev:      rw   rp   )r   ziprs   rt   r   r   splitr?   r   
startswithrx   r~   rE   )rD   rj   r   r   idxrev_infort   	new_rev_snew_revcommentr   s              r"   _write_new_configr      s   !$	22KE4T9-- M MX!!%*--   uhl358LLL	//#q))!,2244?&6X_66GG1X^^((55 	GGAhGaLLeAhLLL%(LLc

	dC	$	$	$  	                                   s   )EEEr    r/   config_filereposSequence[str]jobsc                   t          | d           d}d}d t          |           d         D             }dgt          |          z  }|pt          j                    }t          |t                    pt          |                    }t          |d          }t          j        	                    |          5 fd	t          |          D             }	t          j                            |	          D ]}
	 |
                                \  }}}|j        |j        k    r.d}|j        r|j         d
}n|j        }d|j         d| }|||<   nd}t          j        d|j         d|            {# t$          $ r-}t          j        t'          |                     d}Y d}~d}~ww xY w	 ddd           n# 1 swxY w Y   |rt)          | |           |S )zBAuto-update the pre-commit config to the latest versions of repos.T)quietFr   c                >    g | ]}|d          t           t          hv|S )r   )r   r   )r6   r   s     r"   rv   zautoupdate.<locals>.<listcomp>   s5       <t},, 	,,,r$   r   Nr/   c           	     l    g | ]0\  }}r
|d          v                      t          ||          1S )r   rf   )submitri   )r6   rb   r   exer'   r   r%   s      r"   rv   zautoupdate.<locals>.<listcomp>   sc     
 
 

 4
 !LE11 JJ49V   
 211r$   z	 (frozen)z	updating z -> zalready up to date!r9   r:   )r   r   r|   r	   	cpu_countminmax
concurrentfuturesThreadPoolExecutorr{   as_completedresultr   r   r   
write_liner   rG   r   r   )r   r%   r'   r   r   changedretvconfig_reposrj   r   futurerb   rg   rh   new_smsgrP   r   s    ```             @r"   
autoupdater      s}    ;d++++GD $[11':  L
 (,fs</@/@&@I$5?$$DtSZZ43|#4#455DtQ<<D			.	.t	4	4 9
 
 
 
 
 
 

 %\22
 
 
 !(55g>> 	9 	9F9$mmoo3
 7cg%%"Gz (#&: 8 8 8 #:cg::5::C#&IaLL/C!"7ch"7"7#"7"78888 2   !#a&&)))	99 9 9 9 9 9 9 9 9 9 9 9 9 9 9:  2+y111Ks>   <A F<=E5A F<5
F,?#F'"F<'F,,F<<G G )rX   r   rY   r   r   rZ   )
rb   rc   r   r   r%   r&   r'   r&   r   rd   )F)rD   r   rj   rk   rl   r&   r   rm   )rD   r   rj   rk   r   rZ   )r    r/   )r   r   r%   r&   r'   r&   r   r   r   rc   r   rc   )-
__future__r   concurrent.futuresr   os.pathrC   rer;   collections.abcr   typingr   r   pre_commit.constants	constantsrA   
pre_commitr   r   r	   pre_commit.clientlibr
   r   r   r   r   "pre_commit.commands.migrate_configr   pre_commit.utilr   r   r   pre_commit.yamlr   r   r   RuntimeErrorrG   ra   ri   compilers   r   r   r   r    r$   r"   <module>r      sx   " " " " " "      				  $ $ $ $ $ $                                           5 5 5 5 5 5 , , , , , , . . . . . . & & & & & & % % % % % % = = = = = = . . . . . . & & & & & & ( ( ( ( ( ( % % % % % % % % % % % %6H 6H 6H 6H 6Hj 6H 6H 6Hr	 	 	 	 	\ 	 	 	
 
 
 

 
 
 
 bjHII < < < < <*       4  "5 5 5 5 5 5 5r$   