Your IP : 3.144.227.73


Current Path : /lib/python2.7/site-packages/pip/_vendor/distlib/
Upload File :
Current File : //lib/python2.7/site-packages/pip/_vendor/distlib/markers.pyc

�
��abc@s�dZddlZddlZddlZddlZddlmZmZddlm	Z	dgZ
defd��YZdd	�ZdS(
sEParser for the environment markers micro-language defined in PEP 345.i����Ni(tpython_implementationtstring_types(tin_venvt	interprett	EvaluatorcBs^eZdZi	d�d6d�d6d�d6d�d6d	�d
6d�d6d
�d6d�d6d�d6Zi	ejd6dejd d6ejjdd�dd6e	j
d6ee��d6ej
�d6ej�d6ej�d6e�d 6Zd,d!�Zd"�Zd#�Zd,d$�Zd%�Zd&�Zd'�Zd(�Zd)�Zd*�Zd+�ZRS(-s5
    A limited evaluator for Python expressions.
    cCs
||kS(N((txty((s?/usr/lib/python2.7/site-packages/pip/_vendor/distlib/markers.pyt<lambda>tteqcCs
||kS(N((RR((s?/usr/lib/python2.7/site-packages/pip/_vendor/distlib/markers.pyRRtgtcCs
||kS(N((RR((s?/usr/lib/python2.7/site-packages/pip/_vendor/distlib/markers.pyRRtgtecCs
||kS(N((RR((s?/usr/lib/python2.7/site-packages/pip/_vendor/distlib/markers.pyRRtincCs
||kS(N((RR((s?/usr/lib/python2.7/site-packages/pip/_vendor/distlib/markers.pyRRtltcCs
||kS(N((RR((s?/usr/lib/python2.7/site-packages/pip/_vendor/distlib/markers.pyRRtltecCs|S(N((R((s?/usr/lib/python2.7/site-packages/pip/_vendor/distlib/markers.pyR RtnotcCs
||kS(N((RR((s?/usr/lib/python2.7/site-packages/pip/_vendor/distlib/markers.pyR!RtnoteqcCs
||kS(N((RR((s?/usr/lib/python2.7/site-packages/pip/_vendor/distlib/markers.pyR"Rtnotintsys_platforms%s.%sitpython_versiont iitpython_full_versiontos_nametplatform_in_venvtplatform_releasetplatform_versiontplatform_machinetplatform_python_implementationcCs|p	i|_d|_dS(su
        Initialise an instance.

        :param context: If specified, names are looked up in this mapping.
        N(tcontexttNonetsource(tselfR((s?/usr/lib/python2.7/site-packages/pip/_vendor/distlib/markers.pyt__init__3scCsHd}d|j|||!}||t|j�krD|d7}n|S(sH
        Get the part of the source which is causing a problem.
        i
s%rs...(Rtlen(Rtoffsettfragment_lents((s?/usr/lib/python2.7/site-packages/pip/_vendor/distlib/markers.pytget_fragment<s

cCst|d|d�S(s@
        Get a handler for the specified AST node type.
        sdo_%sN(tgetattrR(Rt	node_type((s?/usr/lib/python2.7/site-packages/pip/_vendor/distlib/markers.pytget_handlerFscCst|t�r�||_idd6}|r8||d<nytj||�}Wq�tk
r�}|j|j�}td|��q�Xn|jj	j
�}|j|�}|dkr�|jdkr�d}n|j|j
�}td||f��n||�S(sf
        Evaluate a source string or node, using ``filename`` when
        displaying errors.
        tevaltmodetfilenamessyntax error %ss(source not available)s don't know how to evaluate %r %sN(t
isinstanceRRtasttparsetSyntaxErrorR%R"t	__class__t__name__tlowerR(Rt
col_offset(RtnodeR+tkwargsteR$R'thandler((s?/usr/lib/python2.7/site-packages/pip/_vendor/distlib/markers.pytevaluateLs&	

	cCs5t|tj�std��d|jj|jfS(Nsattribute node expecteds%s.%s(R,R-t	AttributetAssertionErrortvaluetidtattr(RR4((s?/usr/lib/python2.7/site-packages/pip/_vendor/distlib/markers.pytget_attr_keyfscCs�t|jtj�st}n-|j|�}||jkpH||jk}|sdtd|��n||jkr�|j|}n
|j|}|S(Nsinvalid expression: %s(	R,R;R-tNametFalseR>Rtallowed_valuesR/(RR4tvalidtkeytresult((s?/usr/lib/python2.7/site-packages/pip/_vendor/distlib/markers.pytdo_attributejs	
cCs�|j|jd�}|jjtjk}|jjtjk}|sR|sRt�|r^|sk|r�|r�xD|jdD]2}|j|�}|r�|s�|ry|ryPqyqyWn|S(Nii(R8tvaluestopR0R-tOrtAndR:(RR4RDtis_ortis_andtn((s?/usr/lib/python2.7/site-packages/pip/_vendor/distlib/markers.pyt	do_boolopxsc	s���fd�}�j}�j|�}t}x�t�j�j�D]�\}}|||�|jjj�}|�j	kr�t
d|��n�j|�}�j	|||�}|s�Pn|}|}qFW|S(Ncsbt}t|tj�r3t|tj�r3t}n|s^�j�j�}td|��ndS(NsInvalid comparison: %s(tTrueR,R-tStrR@R%R3R/(tlhsnodetrhsnodeRBR$(R4R(s?/usr/lib/python2.7/site-packages/pip/_vendor/distlib/markers.pytsanity_check�s$	sunsupported operation: %r(tleftR8RNtziptopstcomparatorsR0R1R2t	operatorsR/(	RR4RRRPtlhsRDRGRQtrhs((R4Rs?/usr/lib/python2.7/site-packages/pip/_vendor/distlib/markers.pyt
do_compare�s 
	"

cCs|j|j�S(N(R8tbody(RR4((s?/usr/lib/python2.7/site-packages/pip/_vendor/distlib/markers.pyt
do_expression�scCs|t}|j|jkr1t}|j|j}n+|j|jkr\t}|j|j}n|sxtd|j��n|S(Nsinvalid expression: %s(R@R<RRNRAR/(RR4RBRD((s?/usr/lib/python2.7/site-packages/pip/_vendor/distlib/markers.pytdo_name�scCs|jS(N(R$(RR4((s?/usr/lib/python2.7/site-packages/pip/_vendor/distlib/markers.pytdo_str�sN(R1t
__module__t__doc__RWtsystplatformtversion_infotversiontsplittostnametstrRtreleasetmachineRRARR R%R(R8R>RERMRZR\R]R^(((s?/usr/lib/python2.7/site-packages/pip/_vendor/distlib/markers.pyRs@














		
							cCst|�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
    (RR8tstrip(tmarkertexecution_context((s?/usr/lib/python2.7/site-packages/pip/_vendor/distlib/markers.pyR�s	(R`R-RfRaRbtcompatRRtutilRt__all__tobjectRRR(((s?/usr/lib/python2.7/site-packages/pip/_vendor/distlib/markers.pyt<module>s	�

?>