a
    eÖ0hÜ  ã                   @   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   ú=/var/www/auris/lib/python3.9/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 | ¡\}}t| ƒsF|r0t j | ¡rB| V  nt j |¡rB| V  d S |sˆ|rnt|ƒrnt||ƒD ]
}|V  q`nt||ƒD ]
}|V  qxd S || kr¤t|ƒr¤t	||ƒ}n|g}t|ƒrÊ|rÄt|ƒrÄt}qÎt}nt
}|D ]$}|||ƒD ]}t j ||¡V  qàqÒd S ©N)ÚosÚpathÚsplitÚ	has_magicÚlexistsÚisdirr   Úglob2Úglob1r
   Úglob0Újoin)r   r   ÚdirnameÚbasenameÚxÚdirsÚglob_in_dirÚnamer   r   r	   r
   0   s4    
r
   c                 C   sT   | s"t |tƒrtj d¡} ntj} zt | ¡}W n tyF   g  Y S 0 t ||¡S ©NÚASCII)	Ú
isinstanceÚbytesr   ÚcurdirÚencodeÚlistdirÚOSErrorÚfnmatchÚfilter)r   ÚpatternÚnamesr   r   r	   r   [   s    

r   c                 C   s8   |st j | ¡r4|gS nt j t j | |¡¡r4|gS g S r   )r   r   r   r   r   )r   r   r   r   r	   r   h   s    r   c                 c   s2   t |ƒsJ ‚|d d… V  t| ƒD ]
}|V  q"d S )Nr   )r   Ú	_rlistdir)r   r*   r   r   r   r	   r   x   s    r   c                 c   s   | s"t | tƒrtj d¡} ntj} zt | ¡}W n tjyF   Y d S 0 |D ]>}|V  | rhtj | |¡n|}t	|ƒD ]}tj ||¡V  qtqLd S r    )
r"   r#   r   r$   r%   r&   Úerrorr   r   r,   )r   r+   r   r   Úyr   r   r	   r,   €   s    
r,   z([*?[])s   ([*?[])c                 C   s(   t | tƒrt | ¡}n
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 d S )Ns   **z**)r"   r#   )r*   r   r   r	   r      s    
r   c                 C   s<   t j | ¡\}} t| tƒr(t d| ¡} n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)F)Ú__doc__r   Úrer(   Ú__all__r   r   r
   r   r   r   r,   Úcompiler1   r/   r   r   r   r   r   r   r	   Ú<module>   s    

+

