
    wiC                        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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ZddZd dZd!dZddZd"d#dZdS )$    )annotationsN)Callable)
ScalarNode)InvalidConfigError)yaml_compose)	yaml_load)
MappingKey)MappingValue)match)SequenceItemlinestrreturnboolc                V    |                      d          p|                                  S )N)#z---)
startswithstrip)r   s    r/root/.openclaw/workspace/chatterbox_venv_py311/lib/python3.11/site-packages/pre_commit/commands/migrate_config.py_is_header_liner      s$    ??<((<

,<<    contentsc                (   t          t          |           t                    r|                     d          }d}|t	          |          k     rBt          ||                   r-|dz  }|t	          |          k     rt          ||                   -d                    |d |                   }d                    ||d                    }	 | d| }t          |           |} n/# t          j        $ r | dt          j
        |d           } Y nw xY w| S )NTr       zrepos:
z    )
isinstancer   list
splitlineslenr   joinyaml	YAMLErrortextwrapindent)r   linesiheaderresttrial_contentss         r   _migrate_mapr*      s+   )H%%t,, K##D))#e**nnq!:!:nFA #e**nnq!:!:n rr##wwuQRRy!!	K &6666Nn%%%%HH~ 	K 	K 	K JJ(/$*H*HJJHHH	K Os   
C# #)DDnr   sc               $    | j         pd}| | | S )Nr   )style)r+   r,   r.   s      r   _preserve_styler/   1   s#    GMrEQr   c                4    t          | d| j                   S )Nzpre-r,   )r/   value)r+   s    r   
_fix_stager3   6   s     1 0qw 0 01111r   c                @   t          |           }g }t          j        t          d          }t	          d          t                      t          d          f}t          ||          D ]}|                    ||f           t	          d          t                      t	          d          t                      t	          d          f}t          j        t          d          }t          ||          D ]$}|j	        dk    r|                    ||f           %t	          d	          t                      f}t          ||          }	t	          d          t                      t	          d          t                      t	          d
          t                      f}
t          ||
          }t          j        |	|          D ]'}|j	        dv r|                    |t          f           (|                    dd            g }d }|D ]V\  }}|                    | |j        j        |                    |                     ||                     |j        j        }W|                    | d |                    |                                 d                    |          S )Nrevr1   reposshahookslanguagepythonpython_venvdefault_stagesstages>   merge-commitpushcommitTc                &    | d         j         j        S )Nr   )
start_markindex)nfs    r   <lambda>z#_migrate_composed.<locals>.<lambda>e   s    r!u/?/E r   )reversekeyr   )r   	functoolspartialr/   r
   r   r	   r   appendr2   	itertoolschainr3   sortend_markrC   rB   rF   r    )r   treerewritessha_to_rev_replacesha_to_rev_matchernodelanguage_matcherpython_venv_replacedefault_stages_matcherdefault_stages_matchhook_stages_matcherhook_stages_match	src_partsendfuncs                  r   _migrate_composedr]   :   s   !!DEGH #*?eDDDW5
 d.// 4 4123333 	WWZ   $+OxHHHd,-- 9 9:&&OOT#67888 ++;<<lnnM '=>>WWX d$788 46GHH 0 0:;;;OOT:.///MM$$E$EMFFFIC $ $
d$-"5c"9:;;;d$$$o#Xdsd^$$$779r   Fconfig_filequietintc                   t          |           5 }|                                x}}d d d            n# 1 swxY w Y   t          j        t                    5  t          j        d|            5  	 t          |           n3# t          $ r&}t          j        t          |                    d }~ww xY w	 d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   t          |          }t          |          }||k    rMt          | d          5 }|                    |           d d d            n# 1 swxY w Y   t          d           n|st          d           dS )NzFile wz Configuration has been migrated.z"Configuration is already migrated.r   )openreadcfgv
reraise_asr   validate_contextr   	ExceptionValidationErrorr   r*   r]   writeprint)r^   r_   forig_contentsr   es         r   migrate_configro   r   sg   	k		 ,a#$6688+, , , , , , , , , , , , , , , 
+	,	, 3 3"#8;#8#899 	3 	33-(((( 3 3 3*3q662223 )	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	33 3 3 3 3 3 3 3 3 3 3 3 3 3 3 H%%H **H=  +s## 	qGGH	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	01111 423331sx   377C/C1B C
B1!B,,B11C5CC	CC		CCCD99D= D=)r   r   r   r   )r   r   r   r   )r+   r   r,   r   r   r   )r+   r   r   r   )F)r^   r   r_   r   r   r`   )
__future__r   rH   rK   r#   collections.abcr   re   r!   
yaml.nodesr   pre_commit.clientlibr   pre_commit.yamlr   r   pre_commit.yaml_rewriter	   r
   r   r   r   r*   r/   r3   r]   ro    r   r   <module>rw      st   " " " " " "          $ $ $ $ $ $   ! ! ! ! ! ! 3 3 3 3 3 3 ( ( ( ( ( ( % % % % % % . . . . . . 0 0 0 0 0 0 ) ) ) ) ) ) 0 0 0 0 0 0= = = =   0       
2 2 2 25 5 5 5p      r   