0i ddlmZddlZddlZddlZddlmZddlmZddlm Z ddl m Z ddl m Z ddl mZdd lmZdZe j$Ze j(Ze j,Ze j0Zdd Zdd Z dd Z dd ZGdde ZeddeeddeeddeeddeiZ ddZ dddZ!e"dk(r e#e!y)) annotationsN)Sequence)Pattern) NamedTuple) lang_base)output)Prefix)xargsc d}t|d5}t|dD]X\}}|j|sd}tj|d|dtj |j dZ ddd|S#1swY|SxYw)Nrrb)start:s )open enumeratesearchrwrite write_line_brstrip)patternfilenameretvfline_nolines J/opt/hc_python/lib/python3.12/site-packages/pre_commit/languages/pygrep.py_process_filename_by_liners D h &q2MGT~~d# z7)156##DKK$89 3  K  Ks%BABB cd}t|d5}|j}|j|}|rd}|d|jj d}t j |d|dzd|djd}|jd||d<t jdj|ddd|S#1swY|SxYw)Nrr r  r) rreadrrcountrrsplitrjoin)rrrrcontentsmatchr matched_liness r_process_filename_at_oncer'!s D h 668x( D~ .44U;G LLH:Qw{m15 6!!HNN51M'~~e4W=M!     = 9 :  K  Ks B5CCct|d5}|D]}|j|sdddytj| dddy#1swYyxYwNr rr )rrr write_line)rrrrs r!_process_filename_by_line_negatedr+2sN h D~~d#     h '   sAAAAct|d5}|j}ddd|j}|rytj|y#1swY3xYwr))rr rrr*)rrrr$r%s r!_process_filename_at_once_negatedr-?sN h 668  NN8 $E (#  s AAc"eZdZUded<ded<y)Choicebool multilinenegateN)__name__ __module__ __qualname____annotations__rr/r/Ms O Lr8r/Tr1r2FcVtjdtg||}t|||S)Nz-m)color)sys executabler3r )prefixentryargs file_argsis_localrequire_serialr;cmds rrun_hookrEZs- >>4 8D 8% 8C iu --r8ctjd}|jddd|jdd|jdd|jd d |jd d |j|}|jrt j nd}|jr$|t jt jzz}t j|jj|}d}tt|j|j}|j D]}||||z}|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--negaterzpython regex pattern.)help filenames*)nargsrr9)argparseArgumentParser add_argument parse_args ignore_casere IGNORECASEr1 MULTILINEDOTALLcompilerencodeFNSr/r2rK)argvparserr@flagsrr process_fnrs rmainr^hs  $ $ ;F olC  l;  <8  (?@  3/   T "D!--BMM1E ~~  ))jj,,.6G DVdnnT[[IJJNN 7H--# Kr8__main__)rzPattern[bytes]rstrreturnint)r>r r?r`r@ Sequence[str]rArcrBr0rCr0r;r0raztuple[int, bytes])N)rZzSequence[str] | Nonerarb)$ __future__rrNrSr<collections.abcrrtypingr pre_commitrrpre_commit.prefixr pre_commit.xargsr ENVIRONMENT_DIRbasic_get_default_versionget_default_versionbasic_health_check health_check no_installinstall_environmentno_envin_envrr'r+r-r/rYrEr^r3 SystemExitr7r8rrts\" $ $"99++ **   "          Z  T$')J T%(*C U4(*K U5)+D  . . . .! .  . . . .8 z TV r8