o
    Wi                  
   @  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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ZejZejZejZejZd/ddZd/ddZd/ddZd/ddZG dd de	ZedddeedddeedddeedddeiZd0d(d)Z d1d2d,d-Z!e"d.kre#e! dS )3    )annotationsN)Sequence)Pattern)
NamedTuple)	lang_base)output)Prefix)xargspatternPattern[bytes]filenamestrreturnintc                 C  s~   d}t |d.}t|ddD ]\}}| |r,d}t| d| d t|d qW d    |S 1 s8w   Y  |S )Nr   rb   )start:s   
)open	enumeratesearchr   writewrite_line_brstrip)r
   r   retvfline_noline r   O/home/ubuntu/.local/lib/python3.10/site-packages/pre_commit/languages/pygrep.py_process_filename_by_line   s   

r    c                 C  s   d}t |dN}| }| |}|rMd}|d |  d}t| d|d  d |d d}|d| |d< td	| W d    |S W d    |S 1 sXw   Y  |S )Nr   r   r      
r   )
r   readr   r   countr   r   splitr   join)r
   r   r   r   contentsmatchr   matched_linesr   r   r   _process_filename_at_once!   s$   


r)   c                 C  sb   t |d"}|D ]}| |r W d    dS qt| 	 W d    dS 1 s*w   Y  d S Nr   r   r   )r   r   r   
write_line)r
   r   r   r   r   r   r   !_process_filename_by_line_negated2   s   

$r,   c                 C  sR   t |d}| }W d    n1 sw   Y  | |}|r"dS t| dS r*   )r   r"   r   r   r+   )r
   r   r   r&   r'   r   r   r   !_process_filename_at_once_negated?   s   


r-   c                   @  s   e Zd ZU ded< ded< dS )Choicebool	multilinenegateN)__name__
__module____qualname____annotations__r   r   r   r   r.   M   s   
 r.   Tr0   r1   Fprefixr   entryargsSequence[str]	file_argsis_localr/   require_serialcolortuple[int, bytes]c                C  s$   t jdtg||R }t|||dS )Nz-m)r>   )sys
executabler2   r	   )r7   r8   r9   r;   r<   r=   r>   cmdr   r   r   run_hookZ   s   
rC   argvSequence[str] | Nonec                 C  s   t jdd}|jdddd |jddd |jddd |jd	d
d |jddd || }|jr5tjnd}|jrB|tjtj	B O }t
|j |}d}tt|j|jd }|jD ]	}||||O }qZ|S )Nzgrep-like finder using python regexes.  Unlike grep, this tool returns nonzero when it finds a match and zero otherwise.  The idea here being that matches are "problems".)descriptionz-iz--ignore-case
store_true)actionz--multilinez--negater
   zpython regex pattern.)help	filenames*)nargsr   r6   )argparseArgumentParseradd_argument
parse_argsignore_casere
IGNORECASEr0   	MULTILINEDOTALLcompiler
   encodeFNSr.   r1   rJ   )rD   parserr9   flagsr
   r   
process_fnr   r   r   r   mainh   s$   

r\   __main__)r
   r   r   r   r   r   )r7   r   r8   r   r9   r:   r;   r:   r<   r/   r=   r/   r>   r/   r   r?   )N)rD   rE   r   r   )$
__future__r   rM   rR   r@   collections.abcr   r   typingr   
pre_commitr   r   pre_commit.prefixr   pre_commit.xargsr	   ENVIRONMENT_DIRbasic_get_default_versionget_default_versionbasic_health_checkhealth_check
no_installinstall_environmentno_envin_envr    r)   r,   r-   r.   rX   rC   r\   r2   
SystemExitr   r   r   r   <module>   s>    





