
    Vi                       S r SSKJr  SSKrSSKrSSKrSSKrSSKrSSKJ	r	  SSK
r
SSKJrJrJrJrJrJr  S\R$                  :*  rS\R$                  :*  rS\R$                  :*  rSrS	r\R0                  R3                  S
5      \R0                  R3                  S5      :g  r\R6                  " S5      r\R6                  " S5      r0 SS_SS_SS_SS_SS_SS_SS_SS_SS_SS _S!S"_S#S$_S%S&_S'S(_S)S*_S+S+_r\R>                  RA                  S,5      (       a  S-r!O\R>                  S.:X  a  S/r!OS0r!S;S1 jrS<S2 jr"S=S>S3 jjr# " S4 S55      r$ " S6 S75      r%S?S8 jr&S@SAS9 jjr'S@SBS: jjr(g)CzCompatibility module.    )annotationsNwraps)AnyCallableAnyStrMatchPatterncast)   
   )r      )r         Aaz(?x)
    (/|\\/)|
    (\\[abfnrtv\\])|
    (\\(?:U[\da-fA-F]{8}|u[\da-fA-F]{4}|x[\da-fA-F]{2}|([0-7]{1,3})))|
    (\\N\{[^}]*?\})|
    (\\[^NUux]) |
    (\\[NUux])
    so   (?x)
    (/|\\/)|
    (\\[abfnrtv\\])|
    (\\(?:x[\da-fA-F]{2}|([0-7]{1,3})))|
    (\\[^x]) |
    (\\[x])
    z\az\bz\fz\rz\t	z\n
z\vz\\s   \a   s   \b   s   \f   s   \r   s   \t   	s   \n   
s   \v   s   \\winwindowsdarwinosxlinuxc                     [         $ )zGet platform.)	_PLATFORM     _/home/james-whalen/.local/share/pipx/venvs/semgrep/lib/python3.13/site-packages/wcmatch/util.pyplatformr+   E   s
     r)   c                     [         $ )zCheck if case sensitive.)CASE_FSr(   r)   r*   is_case_sensitiver.   K   s	     Nr)   c                   ^^^^^^ [        U [        5      (       a  SmSmTS-  m[        nOSmSmTS-  m[        nT(       d  T(       d	  T(       d  U $ SUUUUUU4S jjnUR	                  XP5      $ )z
Normalize pattern.

- For windows systems we want to normalize slashes to \.
- If raw string chars is enabled, we want to also convert
  encoded string chars to literal characters.
- If `normalize` is enabled, take care to convert \/ to \\\\.
T   \   F\c           
     6  > U R                  S5      (       a+  U R                  S5      nT(       a  [        U5      S:  a  TnU$ U R                  S5      (       a@  [        [        T(       a  [        U R                  S5         OU R                  S5      5      nU$ T(       ay  U R                  S5      (       ac  [        [        T(       a(  [        [        U R                  S5      S5      S-  /5      O#[        [        U R                  S5      S5      5      5      nU$ T(       a|  U R                  S5      (       af  [        [        T(       a(  [        [        U R                  S5      SS S5      /5      O&[        [        U R                  S5      SS S5      5      5      nU$ T(       aG  T(       d@  U R                  S	5      (       a*  [        R                  " U R                  S	5      SS
 5      nU$ T(       a  U R                  T(       a  S	OS5      (       a  U R                  S5      nT(       a  T	U-   nU$ T(       a  U R                  S5      OU R                  S5      nT(       a  U R                  S5      OU R                  S5      n[        SR                  X#5      5      e)zNormalize the pattern.r      r1         r   N         r      z7Could not convert character value {!r} at position {:d})grouplenr   r   BACK_SLASH_TRANSLATIONbytesintchrunicodedatalookupstartSyntaxErrorformat)
mcharvalueposignore_escapeis_bytesis_raw_charsmulti_slash	normalizeslashs
       r*   normnorm_pattern.<locals>.normi   s    771::771:DSY]"" ! WWQZZl 6qwwqz BXYX_X_`aXbcD  aggajjhs1771:q'9D'@&A BTWX[\]\c\cde\fhiXjTklD  aggajjHs1771:ab>2'>&? @RUVYZ[ZaZabcZdefegZhjlVmRnoD  (qwwqzz%%aggaj2&67D  hA!>!>771:Dt|
  #+AGGAJ
E (!''!*aggajCW^^_djkkr)   )rG   zMatch[AnyStr]returnr   )
isinstancer?   RE_BNORMRE_NORMsub)	patternrO   rM   rK   patrQ   rL   rN   rP   s	    ```  @@@r*   norm_patternrZ   Q   si     '5!!aiai\- 2 774!!r)   c                  |    \ rS rSrSrSS jrSS jrSS jrSS jr\	SS j5       r
SS jrSS	 jrSS
 jrSS jrSrg)
StringIter   zPreprocess replace tokens.c                    Xl         SU l        g)Initialize.r   N_string_index)selfstrings     r*   __init__StringIter.__init__   s     r)   c                    U $ )zIterate.r(   rc   s    r*   __iter__StringIter.__iter__   s	     r)   c                "    U R                  5       $ )z"Python 3 iterator compatible next.)iternextrh   s    r*   __next__StringIter.__next__   s     }}r)   c                    UR                  U R                  U R                  5      nU(       a  UR                  5       U l        U$ )zPerform regex match at index.)matchra   rb   end)rc   rX   rG   s      r*   rp   StringIter.match   s1     MM$,,4%%'DKr)   c                    U R                   $ )zGet current index.rb   rh   s    r*   indexStringIter.index   s     {{r)   c                :    U R                   U R                  S-
     $ )zGet previous char.r   r`   rh   s    r*   previousStringIter.previous   s     ||DKK!O,,r)   c                .    U =R                   U-  sl         g)zAdvanced the index.Nrt   rc   counts     r*   advanceStringIter.advance   s     	ur)   c                b    XR                   :  a  [        S5      eU =R                   U-  sl         g)zRewind index.zCan't rewind past beginning!N)rb   
ValueErrorr{   s     r*   rewindStringIter.rewind   s(     ;;;<<ur)   c                     U R                   U R                     nU =R                  S-  sl        U$ ! [         a  n[        UeSnAff = f)z)Iterate through characters of the string.r   N)ra   rb   
IndexErrorStopIteration)rc   rH   es      r*   rl   StringIter.iternext   sH    	'<<,DKK1K   	'Q&	's   .2 
AAA)rb   ra   N)rd   strrS   None)rS   z'StringIter'rS   r   )rX   zPattern[str]rS   zMatch[str] | None)rS   r@   )r|   r@   rS   r   )__name__
__module____qualname____firstlineno____doc__re   ri   rm   rp   propertyru   rx   r}   r   rl   __static_attributes__r(   r)   r*   r\   r\      sA    $

  
-

	r)   r\   c                  J   ^  \ rS rSr% SrSrS\S'   SU 4S jjrS	S jrSr	U =r
$ )
	Immutable   z
Immutable.r(   ztuple[Any, ...]	__slots__c                ^   > UR                  5        H  u  p#[        [        U ]  X#5        M     g)r_   N)itemssuperr   __setattr__)rc   kwargskv	__class__s       r*   re   Immutable.__init__   s&     LLNDA)T.q4 #r)   c                    [        S5      e)zPrevent mutability.zClass is immutable!)AttributeError)rc   namerI   s      r*   r   Immutable.__setattr__   s     233r)   )r   r   rS   r   )r   r   rI   r   rS   r   )r   r   r   r   r   r   __annotations__re   r   r   __classcell__)r   s   @r*   r   r      s    !#I#54 4r)   r   c                   Sn[         R                  R                  U 5      nUSS S;   a  SnU$ [        R                  S:X  a2  [         R
                  " U 5      nSn[        UR                  U-  5      nU$ [        R                  S:X  a<  [         R
                  " U 5      n[        UR                  [        R                  -  5      nU$ )	zCheck if file is hidden.FNr   ).   .Twin32r4   r#   )ospathbasenamesysr+   lstatboolst_file_attributesst_flagsstat	UF_HIDDEN)r   hiddenfresultsFILE_ATTRIBUTE_HIDDENs        r*   	is_hiddenr      s     F
A!u M 
	 ((4. #g003HHI
 M	 
	!((4.g&&78Mr)   c                   ^ ^ SU U4S jjnU$ )z
Raise a `DeprecationWarning` when wrapped function/method is called.

Usage:

    @deprecated("This method will be removed in version X; use Y instead.")
    def some_method()"
        pass
c                :   >^  [        T 5      SU UU4S jj5       nU$ )Nc                 h   > [         R                  " STR                   ST 3[        TS9  T" U 0 UD6$ )N'z' is deprecated. category
stacklevel)warningswarnr   DeprecationWarning)argsr   funcmessager   s     r*   _deprecated_func6deprecated.<locals>._wrapper.<locals>._deprecated_func   s<    MMDMM?"3G9=+%
 (((r)   )r   r   r   r   rS   r   r   )r   r   r   r   s   ` r*   _wrapperdeprecated.<locals>._wrapper   s&    	t	) 	) 
	)  r)   )r   Callable[..., Any]rS   r   r(   )r   r   r   s   `` r*   
deprecatedr      s    	  	  Or)   c                8    [         R                  " U [        US9  g)zWarn deprecated.r   N)r   r   r   )r   r   s     r*   warn_deprecatedr     s     MM#r)   r   )rS   r   )F)
rX   r   rO   zbool | NonerM   r   rK   r   rS   r   )r   r   rS   r   )r4   )r   r   r   r@   rS   r   )r   r   r   r@   rS   r   ))r   
__future__r   r   r   r   rerB   	functoolsr   r   typingr   r   r   r	   r
   r   version_infoPY310PY312PY313UNICODEBYTESr   normcaser-   compilerV   rU   r>   r+   
startswithr'   r.   rZ   r\   r   r   r   r   r(   r)   r*   <module>r      s    " 
 	  	    > >3###3###3###
	
''

3
277#3#3C#8
8
**	 ::	4	4 
4 
4	
 
4 
4 
4 
5 E E E E E E E  F! & <<5!!I\\XII1"h< <~4 4"(0r)   