
§|jW  ã               @   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-5c7ija6t/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   sh  t  j j |  ƒ \ } } t |  ƒ s_ | rD t  j j |  ƒ r[ |  Vn t  j j | ƒ r[ |  Vd  S| s¼ | r™ t | ƒ r™ x> t | | ƒ D] } | Vq‡ Wn x t | | ƒ D] } | Vq© Wd  S| |  k ræ t | ƒ ræ t	 | | ƒ } n	 | g } t | ƒ r| rt | ƒ rt } q%t } n t
 } x< | D]4 } x+ | | | ƒ D] } t  j j | | ƒ VqBWq,Wd  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   so   |  s3 t  | t ƒ r* t j j d ƒ }  n	 t j }  y t j |  ƒ } Wn t k
 r^ g  SYn Xt j | | ƒ S)NÚASCII)	Ú
isinstancer   r   ÚcurdirÚencodeÚlistdirÚOSErrorÚfnmatchÚfilter)r   ÚpatternÚnamesr	   r	   r
   r   ]   s    		r   c             C   sN   | s" t  j j |  ƒ rJ | g Sn( t  j j t  j j |  | ƒ ƒ rJ | g Sg  S)N)r   r   r   r   r   )r   r   r	   r	   r
   r   j   s    
!r   c             c   sA   t  | ƒ s t ‚ | d  d … Vx t |  ƒ D] } | Vq. Wd  S)Nr   )r   r   Ú	_rlistdir)r   r)   r   r	   r	   r
   r   z   s    r   c             c   sÈ   |  s3 t  |  t ƒ r* t t j d ƒ }  n	 t j }  y t j |  ƒ } Wn t j k
 ra d  SYn Xx_ | D]W } | V|  r� t j j |  | ƒ n | } x( t | ƒ D] } t j j | | ƒ Vq¢ Wqi Wd  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 Sd  S)Ns   **z**)r"   r   )r)   r	   r	   r
   r   Ÿ   s    
r   c             C   sV   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
    )Ú__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"   +