3
yYðiW  ã               @   sž   d Z ddlZddlZddlZddlm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jdƒZej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.
 * `bytes` changed to `six.binary_type`.
 * Hidden files are not ignored.
é    N)Úbinary_typeÚ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	   ú5/tmp/pip-build-ue6tjl93/setuptools/setuptools/glob.pyr      s    c             C   s,   t | |ƒ}|r(t| ƒr(t|ƒ}| s(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j| ƒ\}}t| ƒsF|r0t jj| ƒrB| V  nt jj|ƒrB| V  d S |s�|rrt|ƒrrx4t||ƒD ]
}|V  qbW nxt||ƒD ]
}|V  q~W d S || kr¬t|ƒr¬t	||ƒ}n|g}t|ƒrÒ|rÌt|ƒrÌt}qÖt}nt
}x0|D ](}x"|||ƒD ]}t jj||ƒV  qìW qÜW 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   2   s4    

r   c             C   sR   | s"t |tƒrtjjdƒ} ntj} ytj| ƒ}W n tk
rD   g S X tj||ƒS )NÚASCII)	Ú
isinstancer   r   ÚcurdirÚencodeÚlistdirÚOSErrorÚfnmatchÚfilter)r   ÚpatternÚnamesr	   r	   r
   r   ]   s    
r   c             C   s8   |st jj| ƒr4|gS nt jjt jj| |ƒƒr4|gS g S )N)r   r   r   r   r   )r   r   r	   r	   r
   r   j   s    r   c             c   s6   t |ƒst‚|d d… V  xt| ƒD ]
}|V  q$W d S )Nr   )r   r   Ú	_rlistdir)r   r)   r   r	   r	   r
   r   z   s    r   c             c   s˜   | s"t | tƒrttjdƒ} ntj} ytj| ƒ}W n tjk
rF   d S X xJ|D ]B}|V  | rjtjj| |ƒn|}x t|ƒD ]}tjj||ƒV  qxW qNW d S )Nr!   )	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j| ƒ}n
tj| ƒ}|d k	S )N)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j| ƒ\}} t| tƒr(tjd| ƒ} ntjd| ƒ} ||  S )z#Escape all special characters.
    s   [\1]z[\1])r   r   Ú
splitdriver"   r   r.   Úsubr0   )r   Údriver	   r	   r
   r   ¦   s
    
)F)F)Ú__doc__r   Úrer'   Zsetuptools.extern.sixr   Ú__all__r   r   r   r   r   r   r+   Úcompiler0   r.   r   r   r   r	   r	   r	   r
   Ú<module>   s"   


+

