o
    WiC                     @  s   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dZd%ddZd&ddZd'ddZd%ddZd(d)d"d#ZdS )*    )annotationsN)Callable)
ScalarNode)InvalidConfigError)yaml_compose)	yaml_load)
MappingKey)MappingValue)match)SequenceItemlinestrreturnboolc                 C  s   |  dp	|   S )N)#z---)
startswithstrip)r    r   V/home/ubuntu/.local/lib/python3.10/site-packages/pre_commit/commands/migrate_config.py_is_header_line      r   contentsc              	   C  s   t t| trc| d}d}|t|k r*t|| r*|d7 }|t|k r*t|| sd|d | }d||d  }z| d| }t| |} W | S  tjyb   | dt	
|d } Y | S w | S )NTr       zrepos:
z    )
isinstancer   list
splitlineslenr   joinyaml	YAMLErrortextwrapindent)r   linesiheaderresttrial_contentsr   r   r   _migrate_map   s$   
r(   nr   sc                C  s   | j pd}| | | S )Nr   )style)r)   r*   r+   r   r   r   _preserve_style1   s   
r,   c                 C  s   t | d| j dS )Nzpre-r*   )r,   value)r)   r   r   r   
_fix_stage6   r   r/   c                 C  s  t | }g }tjtdd}tdt tdf}t||D ]	}|||f qtdt tdt tdf}tjtdd}t||D ]}|j	dkrO|||f qAtd	t f}t||}	tdt tdt td
t f}
t||
}t
|	|D ]}|j	dv r||tf qx|jddd d g }d }|D ]\}}|| |jj|  ||| |jj}q|| d |  |  d|S )Nrevr-   reposshahookslanguagepythonpython_venvdefault_stagesstages>   merge-commitpushcommitTc                 S  s   | d j jS )Nr   )
start_markindex)nfr   r   r   <lambda>e   s    z#_migrate_composed.<locals>.<lambda>)reversekeyr   )r   	functoolspartialr,   r	   r   r   r
   appendr.   	itertoolschainr/   sortend_markr=   r<   r@   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funcr   r   r   _migrate_composed:   sX   





rW   Fconfig_filequietintc                 C  s*  t | }|  }}W d    n1 sw   Y  tt: td|  " zt| W n tyB } ztt	|d }~ww W d    n1 sMw   Y  W d    n1 s\w   Y  t
|}t|}||krt | d}|| W d    n1 sw   Y  td dS |st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(   rW   writeprint)rX   rY   forig_contentsr   er   r   r   migrate_configr   s4   
rh   )r   r   r   r   )r   r   r   r   )r)   r   r*   r   r   r   )r)   r   r   r   )F)rX   r   rY   r   r   rZ   )
__future__r   rB   rE   r!   collections.abcr   r^   r   
yaml.nodesr   pre_commit.clientlibr   pre_commit.yamlr   r   pre_commit.yaml_rewriter   r	   r
   r   r   r(   r,   r/   rW   rh   r   r   r   r   <module>   s*    




8