
    Vi]'                       S r SSKJr  SSKrSSKrSSKJr  SSKJr  SSKJr  SSK	J
r
JrJrJr  S	r\R                  =rr\R"                  =rr\R&                  =rr\R*                  =rr\R.                  =rr\R2                  =rr\R6                  =rr\R:                  =rrS
=rr S=r!r"S=r#r$S=r%r&S=r'r(\RR                  r)\RT                  r+\RX                  r-\R\                  r/\R`                  r1\Rd                  r3\Rh                  r5\ \"-  =r6r4\\-  \-  \-  \-  \-  \-  \ -  \"-  \$-  \&-  \(-  \-  r7 " S S\\   5      r8g)z>
Wild Card Match.

A module for performing wild card matches.
    )annotationsN   )_wcparse)_wcmatch)util)AnyIteratorGenericAnyStr)CASE
IGNORECASERAWCHARSFILEPATHNAMEDIRPATHNAMEPATHNAMEEXTMATCHGLOBSTARBRACEMINUSNEGATESYMLINKSHIDDEN	RECURSIVE	MATCHBASECIRPEGMDPFPSLHDRVXBWcMatchi   i   i   i   i   c                  P   \ rS rSrSrSSS\R                  4           SS jjrS S jrS!S"S jjr	S#S jr
S$S	 jrS!S%S
 jjrS&S jrS'S jrS(S jrS'S jrS'S jrS)S jrS*S jrS'S jrS+S jrS+S jrS+S jrS,S jrS-S jrS,S jrS.S jrS,S jrS/S jrS0S jrS/S jrSr g)1r(   D   zFinds files by wildcard.Nr   c                   [        U[        5      U l        U R                  U5      U l        SU l        SU l        U R                  U5        [        U[        5      (       a$  [        R                  " [        R                  5      O[        R                  U l        U R                  U R                  5       S5      U l        XPl        [        U[        5      (       a  [        R                  " S5      OSnUb  UOUU l        Ub  UOUU l        SU l        SU l        U R(                  " S0 UD6  U R+                  U R                   U R"                  5        g)z'Initialize the directory walker object.Fr   T N )
isinstancebytesis_bytes_norm_slash
_directory_abort_skipped_parse_flagsosfsencodesep_sep_add_sep_get_cwd	_root_dirlimitpattern_filepattern_folder_exclude
file_checkfolder_exclude_checkon_init_compile)selfroot_dirfile_patternexclude_patternflagsr=   kwargsemptys           b/home/james-whalen/.local/share/pipx/venvs/semgrep/lib/python3.13/site-packages/wcmatch/wcmatch.py__init__WcMatch.__init__G   s     #8U3**84% +5h+F+FBKK'BFF	t}}=
#-h#>#>BB,8,DL%9H9ToZ_#$(!vd'')D)DE    c                    [         R                  " 5       (       a  U$ [        U[        5      (       a  UR	                  SS5      $ UR	                  SS5      $ )zNormalize path slashes.   /   \/\)r   is_case_sensitiver.   r/   replace)rD   names     rK   r1   WcMatch._norm_slashb   sG     !!##Ke$$<<e,,<<T**rN   c                p    U(       a   UR                  U R                  5      (       d  XR                  -   $ U$ )zAdd separator.)endswithr9   )rD   pathchecks      rK   r:   WcMatch._add_sepl   s+     */dmmDII6N6Nyy XTXXrN   c                    U R                   (       a  U R                   $ [        U R                   [        5      (       a  [        [        R                  S5      $ [        R                  $ )zGet current working directory.ASCII)r2   r.   r/   r6   curdirrD   s    rK   r;   WcMatch._get_cwdq   sA     ????"//G,,99rN   c                   U[         -  U l        U =R                  [        [        -  [        -  [
        -  -  sl        [        U R                  [        -  5      U l        [        U R                  [        -  5      U l
        [        U R                  [        -  5      U l        [        U R                  [        -  5      U l        [        U R                  [        -  5      U l        [        U R                  ["        -  5      U l        [&        R(                  " 5       S:X  a  U =R                  [*        -  sl        U R                  [,        R                   ["        -  -  U l        g)zParse flags.windowsN)	FLAG_MASKrH   _NEGATE	_DOTMATCH
_NEGATEALL_SPLITboolr   follow_linksr   show_hiddenr   	recursiver   dir_pathnamer   file_pathnamer   	matchbaser   platform	_FORCEWINr   )rD   rH   s     rK   r5   WcMatch._parse_flags{   s     Y&


g	)J6??
 h!67

V 34djj945 k!9:!$**|";<djj945==?i'JJ)#JZZ8#5#5	#AB
rN   c                    U R                   nU(       a*  U[        [        -  -  nU R                  (       a	  U[        -  nU(       a"  [
        R                  " U/X0R                  5      $ S$ )z;Compile or format the wildcard inclusion/exclusion pattern.N)rH   	_PATHNAME_ANCHORro   r   r   compiler=   )rD   patternpathnamerH   s       rK   _compile_wildcardWcMatch._compile_wildcard   sP     

Y((E~~"AHx	5**=RdRrN   c                   U R                   c~  U(       dW  [        R                  " [        R                  " [        U[        5      (       a  SOS[        R                  5      45      U l         O U R                  XR                  5      U l         U R                  cD  U(       d  [        R                  " S5      U l
        gU R                  X R                  5      U l
        gg)zCompile patterns.Ns   ^.*$z^.*$r-   )r@   r   WcRegexprerv   r.   r/   DOTALLry   rn   rA   rm   )rD   rF   folder_exclude_patterns      rK   rC   WcMatch._compile   s     ??""*"3"3ZZJ|U,K,KQXZ\ZcZcdf# #'"8"8GYGY"Z$$,),4,=,=b,A),0,B,BCY[l[l,m)	 -rN   c                j   Sn[         R                  R                  X5      nU R                  b7  U R	                  U R
                  (       a  X@R                  S OU5      (       a  SnU(       a.  U R                  (       d  [        R                  " U5      (       a  SnU(       a  U R                  X5      $ U$ )z&Return whether a file can be searched.FNT)r6   rZ   joinr@   compare_filern   	_base_lenrk   r   	is_hiddenon_validate_filerD   baserV   validfullpaths        rK   _valid_fileWcMatch._valid_file   s     77<<+??&4+<+<Z^ZlZlXnno=Vrv+w+wE$**t~~h/G/GE49t$$T0DuDrN   c                8    U R                   R                  U5      $ )zCompare filename.)r@   match)rD   filenames     rK   r   WcMatch.compare_file   s     $$X..rN   c                    g)zValidate file override.Tr-   rD   r   rV   s      rK   r   WcMatch.on_validate_file        rN   c                   Sn[         R                  R                  X5      nU R                  (       aF  U R                  (       a7  U R                  U R                  (       a  X@R                  S OU5      (       d  SnU(       a.  U R                  (       d  [        R                  " U5      (       a  SnU(       a  U R                  X5      $ U$ )z(Return whether a folder can be searched.TNF)r6   rZ   r   rl   rA   compare_directoryrm   r   rk   r   r   on_validate_directoryr   s        rK   _valid_folderWcMatch._valid_folder   s     77<<+))**HYHY8NNO+D_cdd E$**t~~h/G/GE9>t))$5IEIrN   c                    U R                   R                  U R                  (       a  U R                  U5      5      (       + $ U5      (       + $ )zCompare folder.)rA   r   rm   r:   )rD   	directorys     rK   r   WcMatch.compare_directory   sH     ,,22(,(9(9DMM)$
 
 	
?H
 
 	
rN   c                    g)zHandle custom initialization.Nr-   )rD   rI   s     rK   rB   WcMatch.on_init       rN   c                    g)zValidate folder override.Tr-   r   s      rK   r   WcMatch.on_validate_directory   r   rN   c                    g)zOn skip.Nr-   r   s      rK   on_skipWcMatch.on_skip   r   rN   c                    g)z	On error.Nr-   r   s      rK   on_errorWcMatch.on_error   r   rN   c                @    [         R                  R                  X5      $ )z	On match.)r6   rZ   r   r   s      rK   on_matchWcMatch.on_match   s     ww||D''rN   c                    g)z	On reset.Nr-   r`   s    rK   on_resetWcMatch.on_reset   r   rN   c                    U R                   $ )zGet number of skipped files.)r4   r`   s    rK   get_skippedWcMatch.get_skipped   s     }}rN   c                    SU l         g)zAbort process.TNr3   r`   s    rK   killWcMatch.kill   s     rN   c                    U R                   $ )z"Check if process has been aborted.r   r`   s    rK   
is_abortedWcMatch.is_aborted   s     {{rN   c                    SU l         g)z!Revive class from a killed state.FNr   r`   s    rK   resetWcMatch.reset   s     rN   c              #  8  #    [        U R                  5      U l        [        R                  " U R                  U R
                  S9 H  u  pnU R                  5       (       a    gUSS  HB  n U R                  X5      (       d  UR                  U5        U R                  5       (       d  MB    O   U(       d  Mq  U Hu  n U R                  X5      nU(       a  U R                  X5      v   O-U =R                  S-  sl        U R                  X5      nUb  Uv   U R                  5       (       d  Mt    M     M     g! [         a,    UR                  U5        U R                  X5      nUb  Uv    Nf = f! [         a    SnU R                  X5      nUb  Uv    Nf = f7f)zStart search for valid files.)followlinksNFr   )lenr<   r   r6   walkrj   r   r   remove	Exceptionr   r   r   r4   r   )rD   r   dirsfilesrV   valuer   s          rK   _walkWcMatch._walk  sf     T^^,!#TEVEV!WD   Q$--d99D) ??$$   u!D( $ 0 0 < "mmD77* $T 8 ,"'K((% "+ "X ! $KK% MM$5E(#	$ % ( % $d 9 ,"'K	(sa   A)F,'D7F*	F7F=E0AF-
F73E-*F,E--F0$FFFFc                4    [        U R                  5       5      $ )zRun the directory walker.)listimatchr`   s    rK   r   WcMatch.match/  s     DKKM""rN   c              #  p   #    U R                  5         SU l        U R                  5        H  nUv   M	     g7f)z%Run the directory walker as iterator.r   N)r   r4   r   )rD   fs     rK   r   WcMatch.imatch4  s,      	AG s   46)r3   r   r2   r<   r9   r4   rm   r@   rn   rH   rA   rj   r0   r=   ro   r>   r?   rl   rk   )rE   r   rF   AnyStr | NonerG   r   rH   intr=   r   rI   r   )rV   r   returnr   )F)rZ   r   r[   ri   r   r   )r   r   )rH   r   r   None)rw   r   rx   ri   r   z _wcmatch.WcRegexp[AnyStr] | None)rF   r   r   r   r   r   )r   r   rV   r   r   ri   )r   r   r   ri   )r   r   r   ri   )rI   r   r   r   )r   r   rV   r   r   r   )r   r   )r   r   )r   ri   )r   zIterator[Any])r   z	list[Any])!__name__
__module____qualname____firstlineno____doc__r   r   rL   r1   r:   r;   r5   ry   rC   r   r   r   r   r   rB   r   r   r   r   r   r   r   r   r   r   r   r   __static_attributes__r-   rN   rK   r(   r(   D   s    "
 '+)-&&FF $F '	F
 F F F6+Y
C	Sn"	E/

J"
,


(




,\#
rN   r(   )9r   
__future__r   r6   r}   r,   r   r   r   typingr   r	   r
   r   __all__r   r   r   r   r   r   r   r   r   r   r   r'   r   r    r   r&   r!   r   r"   r   r#   r   r$   r   r%   r   ru   NEGATEre   DOTMATCHrf   	NEGATEALLrg   SPLITrh   FORCEWINrq   r   rt   r   rd   r(   r-   rN   rK   <module>r      s  
 # 	 	    1 1 == D$$ $J    H    H    HNN E&& &K"" "I  [ \ X V Y 


//	
			 \) )H 	  	
 

    	 
   
"vgfo vrN   