
    ViR              	         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	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JrJr  S
r\R2                  R5                  S5      r\R8                  r\R:                  =rr\R>                  =r r\RB                  =r"r!\RF                  =r$=r%r#\RL                  =r'=r(r&\RR                  =r*r)\RV                  =r,r+\RZ                  =r.r-\R^                  =r0r/\Rb                  =r2r1\Rf                  =r4r3\Rj                  =r6r5\Rn                  =r8r7\Rr                  =r:r9\Rv                  =r<r;\Rz                  =r>r=\R~                  =r@r?\R                  =rBrA\R                  =rDrC\R                  =rFrES=rGrHS=rIrJSrK\R                  rL\R                  rM\R                  rN\R                  rP\\-  \!-  \#-  \&-  \)-  \+-  \--  \/-  \1-  \3-  \5-  \7-  \9-  \;-  \=-  \?-  \A-  \C-  \E-  \L-  \M-  \N-  rQ\R                  " S5      \R                  " S5      4rS\R                  " S5      \R                  " S5      4rTS'S jrU " S S\" S/ SQ5      5      rV " S S\\   5      rW " S S\\   5      rXSSS\R                  SS.             S(S jjrZSSS\R                  SS.             S)S jjr[S\R                  SS.         S*S jjr\SSS\R                  SS.               S+S  jjr]SSS\R                  SS.               S,S! jjr^\R                  " S"5      S-S.S# jj5       r`S/S0S$ jjraSS%.S1S& jjrbg)2z6
Wild Card Match.

A custom implementation of `glob`.
    )annotationsN)
namedtuple   )_wcparse)_wcmatch)util)	IteratorIterableAnyStrGenericPatternCallableAnySequencecast)5CASE
IGNORECASERAWCHARSDOTGLOBDOTMATCHEXTGLOBEXTMATCHGLOBSTARNEGATEMINUSNEGATEBRACENOUNIQUEREALPATHFOLLOW	MATCHBASEMARK	NEGATEALLNODIRFORCEWIN	FORCEUNIX	GLOBTILDENODOTDIR
SCANDOTDIRSUPPORT_DIR_FDCIRDEGNMBPLSXKOAWUTQZSDiglobglob	globmatch
globfilterescape
raw_escapeis_magicwini   i   i   z(?:((?<=^)|(?<=/))\.(?:/|$))+s   (?:((?<=^)|(?<=/))\.(?:/|$))+z%(?:((?<=^)|(?<=[\\/]))\.(?:[\\/]|$))+s%   (?:((?<=^)|(?<=[\\/]))\.(?:[\\/]|$))+c                >   U [         -  (       a  U [        -  (       a  U [        [         -  -  n U [        -  [        -  n U [        -  (       aR  [
        R                  " 5       S:X  a"  U [         -  (       a	  U [         -  n U [        -  n U $ U [        -  (       a	  U [        -  n U $ )z!Transform flags to glob defaults.windows)r%   r$   	FLAG_MASK	_PATHNAMEr   r   platformflagss    _/home/james-whalen/.local/share/pipx/venvs/semgrep/lib/python3.13/site-packages/wcmatch/glob.py_flag_transformrP   f   s     yUX-I%% Y)+Ex==?i'y "XE
 L x!L    c                      \ rS rSrSrSrg)	_GlobPart{   z
File Glob. N)__name__
__module____qualname____firstlineno____doc____static_attributes__rU   rQ   rO   rS   rS   {   s     rQ   rS   )patternrF   is_globstardir_onlyis_drivec                  b    \ rS rSrS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	 jrS
rg)
_GlobSplit   a  
Split glob pattern on "magic" file and directories.

Glob pattern return a list of patterns broken down at the directory
boundary. Each piece will either be a literal file part or a magic part.
Each part will will contain info regarding whether they are
a directory pattern or a file pattern and whether the part
is "magic", etc.: `["pattern", is_magic, is_globstar, dir_only, is_drive]`.

Example:
-------
    `"**/this/is_literal/*magic?/@(magic|part)"`

    Would  become:

    ```
    [
        ["**", True, True, False, False],
        ["this", False, False, True, False],
        ["is_literal", False, False, True, False],
        ["*magic?", True, False, True, False],
        ["@(magic|part)", True, False, False, False]
    ]
    ```

c                   Xl         [        R                  " U5      U l        X l        [        U[        R                  -  5      U l        [        U[        -  5      U l	        [        U[        -  5      U l        [        U[        R                  -  5      U l        [        U[        -  5      U l        [        R                   " U R                   U5      (       a  U R                   SS U l         U["        -  (       a	  U["        -  nX l        [        U[$        -  5      U l        U R                  (       d  SU l        SU l        SU l        OSU l        SU l        SU l        [        R.                  " XR                  U R                  5      S   U l        g)zInitialize.r   r   T\F/N)r\   r   is_unix_styleunixrN   bool_NOABSOLUTEno_absr   globstarr    	matchbase_EXTMATCHBASEextmatchbaser&   tildeis_negativer   r   extendwin_drive_detectbslash_abortsep_get_magic_symbolsmagic_symbols)selfr\   rN   s      rO   __init___GlobSplit.__init__   s-    **51	
58#7#778UX-.ei/0 )?)?!?@%)+,
e44  <<!,DL6>VOE
58+,yy$(D! $DDH$)D! %DDH &88))TZZXYZ[rQ   c                8    U R                    H
  nX!;   d  M
    g   g)z(Check if name contains magic characters.TF)rv   )rw   namecs      rO   rF   _GlobSplit.is_magic   s!     ##Ay $ rQ   c                $   [        U5      nUS:X  a  [        U5      nUS;   a  [        U5      nUS:w  a:  US:X  a   U R                  US5        OUS:X  a  [        e[        U5      nUS:w  a  M9  gg! [        R                   a  n[        UeSnAff = f)zHandle character group.!)^-[]rd   TNre   )next_referencesr   PathNameExceptionStopIteration)rw   ir|   es       rO   	_sequence_GlobSplit._sequence   s     G8QAQA3hDy/$$Q- c##QA 3h
  11 /'Q./s   A/ /BB

Bc                    Sn[        U5      nUS:X  a,  U(       a!  U R                  (       a  [        R                  eUnU$ US:X  a  U(       a  [        R                  eUnU$  U$ )zHandle references. rd   re   )r   rs   r   r   )rw   r   sequencevaluer|   s        rO   r   _GlobSplit._references   sj     G9D--000E  #X000E  rQ   c                ^   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[        R
                  ;   a  U R                  X5      (       a  MN  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)zParse extended pattern lists.T()rd   r   F)
indexr   r   rq   r   	EXT_TYPESparse_extendr   r   rewind)rw   r|   r   successr   	list_types         rO   r   _GlobSplit.parse_extend   s"    		&QACx##s(G;;1(:(:#:t?P?PQR?V?V9((+ #XGGE2q) s(.  )  ) 2512  	&GAHHQWWu_%	&sZ   A+C< >B> C< #C 4C< >
CC< 
CC< (C96C< 8C99C< <,D,+D,c           	        U(       a  US;   a  gUS;   =(       a    U R                   nU R                  U5      nU(       a6  [        [        [           [
        R                  " XR                  5      5      nOUnU(       a,  U(       a%  US   R                  (       a  [        XeXCS5      US'   gUR                  [        XeXCS5      5        g)z8Group patterns by literals and potential magic patterns.)rQ   r   N)   ****F)rk   rF   r   r   r   r   _compilerN   r]   rS   append)rw   r   lr^   rk   magicvs          rO   store_GlobSplit.store  s     )#M);dmme$WV_h&7&7zz&JKAAae//aEBAbEHHYqUCDrQ   c           
     p	   / n/ nSn[        U R                  [        5      (       a  SnU R                  R                  S5      nOSnU R                  n[        R
                  " U5      nU R                  (       a  [        R                  " U5      u  pxpUbM  UR                  [        U(       a  UR                  S5      OUSSSS5      5        U
S-
  nUR                  U5        OUck  U(       ad  UR                  [        U(       a  SOSSSSS5      5        UR                  S	5      (       a  S
nUR                  S5        OuSnUR                  S5        OaU R                  (       dP  UR                  S	5      (       a:  UR                  [        U(       a  SOS	SSSS5      5        S
nUR                  S5        U H  nU R                  (       a,  U[        R                  ;   a  U R!                  X5      (       a  M@  US:X  aa  UR"                  nSn U R%                  U5      nU R&                  (       a  US:X  d  US	:X  a"  UR                  UR"                  S-
  S45        M  M  US	:X  a"  UR                  UR"                  S-
  S
45        M  US:X  d  M  UR"                  n U R-                  U5        M     U HI  u  pXSS-   U nU R/                  [1        [2        U(       a  UR                  S5      OU5      US5        X-   nMK     U[5        U5      :  aG  XSS-   S nU(       a9  U R/                  [1        [2        U(       a  UR                  S5      OU5      US5        [5        U5      S
:X  a6  UR                  [        U(       a  UR                  S5      OUSSSS5      5        U R6                  (       a  US
   R8                  (       a4  U R:                  (       aR  [5        U5      S:X  aC  US
   R<                  (       d/  SU l        URA                  S
[        U(       a  SOSSSSS5      5        U RB                  (       a&  U(       a  US
   R8                  (       a  [E        S5      eU$ ! [(         a#    UR+                  UR"                  U-
  5         GM  f = f! [(         a#    UR+                  UR"                  U-
  5         GM   f = f)zStart parsing the pattern.r   Tzlatin-1FNr      \rd   re   r         /r   r   r   r   z+The pattern must be a relative path pattern)#
isinstancer\   bytesdecoder   
StringIterrr   r   _get_win_driver   rS   encodeadvance
startswithrq   r   r   r   r   rs   r   r   r   r   r   r   lenrn   r_   rl   r^   rk   insertrj   
ValueError)rw   split_indexpartsstartis_bytesr\   r   root_specifieddriveslashendr|   r   r   splitoffsets                   rO   r   _GlobSplit.split#  s    dllE**Hll)))4GHllGOOG$   080G0G0P-N5 Y(u||I'>PUW\^ceikopqa		% >YudE5RVX\]^%%c**EIIaLEIIaL&&7+=+=c+B+BLL84eUDRVWXEIIaLA{{qH$6$664;L;LQ;R;RDy. ,,Q/E))etm#**AGGaK+;< AM c""AGGaK#34c.NN1%% , )MEAIe,EJJtFxELL$;USUZ\`aNE )
 3w<AIJ'E

48Y(?QVWY^`efw<1LL7>>)#<gW\^cejlqrs uQx'8'8^^E
aa8I8I DMLLIxeT4tUZ[\;;5U1X%6%6JKKE % .HHQWWu_--. % .HHQWWu_--.s%   	AQR(RR(R54R5)rs   rq   rn   rN   rk   rv   rl   rj   r\   rt   ro   rg   rr   N)r\   r   rN   intreturnNoner{   r   r   rh   )r   util.StringIterr   r   F)r   r   r   rh   r   str)r|   r   r   r   r   rh   )r   r   r   list[_GlobPart]r^   rh   r   r   )r   r   )rV   rW   rX   rY   rZ   rx   rF   r   r   r   r   r   r[   rU   rQ   rO   ra   ra      s/    6\@(*"HE"QrQ   ra   c                  B   \ rS rSrSrSSS\R                  S4             SS j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 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(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rg)-Globiw  zGlob patterns.r   Nc                &   [        U[        [        45      (       a  U/OUn[        U[        [        45      (       a  U/OUnUb  [        R                  " U5      n/ U l        / U l        [        5       U l        [        (       a  UOSU l
        [        U[        -  5      U l        [        U[        -  5      U l        [        U[         -  5      U l        U R                  (       a	  U[        -  n[        U[$        -  5      U l        U R&                  (       a	  U[$        -  n[        U[(        -  5      U l        U R*                  (       a	  U[(        -  n[        U[,        -  5      U l        U R.                  (       a	  U[,        -  nU[0        -  (       a	  U[0        -  n[3        U[4        -  5      U l        U R6                  [8        -  [        R:                  -  U l        U R"                  (       d1  U R6                  [>        -  (       d  U =R6                  [>        -  sl        [        U R6                  [@        -  5      U l!        [        U R6                  [D        -  5      U l#        [        U R6                  [8        -  5      U l$        [        U R6                  [J        -  5      (       + U l&        [        U R6                  [N        -  5      U l(        [        U R6                  [R        -  5      U l*        [        U R6                  [V        -  5      U l,        [        U R6                  [Z        -  5      U l.        [        R^                  " U R6                  5      U l0        XPl1        U R6                  [J        -  n	[        US   [        5      (       a  [d        Rf                  n
SU l4        SU l5        SU l6        SU l7        U	(       a  SOSU l8        U	(       a  SU Rp                  4OU Rp                  4U l9        [u        [v        [x           [z        U
   5      U l>        [u        [v        [x           [        R~                  U
   5      U l@        O[d        R                  n
S	U l4        S
U l5        SU l6        SU l7        U	(       a  SOSU l8        U	(       a  SU Rp                  4OU Rp                  4U l9        [u        [v        [x           [z        U
   5      U l>        [u        [v        [x           [        R~                  U
   5      U l@        Ub  [        R                  " U5      OU Rh                  n[        X(       a  [        O[        5      (       d0  [        SR                  [        US   5      [        U5      5      5      eXlG        U Rb                  U lH        U R                  U5        Ub  U R                  USS9  gg)z'Initialize the directory walker object.Nr      .)r   s   ..rQ   r   r   r   .)r   z..r   r   rd   re   z>Pattern and root_dir should be of the same type, not {} and {}Tforce_negate)Jr   r   r   r   no_negate_flagsr\   	npatternssetseenr)   dir_fdrh   r   nouniquer!   markr(   
scandotdirr"   	negateallr#   nodir_PATHLIBpathlib_RTLrP   r   rN   r   _NO_GLOBSTAR_CAPTUREnegate_flagsr'   r   	raw_charsr   follow_linksdotr$   rg   r   negater   rk   r   bracesr    rl   get_casecase_sensitivelimitr   BYTEScurrentspecialsemptystarsrt   sepsr   r   r   _RE_WIN_PATHLIB_DOT_NORMre_pathlib_normRE_WIN_NO_DIR	re_no_dirUNICODEosfspath	TypeErrorformattyperoot_dircurrent_limit_parse_patterns)rw   r\   rN   r   r   r   excludepatsepatsforcewinptypetemps               rO   rx   Glob.__init__z  s    'we==y7'#u>>	G,,U3EE	 .fDUX-.&	uz1299TMEei/0>>YE%%-(
::UNEEH,-<<XE4<TME$UX%56
 JJ1H4Q4QQtzzH'<JJ("Jdjj834 f!45

X-.TZZ(233	4::./TZZ(234::-.djj945&//

;
::(d1gu%%JJEDL)DMDJDJ (udDH,4txx(488+DI#'9QRW9X#YD !'&/83I3I%3PQDNLLEDL'DMDJDJ'tSDH+3dhh$((DI#'9QRW9X#YD !'&/83I3I%3PQDN&.&:ryy"$C88PWWaM4:  !ZZT"  T : rQ   c              #    #    [        5       n SnU GHo  n[        R                  " XPR                  (       + U R                  5      nSn[
        R                  " XPR                  U R                  5       H  nUS-  nUS-  nSU R                  s=:  a  U:  a2  O  O/[
        R                  " SR                  U R                  5      5      eU=(       d     [
        R                  " XpR                  5      nU R                  (       a  U(       a  Xs;   a  M  UR                  U5        X(       a  U(       d  USS OU4v   M     U R                  (       d  GM@  U =R                  U-  sl        U R                  S:  d  GMh  SU l        GMr     g! [        R                    a5  n	[
        R                  " SR                  U R                  5      5      U	eSn	A	ff = f7f)zIterate expanded patterns.r   r   z(Pattern limit exceeded the limit of {:d}N)r   r   norm_patternrg   r   r   expandrN   r   r   PatternLimitExceptionr   rp   r   addbracexExpansionLimitException)
rw   patternsr   r   totalpcountexpandedis_negr   s
             rO   _iter_patternsGlob._iter_patterns  sm     u	E%%aYYG (::t?Q?Q RHQJEQJE4::--&<<FMMdjjY  *WX-A-A(JJ-WF==F#+$* &(12,S[[[! !S" :::&&%/&))A--.*/ 0 -- 	00:AA$**M	s5   GD?F #F :F GG0GGGc           
        U R                  XS9 H  u  p4U(       aP  U R                  R                  [        [        [
           [        R                  " X@R                  5      5      5        M\  U R                  R                  [        X@R                  5      R                  5       5        M     U R                  (       dq  U R                  (       a`  U R                  (       aO  U R                  nU R                  R                  [        XPR                  [        -  5      R                  5       5        U R                   (       a,  U(       d%  U R                  R                  U R"                  5        U(       dp  [%        U R                  5      S::  aV  U R                  [&        -  (       d=  U R(                  (       d+  U R*                  (       a  U R,                  (       d  SU l        gggggg)zParse patterns.r   r   TN)r  r   r   r   r   r   r   r   r   r\   ra   rN   r   r   r   r   r   r   r   r'   r   r   r   )rw   r  r   r  r	  defaults         rO   r   Glob._parse_patterns  s3    ,,X,QIF %%d76?H<M<MaQbQb<c&de##Jq**$=$C$C$EF R ||~~**##Jw

X8M$N$T$T$VW::lNN!!$..1
 "

X%$// DM #2  & # rQ   c                \    U R                   (       + =(       a    USS U R                  S   :H  $ )zCheck if is file hidden.r   r   )r   r   rw   r{   s     rO   
_is_hiddenGlob._is_hidden  s)     88|=Qq	T]]1-= ==rQ   c                N    XR                   S   :H  =(       d    XR                  :H  $ )zCheck if "this" directory `.`.r   )r   rt   r  s     rO   _is_thisGlob._is_this  s"     }}Q'';488+;;rQ   c                $    XR                   S   :H  $ )zCheck if `..`.r   )r   r  s     rO   
_is_parentGlob._is_parent   s     }}Q'''rQ   c                    U(       a.  UR                  U R                  5      (       d  XR                  -  nSnU R                   H  nUR                  U5      (       d  M  Sn  U$    U$ )z!Check if file should be excluded.FT)endswithrt   r   	fullmatch)rw   filenameis_dirmatchedr\   s        rO   _match_excludedGlob._match_excluded%  s_     (++DHH55 H~~G  ** &
 rQ   c                \    [        U R                  =(       a    U R                  X5      5      $ )zCheck if file is excluded.)rh   r   r"  )rw   pathr   s      rO   _is_excludedGlob._is_excluded3  s#     DNNIt';';D'IJJrQ   c                R    U R                   (       d  UR                  5       U:H  $ X:H  $ )zMatch two names.)r   lower)rw   abs      rO   _match_literalGlob._match_literal8  s#     &*%8%8qwwyA~DafDrQ   c                    Uc  SnU$ [        U[        [        45      (       aE  U R                  (       d  UR	                  5       nOUn[
        R                  " U R                  US9nU$ UR                  nU$ )zGet deep match.N)r+  )	r   r   r   r   r)  	functoolspartialr,  match)rw   targetmatcherr1  s       rO   _get_matcherGlob._get_matcher=  sp     >G  e--&&''(;(;uEG  llGrQ   c                   U R                   (       d.  [        R                  R                  U R	                  U5      5      $  [        R
                  " U R	                  U5      U R                   S9  g! [        [        4 a     gf = f)zCheck if file exists.r   TF)r   r   r%  lexistsprepend_baselstatOSErrorr   rw   r%  s     rO   _lexistsGlob._lexistsN  si     {{77??4#4#4T#:;;	HHT&&t,T[[A  $ 		s   .A0 0BBc                |    U R                   (       a  U$ [        R                  R                  U R                  U5      $ )z-Join path to base if pattern is not absolute.)is_abs_patternr   r%  joinr   r<  s     rO   r9  Glob.prepend_baseZ  s+     K77<<t44rQ   c              #    #     SnU R                   (       a
  U(       a  UnOU R                  bk  [        R                  " U(       a*  [        R                  R                  U R                  U5      OU R                  [        R                  U R                  S9=pEO=U(       a*  [        R                  R                  U R                  U5      OU R                  nU R                   H  nUSSS4v   M      [        R                  " U5       nU Hj  n U R                  UR                  5      n	UR                  5       n
U
(       a  UR                  5       nOSnU(       a  U
(       a  UR                  XU4v   Mj  Ml     SSS5        Ub  [        R                   " U5        gg! [         a     M  f = f! , (       d  f       N:= f! Ub  [        R                   " U5        f f = f! [         a     gf = f7f)zIterate the directory.Nr7  TF)r@  r   r   openr%  rA  r   r   	DIR_FLAGSr   scandirr  r{   r   
is_symlinkr;  close)rw   curdirr^   deepfdrF  specialscanfhiddenr   is_links               rO   _iter
Glob._iterb  s    %	B""v (!ww;ABGGLL7t}}&&;;  W BH"'',,t}}f=T]]  ==tT500 )!ZZ(D!!%)__QVV%<F%&XXZF%*+,,. +0$,&'fffg&E E 17 " ) >HHRL "  ' ! ! )( >HHRL "  		s~   G-C-G 2F> F-A$F3F-9F> G G-
F*&F-)F**F--
F;7F> >GG 
G*'G-)G**G-c              #  6  #    [        U R                  XU5      5      nU H  u  pgpX`R                  ;   a5  Ub0  U" U5      (       a#  [        R                  R                  X5      S4v   MJ  [        R                  R                  X5      n
U	(       + =(       d    U R                  nUc  U(       d  U(       d  U(       a  U(       a  U" U5      (       a  X4v   U(       d  M  U(       a  M  U(       d  M  U(       d  M  U R                  XX45       Sh  vN   M     g N	7f)zRecursive directory glob.NT)listrQ  r   r   r%  rA  r   	_glob_dir)rw   rI  r3  r^   rJ  filesfiler   rO  rP  r%  follows               rO   rU  Glob._glob_dir  s      TZZ$78-2)D&}}$&74=='',,v4d::77<<-D [5D$5$5FF$WY`aeYfYfl"tFFvv&&>>$HHH .3 Is*   CDD&D/D8DD
Dc              #    #    UR                   nUR                  nUR                  nUR                  nU(       a  U(       a  U(       a  UR	                  S5      OSnUSL n	U(       a  UR                  nUR                  nU	(       a  SnU(       a  UR	                  S5      OSnU R                  U5      n
U	(       a4  U(       a-  [        R                  R                  XR                  5      S4v   U R                  XUSS9 H0  u  pU(       a  U R                  XUSS 5       Sh  vN   M+  X4v   M2     gU(       d+  U R                  U5      n
U R                  X5       Sh  vN   gU(       a  UR	                  S5      OSnU R                  U5      n
U R                  XS5       H0  u  pU(       a  U R                  XUSS 5       Sh  vN   M+  X4v   M2     g N Ny N7f)z
Handle glob flow.

There are really only a couple of cases:

- File name.
- File name pattern (magic).
- Directory.
- Directory name pattern (magic).
- Extra slashes `////`.
- `globstar` `**`.
r   NT)rJ  )rF   r^   r\   r]   popr4  r   r%  rA  r   rU  _glob)rw   rI  partrestrF   r^   r2  r]   thisglobstar_endr3  r%  r   s                rO   r\  
Glob._glob  s     ====&&
 #'488A;DD4<L==
 #'488A;DD
 ''/G ggll6::6<< !%vt T#zz$d1g>>>,&	 !U ''/G~~f666
 #'488A;DD''/G $v E#zz$d1g>>>,&	 !F ? 7 ?s7   D G"G#<GG A&GGGGGc                n   U R                   (       d  U R                  U5      (       d  U R                  U5      (       dr  / nU R                  U5      n[	        U R                  SUS5      5      nU H;  u  pgpX`R                  ;  d  M  Ub  U" U5      (       d  M)  UR                  Xg45        M=     U$ US4/nU$ )z
Get the starting location.

For case sensitive paths, we have to "glob" for
it first as Python doesn't like for its users to
think about case. By scanning for it, we can get
the actual casing and then compare.
NFT)r@  r  r  r4  rT  rQ  r   r   )
rw   rI  r^   resultsr3  rV  rW  r   _hidden_is_links
             rO   _get_starting_pathsGlob._get_starting_paths  s     ""4??6+B+B4==Y_K`K`G''/GD(E:;E38/g}},'/WT]]NND>2 49
  ~&GrQ   c                    U R                   (       a  gSnU R                  (       d  UR                  5       OUU R                  ;  a  U R                  R	                  U5        SnU$ )zTest if path is unique.TF)r   r   r)  r   r  )rw   r%  uniques      rO   	is_uniqueGlob.is_unique  sI     == $ 3 3DJJLdiiOIIMM$FrQ   c                    U R                   R                  U R                  U5      n[        U5      S:  a  USS U R                  ;   a  USS $ U$ )z!Normalize path as `pathlib` does.r   r   N)r   subr   r   r   r<  s     rO   _pathlib_normGlob._pathlib_norm  sL     ##''

D9IMd23i499.DtCRyN$NrQ   c              #    #    U(       d  U R                   (       a0  U(       a)  [        R                  R                  XR                  5      OUnU R                  U R                  (       a  U R                  U5      OU5      (       a  Uv   gg7f)zFormat path.N)r   r   r%  rA  r   rj  r   rn  )rw   r%  r   r^   s       rO   format_pathGlob.format_path  sW      2:diiFrww||D**-Y]>>dll$,,T2MMJ Ns   B	Bc              #    #    U R                    GHY  nU R                  nU(       a  US   R                  OSnU(       a  US   R                  OSU l        U(       d  MN  US   R
                  (       Gdx  US   nUS   nU(       a6  U R                  (       a'  U R                  U R                  U5      5      (       d  M  U R                  X#5      nU(       d  M  UR                  (       a  U H  u  pgUSS nU(       a`  UR                  S5      nU R                  XdU5       H7  u  pU R                  X5      (       a  M  U R                  XU5       Sh  vN   M9     Mq  U R                  Xg5      (       a  M  U R                  XgU5       Sh  vN   M     GM  U HO  u  pU R                  U	5      (       d  M  U R                  X5      (       a  M5  U R                  XU5       Sh  vN   MQ     GM  USS nUR                  S5      nU R                  X R                  :X  d  UOU R                  XH5       H7  u  pU R                  X5      (       a  M  U R                  XU5       Sh  vN   M9     GM\     g GN  N N N7f)zStarts off the glob iterator.r   Fr   r   N)r\   r   r^   r_   r@  rF   r=  r9  rf  r[  r\  r&  rq  r   )
rw   r\   rI  r^   r_  rc  r   r   r^  r1  s
             rO   rA   	Glob.glob  s     ||G\\F 07wr{++EH9@'!*"5"5eDwqz*** #1:D!!WF "d&9&9$--PTPaPabhPiBjBj 
 #66vHG" }}-4ME#*12;D#'+xx{59ZZT5RME+/+<+<U+K+K373C3CES[3\(\(\ 6S &*%6%6u%E%E+/+;+;E8+T T T .5 .5ME#}}U33D<M<Me<\<\+/+;+;E8+T T T .5
 #1:D88A;D)-&LLBXF^b^h^hjn)u#00??'+'7'7x'PPP *v[ $B )] T
 !U Qsn   AI7CI79I7I.
I71I7I1&I71I7	I7I3A'I7
I7I5 I71I73I75I7)!r   r   r   r   r   r   r   rN   r   rk   r@  r   r   rl   r   r   r   r   r   r   r   r\   r   r   r   r   r   r   rt   r   r   r   rg   )r\   AnyStr | Sequence[AnyStr]rN   r   r   #AnyStr | os.PathLike[AnyStr] | Noner   
int | Noner   r   r    AnyStr | Sequence[AnyStr] | Noner   r   r   )r  Sequence[AnyStr]r   rh   r   zIterator[tuple[bool, AnyStr]])r  ry  r   rh   r   r   r   )r  r   r   rh   r   rh   )r%  r   r   rh   r   rh   N)r*  r   r+  AnyStr | Noner   rh   )r2  zAnyStr | Pattern[AnyStr] | Noner   Callable[..., Any] | None)r%  r   r   rh   )r%  r   r   r   )rI  r{  r^   rh   rJ  rh   r   z)Iterator[tuple[AnyStr, bool, bool, bool]])FF)
rI  r   r3  r|  r^   rh   rJ  rh   r   Iterator[tuple[AnyStr, bool]])rI  r   r]  rS   r^  r   r   r}  )rI  r   r^   rh   r   zlist[tuple[AnyStr, bool]])r%  r   r   rh   r^   rh   r   Iterator[AnyStr])r   r~  )rV   rW   rX   rY   rZ   r   PATTERN_LIMITrx   r  r   r  r  r  r"  r&  r,  r4  r=  r9  rQ  rU  r\  rf  rj  rn  rq  rA   r[   rU   rQ   rO   r   r   w  s   
 8<!++48X;*X; X; 6	X;
 X; X; 2X; 
X;t!F!>>
<
(
K
E
"
5(\ II +I 	I
 I 
'I0I'V*
O2QrQ   r   rN   r   r   r   r   c             #     #    [        U [        [        45      (       d  U (       d  g[        XX#XE5      R	                  5        Sh  vN   g N7f)Glob.N)r   r   r   r   rA   r  rN   r   r   r   r   s         rO   r@   r@   R  s8      he--hHXuFKKMMMs   AAA
Ac               *    [        [        XX#XES95      $ )r  r  )rT  r@   r  s         rO   rA   rA   c  s     hhUZlmmrQ   )rN   r   r   c               F    [        U5      n[        R                  " XX#5      $ )zTranslate glob pattern.)rP   r   	translate)r  rN   r   r   s       rO   r  r  q  s!     E"Ehu>>rQ   c                   U(       d  gUb  [         R                  " U5      OUn[        U5      n[         R                  " U 5      n[        [        R
                  " XXV5      R                  XU5      5      $ )z
Check if filename matches pattern.

By default case sensitivity is determined by the file system,
but if `case_sensitive` is set, respect that instead.
F)r   r   rP   rh   r   compiler1  )	r  r  rN   r   r   r   r   rdirfnames	            rO   rB   rB   ~  s]    $ "*"6299XHDE"EIIhE  %AGGU[\]]rQ   c               (   U(       d  / $ Ub  [         R                  " U5      OUn/ n[        U5      n[        R                  " XXV5      n	U  HC  n
[         R                  " U
5      nU	R                  XU5      (       d  M2  UR                  U
5        ME     U$ )zFilter names using pattern.)r   r   rP   r   r  r1  r   )	filenamesr  rN   r   r   r   r   r  matchesobjr  r   s               rO   rC   rC     s~     	"*"6299XHDGE"E


8E
;Cyy"99T((NN8$  NrQ   z%This function will be removed in 9.0.c                ^    [         R                  " [        R                  " U SUS5      USSS9$ )z5Apply raw character transform before applying escape.FT)rg   pathnameraw)r   rD   r   r  )r\   rg   r   s      rO   rE   rE     s1     ??'5)T:PTZ^ rQ   c                *    [         R                  " XS9$ )zEscape.)rg   )r   rD   )r\   rg   s     rO   rD   rD     s     ??7..rQ   rM   c               D    [        U5      n[        R                  " X5      $ )z+Check if the pattern is likely to be magic.)rP   r   rF   )r\   rN   s     rO   rF   rF     s     E"EW,,rQ   )rN   r   r   r   )r  ru  rN   r   r   rv  r   rw  r   r   r   rx  r   r~  )r  ru  rN   r   r   rv  r   rw  r   r   r   rx  r   zlist[AnyStr])
r  ru  rN   r   r   r   r   rx  r   z!tuple[list[AnyStr], list[AnyStr]])r  zAnyStr | os.PathLike[AnyStr]r  ru  rN   r   r   rv  r   rw  r   r   r   rx  r   rh   )r  z&Iterable[AnyStr | os.PathLike[AnyStr]]r  ru  rN   r   r   rv  r   rw  r   r   r   rx  r   z"list[AnyStr | os.PathLike[AnyStr]])NT)r\   r   rg   bool | Noner   rh   r   r   rz  )r\   r   rg   r  r   r   )r\   r   rN   r   r   rh   )crZ   
__future__r   r   sysrer/  collectionsr   r  r   r   r   r   typingr	   r
   r   r   r   r   r   r   r   __all__rL   r   WINr)   r   r*   r   r+   r   r,   r   r-   r   r   r.   r   r   r/   r   r0   r   r1   r   r2   r   r3   r   r4   SPLITr5   r    r6   r#   r8   r"   r9   r$   r:   r%   r;   r&   r<   r   r=   r'   r>   r7   r!   r?   r(   r   rm   r   ri   PATHNAMErK   rJ   r  _RE_PATHLIB_DOT_NORMr   rP   rS   ra   r   r  r@   rA   r  rB   rC   
deprecatedrE   rD   rF   rU   rQ   rO   <module>r     sl  
 # 	 
 	  "     ^ ^ ^ 
lle$((== D$$ $J    H!** * *Gh!** * *Gh    H__ F&& &KNN E    H__ FNN E"" "INN E"" "I    H"" "I"" "I    H    H D Z &&}}""	 	  	
    

 	 
 

  

    !" #$ %& '( )* 	+	, - 
6 JJ/0JJ01  JJ78JJ89 *{Z[s slXQ76? XQ| 48''04N'N N 2	N
 N N .N N( 48''04n'n n 2	n
 n n .n n" ''04
?'
? 
? 	
?
 .
? '
?" 48''04^*^'^ 	^
 2^ ^ ^ .^ 
^@ 48''045' 	
 2   . (: 89 :/ /0 - -rQ   