
|_W                 @   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-3_sjtvrs/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"   +