o
    ´!<f	  ã                   @   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   úF/var/www/html/kck/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"    

$

