ÿØÿà JFIF      ÿÛ „ 	 ( %!1!%)+//.383,7(-.+



-%%-////---/-.+/--+------/------/--0+--/-/-----.-----ÿÀ  ¥2" ÿÄ               ÿÄ J  	     ! 1AQ"aq2‘#BR‚¡ÁÑ3br’¢±Âð$CSƒ²á4c“%DsÓñÿÄ              ÿÄ *        !1AQa‘"2q3±ð#b¡ÿÚ   ? ¼QxJQaÍuò¸Zö Úü8,ÐÚú
"SSn<rçù–´âE—^ªBÖ9À\†¸ÔÁT­ÃÛ5
ëd´³Í#Ý;Þ38œî ¶H£M:wÎ3…³…âpÔF&‚FK¸9„â4àGEõªfÿ ‘ñ(ßw­pŽF|È¥ù®häðÍÑ¶¹‘[ÒinÙW¶ùñY˜Q{›K"išÒ[Ú8žë\F¹@-?v"ÔU”,ìöžkÿ {I‡£šÍ?e
ríV
..............................................................................................................................................................................
.............................................................................                                                  
                                                                                                                                                                                     ÿØÿà JFIF      ÿÛ „ 	 ( %!1!%)+//.383,7(-.+



-%%-////---/-.+/--+------/------/--0+--/-/-----.-----ÿÀ  ¥2" ÿÄ               ÿÄ J  	     ! 1AQ"aq2‘#BR‚¡ÁÑ3br’¢±Âð$CSƒ²á4c“%DsÓñÿÄ              ÿÄ *        !1AQa‘"2q3±ð#b¡ÿÚ   ? ¼QxJQaÍuò¸Zö Úü8,ÐÚú
"SSn<rçù–´âE—^ªBÖ9À\†¸ÔÁT­ÃÛ5
ëd´³Í#Ý;Þ38œî ¶H£M:wÎ3…³…âpÔF&‚FK¸9„â4àGEõªfÿ ‘ñ(ßw­pŽF|È¥ù®häðÍÑ¶¹‘[ÒinÙW¶ùñY˜Q{›K"išÒ[Ú8žë\F¹@-?v"ÔU”,ìöžkÿ {I‡£šÍ?e
ríV
..............................................................................................................................................................................
.............................................................................                                                  
                                                                                                                                                                                     
abc           @   s   d  Z  d d l Z d d l Z d d l Z d d l Z d d l Z d d l m Z d d l m	 Z	 d d l
 m Z d g Z e j e  Z e j d e j  Z e j d	 e j e j B Z e j d
  Z d e f d     YZ d S(   su   
Class representing the list of files in a distribution.

Equivalent to distutils.filelist, but fixes some problems.
iNi   (   t   DistlibException(   t   fsdecode(   t   convert_patht   Manifests   \\w*
s   #.*?(?=
)|
(?=$)i   c           B   s   e  Z d  Z d d  Z d   Z d   Z d   Z e d  Z	 d   Z
 d   Z d   Z e d e d	  Z e d e d
  Z e d e d  Z d   Z RS(   s~   A list of files built by on exploring the filesystem and filtered by
    applying various patterns to what we find there.
    c         C   sY   t  j j t  j j | p! t  j     |  _ |  j t  j |  _ d |  _	 t
   |  _ d S(   sd   
        Initialise an instance.

        :param base: The base directory to explore under.
        N(   t   ost   patht   abspatht   normpatht   getcwdt   baset   sept   prefixt   Nonet   allfilest   sett   files(   t   selfR	   (    (    s@   /usr/lib/python2.7/site-packages/pip/_vendor/distlib/manifest.pyt   __init__*   s    -	c         C   s   d d l  m } m } m } g  |  _ } |  j } | g } | j } | j } x | r |   } t j	 |  }	 x |	 D]{ }
 t j
 j | |
  } t j  |  } | j } | |  r | j t |   qu | |  ru | |  ru | |  qu qu WqP Wd S(   sm   Find all files under the base and set ``allfiles`` to the absolute
        pathnames of files found.
        i(   t   S_ISREGt   S_ISDIRt   S_ISLNKN(   t   statR   R   R   R   R	   t   popt   appendR   t   listdirR   t   joint   st_modeR   (   R   R   R   R   R   t   roott   stackR   t   pusht   namest   namet   fullnameR   t   mode(    (    s@   /usr/lib/python2.7/site-packages/pip/_vendor/distlib/manifest.pyt   findall9   s"    							c         C   sM   | j  |  j  s- t j j |  j |  } n  |  j j t j j |   d S(   sz   
        Add a file to the manifest.

        :param item: The pathname to add. This can be relative to the base.
        N(	   t
   startswithR   R   R   R   R	   R   t   addR   (   R   t   item(    (    s@   /usr/lib/python2.7/site-packages/pip/_vendor/distlib/manifest.pyR$   T   s    c         C   s"   x | D] } |  j  |  q Wd S(   s   
        Add a list of files to the manifest.

        :param items: The pathnames to add. These can be relative to the base.
        N(   R$   (   R   t   itemsR%   (    (    s@   /usr/lib/python2.7/site-packages/pip/_vendor/distlib/manifest.pyt   add_many^   s    c            s      f d     t   j  } | rg t    } x' | D] }   | t j j |   q7 W| | O} n  g  t d   | D  D] } t j j |   ^ q~ S(   s8   
        Return sorted files in directory order
        c            sX   |  j  |  t j d |  |  j k rT t j j |  \ } }   |  |  n  d  S(   Ns   add_dir added %s(   R$   t   loggert   debugR	   R   R   t   split(   t   dirst   dt   parentt   _(   t   add_dirR   (    s@   /usr/lib/python2.7/site-packages/pip/_vendor/distlib/manifest.pyR/   l   s
    c         s   s!   |  ] } t  j j |  Vq d  S(   N(   R   R   R*   (   t   .0R   (    (    s@   /usr/lib/python2.7/site-packages/pip/_vendor/distlib/manifest.pys	   <genexpr>{   s    (   R   R   R   R   t   dirnamet   sortedR   (   R   t   wantdirst   resultR+   t   ft
   path_tuple(    (   R/   R   s@   /usr/lib/python2.7/site-packages/pip/_vendor/distlib/manifest.pyR2   g   s    	c         C   s   t    |  _ g  |  _ d S(   s   Clear all collected files.N(   R   R   R   (   R   (    (    s@   /usr/lib/python2.7/site-packages/pip/_vendor/distlib/manifest.pyt   clear}   s    c         C   s  |  j  |  \ } } } } | d k rc x| D]. } |  j | d t s. t j d |  q. q. Wn| d k r x| D] } |  j | d t } qv Wn{| d k r xl| D]. } |  j | d t s t j d |  q q Wn3| d k rx$| D] } |  j | d t } q Wn | d k r`x | D]1 } |  j | d	 | s(t j d
 | |  q(q(Wn | d k rx | D] } |  j | d	 | } qsWn~ | d k r|  j d d	 | st j d |  qnG | d k r|  j d d	 | st j d |  qn t d |   d S(   sv  
        Process a directive which either adds some files from ``allfiles`` to
        ``files``, or removes some files from ``files``.

        :param directive: The directive to process. This should be in a format
                     compatible with distutils ``MANIFEST.in`` files:

                     http://docs.python.org/distutils/sourcedist.html#commands
        t   includet   anchors   no files found matching %rt   excludes   global-includes3   no files found matching %r anywhere in distributions   global-excludes   recursive-includeR   s-   no files found matching %r under directory %rs   recursive-excludet   grafts    no directories found matching %rt   prunes4   no previously-included directories found matching %rs   invalid action %rN(	   t   _parse_directivet   _include_patternt   TrueR(   t   warningt   _exclude_patternt   FalseR   R    (   R   t	   directivet   actiont   patternst   thedirt
   dirpatternt   patternt   found(    (    s@   /usr/lib/python2.7/site-packages/pip/_vendor/distlib/manifest.pyt   process_directive   sD    				c      	   C   s{  | j    } t |  d k rA | d d k rA | j d d  n  | d } d } } } | d k r t |  d k  r t d |   n  g  | d D] } t |  ^ q } n | d k rt |  d k  r t d |   n  t | d  } g  | d D] } t |  ^ q } nT | d k r[t |  d k rHt d |   n  t | d  } n t d |   | | | | f S(   s   
        Validate a directive.
        :param directive: The directive to validate.
        :return: A tuple of action, patterns, thedir, dir_patterns
        i   i    R8   R:   s   global-includes   global-excludes   recursive-includes   recursive-excludeR;   R<   i   s$   %r expects <pattern1> <pattern2> ...i   s*   %r expects <dir> <pattern1> <pattern2> ...s!   %r expects a single <dir_pattern>s   unknown action %r(   R8   R:   s   global-includes   global-excludes   recursive-includes   recursive-excludeR;   R<   N(   R8   R:   s   global-includes   global-exclude(   s   recursive-includes   recursive-exclude(   R;   R<   (   R*   t   lent   insertR   R    R   (   R   RC   t   wordsRD   RE   RF   t   dir_patternt   word(    (    s@   /usr/lib/python2.7/site-packages/pip/_vendor/distlib/manifest.pyR=      s:        	
	&&c         C   sz   t  } |  j | | | |  } |  j d k r: |  j   n  x9 |  j D]. } | j |  rD |  j j |  t } qD qD W| S(   s  Select strings (presumably filenames) from 'self.files' that
        match 'pattern', a Unix-style wildcard (glob) pattern.

        Patterns are not quite the same as implemented by the 'fnmatch'
        module: '*' and '?'  match non-special characters, where "special"
        is platform-dependent: slash on Unix; colon, slash, and backslash on
        DOS/Windows; and colon on Mac OS.

        If 'anchor' is true (the default), then the pattern match is more
        stringent: "*.py" will match "foo.py" but not "foo/bar.py".  If
        'anchor' is false, both of these will match.

        If 'prefix' is supplied, then only filenames starting with 'prefix'
        (itself a pattern) and ending with 'pattern', with anything in between
        them, will match.  'anchor' is ignored in this case.

        If 'is_regex' is true, 'anchor' and 'prefix' are ignored, and
        'pattern' is assumed to be either a string containing a regex or a
        regex object -- no translation is done, the regex is just compiled
        and used as-is.

        Selected strings will be added to self.files.

        Return True if files are found.
        N(	   RB   t   _translate_patternR   R   R"   t   searchR   R$   R?   (   R   RH   R9   R   t   is_regexRI   t
   pattern_reR   (    (    s@   /usr/lib/python2.7/site-packages/pip/_vendor/distlib/manifest.pyR>      s    c         C   sd   t  } |  j | | | |  } x? t |  j  D]. } | j |  r. |  j j |  t } q. q. W| S(   st  Remove strings (presumably filenames) from 'files' that match
        'pattern'.

        Other parameters are the same as for 'include_pattern()', above.
        The list 'self.files' is modified in place. Return True if files are
        found.

        This API is public to allow e.g. exclusion of SCM subdirs, e.g. when
        packaging source distributions
        (   RB   RP   t   listR   RQ   t   removeR?   (   R   RH   R9   R   RR   RI   RS   R5   (    (    s@   /usr/lib/python2.7/site-packages/pip/_vendor/distlib/manifest.pyRA   )  s    c         C   s   | r) t  | t  r" t j |  S| Sn  t d k rY |  j d  j d  \ } } } n  | r |  j |  } t d k r q n d } t j t j	 j
 |  j d   }	 | d k	 rt d k r |  j d  }
 |  j |  t |
   } n2 |  j |  } | t |  t |  t |  !} t j } t j d k r>d } n  t d k rnd |	 | j
 | d | f  } q| t |  t |  t |  !} d	 | |	 | | | | f } nC | rt d k rd |	 | } qd
 | |	 | t |  f } n  t j |  S(   s  Translate a shell-like wildcard pattern to a compiled regular
        expression.

        Return the compiled regex.  If 'is_regex' true,
        then 'pattern' is directly compiled to a regex (if it's a string)
        or just returned as-is (assumes it's a regex object).
        i   i   R.   t    s   \s   \\t   ^s   .*s   %s%s%s%s.*%s%ss   %s%s%s(   i   i   (   i   i   N(   i   i   (   i   i   (   i   i   (   t
   isinstancet   strt   ret   compilet   _PYTHON_VERSIONt   _glob_to_ret	   partitiont   escapeR   R   R   R	   R   RK   R
   (   R   RH   R9   R   RR   t   startR.   t   endRS   R	   t   empty_patternt	   prefix_reR
   (    (    s@   /usr/lib/python2.7/site-packages/pip/_vendor/distlib/manifest.pyRP   =  s@    	$!#		# c         C   sS   t  j |  } t j } t j d k r0 d } n  d | } t j d | |  } | S(   s   Translate a shell-like glob pattern to a regular expression.

        Return a string containing the regex.  Differs from
        'fnmatch.translate()' in that '*' does not match "special characters"
        (which are platform-specific).
        s   \s   \\\\s   \1[^%s]s   ((?<!\\)(\\\\)*)\.(   t   fnmatcht	   translateR   R
   RZ   t   sub(   R   RH   RS   R
   t   escaped(    (    s@   /usr/lib/python2.7/site-packages/pip/_vendor/distlib/manifest.pyR]   t  s    		
N(   t   __name__t
   __module__t   __doc__R   R   R"   R$   R'   RB   R2   R7   RJ   R=   R?   R>   RA   RP   R]   (    (    (    s@   /usr/lib/python2.7/site-packages/pip/_vendor/distlib/manifest.pyR   %   s    		
				O	/(6(   Rj   Rd   t   loggingR   RZ   t   sysRV   R    t   compatR   t   utilR   t   __all__t	   getLoggerRh   R(   R[   t   Mt   _COLLAPSE_PATTERNt   St   _COMMENTED_LINEt   version_infoR\   t   objectR   (    (    (    s@   /usr/lib/python2.7/site-packages/pip/_vendor/distlib/manifest.pyt   <module>
   s   	