
[[\                 @   s   d  Z  d d l Z d d l Z d d l Z d d g 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.    Nglobiglobc             C   s   t  t |    S)a  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.

    )listr   )pathname r   /usr/lib/python3.4/glob.pyr   	   s    	c             c   s  t  j j |   \ } } t |   se | rG t  j j |   ra |  Vqa n t  j j |  ra |  Vn  d S| s t d |  Dd Hd S| |  k r t |  r t |  } n	 | g } t |  r t } n t } x< | D]4 } x+ | | |  D] } t  j j	 | |  Vq Wq Wd 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.

    N)
ospathsplit	has_magiclexistsisdirglob1r   glob0join)r   dirnamebasenamedirsZglob_in_dirnamer   r   r   r      s(    			c             C   s   |  s6 t  | t  r* t t j d  }  q6 t j }  n  y t j |   } Wn t k
 ra g  SYn Xt |  s d d   | D } n  t j | |  S)NASCIIc             S   s"   g  |  ] } t  |  s |  q Sr   )	_ishidden).0xr   r   r   
<listcomp>H   s   	 zglob1.<locals>.<listcomp>)	
isinstancebytesr   curdirlistdirOSErrorr   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   K   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)smatchr   r   r   r   Z   s    r   c             C   s   |  d d k S)Nr   .   ..   )r(   r*   r   )r	   r   r   r   r   a   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#   subr%   )r   Zdriver   r   r   escaped   s
    r-   )__doc__r   rer   __all__r   r   r   r   compiler%   r#   r   r   r-   r   r   r   r   <module>   s   )