
    Rh"                     N   d Z ddlZddlZddlZddlZddlZddlZddlZg dZddddddZ	ddddddZ
	 ddZdd	Zdd
Zd Zd ZddZd Zd ZddZd Zd Zd Z ej.                  d      Z ej.                  d      Zd Zd Zd Zd Zej<                   eedd      z  Z y)zFilename globbing utility.    N)globiglobescapeFroot_dirdir_fd	recursiveinclude_hiddenc          	      4    t        t        | ||||            S )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.

    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   )listr   )pathnamer   r   r	   r
   s        /usr/lib/python3.12/glob.pyr   r      s#     h&I%35 6 6    c                T   t        j                  d| |       t        j                  d| |||       |t        j                  |      }n| dd }t	        | |||d|      }| r|r5t        | dd       r'	 t        |      }|rt        j                  |f|      }|S |S # t        $ r Y |S w xY w)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.

    If recursive is true, the pattern '**' will match any files and
    zero or more directories and subdirectories.
    z	glob.globzglob.glob/2Nr   Fr
      )
sysauditosfspath_iglob_isrecursivenext	itertoolschainStopIteration)r   r   r   r	   r
   itss          r   r   r      s     IIk8Y/IImXy(FC99X&BQ<	(FIu-
/By\(2A,%?	RA__aT2. I2I  	I	s   2$B 	B'&B'c              #     K   t         j                  j                  |       \  }}t        |       s<|rJ |rt	        t        ||       |      r|  y t        t        ||      |      r|  y |s?|r$t        |      rt        |||||      E d {    y t        |||||      E d {    y || k7  rt        |      rt        ||||d|      }n|g}t        |      r|rt        |      rt        }	nt        }	nt        }	|D ]@  } |	t        ||      ||||      D ]$  }
t         j                  j                  ||
       & B y 7 7 w)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   <   s^    h/GXX{h16:
 	 eHg.7h/h&',:< < <
 	 h&'-;= = = (y1gxD%35 yh/ K K .h 8(FG.<> 	.D'',,w--	..+<=s%   BEEE'E(BEEc                 z    t        | ||      }st        |      sfd|D        }t        j                  ||      S )Nc              3   >   K   | ]  }st        |      r|  y wN)	_ishidden).0xr
   s     r   	<genexpr>z_glob1.<locals>.<genexpr>l   s     Hq^9Q<Hs   )_listdirr3   fnmatchfilter)r+   patternr   r*   r
   namess       ` r   r'   r'   i   s6    Wfg.EYw/HEH>>%))r   c                 ^    |rt        t        | |      |      r|gS g S t        | |      r|gS g S r2   )r#   r$   r%   )r+   r,   r   r*   r
   s        r   r(   r(   o   s>    E'8,f5: I '6":Ir   c                     t        | |d d      S NF)r(   r+   r:   s     r   glob0r@   |       '7D%00r   c                     t        | |d d      S r>   )r'   r?   s     r   glob1rC      rA   r   c              #      K   t        |      sJ | rt        | |      r|d d  t        | |||      E d {    y 7 w)Nr   r   )r   r%   	_rlistdir)r+   r:   r   r*   r
   s        r   r&   r&      sG        fWf-bqk&'(68 8 8s   5?=?c              #     K   	 d }d }|D| rt        j                  | t        |      x}}n|}t        | t              rQt         j
                  }n@| r| }n;t        | t              rt	        t         j                  d      }nt         j                  }	 t        j                  |      5 }|D ]:  }	 |r|j                         r%| ||j                         n|j                   < 	 d d d        |t        j                  |       y y # t        $ r Y jw xY w# 1 sw Y   1xY w# |t        j                  |       w w xY w# t        $ r Y y w xY ww)Nr   ASCII)r   open_dir_open_flags
isinstancebytesfsencodecurdirscandiris_dirr/   OSErrorclose)r+   r   r*   fdrM   argr   entrys           r   _iterdirrV      s1    777OFKKS'5);;C'		7+C))C	C 	B E&%,,.'3&.uzz&: :&+jj 0	 ~  # 	 	 ~  s}   EB
D> D! $D+7D"D%D! -D> E	DDDDDD! !D;;D> >	E
E	E

Ec                     t        j                  t        | ||            5 }t        |      cd d d        S # 1 sw Y   y xY wr2   )
contextlibclosingrV   r   )r+   r   r*   r   s       r   r7   r7      s7    			HWfg>	? 2Bx  s   6?c              #      K   t        | ||      }|D ]F  }|st        |      r| | rt        | |      n|}t        ||||      D ]  }t        ||        H y w)Nr   )r7   r3   r$   rE   )r+   r   r*   r
   r;   r5   r    ys           r   rE   rE      sj     Wfg.E "1G(/5!$QDtVW.<> "Aqk!"	"s
    A9Ac                     |t         j                  j                  |       S 	 t        j                  | |       y# t        t
        f$ r Y yw xY w)NrG   TF)r   r    lexistslstatrQ   
ValueError)r   r   s     r   r#   r#      sK    ~wwx((
&)  Z  s   ; AAc                     |t         j                  j                  |       S 	 t        j                  | |      }t        j                  |j
                        S # t        t        f$ r Y yw xY w)NrG   F)r   r    isdirstatS_ISDIRst_moderQ   r_   )r   r   sts      r   r%   r%      s]    ~ww}}X&&(WWXf- ||BJJ'' Z  s   A A+*A+c                 V    | r|s| xs |S t         j                  j                  | |      S r2   )r   r    r)   )r+   r,   s     r   r$   r$      s'    ("("77<<**r   z([*?[])s   ([*?[])c                     t        | t              rt        j                  |       }|d uS t        j                  |       }|d uS r2   )rK   rL   magic_check_bytessearchmagic_check)r   matchs     r   r"   r"      sF    !U!((+  ""1%r   c                     | d   dv S )Nr   )..    )r    s    r   r3   r3      s    7n$$r   c                 6    t        | t              r| dk(  S | dk(  S )Ns   **z**)rK   rL   )r:   s    r   r   r      s!    '5!%$r   c                     t         j                  j                  |       \  }} t        | t              rt
        j                  d|       } || z   S t        j                  d|       } || z   S )z#Escape all special characters.
    s   [\1]z[\1])r   r    
splitdriverK   rL   rh   subrj   )r   drives     r   r   r      sb    
 gg((2OE8(E"$((8< 8 ??7H58r   O_DIRECTORY)F)!__doc__rX   r   rer8   r   rb   r   __all__r   r   r   r'   r(   r@   rC   r&   rV   r7   rE   r#   r%   r$   compilerj   rh   r"   r3   r   r   O_RDONLYgetattrrJ   ro   r   r   <module>r|      s       	 	    

%#DE6$ !%TU<  '.Z*	118 D
"		(+ bjj#BJJz* %
 ++M1 ==r   