U
    @{?^                     @   s   d Z ddlZddlZddlZdddg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   1/usr/lib/python3/dist-packages/setuptools/glob.pyr      s    c                 C   s*   t | |}|r&t| r&t|}|r&t|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AssertionError)r   r   itsr   r   r	   r      s
    
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rt|rt	||}n|g}t|r|rt|rt}qt}nt
}|D ]$}|||D ]}t j||V  qqd S N)ospathsplit	has_magiclexistsisdirr   glob2glob1r
   glob0join)r   r   dirnamebasenamexdirsZglob_in_dirnamer   r   r	   r
   0   s4    
r
   c                 C   sV   | s"t |trtjd} ntj} zt| }W n tk
rH   g  Y S X 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t|d d V  t| D ]
}|V  q"d S )Nr   )r   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k
rH   Y d S X |D ]>}|V  | rjtj| |n|}t	|D ]}tj||V  qvqNd 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 k	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   Zdriver   r   r	   r      s
    
)F)F)__doc__r   rer(   __all__r   r   r
   r   r   r   r,   compiler1   r/   r   r   r   r   r   r   r	   <module>   s    


+

