Ñò
•èRc        	   @   s‹   d  Z  d d k Z d d k Z d d k Z d d k Z d d k l Z l Z d d k l	 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.iÿÿÿÿNi   (   t   python_implementationt   string_types(   t   in_venvt	   interprett	   Evaluatorc           B   sT  e  Z d  Z h	 d „  d 6d „  d 6d „  d 6d „  d 6d	 „  d
 6d „  d 6d „  d 6d „  d 6d „  d 6Z h e i d 6d e i d  d 6e i i d d ƒ d d 6e	 i
 d 6e e ƒ  ƒ d 6e i ƒ  d 6e i ƒ  d 6e i ƒ  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
   |  | j S(    (    (   t   xt   y(    (    sV   /var/www/html/kasc-wg8/erics/lib/python2.6/site-packages/pip/vendor/distlib/markers.pyt   <lambda>   s    t   eqc         C   s
   |  | j S(    (    (   R   R   (    (    sV   /var/www/html/kasc-wg8/erics/lib/python2.6/site-packages/pip/vendor/distlib/markers.pyR      s    t   gtc         C   s
   |  | j S(    (    (   R   R   (    (    sV   /var/www/html/kasc-wg8/erics/lib/python2.6/site-packages/pip/vendor/distlib/markers.pyR      s    t   gtec         C   s
   |  | j S(    (    (   R   R   (    (    sV   /var/www/html/kasc-wg8/erics/lib/python2.6/site-packages/pip/vendor/distlib/markers.pyR      s    t   inc         C   s
   |  | j  S(    (    (   R   R   (    (    sV   /var/www/html/kasc-wg8/erics/lib/python2.6/site-packages/pip/vendor/distlib/markers.pyR      s    t   ltc         C   s
   |  | j S(    (    (   R   R   (    (    sV   /var/www/html/kasc-wg8/erics/lib/python2.6/site-packages/pip/vendor/distlib/markers.pyR      s    t   ltec         C   s   |  S(    (    (   R   (    (    sV   /var/www/html/kasc-wg8/erics/lib/python2.6/site-packages/pip/vendor/distlib/markers.pyR      s    t   notc         C   s
   |  | j S(    (    (   R   R   (    (    sV   /var/www/html/kasc-wg8/erics/lib/python2.6/site-packages/pip/vendor/distlib/markers.pyR       s    t   noteqc         C   s
   |  | j S(    (    (   R   R   (    (    sV   /var/www/html/kasc-wg8/erics/lib/python2.6/site-packages/pip/vendor/distlib/markers.pyR   !   s    t   notins   sys.platforms   %s.%si   t   python_versiont    i   i    t   python_full_versions   os.names   platform.in_venvs   platform.versions   platform.machines   platform.python_implementationc         C   s   | p h  |  _  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   (    (    sV   /var/www/html/kasc-wg8/erics/lib/python2.6/site-packages/pip/vendor/distlib/markers.pyt   __init__1   s    c         C   sJ   d } d |  i  | | | !} | | t |  i  ƒ j  o | 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(    (    sV   /var/www/html/kasc-wg8/erics/lib/python2.6/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(    (    sV   /var/www/html/kasc-wg8/erics/lib/python2.6/site-packages/pip/vendor/distlib/markers.pyt   get_handlerD   s    c         C   s  t  | t ƒ o | |  _ h d d 6} | o | | d <n y t i | |  } Wq t j
 o+ } |  i | i ƒ } t d | ƒ ‚ q Xn | i i	 i
 ƒ  } |  i | ƒ } | d j oF |  i d j o
 d } n |  i | i ƒ } 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(    (    sV   /var/www/html/kasc-wg8/erics/lib/python2.6/site-packages/pip/vendor/distlib/markers.pyt   evaluateJ   s&    	
c         C   s4   t  | t i ƒ p
 t d ‚ d | i i | i f S(   Ns   attribute node expecteds   %s.%s(   R$   R%   t	   Attributet   AssertionErrort   valuet   idt   attr(   R   R,   (    (    sV   /var/www/html/kasc-wg8/erics/lib/python2.6/site-packages/pip/vendor/distlib/markers.pyt   get_attr_keyd   s    c         C   s¡   t  } t | i t i ƒ p
 t } n/ |  i | ƒ } | |  i j p | |  i j } | p t	 d | ƒ ‚ n | |  i j o |  i | } n |  i | } | S(   Ns   invalid expression: %s(
   t   TrueR$   R3   R%   t   Namet   FalseR6   R   t   allowed_valuesR'   (   R   R,   t   validt   keyt   result(    (    sV   /var/www/html/kasc-wg8/erics/lib/python2.6/site-packages/pip/vendor/distlib/markers.pyt   do_attributeh   s    
c         C   sÃ   |  i  | i d ƒ } | i i t i j } | i i t i j } | p | p t ‚ | o | p | oU | oM xJ | i d D]7 } |  i  | ƒ } | o | p | o | o Pq€ q€ Wn | S(   Ni    i   (   R0   t   valuest   opR(   R%   t   Ort   AndR2   (   R   R,   R=   t   is_ort   is_andt   n(    (    sV   /var/www/html/kasc-wg8/erics/lib/python2.6/site-packages/pip/vendor/distlib/markers.pyt	   do_boolopw   s     c   	         sÚ   ‡  ‡ f d †  } ˆ  i  } ˆ i | ƒ } t } x£ t ˆ  i ˆ  i ƒ D]Œ \ } } | | | ƒ | i i i ƒ  } | ˆ i	 j o t
 d | ƒ ‚ n ˆ i | ƒ } ˆ i	 | | | ƒ } | p Pn | } | } qF W| S(   Nc            s»   t  } t |  t i ƒ o t | t i ƒ o
 t } nU t |  t i ƒ oA t | t i ƒ o. ˆ i |  ƒ } ˆ i | ƒ } | | j } n | p& ˆ i ˆ  i ƒ } t	 d | ƒ ‚ n d  S(   Ns   Invalid comparison: %s(
   R7   R$   R%   t   StrR9   R1   R6   R   R+   R'   (   t   lhsnodet   rhsnodeR;   t   klhst   krhsR   (   R,   R   (    sV   /var/www/html/kasc-wg8/erics/lib/python2.6/site-packages/pip/vendor/distlib/markers.pyt   sanity_check„   s    &
s   unsupported operation: %r(   t   leftR0   R7   t   zipt   opst   comparatorsR(   R)   R*   t	   operatorsR'   (	   R   R,   RL   RH   t   lhsR=   R@   RI   t   rhs(    (   R,   R   sV   /var/www/html/kasc-wg8/erics/lib/python2.6/site-packages/pip/vendor/distlib/markers.pyt
   do_compareƒ   s"    	 
c         C   s   |  i  | i ƒ S(   N(   R0   t   body(   R   R,   (    (    sV   /var/www/html/kasc-wg8/erics/lib/python2.6/site-packages/pip/vendor/distlib/markers.pyt   do_expression¡   s    c         C   s‚   t  } | i |  i j o t } |  i | i } n. | i |  i j o t } |  i | i } n | p t d | i ƒ ‚ n | S(   Ns   invalid expression: %s(   R9   R4   R   R7   R:   R'   (   R   R,   R;   R=   (    (    sV   /var/www/html/kasc-wg8/erics/lib/python2.6/site-packages/pip/vendor/distlib/markers.pyt   do_name¤   s    c         C   s   | i  S(   N(   R   (   R   R,   (    (    sV   /var/www/html/kasc-wg8/erics/lib/python2.6/site-packages/pip/vendor/distlib/markers.pyt   do_str°   s    N(   R)   t
   __module__t   __doc__RQ   t   syst   platformt   version_infot   versiont   splitt   ost   namet   strR   t   machineR    R:   R   R   R   R    R0   R6   R>   RF   RT   RV   RW   RX   (    (    (    sV   /var/www/html/kasc-wg8/erics/lib/python2.6/site-packages/pip/vendor/distlib/markers.pyR      s>   









		
							c         C   s   t  | ƒ i |  i ƒ  ƒ 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   R0   t   strip(   t   markert   execution_context(    (    sV   /var/www/html/kasc-wg8/erics/lib/python2.6/site-packages/pip/vendor/distlib/markers.pyR   ´   s    	(   RZ   R%   R`   R[   R\   t   compatR    R   t   utilR   t   __all__t   objectR   R   R   (    (    (    sV   /var/www/html/kasc-wg8/erics/lib/python2.6/site-packages/pip/vendor/distlib/markers.pyt   <module>   s   	¡