
    Vi                    r
   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Jr  SSKJ	r	  SSK
Jr  SSKJrJrJrJrJrJrJr  S	rS
rSr\R.                  " S\R0                  5      r\R.                  " S\R0                  5      r\R.                  " S\R0                  5      r\R.                  " S\R0                  5      r\R.                  " S\R0                  5      \R.                  " S\R0                  5      4r\R.                  " S5      \R.                  " S5      4r\" S5      \" S5      4r \" S5      \" S5      4r!\" S5      \" S5      4r"\" S5      \" S5      4r#\" S5      \" S5      4r$\" S5      \" S5      4r%\" S 5      \" S!5      4r&\R.                  " S"5      \R.                  " S#5      4r'\R.                  " S$5      \R.                  " S%5      4r(\R.                  " S&5      \R.                  " S'5      4r)\R.                  " S(5      \R.                  " S)5      4r*\R.                  " S*5      \R.                  " S+5      4r+\R.                  " S,5      \R.                  " S-5      4r,S.r-\R.                  " S/5      r.\R.                  " S05      r/\R.                  " S15      r0\" S25      r1\" S35      r2\" S45      r3\" S55      r4\" S65      r5Sr6S7r7S8r8S9r9S:r:S;r;S<r<S=r=S>r>S?r?S@r@SArASBrBSCrCSDrDSErESFrFSGrGSHrHSIrISJrJSKrKSLrLSMrMSNrNSOrOSPrP\6\7-  \8-  \9-  \:-  \;-  \<-  \=-  \>-  \?-  \@-  \A-  \C-  \D-  \E-  \F-  \G-  \H-  \B-  \I-  \J-  \K-  \L-  \M-  \O-  \N-  \P-  rQ\7\6-  rRSQrSSRrTSSrUSTrVSUrW\V\W-   rX\VSVR                  \W5      -   rZSWr[SXr\SRr]SYr^SZr_S[r`S\raS]rbS^rcS_rdS`reSarfSbrgScrhSdriSerjSfrkSgrlShrmSirnSjroSkrpSlrqSmrrSnrsSortSpruSqrv " Sr Ss\w5      rx " St Su\y5      rz " Sv Sw\y5      r{ " Sx Sy\y5      r|\SSz j5       r}\SS{ j5       r}SS| jr}SSS~ jjr~  S       SS jjrSS jrSSS jjrSS jrSS jrSS jrSS jrSS jrSS jrSS jrSS jrSS jrSS jr\\S4         SS jj5       r\\S4         SS jj5       r\S4         SS jjrSS jr\\S4         SS jj5       r\\S4         SS jj5       r\S4         SS jjr\\S4         SS jj5       r\\S4         SS jj5       r\S4         SS jjr\GR                  " S>S}S9SS j5       r " S S\\   5      r " S S\\   5      rg)zWildcard parsing.    )annotationsN   )util)posix)WcRegexp)AnyStrIterablePatternGenericSequenceoverloadcastu    -􏿿u    -ÿi  zF((?:\\\\|/){2}((?:\\[^\\/]|[^\\/])+)|([\\]?[a-z][\\]?:))((?:\\\\|/)|$)z([a-z]:)((?:\\|/)|$)z$((?:\\[^\\/]|[^\\/])+)((?:\\\\|/)|$)z\\(.)aM  (?x)
        (
            (?:\\\\|/){2}[?.](?:\\\\|/)(?:
                [a-z]:|
                unc(?:(?:\\\\|/)[^\\/]+){2} |
                (?:global(?:\\\\|/))+(?:[a-z]:|unc(?:(?:\\\\|/)[^\\/]+){2}|[^\\/]+)
            ) |
            (?:\\\\|/){2}[^\\/]+(?:\\\\|/)[^\\/]+|
            [a-z]:
        )((?:\\\\|/){1}|$)
        sM  (?x)
        (
            (?:\\\\|/){2}[?.](?:\\\\|/)(?:
                [a-z]:|
                unc(?:(?:\\\\|/)[^\\/]+){2} |
                (?:global(?:\\\\|/))+(?:[a-z]:|unc(?:(?:\\\\|/)[^\\/]+){2}|[^\\/]+)
            ) |
            (?:\\\\|/){2}[^\\/]+(?:\\\\|/)[^\\/]+|
            [a-z]:
        )((?:\\\\|/){1}|$)
        z2([-!~*?()\[\]|{}]|(?<!\\)(?:(?:[\\]{2})*)\\(?!\\))s2   ([-!~*?()\[\]|{}]|(?<!\\)(?:(?:[\\]{2})*)\\(?!\\))z*?[]\s   *?[]\|   |!   !-   -~   ~z()s   ()z{}s   {}z([-!~*?(\[|{\\])s   ([-!~*?(\[|{\\])z'([{}|]|(?<!\\)(?:(?:[\\]{2})*)\\(?!\\))s'   ([{}|]|(?<!\\)(?:(?:[\\]{2})*)\\(?!\\))#^(?:.*?(?:/\.{1,2}/*|/)|\.{1,2}/*)$#   ^(?:.*?(?:/\.{1,2}/*|/)|\.{1,2}/*)$3^(?:.*?(?:[\\/]\.{1,2}[\\/]*|[\\/])|\.{1,2}[\\/]*)$3   ^(?:.*?(?:[\\/]\.{1,2}[\\/]*|[\\/])|\.{1,2}[\\/]*)$z~[^/]*(?=/|$)s   ~[^/]*(?=/|$)z$~(?:\\(?![\\/])|[^\\/])*(?=\\\\|/|$)s$   ~(?:\\(?![\\/])|[^\\/])*(?=\\\\|/|$))r   r   z^/+z^(?:\\\\|/)+zY:(alnum|alpha|ascii|blank|cntrl|digit|graph|lower|print|punct|space|upper|word|xdigit):\])&r   r   )r   r   )r   r   )   (()*?+@r                   @         i   i   i   i   i    i @  i   i   i   i   i   i   l        l        l        l         l       @ l        .z.*?z{}*?z(?!(?:\.{{1,2}})(?:$|[{sep}]))z
[^{sep}]*?z(?:(?!\.){})?z0(?:(?!(?:[{sep}]|^)(?:\.{{1,2}})($|[{sep}])).)*?z(?:(?!(?:[{sep}]|^)\.).)*?z(?![.])z(?![{sep}.])z(?![{sep}])r    $z(?:$|[{sep}])z(?:^|$|{})+z(?=[^{sep}])z(?=.)z(?={})z(?:{})?z((?#)(?:{})?)z(?:{})*z((?#)(?:{})*)z(?:{})+z((?#)(?:{})+)z(?:{})z((?#){})z(?:(?!(?:{})z((?#)(?!(?:{})z){})z(?!/)z(?!(?:[\\/]|[a-zA-Z]:)))r   r   )r   r   c                      \ rS rSrSrSrg)InvPlaceholderi  z'Placeholder for inverse pattern !(...). N__name__
__module____qualname____firstlineno____doc____static_attributes__r.       c/home/james-whalen/.local/share/pipx/venvs/semgrep/lib/python3.13/site-packages/wcmatch/_wcparse.pyr-   r-     s    1r6   r-   c                      \ rS rSrSrSrg)PathNameExceptioni  zPath name exception.r.   Nr/   r.   r6   r7   r9   r9     s    r6   r9   c                      \ rS rSrSrSrg)DotExceptioni  zDot exception.r.   Nr/   r.   r6   r7   r;   r;     s    r6   r;   c                      \ rS rSrSrSrg)PatternLimitExceptioni  zPattern limit exception.r.   Nr/   r.   r6   r7   r=   r=     s    "r6   r=   c                    g Nr.   patternss    r7   iter_patternsrB         r6   c                    g r?   r.   r@   s    r7   rB   rB   !  rC   r6   c              #  d   #    [        U [        [        45      (       a  U v   gU  Sh  vN   g N7f)z Return a simple string sequence.N)
isinstancestrbytesr@   s    r7   rB   rB   &  s&      (S%L))s   &0.0Tc                   [        U [        5      (       a  [        [        [           [
        [        R                     5      n[        [        [           [        [        R                     5      n[        [        [           [        [        R                     5      nSnSnSn	Sn
O[        [        [           [
        [        R                     5      n[        [        [           [        [        R                     5      n[        [        [           [        [        R                     5      nSnSnSn	Sn
U(       d  U R                  X5      n S	nU(       au  Uc  [        R                  " 5       S:X  d  USL aT  UR                  U 5      nU(       a<  UR                  S	5      n
[        U
5      nUR!                  X|R                  S	5      5      n
XS
 n XR!                  Xp5      -   $ )zq
Escape.

`unix`: use Unix style path logic.
`pathname`: Use path logic.
`raw`: Handle raw strings (deprecated)

s   \\\1   \s   \\r6   z\\\1\\\ r   NwindowsF)rF   rH   r   r
   r   RE_WIN_DRIVEr   BYTESRE_MAGIC_ESCAPERE_WIN_DRIVE_MAGICUNICODEreplaceplatformmatchgrouplensub)patternunixpathnameraw	drive_patmagicdrive_magicrT   slashdouble_slashdrivelengthms                r7   escaperf   /  s]    '5!!,tzz*BC	WV_odjj&AB76?,>tzz,JK,t||*DE	WV_odll&CD76?,>t||,LM//%6 Fdlt}})'CPUOOG$GGAJEZFOOGWWQZ8EgG99W...r6   c           
        SnSnSnSn[         R                  U 5      nU(       Ga  UR                  S5      nUR                  S5      (       a  [        R                  UR                  S5      5      (       a  U(       a@  [        [        R                  SUR                  S5      5      R                  SS5      U5      nO5[        R                  SUR                  S5      5      R                  SS5      n[        UR                  S5      5      nS	nGOUR                  S
5      (       Ga  S	n[        R                  SUR                  S
5      5      /nUS   R                  5       S;   n	Sn
SnSn[        [        R                  XR                  S5      5      S5       H  u  pUR                  S5      nUR                  [        R                  SUR                  S5      5      5        [        UR                  S
5      5      nU	(       aH  X:X  a  US   R                  5       S:X  a  U
S
-  n
O&X:X  a!  US   R                  5       S:X  a
  US-  nU
S-  n
X:X  d  M    O   X:X  a`  U(       d+  SR                  SR!                  U5      U(       a  SOS5      nOGSSR!                  U Vs/ s H  n[        X5      PM     sn5      -   nOU R#                  S5      (       a  S	nXcXE4$ s  snf )zGet Windows drive.NFr      z\1/rK   r#   Tr"   )r*   r   r   uncglobalz\\{}{}rM   z[\\/]{2}z[\\/])rL   ri   )RE_WIN_DRIVE_STARTrV   endrW   RE_WIN_DRIVE_LETTERescape_driveRE_WIN_DRIVE_UNESCAPErY   rT   boollower	enumerateRE_WIN_DRIVE_PARTfinditerappendformatjoin
startswith)rZ   regexcase_sensitiverc   ra   rn   root_specifiedre   part
is_specialcompletefirstcountm2ps                  r7   _get_win_driver   ^  sb    EE
CN  )AeeAh771::-33AGGAJ??$%:%>%>uaggaj%Q%Y%YZ]_c%dftu-11%DLLSRVW$E!NWWQZZ!N)--eQWWQZ@ADb)Z7JHEE&'8'A'A'55QR8'TVWX	ffQi155eRXXa[IJRXXa[)~$r(..*:e*C ADHNN,<,H
 A$ Y  &--diioutRTUE'(--bf8gbf]^a9Xbf8g*hhE			M	*	*%,,	 9hs   K
c                   [        U [        5      (       a  [        R                  nSnO[        R                  nSn[        5       nU(       a  [        5       nOU1nU[        S[        U   5      -  nU[        -  (       a,  U[        S[        U   5      -  nU[        S[        U   5      -  nU[        -  (       a,  U[        S[        U   5      -  nU[        S[        U   5      -  nU[        -  (       a  U[        S[        U   5      -  nU[        -  (       a  U[        S[        U   5      -  nU[         -  (       a=  U["        -  (       a  U[        S[$        U   5      -  nXV4$ U[        S[&        U   5      -  nXV4$ )zGet magic symbols.rJ   rK   zset[AnyStr])rF   rH   r   rP   rS   setr   	MAGIC_DEFBRACEMAGIC_BRACESPLITMAGIC_SPLIT	GLOBTILDEMAGIC_TILDEEXTMATCHMAGIC_EXTMATCHNEGATEMINUSNEGATEMAGIC_MINUS_NEGATEMAGIC_NEGATE)rZ   r[   flagsptypera   r_   magic_drives          r7   _get_magic_symbolsr     sO    '5!!

EEeg	T-5!122Eu}m[%788tM;u+=>>u}m[%788tM;u+=>>ym[%788xm^E%:;;v~;T-);E)BCCE  T-e)<==Er6   c                   Sn[        U5      n[        U [        5      (       a  [        R                  nO[        R
                  n[        [        [           [        U   5      n[        XU5      u  pgU[        -  nSn	U(       ag  Uc  [        R                  " 5       S:X  d  USL aF  UR                  U 5      n
U
(       a.  U
R                  S5      n[        U5      n	U H  nX;   d  M
  Sn  O   U(       d  X	S n U H  nX;   d  M
  Sn  U$    U$ )zCheck if pattern is magic.Fr   NrN   T)is_unix_stylerF   rH   r   rP   rS   r   r
   r   rO   r   PATHNAMErU   rV   rW   rX   )rZ   r   magicalr[   r   r^   r_   r   is_pathrd   re   rc   cs                r7   is_magicr     s     GD'5!!

WV_l5&9:I+G5AEhGFT\dmmo&Btu}OOG$GGAJEZF :"G !
 '"A|N 
 Nr6   c                >   U[         -  (       a%  [        U[        -  =(       a    U SS [        ;   5      $ U[        -  (       a8  [        U[        -  =(       a    U SS [
        ;   =(       a    U SS [        ;  5      $ [        U[        -  =(       a    U SS [
        ;   5      $ )zCheck if negative pattern.r   r   r"   )r   rr   r   MINUS_NEGATIVE_SYMr   NEGATIVE_SYMROUND_BRACKETrZ   r   s     r7   is_negativer     s     {EFNIwq|7I'IJJ		EFNiwq||'CiPQRS\iHijjEFNCwq||'CDDr6   c                    SnU[         -  (       aZ  U[        -  (       aL  U[        -  (       a/  U SS [        ;   a  SnU$ U SS [        ;   a  U SS [        ;   a  SnU$ U SS [        ;   a  SnU$ )zIs user folder.rj   r   r   r"   )r   REALPATHr   	TILDE_SYMr   )rZ   r   poss      r7   	tilde_posr     s|     CyUX-6>q|y(
 J	 1-'!A,)2K J Qq\Y&CJr6   c              #  b  #    U[         -  (       aG  [        U [        [        45      (       a  U /OU  H"  n [        R
                  " USUS9 Sh  vN   M$     g[        U [        [        45      (       a  U /OU  H  nUv   M	     g N5! [        R                   a    e [         a    Uv    Mz  f = f7f)zExpand braces.T)keep_escapeslimitN)r   rF   rG   rH   bracexiexpandExpansionLimitException	Exception)rA   r   r   r   s       r7   expand_bracesr     s      u} *8c5\ B B8*PA	!>>!$eLLL Q !+8c5\ B B8*PAG Q M11   	s:   2B/BBB1B/B"B,(B/+B,,B/c                   [        X5      nUS:  Ga+  [        U [        5      (       a  [        R                  O[        R
                  n[        [        [        U   5      n[        [        [           U(       d	  [        U   O[        U   5      nUR                  X5      nU(       a  [        R                  R                  UR!                  S5      5      nUR#                  U5      (       dU  [        R                  R%                  U5      (       a1  U(       a  U SS OU SS ['        X5      -   XR)                  S5      S -   n U $ )zExpand tilde.rj   r   r   N)r   rF   rH   r   rP   rS   r   r   r   r
   RE_WIN_TILDERE_TILDErV   ospath
expanduserrW   rz   existsrf   rn   )	rZ   is_unixr   r   string_typetildere_tildere   expandeds	            r7   expand_tilder     s     G
#C
Rx$.w$>$>djjDLLVY{34'k)BW_`kWlmNN7(ww))!''!*5H&&u--"''..2J2J+.71Q<GAaLF8D]]`ghmhmnohphq`rrNr6   c              #     #    [        XU5       H-  n[        X15       H  n[        U[        U5      U5      v   M     M/     g7f)zExpand and normalize.N)r   splitr   r   )rZ   r   r   r   splitteds        r7   expandr     s;      "'%8h.Hxu)=uEE / 9s   ?Ac                    [        U [        -  5      (       a  SnU$ [        U [        -  5      (       a  SnU$ [        R                  " 5       nU$ )zIs case sensitive.FT)rr   FORCEWIN	FORCEUNIXr   is_case_sensitiver   r|   s     r7   r   r   !  sV     EH
 	 
ei	 	   //1r6   c                v    [        U [        -  5      (       d  [        U 5      nU$ U [        -  (       a  SnU$ SnU$ )z*Parse flags for case sensitivity settings.TF)rr   
CASE_FLAGSr   CASEr   s     r7   get_caser   -  sI     
"##*51
 	 
  r6   c                    U(       a%  SR                  [        R                  " U 5      5      $ [        R                  " U 5      $ )zEscape drive.z(?i:{}))rx   rerf   )rc   cases     r7   rp   rp   9  s.     269BIIe,-K299U;KKr6   c                    [         R                  " 5       S:g  =(       d0    [        U [        -  5      (       + =(       a    [        U [        -  5      =(       a    U [
        -  (       + $ )z"Check if we should use Unix style.rN   )r   rU   rr   r   r   r   r   s    r7   r   r   ?  sN    
 ]]_	) Eeh&''CD1B,C	 Hr6   c                b    U [         -  (       a	  U [         -  n U [        -  (       a	  U [        -  n U $ )zNo negation.)r   	NEGATEALLr   s    r7   no_negate_flagsr   K  s+     v~yLr6   c                    g r?   r.   rA   r   r   excludes       r7   	translater   U       r6   c                    g r?   r.   r   s       r7   r   r   _  r   r6   c           	        / n/ nUb4  [        U5      n[        X1[        -  [        -  US9S   nU[	        U5      -  nU[
        -  [        -  n[        U5      n[        5       n UnSn	[        U 5       GH  n
[        R                  " X(       + [        U[        -  5      5      n
Sn[        XU5       H  nUS-  nU	S-  n	SUs=:  a  U	:  a  O  O[        SR!                  U5      5      eX;  d  M>  UR#                  U5        [%        X5      (       a<  UR'                  [)        USS U[        -  [        -  5      R+                  5       5        M  UR'                  [)        X5      R+                  5       5        M     U(       d  GM  X-  nUS:  d  GM  SnGM!     U(       ap  U(       di  U[0        -  (       a[  [3        US   [4        5      (       a  SOSnUR'                  [)        XU[6        -  (       a  [8        OS-  5      R+                  5       5        U(       a|  U[:        -  (       an  [3        US   [4        5      (       a  [        R<                  O[        R>                  nUR'                  [A        [B        U(       a	  [D        U   O[F        U   5      5        XE4$ ! [,        R.                   a   n[        SR!                  U5      5      UeSnAff = f)zTranslate patterns.Nr   r   r   r   (Pattern limit exceeded the limit of {:d}   ****)$r   r   DOTMATCH_NO_GLOBSTAR_CAPTURErX   
_TRANSLATE	FLAG_MASKr   r   rB   r   norm_patternrr   RAWCHARSr   r=   rx   addr   rw   WcParseparser   r   r   rF   rH   r   GLOBSTARNODIRrP   rS   r   r   _NO_NIX_DIR_NO_WIN_DIR)rA   r   r   r   positivenegativer   seencurrent_limittotalrZ   r   r   edefaultindexs                   r7   r   r   i  sQ    HH&WH,<?S,S[`abcdXZ9,EE"G5De$X.G''d58CS>TUGE"7=A

u$u$/0Z0a0abg0hii'HHX&"833 eFZ>Z]e>e(f(l(l(no (@(F(F(HI B u& 1$$%M# /* 9)(1+u==e4GOOeh6F(A!NOUUW EEM(!e<<

$,,V7[%7TYHZ[\ )) e#$N$U$UV[$\]cddes,   "BJ -BJ  J J K%K  Kc              #  x   #    U[         -  (       a"  [        X5      R                  5        Sh  vN   gU v   g N
7f)zSplit patterns.N)r   WcSplitr   r   s     r7   r   r     s/      u}7*00222 	3s   +:8:c                    g r?   r.   r   s       r7   compile_patternr     r   r6   c                    g r?   r.   r   s       r7   r   r     r   r6   c           	     N   / n/ nUb4  [        U5      n[        X1[        -  [        -  US9S   nU[	        U5      -  n[        U5      n[        5       n UnSn	[        U 5       GH   n
[        R                  " X(       + [        U[        -  5      5      n
Sn[        XU5       H  nUS-  nU	S-  n	SUs=:  a  U	:  a  O  O[        SR                  U5      5      eX;  d  M>  UR                  U5        [!        X5      (       a.  UR#                  [%        USS U[        -  [        -  5      5        M  UR#                  [%        X5      5        M     U(       d  M  X-  nUS:  d  M  SnGM     U(       al  U(       de  U[*        -  (       aW  [-        US   R.                  [0        5      (       a  SOSnUR#                  [%        XU[2        -  (       a  [4        OS-  5      5        U(       a  U[6        -  (       a  [-        US   R.                  [0        5      (       a  [        R8                  O[        R:                  nUR#                  [=        [>        [@           U(       a	  [B        U   O[D        U   5      5        XE4$ ! [&        R(                   a   n[        SR                  U5      5      UeSnAff = f)zCompile the patterns.Nr   r   r   r   r   r   )#r   r   r   r   rX   r   r   rB   r   r   rr   r   r   r=   rx   r   r   rw   _compiler   r   r   rF   rZ   rH   r   r   r   rP   rS   r   r
   r   	RE_NO_DIRRE_WIN_NO_DIR)rA   r   r   r   r   r   r   r   r   r   rZ   r   r   r   r   r   s                   r7   r   r     s3    HH&"7(2BEY2YafghijXE"G5De$X.G''d58CS>TUGE"7=A

u$u$/0Z0a0abg0hii'HHX&"833 !"uG[?[^f?f(gh (AB B u& 1$$%M# /* 9)(1+*=*=uEEe4GOOHW58CSxYZ.[\]EEM(!)<)<eDD

$,,WV_'i.>}]bOcde )) e#$N$U$UV[$\]cddes,   BI0 A2I0 I0 I0 0J$JJ$c                    g r?   r.   r   s       r7   compiler     r   r6   c                    g r?   r.   r   s       r7   r   r     r   r6   c           
         [        XX#5      u  pE[        [        U5      [        U5      [        U[        -  5      [        U[
        -  5      [        U[        -  5      5      $ )zCompile patterns.)r   r   tuplerr   r   r   FOLLOW)rA   r   r   r   r   r   s         r7   r   r     sQ     )%IHhxUXUX%5 6UV^8L r6   )maxsizetypedc                j    [         R                  " [        X[        -  5      R	                  5       5      $ )zCompile the pattern to regex.)r   r   r   r   r   r   s     r7   r   r     s&     ::ggy'89??ABBr6   c                  X    \ rS rSrS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	rg
)r   i!  z Class that splits patterns on |.c                    Xl         [        U[        -  5      U l        [        U[        -  5      U l        [        U5      U l        U R                  (       + U l        g)Initialize.N)	rZ   rr   r   r\   r   extendr   r[   bslash_abort)selfrZ   r   s      r7   __init__WcSplit.__init__$  sE     UX-.58+,!%(	 $		Mr6   c                2   [        U5      nUS:X  a  [        U5      nUS;   a  [        U5      n US:w  aJ  US:X  a  U R                  US5        OUS:X  a  U R                  (       a  [        e[        U5      nUS:w  a  MI  gg! [         a  n[        UeSnAff = f)Handle character group.r   )^r   []rK   Tri   N)next_referencesr\   StopIterationr9   )r  ir   r   s       r7   	_sequenceWcSplit._sequence-  s     G8QAQA
	's(9$$Q-#X}}++G s( ! 	'Q&	's   AB   
B
BBc                    [        U5      nUS:X  a   U(       a  U R                  (       a  [        eggUS:X  a   U(       a  U R                  (       a  [        eggg)Handle references.rK   ri   N)r  r  r9   r\   )r  r  sequencer   s       r7   r  WcSplit._referencesB  sN     G9D--'' .x#XDMM'' *x r6   c                J   SnUR                   nUn [        U5      nUS:w  a  [        eUS:w  a  [        U5      nU R                  (       a"  U[        ;   a  U R                  X5      (       a  MD  US:X  a   U R                  U5        O$US:X  a  UR                   n U R                  U5        US:w  a  M  U$ ! [         a     Nf = f! [         a!    UR                  UR                   U-
  5         NDf = f! [         a&    SnUnUR                  UR                   U-
  5         U$ f = f)Parse extended pattern lists.Tr   )rK   r  F)	r   r  r  r
  	EXT_TYPESparse_extendr  r  rewind)r  r   r  successr   	list_types         r7   r"  WcSplit.parse_extendR  s    		&QACx##s(G;;1	>d6G6G6M6M9((+ #XGGE2q) s(.  )  ) 2512  	&GAHHQWWu_%	&sZ   A!C2 4B4 C2 C *C2 4
C>C2  CC2 (C/,C2 .C//C2 2,D"!D"c              #    #    Sn[         R                  " U5      nU H  nU R                  (       a"  U[        ;   a  U R	                  XC5      (       a  M6  US:X  a  UR
                  S-
  nXS-   U nUv   UnMZ  US:X  a   UR
                  n U R                  U5        M  US:X  d  M  UR
                  n U R                  U5        M     U[        U5      :  a
  XS-   S v   gg! [         a"    UR                  UR
                  U-
  5         M  f = f! [         a#    UR                  UR
                  U-
  5         GM  f = f7f)Split the pattern.rj   r   r   rK   r  N)r   
StringIterr
  r!  r"  r   r  r  r#  r  rX   )r  rZ   startr  r   r   r   r   s           r7   _splitWcSplit._splitv  s#     OOG$A{{qI~$2C2CA2I2ICx!AIe,d.$$Q' c.NN1%% , 3w<!)*%%   % .HHQWWu_-. % .HHQWWu_--.sT   BE 
C!E %E 2DE !(D	E DE (D=8E <D==E c              #    #    [        U R                  [        5      (       aE  U R                  U R                  R	                  S5      5       H  nUR                  S5      v   M     gU R                  U R                  5       Sh  vN   g N7f)r(  latin-1N)rF   rZ   rH   r+  decodeencode)r  r   s     r7   r   WcSplit.split  sb      dllE**[[!4!4Y!?@hhy)) A {{4<<000s   BBBB)r  r
  r\   rZ   r[   NrZ   r   r   intreturnNoner  util.StringIterr4  r5  F)r  r7  r  rr   r4  r5  )r   rG   r  r7  r4  rr   )rZ   rG   r4  Iterable[str])r4  Iterable[AnyStr])r0   r1   r2   r3   r4   r  r  r  r"  r+  r   r5   r.   r6   r7   r   r   !  s$    **'* "H&>1r6   r   c                      \ rS rSrS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 S jjrS!S jrS!S jrSS"S j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rg)(r   i  zParse the wildcard pattern.c                   Xl         [        U[        -  5      U l        [        U[        -  5      U l        [        U[        5      U l        [        U[        -  5      U l
        [        U[        -  5      U l        U R                  =(       a    [        U[        -  5      U l        [        U[        -  5      =(       a    U R                  U l        [        U["        -  5      U l        [        U[&        -  5      U l        U R                   =(       a/    U R$                  (       + =(       a    [        U[*        -  5      (       + U l        [        U[.        -  5      U l        [        U[2        -  5      U l        [        U[6        -  5      U l        [        U[:        -  5      U l        [        U[>        -  5      U l         [        U[B        -  5      U l"        [        U[F        -  5      U l$        U R$                  U l%        [M        U5      U l'        SU l(        SU l)        X l*        SU l+        [Y        U RT                  5      U l-        U RZ                  (       d`  U R                  U l.        [_        S5      [_        S5      [_        S5      4U l0        U R                  U l1        S[d        Rf                  " S5      0nOASU l.        [_        S5      [_        S5      4U l0        SU l1        S[d        Rf                  " S5      0nUS   U l4        SRk                  U Rh                  5      U l6        [n        Rj                  " S
0 UD6U l8        [r        Rj                  " S
0 UD6U l:        [v        Rj                  " S
0 UD6U l<        [z        Rj                  " S
0 UD6U l>        [~        Rj                  " S
0 UD6U l@        [        Rj                  " S
0 UD6U lB        [        Rj                  " S
0 UD6U lD        [        Rj                  " S
0 UD6U lF        [        Rj                  " S
0 UD6U lH        U R                  (       a  [        Rj                  " S
0 UD6U lJ        g	[        U lJ        g	)r	  Fr   rK   ri   r*   sepz\/[{}]Nr.   )LrZ   rr   _NOABSOLUTEno_absr   bracesrF   rH   is_bytesr   r\   r   	raw_charsr   globstarr   realpathr   r   r   negater   globstar_capturer   dotr   r
  	MATCHBASE	matchbase_EXTMATCHBASEextmatchbase_RTLrtl_ANCHORanchorNODOTDIRnodotdircapturer   r|   in_listinv_nestr   inv_extr   r[   win_drive_detectord
char_avoidr  r   rf   bare_seprx   r=  	_PATH_EOPpath_eop_NO_DIRno_dir_PATH_NO_SLASHseq_path_PATH_NO_SLASH_DOTseq_path_dot
_PATH_STAR	path_star_PATH_STAR_DOTMATCHpath_star_dot1_PATH_STAR_NO_DOTMATCHpath_star_dot2_PATH_GSTAR_DOTMATCHpath_gstar_dot1_PATH_GSTAR_NO_DOTMATCHpath_gstar_dot2_NEED_CHAR_PATH	need_char
_NEED_CHAR)r  rZ   r   r=  s       r7   r  WcParse.__init__  s    5;./55=)"7E2UX-.eh./@$ux/?*@UX-.@4==ej0156>* $ odnn2D oTRWZnRnMoIo()58+,ei/0 !67%57?+UX-.~~&uo
!$**-	yy$(MMD!"4y#c(CH=DO $D"))E*+C$)D!"3xS2DO %D"))C.)CE
==/!((/3/nn+s+&--44.55<<#**1S1188?3?4;;BcB3::ASA6==DD==,33:c:DN'DNr6   c                     SU l         SU l        g)z9Set tracker for character after the start of a directory.TFN)after_start	dir_startr  s    r7   set_after_startWcParse.set_after_start  s      r6   c                     SU l         SU l        g)zSet directory start.TFNrs  rr  rt  s    r7   set_start_dirWcParse.set_start_dir  s      r6   c                     SU l         SU l        g)zReset directory tracker.FNrx  rt  s    r7   reset_dir_trackWcParse.reset_dir_track  s      r6   c                    U R                   (       a"  U R                  (       d  U R                  5         gU R                   (       d#  U R                  (       a  U R                  5         ggg)z
Update the directory state.

If we are at the directory start,
update to after start state (the character right after).
If at after start, reset state.
N)rs  rr  ru  r|  rt  s    r7   update_dir_stateWcParse.update_dir_state  sA     >>$"2"2  "D$4$4  " %5r6   c                @    U R                   (       a  U R                  $ S$ )zRestrict extended slash.rM   )r\   r`  rt  s    r7   _restrict_extended_slash WcParse._restrict_extended_slash  s     !%t}}525r6   c                R   U R                   (       a[  U R                  (       a  U R                  (       d  U R                  OU R                  nU R                  (       a  U R
                  U-   nO*U R                  (       a  U R                  (       d  [        OSnU R                  5         U$ )zRestrict sequence.rM   )r\   rr  rH  rb  r`  r^  _NO_DOTr|  )r  values     r7   _restrict_sequenceWcParse._restrict_sequence  sk     ==)-)9)9$((D%%PTP]P]Ee+#//GbEr6   c                   SnUS   n[        [        U5      S:  a  USS OU5      n[        [        U5      S:  a  USS OU5      nXe:  a$  UR                  5         UR                  5         SnU$ UR                  U5        U$ )a  
If range backwards, remove it.

A bad range will cause the regular expression to fail,
so we need to remove it, but return that we removed it
so the caller can know the sequence wasn't empty.
Caller will have to craft a sequence that makes sense
if empty at the end with either an impossible sequence
for inclusive sequences or a sequence that matches
everything for an exclusive sequence.
Fr   r"   T)rX  rX   poprw   )r  resultlastremovedr   v1v2s          r7   _sequence_range_checkWcParse._sequence_range_check
  s     r
s5zA~q59c$i!ma67JJLJJLG  MM$r6   c                   SnUR                  [        5      nU(       af  SnU(       a  UR                  S-
  U:  a  SUS   -   US'   UR                  [        R
                  " UR                  S5      U R                  5      5        U$ )zHandle posix classes.FTr   rK   rj   )rV   RE_POSIXr   rw   r   get_posix_propertyrW   rB  )r  r  r  	end_range
last_posixre   s         r7   _handle_posixWcParse._handle_posix#  sp     
GGHJ QWWq[I5!F2J.r
MM%221771:t}}MNr6   c                
   S/nSnSnSnSn[        U5      nUS;   a  UR                  S5        [        U5      nUS:X  aJ  U R                  XS5      nU(       d%  UR                  [        R                  " U5      5        [        U5      nO6US;   a0  UR                  [        R                  " U5      5        [        U5      nUS:w  Ga  US	:X  a  U(       a  UR                  S
U-   5        SnOUR
                  S-
  U:  a-  UR                  U5        UR
                  S-   nUR
                  nOMU(       a2  UR
                  S-
  U:  a  U R                  US
U-   5      (       a  SnSnOUR                  S
U-   5        [        U5      nM  SnUS:X  a&  U R                  XU5      nU(       a  [        U5      nM  US
:X  a   U R                  US5      nO2US:X  a  U R                  (       a  [        eUnOU[        ;   a  S
U-   nOUnU(       a.  UR
                  S-
  U:  a  U R                  X(5      (       a  SnSnOUR                  U5        [        U5      nUS:w  a  GM  UR                  S5        U(       a|  SR                  U5      nUS:X  a.  SR                  U R                  (       a  [         O["        5      /nO7US:X  a.  SR                  U R                  (       a  [         O["        5      /nOU/nU R                  (       d  U R$                  (       a"  U R'                  5       SR                  U5      -   $ SR                  U5      $ ! [         a#    [        R                  " [        U5      5      n GNo[         a  n	[        U	eSn	A	ff = f)r  r  r   rj   F)r   r  r  )r   r  r  r   rK   r   TNri   rM   z[]z[^{}]z[^]r>  )r  rw   r  r   rf   r   r  r  r;   r9   r  r\   SET_OPERATORSry   rx   rB  ASCII_RANGEUNICODE_RANGErr  r  )
r  r  r  r  escape_hyphenr  r  r   r  r   s
             r7   r  WcParse._sequence2  s    	
G
?MM#QA8++Aq9Jbiil+QA*_MM"))A,'QA3hCxMM$(+!&JWWq[=0 MM!$$%GGaKM !I177Q;)#;11&$(CC"& !IMM$(+GJCx!//9E
QADy/ ,,Q5E
 c==''m#q QWWq[I5--f<<"G	e$QAq 3ht 	cGGFOE} "..=YZ% !--t}}-XY==D,,**,rwwv>>wwvW $ /IId1g.E( /'Q./s   9M )N-	N6M==Nc                ^   Sn[        U5      nUS:X  a  U(       a  U R                  (       a  [        eSnU R                  (       aV  U R                  (       d%  U R                  [
        -   nU R                  5         U$ U R                  5       U R                  -   n U$ U R                  (       d  U(       d  U R                  OU R                  nU$ US:X  a  U(       a  U R                  (       a  [        eU R                  (       aV  U R                  (       d%  U R                  [
        -   nU R                  5         U$ U R                  5       U R                  -   n U$ U(       d  U R                  OU R                  n U$ US:X  a  UR                  S5        [        e[        R                  " U5      nU$ )r  rM   rK   rL   ri   r*   r   )r  r  r9   rT  r=  _ONE_OR_MOREry  r  r[   rZ  r\   r#  r;   r   rf   )r  r  r  r  r   s        r7   r  WcParse._references  sP    G9D--''E  || HH|3E&&(2 / !99;dhhFE. - YY(0dmm* ) #XDMM''}}|| HH|3E&&(  !99;dhhFE  )1dmm  #XHHQK IIaLEr6   c                R   SnSnU R                   (       a  U R                  (       a  U R                  (       a  Sn UR                  n [	        U5      nUS:X  a  U(       a  SnSnOkUS:X  a  U(       a  Sn[
        eUS;   a  U R                  (       a  [
        eUS:X  a   U R                  US5        SnSn[
        eUS:X  a  [
        eSnSn[
        eM  U(       d2  U(       d+  UR                  S	R                  U R                  5      5        gUR                  [        R                  " S5      5        g! [         a)  nU(       a  SnSn[	        U5      n SnANSn[
        UeSnAf[         a  n[
        UeSnAff = f! [
         a!    UR                  UR                  U-
  5         Nf = f)
zHandle dot.TFr   r*   )r   r   rK   Nri   z(?!\.[.]?{})\.)rr  r\   rR  r   r  r  rT  r  r;   r9   r#  rw   rx   r\  r   rf   )r  r  current
is_currentis_previousr   r   r   s           r7   _handle_dotWcParse._handle_dot  so    
$--E$*QACxJ&*%*
ck&+++jT\\++d7 ,,Q5).J*/K"// c++%*
&+++A H +NN,33DMMBCNN299S>*-  , ;).2-2
$(G.3&3 :0 7"/Q67 ! *5)*sN   A"E; D1 :E; 1
E8;EE; 	EE8,E33E88E; ;(F&%F&c                ~   U R                   (       a  U R                  (       a*  U R                  (       d  U R                  nU R                  nOBU R                  (       a  U R
                  nU R                  nOU R                  nU R                  nU R                  (       a  SR                  U5      nO8U R                  (       a  U R                  (       d  [        [        -   nO[        nSnUnU R                  (       a  U R                  (       a  U R                  (       d  Sn [        U5      nUS:w  a  UR                  S5        [         e U(       dd   UR"                  n[        U5      nUS:X  a   U R%                  US5        OUS:X  a	  UnSU l        XT:w  a  UR                  UR"                  U-
  5        U R                  (       aJ  XT:w  aE  U R,                  U-   n [        U5      nUS:X  a  [        U5      nUS:X  a  M  UR                  S5        U R/                  5         XT:X  a  [0        R                  U R2                  5      n	US	   U	:w  ac  US	   S:X  a  XRS	'   O3[4        R                  U R2                  5      US	'   UR7                  U5        U R9                  U5        UR7                  U	5        U R;                  5         g
UR7                  U5        g
! [          a    Sn GNf = f! [&         a     GNa[(         a    UnSU l         GNv[          a    Un GNf = f! [          a    Un GNtf = f! [          a     GN*f = f)zHandle star.z({})rM   Fr   r   TrK   ri   rj   N)r\   rr  rH  rh  rl  rf  rj  rd  rG  rx   r  _STARrD  rT  r  r#  r  r   r  r;   r9   rJ  rn  r|  _GLOBSTAR_DIVr=  	_NEED_SEPrw   consume_path_sepry  )
r  r  r  starrD  r  skipr   r   r=  s
             r7   _handle_starWcParse._handle_star  s    ==**//!!**//~~//$$!==2HdllDG8HHQK''  %GGEQADy- ,,Q5 c ().(51  1NNU*EG3hQA 3h 	&&txx0C r{c!2;"$"'BK #,"2"2488"<GBKNN5)%%a(s# NN5!} !   , ! 0 3 %-E-2DN, -$,E- % % %E% ! sx   "(K L 1K' 3L "L.  L. K$#K$'
L1L 4LL 	LL LL L+*L+.
L<;L<c                   U R                   (       d  g[        U5      S-
  nUS:  a  [        X   [        5      (       a  XS-   S nU(       d2  UR	                  U R
                  (       d  [        OU R                  5        U R                  (       a!  SR                  U5      R                  SS5      OSR                  U5      [        R                  [        X   5      5      -   X'   US-  nUS:  a  M  SU l         g)a  
Clean up current.

Python doesn't have variable lookbehinds, so we have to do negative lookaheads.
!(...) when converted to regular expression is atomic, so once it matches, that's it.
So we use the pattern `(?:(?!(?:stuff|to|exclude)<x>))[^/]*?)` where <x> is everything
that comes after the negative group. `!(this|that)other` --> `(?:(?!(?:this|that)other))[^/]*?)`.

We have to update the list before | in nested cases: *(!(...)|stuff). Before we close a parent
`extmatch`: `*(!(...))`. And of course on path separators (when path mode is on): `!(...)/stuff`.
Lastly we make sure all is accounted for when finishing the pattern at the end.  If there is nothing
to store, we store `$`: `(?:(?!(?:this|that)$))[^/]*?)`.
Nr   r   rM   (?#)z?:)rV  rX   rF   r-   rw   r\   _EOPr\  rS  ry   rT   _EXCLA_GROUP_CLOSErx   rG   )r  r  nestedr   contents        r7   clean_up_inverseWcParse.clean_up_inverseQ  s     ||Gq qj'..99!!)*-NNt}}4$--P?C||RWWW%--fd;QSQXQXY`Qa'..s7>/BCE  QJE qj r6   c                Z   U R                   nU R                  nU R                  nU R                  nU R                  n	SU l        US:H  U l        U(       a  SU l        Sn
UR                  nUn/ n [        U5      nUS:w  a  [        eUS:w  Ga,  [        U5      nU R                  (       a#  U[        ;   a  U R                  XU5      (       a  GOUS:X  a  U R                  X-5        GOUS:X  a]  U R                  X-5        U R                  (       a9  U R                  =(       a    U R                  (       + U l        U R!                  5         GOXUS:X  a(  UR#                  U R%                  5       [&        -   5        GO*US	:X  aL  U R(                  (       a  UR#                  U R+                  5       5        UR#                  U R,                  5        OUS
:X  aK  U R                  (       a  U R/                  X5        UR#                  U5        U(       a  U R1                  5         OUS:X  a"   UR#                  U R3                  U5      5        O_US:X  a.  UR                  n UR#                  U R7                  U5      5        O+US:w  a%  UR#                  [:        R<                  " U5      5        U R?                  5         US:w  a  GM,  US:X  aL  UR#                  U R@                  (       a  [B        O[D        RG                  SRI                  U5      5      5        GO US:X  aL  UR#                  U R@                  (       a  [J        O[L        RG                  SRI                  U5      5      5        GOUS:X  aL  UR#                  U R@                  (       a  [N        O[P        RG                  SRI                  U5      5      5        GO|US:X  aL  UR#                  U R@                  (       a  [R        O[T        RG                  SRI                  U5      5      5        GO*US:X  Ga#  U =R                  S-  sl        UR#                  U R@                  (       a  [V        O[X        RG                  SRI                  U5      5      5        U R(                  (       aW  U(       a  U R
                  (       a  U RZ                  nO^U(       a  U R                  (       d  U R\                  nO9U R^                  nO,U(       a  U R                  (       a  [`        nO[b        [`        -   nU(       a  U Rd                  U-   nUR#                  [g        U5      5        U(       a$  U R/                  X9=(       a    U R                  5        U(       d  SU l        U	(       d  SU l        U
(       a  U R!                  5         U
$ XPl         X`l        U
$ ! [4         a     GM!  [         a     GNf = f! [         a3    UR9                  UR                  U-
  5        UR#                  S5         GNSf = f! [         a)    Sn
Xl        UR9                  UR                  U-
  5         Nf = f)r  Tr   Fr   r   r   r*   r   ri   r   rK   r  z\[rM   r    r!   r   )4rs  rr  rT  rV  rU  match_dot_dirr   r  r  r
  r!  r"  r  r  rH  rR  r|  rw   r  _QMARKr\   r  r=  r  ry  r  r;   r  r#  r   rf   r  rS  _QMARK_CAPTURE_GROUP_QMARK_GROUPrx   ry   _STAR_CAPTURE_GROUP_STAR_GROUP_PLUS_CAPTURE_GROUP_PLUS_GROUP_CAPTURE_GROUP_GROUP_EXCLA_CAPTURE_GROUP_EXCLA_GROUPrd  rh  rf  r  r  rn  r-   )r  r   r  r  	reset_dottemp_dir_starttemp_after_starttemp_in_listtemp_inv_exttemp_inv_nestr$  r   r%  extendedsubindexr  s                   r7   r"  WcParse.parse_extendp  s    ++||||S!&D 	X	&QACx##s(G;;1	>d6G6Gh6W6W#X%%a2#X$$Q1''-1XX-Kdmm:K*,,.#XOOD$;$;$=$FG#X}} (E(E(GHOODHH-#X}}--hFOOA&'**,$Y (8(8(;< #X wwH/ q(9: #XOOBIIaL1%%'Y s(\ C 4,^^_a_f_fgo_pqrc!t|| 3\\]_]d]dem]nopc!t|| 3\\]_]d]dem]nopc!$,,FRRSUSZSZ[cSdefc!! 4,^^_a_f_fgo_pqr==+t/A/A#~~)$((#22#22+txx$&#>>D0D ~d34%%g/NO  DL!DM  "
  ,N/K ( ! (   ) /8!34 ./T  	&G'LHHQWWu_%	&so   /F0W7   V  W7  V7 4AW7 9JW7 
V4#W7 '	V40W7 3V44W7 79W40W7 3W44W7 70X*)X*c                z    U R                   (       am  SnSnUS;   a.  US:w  d
  US-  (       a  US-  nOUS-  n[        U5      nUS;   a  M.  UR                  S5        US:  a  US-  (       a  UR                  S5        gggSnUS:X  a  [        U5      nUS:X  a  M  UR                  S5        g! [         a     gf = f)	z=Consume any consecutive path separators as they count as one.rj   rK   )rK   ri   ri   r"   r   r   N)r  r  r#  r  )r  r  r   r   s       r7   r  WcParse.consume_path_sep  s    	  ;&Cx519

QA ;& 19HHQK "+9 3hQA 3h 		s$   AB- 2B-  B- B- -
B:9B:c                   U R                  5         [        R                  " U5      nSnU R                  (       a  [	        USU R
                  5      u  pEpgUb]  UR                  U5        U(       a"  UR                  U R                  [        -   5        UR                  U5        U R                  U5        O6Uc	  U(       a  SnO)U R                  (       a  UR                  S5      (       a  SnU R                  (       a  U(       a  [        S5      eU(       a  SU l        SU l        SU l        U(       dN  U R$                  (       a=  UR                  U R                  (       a  [&        O[(        5        UR                  S5        U GH  nUR*                  n	U R,                  (       a$  U[.        ;   a  U R1                  XUS5      (       a  GOUS:X  a  U R3                  X25        GOUS:X  a  U R5                  X25        GOUS	:X  a(  UR                  U R7                  5       [8        -   5        GOXUS:X  a  U R                  (       a\  U R;                  5         U R=                  U5        UR                  U R                  [        -   5        U R                  U5        SU l        OUR                  U R                  5        OUS
:X  aj  UR*                  n	 U R?                  U5      n
U R@                  (       a)  U R=                  U5        U R                  U5        SU l        UR                  U
5        OYUS:X  a.  UR*                  n	 UR                  U RI                  U5      5        O%UR                  [J        RL                  " U5      5        U RO                  5         GM     U R=                  U5        U R                  (       a/  UR                  [P        RS                  U R                  5      5        gg! [B         a     GMr  [D         a!    URG                  UR*                  U	-
  5         Nf = f! [D         aF    URG                  UR*                  U	-
  5        UR                  [J        RL                  " U5      5         Nf = f)zStart parsing the pattern.FTNri   z+The pattern must be a relative path patternrM   r*   r   r   rK   r  )*ru  r   r)  rW  r   r|   rw   r=  r  advancer  r\   rz   r@  
ValueErrorrJ  rL  rN  rE  _NO_WIN_ROOT_NO_ROOTr   r
  r!  r"  r  r  r  r  ry  r  r  rs  r;   r  r#  r  r   rf   r  _PATH_TRAILrx   )r  rZ   r  r  r}   rc   ra   rn   r   r   r  s              r7   rootWcParse.root  s9    	OOG$  0>wdNaNa0b-N5 u%NN488l#:;		#%%a(>!%]]w11#66!N;;>JKK"DN %DDH$--NN4+@+@<hONN2AGGE{{qI~$2C2CA'SW2X2Xc  ,c!!!-ct6686ABc==&&())'2NN488l#:;))!,%*DNNN488,d. ,,Q/E~~--g6--a0).NN5) c1NN4>>!#45
 ryy|,!!#[ ^ 	g&==NN;--dhh78 ' $ $ .HHQWWu_-. % 1HHQWWu_-NN299Q<01s,   AO$7 P$
P2'PPAQ/.Q/c                   S/nS/nU R                   (       aK  U R                  (       d  [        O[        R	                  SU5      u  pU(       a  SU l        SU l        SU l        U R
                  (       d  U R                  (       a,  U R                  nSU l        U R                  SU5        XPl        OU R                  (       az  U R                  nU R                  nU R                  nU R                  n[        U l        SU l
        SU l        SU l        U R                  SU5        XPl        X`l
        Xpl        Xl        US:X  a  SnU(       a  U R                  X5        U(       a7  U R
                  (       d"  U R                  (       d  U R                  (       a  X2-   nU R                  (       d  SOSn	SR                  U	SR!                  U5      5      n
U R"                  (       a  U
R%                  SS5      n
U
$ )	zParse pattern.rM   FTr   rK   r  z^(?s{}:{})$r  )rP  rW  	RE_ANCHORRE_WIN_ANCHORsubnrJ  rL  rN  rD  r  rH  rj  rG  _PATH_GSTAR_RTL_MATCHr|   rx   ry   rS  rT   )r  r   r  prependnumberrD  rH  gstarrG  	case_flagrZ   s              r7   _parseWcParse._parseZ  sy    $;;*.*?*?]XXY[]^_IA!&$)! >>T..}}H DMIIdG$$MXX }}H((C((E#44#8D DH DM$)D!IIdG$$MH#( $4! 9AIIa $..D$5$5%F#22C	 ''	2776?C<<oofb1Gr6   c                    [        U R                  [        5      (       a;  U R                  U R                  R	                  S5      5      R                  S5      nU$ U R                  U R                  5      nU$ )zParse pattern list.r.  )rF   rZ   rH   r  r/  r0  )r  rZ   s     r7   r   WcParse.parse  s]     dllE**kk$,,"5"5i"@AHHSG  kk$,,/Gr6   )+rr  rP  rZ  rA  r  rS  r|   rY  rs  rH  r
  rL  r   rD  rG  rT  rV  rU  rB  r  rJ  rn  rF  r@  r^  rR  r\  rj  rl  rd  rf  rh  r\   rZ   rC  rE  rN  r=  r`  rb  r   r[   rW  Nr   r2  )r4  r5  )r4  rG   )r  	list[str]r  rG   r4  rr   )r  r7  r  r  r  r3  r4  rr   )r  r7  r4  rG   r8  )r  r7  r  rr   r4  rG   )r  r7  r  r  r4  r5  )r  r  r  rr   r4  r5  )
r   rG   r  r7  r  r  r  rr   r4  rr   r6  )rZ   rG   r  r  r4  r5  )r   rG   r4  rG   )r4  r   )r0   r1   r2   r3   r4   r  ru  ry  r|  r  r  r  r  r  r  r  r  r  r  r"  r  r  r  r   r5   r.   r6   r7   r   r     sp    %4(l!!#6
2dL&P1+f\"|>{z2R9h6pr6   r   )rA   str | Sequence[str]r4  r9  )rA   bytes | Sequence[bytes]r4  zIterable[bytes])rA   AnyStr | Sequence[AnyStr]r4  r:  )NTF)
rZ   r   r[   zbool | Noner\   rr   r]   rr   r4  r   )FF)rZ   rG   r{   rr   r|   rr   r4  z"tuple[bool, str | None, bool, int])rZ   r   r[   rr   r   r3  r4  ztuple[set[AnyStr], set[AnyStr]]r  )rZ   r   r   r3  r4  rr   )rZ   r   r   r3  r4  r3  )rA   r   r   r3  r   r3  r4  r:  )rZ   r   r   rr   r   r3  r4  r   )rZ   r   r   r3  r   r3  r4  r:  )r   r3  r4  rr   )rc   rG   r   rr   r4  rG   )r   r3  r4  r3  )
rA   r  r   r3  r   r3  r   str | Sequence[str] | Noner4  ztuple[list[str], list[str]])
rA   r  r   r3  r   r3  r   bytes | Sequence[bytes] | Noner4  ztuple[list[bytes], list[bytes]])
rA   r  r   r3  r   r3  r    AnyStr | Sequence[AnyStr] | Noner4  z!tuple[list[AnyStr], list[AnyStr]])rZ   r   r   r3  r4  r:  )
rA   r  r   r3  r   r3  r   r  r4  z-tuple[list[Pattern[str]], list[Pattern[str]]])
rA   r  r   r3  r   r3  r   r  r4  z1tuple[list[Pattern[bytes]], list[Pattern[bytes]]])
rA   r  r   r3  r   r3  r   r  r4  z3tuple[list[Pattern[AnyStr]], list[Pattern[AnyStr]]])
rA   r  r   r3  r   r3  r   r  r4  zWcRegexp[str])
rA   r  r   r3  r   r3  r   r  r4  zWcRegexp[bytes])
rA   r  r   r3  r   r3  r   r  r4  zWcRegexp[AnyStr])rZ   r   r   r3  r4  zPattern[AnyStr])r4   
__future__r   r   	functoolsr   r   rM   r   r   _wcmatchr   typingr   r	   r
   r   r   r   r   r  r  PATTERN_LIMITr   Irm   ro   ru   rq   rO   rQ   	frozensetr   r   r   r   r   r   r   RE_MAGICrR   r   r   r   r   r   r  r  r  r  r   r   r   r!  r   
IGNORECASEr   r   r   r   r   r   r   r   r   r  r   rI  r   r   r   r   r   NOUNIQUErQ  r   rO  rK  r?  rM  r   r   r   r  r  r  r]  rc  re  rx   rg  ri  rk  r  r  ra  r_  r  r  r[  r  rm  ro  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r   rG   r-   r   r9   r;   r=   rB   rf   r   r   r   r   r   r   r   r   r   r   rp   r   r   r   r   r   	lru_cacher   r   r   r.   r6   r7   <module>r     s    " 	   	    O O O#ZZ ikmkokop jj!8"$$? JJFM 

8RTT2  JJ
	 	 JJ
	 	@ JJDEJJEF hi	
 cNdO
 cNdO
 cNdO 
 cNdO
 dOe
 dOe JJ"#JJ#$
 JJ9:JJ:; 
 JJ56JJ67	
 JJEFJJFG
 JJ JJ !
 JJ67JJ78
	
 JJv	

?+::rs/*%{+ +&/0	
 
						 

#  	  	
     
	
 
   

    !" #$ 
%
& '( )* +, -. /0 	1	2 34 5 
: $

 

+
 
*  !#3#:#::#FF J 7  
$ 	 !
	' & & 	 (  )2S 2	 9 #I # 
 
 
 
,/b  0-0-0- 0- (	0-f!H"JE("F		L	 
 *.	!  (	
 ! 
 
 .2	%  ,	
 % 
 04	7'77 7 .	7
 '7t 
 *.	!  (	
 3 
 
 .2	%  ,	
 7 
 04	4'44 4 .	4
 94n 
 *.	!  (	
  
 
 .2	%  ,	
  
 04	'  .	
  S-C .C{1gfo {1|{gfo {r6   