ÿØÿà 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 m Z m Z d d l m	 Z	 d g Z
 d e f d     YZ d d	  Z d S(
   sE   Parser for the environment markers micro-language defined in PEP 345.iNi   (   t   python_implementationt   string_types(   t   in_venvt	   interprett	   Evaluatorc           B   s^  e  Z d  Z i	 d   d 6d   d 6d   d 6d   d 6d	   d
 6d   d 6d   d 6d   d 6d   d 6Z i	 e j d 6d e j d  d 6e j j d d  d d 6e	 j
 d 6e e    d 6e j   d 6e j   d 6e j   d 6e   d  6Z d, d!  Z d"   Z d#   Z d, d$  Z d%   Z d&   Z d'   Z d(   Z d)   Z d*   Z d+   Z RS(-   s5   
    A limited evaluator for Python expressions.
    c         C   s
   |  | k S(   N(    (   t   xt   y(    (    s?   /usr/lib/python2.7/site-packages/pip/_vendor/distlib/markers.pyt   <lambda>   t    t   eqc         C   s
   |  | k S(   N(    (   R   R   (    (    s?   /usr/lib/python2.7/site-packages/pip/_vendor/distlib/markers.pyR      R   t   gtc         C   s
   |  | k S(   N(    (   R   R   (    (    s?   /usr/lib/python2.7/site-packages/pip/_vendor/distlib/markers.pyR      R   t   gtec         C   s
   |  | k S(   N(    (   R   R   (    (    s?   /usr/lib/python2.7/site-packages/pip/_vendor/distlib/markers.pyR      R   t   inc         C   s
   |  | k  S(   N(    (   R   R   (    (    s?   /usr/lib/python2.7/site-packages/pip/_vendor/distlib/markers.pyR      R   t   ltc         C   s
   |  | k S(   N(    (   R   R   (    (    s?   /usr/lib/python2.7/site-packages/pip/_vendor/distlib/markers.pyR      R   t   ltec         C   s   |  S(   N(    (   R   (    (    s?   /usr/lib/python2.7/site-packages/pip/_vendor/distlib/markers.pyR       R   t   notc         C   s
   |  | k S(   N(    (   R   R   (    (    s?   /usr/lib/python2.7/site-packages/pip/_vendor/distlib/markers.pyR   !   R   t   noteqc         C   s
   |  | k S(   N(    (   R   R   (    (    s?   /usr/lib/python2.7/site-packages/pip/_vendor/distlib/markers.pyR   "   R   t   notint   sys_platforms   %s.%si   t   python_versiont    i   i    t   python_full_versiont   os_namet   platform_in_venvt   platform_releaset   platform_versiont   platform_machinet   platform_python_implementationc         C   s   | p	 i  |  _  d |  _ d S(   su   
        Initialise an instance.

        :param context: If specified, names are looked up in this mapping.
        N(   t   contextt   Nonet   source(   t   selfR   (    (    s?   /usr/lib/python2.7/site-packages/pip/_vendor/distlib/markers.pyt   __init__3   s    c         C   sH   d } d |  j  | | | !} | | t |  j   k  rD | d 7} n  | S(   sH   
        Get the part of the source which is causing a problem.
        i
   s   %rs   ...(   R   t   len(   R   t   offsett   fragment_lent   s(    (    s?   /usr/lib/python2.7/site-packages/pip/_vendor/distlib/markers.pyt   get_fragment<   s
    c         C   s   t  |  d | d  S(   s@   
        Get a handler for the specified AST node type.
        s   do_%sN(   t   getattrR   (   R   t	   node_type(    (    s?   /usr/lib/python2.7/site-packages/pip/_vendor/distlib/markers.pyt   get_handlerF   s    c         C   s  t  | t  r | |  _ i d d 6} | r8 | | d <n  y t j | |  } Wq t k
 r } |  j | j  } t d |   q Xn  | j j	 j
   } |  j |  } | d k r |  j d k r d } n |  j | j  } t d | | f   n  | |  S(   sf   
        Evaluate a source string or node, using ``filename`` when
        displaying errors.
        t   evalt   modet   filenames   syntax error %ss   (source not available)s    don't know how to evaluate %r %sN(   t
   isinstanceR   R   t   astt   parset   SyntaxErrorR%   R"   t	   __class__t   __name__t   lowerR(   R   t
   col_offset(   R   t   nodeR+   t   kwargst   eR$   R'   t   handler(    (    s?   /usr/lib/python2.7/site-packages/pip/_vendor/distlib/markers.pyt   evaluateL   s&    		c         C   s5   t  | t j  s t d   d | j j | j f S(   Ns   attribute node expecteds   %s.%s(   R,   R-   t	   Attributet   AssertionErrort   valuet   idt   attr(   R   R4   (    (    s?   /usr/lib/python2.7/site-packages/pip/_vendor/distlib/markers.pyt   get_attr_keyf   s    c         C   s   t  | j t j  s t } n- |  j |  } | |  j k pH | |  j k } | sd t d |   n  | |  j k r |  j | } n |  j | } | S(   Ns   invalid expression: %s(	   R,   R;   R-   t   Namet   FalseR>   R   t   allowed_valuesR/   (   R   R4   t   validt   keyt   result(    (    s?   /usr/lib/python2.7/site-packages/pip/_vendor/distlib/markers.pyt   do_attributej   s    	c         C   s   |  j  | j d  } | j j t j k } | j j t j k } | sR | sR t  | r^ | sk | r | r xD | j d D]2 } |  j  |  } | r | s | ry | ry Pqy qy Wn  | S(   Ni    i   (   R8   t   valuest   opR0   R-   t   Ort   AndR:   (   R   R4   RD   t   is_ort   is_andt   n(    (    s?   /usr/lib/python2.7/site-packages/pip/_vendor/distlib/markers.pyt	   do_boolopx   s    c   	         s      f d   }   j  }  j |  } t } x t   j   j  D] \ } } | | |  | j j j   } |  j	 k r t
 d |   n   j |  }  j	 | | |  } | s Pn  | } | } qF W| S(   Nc            sb   t  } t |  t j  r3 t | t j  r3 t } n  | s^  j   j  } t d |   n  d  S(   Ns   Invalid comparison: %s(   t   TrueR,   R-   t   StrR@   R%   R3   R/   (   t   lhsnodet   rhsnodeRB   R$   (   R4   R   (    s?   /usr/lib/python2.7/site-packages/pip/_vendor/distlib/markers.pyt   sanity_check   s    $	s   unsupported operation: %r(   t   leftR8   RN   t   zipt   opst   comparatorsR0   R1   R2   t	   operatorsR/   (	   R   R4   RR   RP   t   lhsRD   RG   RQ   t   rhs(    (   R4   R   s?   /usr/lib/python2.7/site-packages/pip/_vendor/distlib/markers.pyt
   do_compare   s     	"
c         C   s   |  j  | j  S(   N(   R8   t   body(   R   R4   (    (    s?   /usr/lib/python2.7/site-packages/pip/_vendor/distlib/markers.pyt   do_expression   s    c         C   s|   t  } | j |  j k r1 t } |  j | j } n+ | j |  j k r\ t } |  j | j } n  | sx t d | j   n  | S(   Ns   invalid expression: %s(   R@   R<   R   RN   RA   R/   (   R   R4   RB   RD   (    (    s?   /usr/lib/python2.7/site-packages/pip/_vendor/distlib/markers.pyt   do_name   s    c         C   s   | j  S(   N(   R$   (   R   R4   (    (    s?   /usr/lib/python2.7/site-packages/pip/_vendor/distlib/markers.pyt   do_str   s    N(   R1   t
   __module__t   __doc__RW   t   syst   platformt   version_infot   versiont   splitt   ost   namet   strR   t   releaset   machineR    RA   R   R    R%   R(   R8   R>   RE   RM   RZ   R\   R]   R^   (    (    (    s?   /usr/lib/python2.7/site-packages/pip/_vendor/distlib/markers.pyR      s@   









		
							c         C   s   t  |  j |  j    S(   s   
    Interpret a marker and return a result depending on environment.

    :param marker: The marker to interpret.
    :type marker: str
    :param execution_context: The context used for name lookup.
    :type execution_context: mapping
    (   R   R8   t   strip(   t   markert   execution_context(    (    s?   /usr/lib/python2.7/site-packages/pip/_vendor/distlib/markers.pyR      s    	(   R`   R-   Rf   Ra   Rb   t   compatR    R   t   utilR   t   __all__t   objectR   R   R   (    (    (    s?   /usr/lib/python2.7/site-packages/pip/_vendor/distlib/markers.pyt   <module>   s   	