o
     JAf                     @   s  	 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d Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd  Zed!Zed"Zd#d$ Zd%d& Zd'd( Zd)d* Zejeed+d B ZdS ),    N)globiglobescapeFroot_dirdir_fd	recursivec                C   s   	 t t| |||dS )Nr   )listr   )pathnamer   r   r    r   /usr/lib/python3.10/glob.pyr      s   
r   c                C   s   	 t d| | t d| ||| |d urt|}n| d d }t| |||d}| r5|rSt| d d rSzt|}|rFt|f|}W |S W |S  t	yR   Y |S w |S )Nz	glob.globzglob.glob/2r   F   )
sysauditosfspath_iglob_isrecursivenext	itertoolschainStopIteration)r
   r   r   r   itsr   r   r   r      s(   
r   c           
      c   s   t j| \}}t| s)|rtt|| |r| V  d S tt|||r'| V  d S |sI|r=t|r=t||||E d H  d S t	||||E d H  d S || krZt|rZt
||||d}n|g}t|rm|rjt|rjt}nt	}nt}|D ]}|t|||||D ]
}	t j||	V  q}qqd S )NT)r   pathsplit	has_magic_lexists_join_isdirr   _glob2_glob1r   _glob0join)
r
   r   r   r   dironlydirnamebasenamedirsZglob_in_dirnamer   r   r   r   5   s:   r   c                 C   s.   t | ||}t|sdd |D }t||S )Nc                 s   s    | ]	}t |s|V  qd S N)	_ishidden).0xr   r   r   	<genexpr>`   s    z_glob1.<locals>.<genexpr>)_listdirr*   fnmatchfilter)r%   patternr   r$   namesr   r   r   r!   ]   s   r!   c                 C   s2   |rt t| ||r|gS g S t| |r|gS g S r)   )r   r   r   )r%   r&   r   r$   r   r   r   r"   c   s   
r"   c                 C      t | |d dS NF)r"   r%   r1   r   r   r   glob0p      r6   c                 C   r3   r4   )r!   r5   r   r   r   glob1s   r7   r8   c                 c   s&    |d d V  t | ||E d H  d S )Nr   )	_rlistdir)r%   r1   r   r$   r   r   r   r    y   s   r    c              
   c   s,   zd }d }|d ur"| rt j| t|d }}n|}t| tr!t j}n| r'| }nt| tr3tt jd}nt j}zJt |-}|D ]"}z|rH| rW|d urS||j	V  n|j	V  W q? t
ya   Y q?w W d    n1 slw   Y  W |d ur~t | W d S W d S |d urt | w w  t
y   Y d S w )Nr   ASCII)r   open_dir_open_flags
isinstancebytesfsencodecurdirscandiris_dirr(   OSErrorclose)r%   r   r$   fdr@   argr   entryr   r   r   _iterdir   sN   

rI   c                 C   s>   t t| ||}t|W  d    S 1 sw   Y  d S r)   )
contextlibclosingrI   r	   )r%   r   r$   r   r   r   r   r.      s   $r.   c                 c   sZ    t | ||}|D ]!}t|s*|V  | rt| |n|}t|||D ]}t||V  q!q	d S r)   )r.   r*   r   r9   )r%   r   r$   r2   r,   r   yr   r   r   r9      s   r9   c              	   C   sB   |d u r
t j| S z
t j| |d W dS  ttfy    Y dS w )Nr:   FT)r   r   lexistslstatrD   
ValueError)r
   r   r   r   r   r      s   r   c              	   C   sL   |d u r
t j| S z	t j| |d}W n ttfy   Y dS w t|jS )Nr:   F)r   r   isdirstatrD   rO   S_ISDIRst_mode)r
   r   str   r   r   r      s   r   c                 C   s   | r|s| p|S t j| |S r)   )r   r   r#   )r%   r&   r   r   r   r      s   r   z([*?[])s   ([*?[])c                 C   s.   t | trt| }|d uS t| }|d uS r)   )r>   r?   magic_check_bytessearchmagic_check)r   matchr   r   r   r      s
   


r   c                 C   s   | d dv S )Nr   )..   r   )r   r   r   r   r*      s   r*   c                 C   s   t | tr	| dkS | dkS )Ns   **z**)r>   r?   )r1   r   r   r   r      s   
r   c                 C   sD   	 t j| \}} t| trtd| } ||  S td| } ||  S )Ns   [\1]z[\1])r   r   
splitdriver>   r?   rU   subrW   )r
   driver   r   r   r      s   
r   O_DIRECTORY) rJ   r   rer/   r   rQ   r   __all__r   r   r   r!   r"   r6   r8   r    rI   r.   r9   r   r   r   compilerW   rU   r   r*   r   r   O_RDONLYgetattrr=   r   r   r   r   <module>   s<    ("


