o
    (g	                     @   s   d Z ddlZddlZddlZg dZdddZd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S )z
Filename globbing utility. Mostly a copy of `glob` from Python 3.5.

Changes include:
 * `yield from` and PEP3102 `*` removed.
 * Hidden files are not ignored.
    N)globiglobescapeFc                 C   s   t t| |dS )ay  Return a list of 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.
    )	recursive)listr   )pathnamer    r   W/var/www/python.lazyprojects.co.uk/venv/lib/python3.10/site-packages/setuptools/glob.pyr      s   r   c                 C   s*   t | |}|rt| rt|}|rJ |S )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.
    )_iglob_isrecursivenext)r   r   itsr   r   r	   r      s
   
r   c                 c   s    t j| \}}|rt|rtnt}t| s/|r$t j| r"| V  d S t j|r-| V  d S |s;|||E d H  d S || krIt|rIt	||}n|g}t|sRt
}|D ]}|||D ]
}t j||V  q[qTd S N)ospathsplitr   glob2glob1	has_magiclexistsisdirr
   glob0join)r   r   dirnamebasenameglob_in_dirdirsnamer   r   r	   r
   0   s0   r
   c                 C   sT   | st |trtjd} ntj} zt| }W n ty#   g  Y S w t||S NASCII)	
isinstancebytesr   curdirencodelistdirOSErrorfnmatchfilter)r   patternnamesr   r   r	   r   T   s   
r   c                 C   s:   |st j| r|gS g S t jt j| |r|gS g S r   )r   r   r   r   r   )r   r   r   r   r	   r   a   s   r   c                 c   s4    t |sJ |d d V  t| D ]}|V  qd S )Nr   )r   	_rlistdir)r   r)   xr   r   r	   r   q   s   r   c                 c   s    | st | trtjd} ntj} zt| }W n tjy$   Y d S w |D ]}|V  | r5tj| |n|}t	|D ]
}tj||V  q;q'd S r   )
r!   r"   r   r#   r$   r%   errorr   r   r+   )r   r*   r,   r   yr   r   r	   r+   y   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   t | tr	| dkS | dkS )Ns   **z**)r!   r"   )r)   r   r   r	   r      s   
r   c                 C   sB   t j| \}} t| trtd| } ||  S td| } ||  S )z#Escape all special characters.
    s   [\1]z[\1])r   r   
splitdriver!   r"   r/   subr1   )r   driver   r   r	   r      s   
r   )F)__doc__r   rer'   __all__r   r   r
   r   r   r   r+   compiler1   r/   r   r   r   r   r   r   r	   <module>   s"    

$

