???<!-- GIF89;a -->
123123123123
.....................................................................................................................................???<!-- GIF89;a -->
123123123123
.....................................................................................................................................
Yf                 @   s   d  Z  d d l Z d d l Z d d l Z d d d g Z d d d d  Z d 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 d   Z d S)zFilename globbing utility.    Nglobiglobescape	recursiveFc            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.
    r   )listr   )pathnamer    r   )/opt/alt/python35/lib64/python3.5/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   sN  t  j j |   \ } } t |   s_ | rD t  j j |   r[ |  Vn t  j j |  r[ |  Vd  S| s | r t |  r t | |  Ed  Hn t | |  Ed  Hd  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q(WqWd  S)N)ospathsplit	has_magiclexistsisdirr   glob2glob1r
   glob0join)r   r   dirnamebasenamedirsZglob_in_dirnamer   r   r	   r
   '   s0    			r
   c             C   s   |  s3 t  | t  r* t t j d  }  n	 t j }  y t j |   } Wn t k
 r^ g  SYn Xt |  s~ d d   | D } t j | |  S)NASCIIc             S   s"   g  |  ] } t  |  s |  q Sr   )	_ishidden).0xr   r   r	   
<listcomp>Y   s   	 zglob1.<locals>.<listcomp>)	
isinstancebytesr   curdirlistdirOSErrorr   fnmatchfilter)r   patternnamesr   r   r	   r   N   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   \   s    
!r   c             c   s4   t  |  s t  | d  d  Vt |   Ed  Hd  S)Nr   )r   r   	_rlistdir)r   r*   r   r   r	   r   j   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 Xxk | D]c } t |  si | 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!   r   yr   r   r	   r,   p   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   |  d d k S)Nr   .   ..   )r3   r5   r   )r   r   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/   subr1   )r   Zdriver   r   r	   r      s
    )__doc__r   rer(   __all__r   r   r
   r   r   r   r,   compiler1   r/   r   r   r   r   r   r   r   r	   <module>   s"   '