+
    B*j#Q                     "   R t ^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RI	t	. R(Ot
RRRRRRRR/R ltRRRRRRRR/R ltR)R	 ltR)R
 ltR)R ltRtR tR tR)R ltR tR tR)R ltR tR tR t]P4                  ! R4      t]P4                  ! R4      tR tR tR tR t R*t!]PD                  ]#! ]R^ 4      ,          t$]%! 4       t&RRRRRR/R lt']PP                  ! RR 7      R+R! l4       t) ! R" R#4      t* ! R$ R%]*4      t+ ! R& R']*4      t,R# ),zFilename globbing utility.Nroot_dirdir_fd	recursiveFinclude_hiddenc          
     0    \        \        WW#VR7      4      # )a  Return a list of paths matching a `pathname` pattern.

The pattern may contain simple shell-style wildcards a la
fnmatch. Unlike fnmatch, filenames starting with a
dot are special cases that are not matched by '*' and '?'
patterns by default.

The order of the returned list is undefined. Sort it if you need a
particular order.

If `root_dir` is not None, it should be a path-like object specifying
the root directory for searching.  It has the same effect as changing
the current directory before calling it (without actually changing it).
If pathname is relative, the result will contain paths relative to
`root_dir`.

If `dir_fd` is not None, it should be a file descriptor referring to a
directory, and paths will then be relative to that directory.

If `include_hidden` is true, the patterns '*', '?', '**'  will match
hidden directories.

If `recursive` is true, the pattern '**' will match any files and
zero or more directories and subdirectories.
)r   r   r   r   )listiglob)pathnamer   r   r   r   s   &$$$$!/usr/local/lib/python3.14/glob.pyglobr      s    6 h&%35 6 6    c          	        \         P                  ! RW4       \         P                  ! RWW4       Ve   \        P                  ! V4      pM	V R,          p\	        WW#RVR7      pV '       d!   V'       dG   \        V R,          4      '       d/    \        V4      pV'       d   \        P                  ! V3V4      pV# V#   \         d     T# i ; i)a  Return an iterator which yields the paths matching a `pathname` pattern.

The pattern may contain simple shell-style wildcards a la
fnmatch. However, unlike fnmatch, filenames starting with a
dot are special cases that are not matched by '*' and '?'
patterns.

The order of the returned paths is undefined. Sort them if you need a
particular order.

If `root_dir` is not None, it should be a path-like object specifying
the root directory for searching.  It has the same effect as changing
the current directory before calling it (without actually changing it).
If pathname is relative, the result will contain paths relative to
`root_dir`.

If `dir_fd` is not None, it should be a file descriptor referring to a
directory, and paths will then be relative to that directory.

If `include_hidden` is true, the patterns '*', '?', '**'  will match
hidden directories.

If `recursive` is true, the pattern '**' will match any files and
zero or more directories and subdirectories.
z	glob.globzglob.glob/2N    NFr   :N   N)
sysauditosfspath_iglob_isrecursivenext	itertoolschainStopIteration)r	   r   r   r   r   itss   &$$$$  r
   r   r   .   s    6 IIk8/IImX(C99X&B<	Fu-
/By\(2,%?%?	RA__aT2. I2I  	I	s   +B; ;C
	C
c           	   #      "   \         P                  P                  V 4      w  rg\        V 4      '       gU   V'       d   Q hV'       d"   \	        \        W4      V4      '       d   V x  R # \        \        W4      V4      '       d   V x  R # V'       gJ   V'       d*   \        V4      '       d   \        WW$VR7       R j  xL
  R # \        WW$VR7       R j  xL
  R # W`8w  d"   \        V4      '       d   \        WaW#RVR7      pMV.p\        V4      '       d(   V'       d   \        V4      '       d   \        p	M\        p	M\        p	V F@  pV	! \        W4      WrVVR7       F$  p
\         P                  P                  Wj4      x  K&  	  KB  	  R #  L L5i)Nr   T)r   pathsplit	has_magic_lexists_join_isdirr   _glob2_glob1r   _glob0join)r	   r   r   r   dironlyr   dirnamebasenamedirsglob_in_dirnames   &&&&&&     r
   r   r   Z   sM    h/GX{h16::
 	 eH.77h//h&,:< < <
 	 h&-;= = = y11gD%35 yh// K Kh 8(G.<>D'',,w--> +<=sC   :F	FA	FF"F;F
<FFAFA.FFc                     \        WV4      pV'       g   \        V4      '       g
   R  V 4       p\        P                  ! WQ4      # )c              3   L   "   T F  p\        V4      '       d   K  Vx  K  	  R # 5iN)	_ishidden).0xs   & r
   	<genexpr>_glob1.<locals>.<genexpr>   s     6Eq1Es   $
$)_listdirr2   fnmatchfilter)r*   patternr   r)   r   namess   &&&&& r
   r&   r&      s4    Wg.Ei006E6>>%))r   c                     V'       d"   \        \        W4      V4      '       d   V.#  . # \        W4      '       d   V.# . # r1   )r"   r#   r$   )r*   r+   r   r)   r   s   &&&&&r
   r'   r'      sE    E',f55: 6 I '"":Ir   z{name} is deprecated and will be removed in Python {remove}. Use glob.glob and pass a directory to its root_dir argument instead.c                 T    ^ RI pVP                  R\        RR7       \        WRR4      # )r   Nz
glob.glob0removeF      )warnings_deprecated_deprecated_function_messager'   r*   r:   rC   s   && r
   glob0rG      *    'CGT'D%00r   c                 T    ^ RI pVP                  R\        RR7       \        WRR4      # )r   Nz
glob.glob1r>   Fr@   )rC   rD   rE   r&   rF   s   && r
   glob1rJ      rH   r   c              #      "   \        V4      '       g   Q hV '       d   \        W4      '       d   VR ,          x  \        WVVR7       Rj  xL
  R#  L5i)r   r   N)r   r$   	_rlistdir)r*   r:   r   r)   r   s   &&&&&r
   r%   r%      sF         fW--bk'(68 8 8s   A-AAAc              #   2  "    R pR pVeQ   V '       d    \         P                  ! V \        VR7      ;r5MTp\        V \        4      '       d   \         P
                  pMLV '       d   T pMA\        V \        4      '       d   \	        \         P                  R4      pM\         P                  p \         P                  ! V4      ;_uu_ 4       pV FL  p V'       d   VP                  4       '       d+   Ve   V! VP                  4      x  K<  VP                  x  KL  KN  	  R R R 4       Ve   \         P                  ! V4       R # R #   \         d     K  i ; i  + '       g   i     L@; i  Te   \         P                  ! T4       i i ; i  \         d     R # i ; i5i)Nr   ASCII)r   open_dir_open_flags
isinstancebytesfsencodecurdirscandiris_dirr.   OSErrorclose)r*   r   r)   fdrT   argr   entrys   &&&     r
   _iterdirr]      s2    777OFKKS'5));;C''		7+C))C	CBE&%,,..'3&.uzz&: :&+jj 0	 +9   ! ~  #  ! ~  s   FF AF $AF )E% EE ,E EE EE% "F <F E	EE	EE"	E% %FF FFFFc                     \         P                  ! \        WV4      4      ;_uu_ 4       p\        V4      uuR R R 4       #   + '       g   i     R # ; ir1   )
contextlibclosingr]   r   )r*   r   r)   r   s   &&& r
   r7   r7      s3    			HWg>	?	?2Bx 
@	?	?	?s	   ?A	c              #      "   \        WV4      pV FY  pV'       g   \        V4      '       d   K  Vx  V '       d   \        W4      MTp\        WaVVR 7       F  p\        WW4      x  K  	  K[  	  R# 5i)r   N)r7   r2   r#   rL   )r*   r   r)   r   r;   r4   r   ys   &&&&    r
   rL   rL      sY     Wg.E1G(/5$QDtW.<>Ak!>	 s   (A0A05A0c                     Vf    \         P                  P                  V 4      #  \         P                  ! WR7       R#   \        \
        3 d     R# i ; i)NrN   TF)r   r   lexistslstatrX   
ValueError)r	   r   s   &&r
   r"   r"      sI    ~wwx((
)  Z  s   > AAc                     Vf    \         P                  P                  V 4      #  \         P                  ! WR7      p\        P                  ! VP
                  4      #   \        \        3 d     R# i ; i)NrN   F)r   r   isdirstatS_ISDIRst_moderX   rf   )r	   r   sts   && r
   r$   r$      s[    ~ww}}X&&(WWX- ||BJJ'' Z  s   A A10A1c                 x    V '       d	   V'       g   T ;'       g    T# \         P                  P                  W4      # r1   )r   r   r(   )r*   r+   s   &&r
   r#   r#      s(    (""("77<<**r   z([*?[])s   ([*?[])c                     \        V \        4      '       d   \        P                  V 4      pVR J# \        P                  V 4      pVR J# r1   )rR   rS   magic_check_bytessearchmagic_check)r   matchs   & r
   r!   r!     sI    !U!((+  ""1%r   c                     V ^ ,          R9   # )r   )..    r   s   &r
   r2   r2     s    7n$$r   c                 B    \        V \        4      '       d   V R 8H  # V R8H  # )s   ****)rR   rS   )r:   s   &r
   r   r     s$    '5!!%$r   c                    \         P                  P                  V 4      w  r\        V \        4      '       d   \
        P                  RV 4      p W,           # \        P                  RV 4      p W,           # )z#Escape all special characters.
    s   [\1]z[\1])r   r   
splitdriverR   rS   ro   subrq   )r	   drives   & r
   escaper~     s_    
 gg((2OE(E""$((8<  ??7H5r   O_DIRECTORYsepsc               p   V'       gp   \         P                  P                  '       d6   \         P                  P                  \         P                  P                  3pM\         P                  P                  pRP	                  \        \        P                  V4      4      p\        V4      ^8  d   RV R2MTpRV R2pV'       d   V R2pV V 2pRV R2p	Rp
MRV R	V R
2pV V 2pRV R2p	V	 RV R2p
. p\        P                  ! WP4      p\        V4      ^,
          p\        V4       F  w  rVR
8X  d   TP                  W8  d   TMT4       K'  V'       dJ   VR8X  dC   W8  d*   W^,           ,          R8w  d   VP                  V	4       Kc  Ke  VP                  V
4       Kx  V'       dX   V'       g    V^ ,          R9   d   VP                  R4       VP                  \        P                  ! W R
2V4      ^ ,          4       W8  g   K  VP                  V4       K  	  RP	                  V4      pRV R2# )a  Translate a pathname with shell wildcards to a regular expression.

If `recursive` is true, the pattern segment '**' will match any number
of path segments.

If `include_hidden` is true, wildcards can match path segments beginning
with a dot ('.').

If a sequence of separator characters is given to `seps`, they will be
used to split the pattern into segments and match path separators.  If
not given, os.path.sep and os.path.altsep (where available) are used.
 []z[^+z(?:.+z)?z.*z.]*z(?:z)*ry   z*?z(?!\.)z(?s:z)\z)r   r   altsepsepr(   maprer~   lenr    	enumerateappendextendr8   
_translate)patr   r   r   escaped_sepsany_sepnot_sepone_last_segmentone_segmentany_segmentsany_last_segmentsresultspartslast_part_idxidxpartress   &$$$             r
   	translater   &  s    77>>>GGKK0D77;;D773ryy$/0L%(Y],q!G<."G%Ya=)*7)4wir* ~Ry:)*7)4[M,+nC0@/ADGHHW"EJNMu%	3;NN#*=;CST44<"q>T)NN<0 * 01%$q'T/NN9-w11$)1wOPQRS"w' &  '''
C3%sr   i   )maxsizec                    V'       d   \         P                  M\         P                  p\        WRVR7      p\         P                  ! WTR7      P
                  # )zOCompile given glob pattern to a re.Pattern object (observing case
sensitivity).T)r   r   r   )flags)r   NOFLAG
IGNORECASEr   compilerr   )r   r   case_sensitiver   r   regexs   &&&&  r
   _compile_patternr   ]  s8     (BIIR]]Ect$OE::e)///r   c                      a  ] tR tRt o RtRR lt]R 4       t]R 4       t]R 4       t	RR lt
R	 tR
 tR tR tR tRR ltRtV tR# )_GlobberBaseif  zHAbstract class providing shell-style pattern matching and globbing.
    c                6    Wn         W n        W0n        W@n        R # r1   )r   r   case_pedanticr   )selfr   r   r   r   s   &&&&&r
   __init___GlobberBase.__init__j  s    ,*"r   c                    \         h)z&Implements os.path.lexists().
        NotImplementedErrorrw   s   &r
   rd   _GlobberBase.lexistsr  
     "!r   c                    \         h)zELike os.scandir(), but generates (entry, name, path) tuples.
        r   rw   s   &r
   rV   _GlobberBase.scandirx  r   r   c                    \         h)z'Implements path concatenation.
        r   r   texts   &&r
   concat_path_GlobberBase.concat_path~  r   r   Nc                    V'       d   V P                   V3MV P                   p\        WV P                  V P                  4      # r1   )r   r   r   r   )r   r   r   r   s   &&& r
   r   _GlobberBase.compile  s1    %+&!4+>+>OOr   c                Z   V'       g   V P                   # VP                  4       pV P                  '       d   VR8X  d   V P                  pMZV\        9   d   V P
                  pMBV P                  '       g%   \        P                  V4      f   V P                  pMV P                  pV! W!4      # )zReturns a function that selects from a given path, walking and
filtering according to the glob-style pattern parts in *parts*.
ry   )select_existspopr   recursive_selector_special_partsspecial_selectorr   rq   rp   literal_selectorwildcard_selector)r   r   r   selectors   &&  r
   r   _GlobberBase.selector  s     %%%yy{>>>ddl..H^#,,H###(:(:4(@(H,,H--H$$r   c                x   a aa V'       d   SS P                   ,          oS P                  V4      oRVVV 3R llpV# )zLReturns a function that selects special children of the given path.
        c                 8   < SP                  V S4      p S! W4      # r1   r   r   existsr   select_nextr   s   &&r
   select_special5_GlobberBase.special_selector.<locals>.select_special  s     ##D$/Dt,,r   F)r   r   )r   r   r   r   r   s   ff& @r
   r   _GlobberBase.special_selector  s6     DHHDmmE*	- 	- r   c                  a aa V'       dI   \         P                  VR,          4      f+   SS P                  VP                  4       ,           ,          oKP  V'       d   SS P                  ,          oS P	                  V4      oRVVV 3R llpV# )zHReturns a function that selects a literal descendant of a path.
        c                 <   < SP                  V S4      p S! V R R7      # )Fr   r   r   s   &&r
   select_literal5_GlobberBase.literal_selector.<locals>.select_literal  s"    ##D$/DtE22r   r   )rq   rp   r   r   r   )r   r   r   r   r   s   ff& @r
   r   _GlobberBase.literal_selector  sf     **595=DHHuyy{**DDHHDmmE*	3 	3 r   c                   a aaa VR8X  d   RMS P                  V4      o\        V4      oS'       d   S P                  V4      oRVVVV 3R llpV# )zWReturns a function that selects direct children of a given path,
filtering by pattern.
r   Nc              3   l  <"    S	P                  V 4      pV Fp  w  r4pSe   S! V4      '       g   K  S'       dK    VP                  4       '       g   K;   S	P                  TS	P                  4      pS! TRR7       R j  xL
  Kl  Vx  Kr  	  R #   \         d     K  i ; i L"  \         d     R # i ; i5i)NTr   )rV   rW   rX   r   r   )
r   r   entriesr\   
entry_name
entry_pathdir_onlyrr   r   r   s
   &&    r
   select_wildcard7_GlobberBase.wildcard_selector.<locals>.select_wildcard  s     -,,t, 6=1Ez}j(9(9#)',||~~$, (6 *.)9)9*dhh)OJ'2:d'KKK",, 6= $+ ) () L  s[   B4B" B4B4B,B4=B >B4BB4BB4"B1-B40B11B4r   )r   boolr   )r   r   r   r   r   rr   r   s   f&& @@@r
   r   _GlobberBase.wildcard_selector  sG    
 d);;--.K	- 	-$ r   c                  a aaaaa V'       d!   VR,          R8X  d   VP                  4        K(  S P                  \        JoS'       dE   V'       d=   VR,          \        9  d+   VS P                  VP                  4       ,           ,          pKD  VR8X  d   RMS P                  V4      o\        V4      oS P                  V4      oRVVV3R llpVVVVV 3R loV# )zfReturns a function that selects a given path and all its children,
recursively, filtering by pattern.
ry   Nc              3      <"   \        \        V 4      4      pSe   S! \        V 4      V4      '       d   S! W4       R j  xL
  V .pV'       d   S! W24       R j  xL
  K  R #  L# L
5ir1   )r   str)r   r   	match_posstackrr   r   select_recursive_steps   &&  r
   select_recursive9_GlobberBase.recursive_selector.<locals>.select_recursive  s^     CII}c$i ; ;&t444FE0BBB  5 Cs(   <A'A# A'A'A%	A'%A'c              3   
  <"   V P                  4       p SP                  V4      pV F  w  rEpR p VP                  S
R7      '       d   RpT'       g   S	'       d   K5  \	        T4      pS	'       d   SP                  TSP                  4      pSe   S! Y4      '       d    S	'       d   S! TRR7       Rj  xL
  MTx  T'       g   K  T P                  T4       K  	  R#   \         d     Li ; i L;  \         d     R# i ; i5i)Ffollow_symlinksTNr   )r   rV   rW   rX   r   r   r   r   )r   r   r   r   r\   _entry_namer   rW   entry_path_strr   r   rr   r   r   s   &&       r
   r   >_GlobberBase.recursive_selector.<locals>.select_recursive_step  s     99;D5,,t, 7>2E
"F <<<HH%)F XX),Z#)-)9)9*dhh)OJ =E.,L,L'+6z$+O O O '1 0!6!LL4) 7>
 #  !P#  so   DC1 
DCDDAD&D3C/4DDC,)D+C,,D1D <D?D  Dr   r   )r   r   _no_recurse_symlinksr   r   r   r   r   )	r   r   r   r   r   r   rr   r   r   s	   f&& @@@@@r
   r   _GlobberBase.recursive_selector  s    
 b	T)IIK ..0DDE"I^;599;..$,,t*<;mmE*	C 	C	5 	5:  r   c              #  d   "   V'       d   Vx  R# V P                  V4      '       d   Vx  R# R# 5i)z-Yields the given path, if it exists.
        N)rd   )r   r   r   s   &&&r
   r   _GlobberBase.select_exists  s*       J\\$J  s   %00)r   r   r   r   )FFr1   r   )__name__
__module____qualname____firstlineno____doc__r   staticmethodrd   rV   r   r   r   r   r   r   r   r   __static_attributes____classdictcell____classdict__s   @r
   r   r   f  su     # " "
 " "
 " "P%"
&<< | r   r   c                      a  ] tR tRt o Rt]! ]P                  P                  4      t]	P                  t]R 4       tRtV tR# )_StringGlobberi!  zIProvides shell-style pattern matching and globbing for string paths.
    c                    \         P                  ! V 4      ;_uu_ 4       p\        V4      pR R R 4       R X 4       #   + '       g   i     L; i)Nc              3   R   "   T F  qVP                   VP                  3x  K  	  R # 5ir1   )r.   r   )r3   r\   s   & r
   r5   )_StringGlobber.scandir.<locals>.<genexpr>-  s     EWE

EJJ/W   %')r   rV   r   )r   
scandir_itr   s   &  r
   rV   _StringGlobber.scandir'  s8     ZZ:&G EWEE s	   <A	rv   N)r   r   r   r   r   r   r   r   rd   operatoraddr   rV   r   r   r   s   @r
   r   r   !  s9     277??+G,,KF Fr   r   c                   T   a  ] tR tRt o Rt]R 4       t]R 4       t]R 4       tRt	V t
R# )_PathGlobberi0  zJProvides shell-style pattern matching and globbing for pathlib paths.
    c                :    V P                   P                  R R7      # )Fr   )infor   rw   s   &r
   rd   _PathGlobber.lexists4  s    yy66r   c                0    R  V P                  4        4       # )c              3   R   "   T F  qP                   VP                  V3x  K  	  R # 5ir1   )r  r.   )r3   childs   & r
   r5   '_PathGlobber.scandir.<locals>.<genexpr>:  s     L^EUZZ/^r  )iterdirrw   s   &r
   rV   _PathGlobber.scandir8  s    LT\\^LLr   c                D    V P                  \        V 4      V,           4      # r1   )with_segmentsr   r   s   &&r
   r   _PathGlobber.concat_path<  s    !!#d)d"233r   rv   N)r   r   r   r   r   r   rd   rV   r   r   r   r   s   @r
   r	  r	  0  sH      7 7 M M 4 4r   r	  )r   r   r~   r   r   )r   rt   z..)T)-r   r_   r   r   r8   	functoolsr   r  ri   r   __all__r   r   r   r&   r'   rE   rG   rJ   r%   r]   r7   rL   r"   r$   r#   r   rq   ro   r!   r2   r   r~   r   O_RDONLYgetattrrQ   objectr   r   	lru_cacher   r   r   r	  rv   r   r
   <module>r     sr      	 	      
 36t 6D 6E 66<* *T *U **X'.Z*	G 
1
18 D
"		(+ jj#JJz* %
 !++M1 ==x 4 4e 4$ 4n S!0 "0x xvF\ F4< 4r   