Your IP : 18.119.142.113


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

�
��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&	

	cCsd|jj|jfS(Ns%s.%s(tvaluetidtattr(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,R9R-tNametFalseR<Rtallowed_valuesR/(RR4tvalidtkeytresult((s?/usr/lib/python2.7/site-packages/pip/_vendor/distlib/markers.pytdo_attributejs	
cCs�|j|jd�}|jjtjk}|jjtjk}|rL|sY|r�|r�xD|jdD]2}|j|�}|r�|s�|rg|rgPqgqgWn|S(Nii(R8tvaluestopR0R-tOrtAnd(RR4RBtis_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/(tlhsnodetrhsnodeR@R$(R4R(s?/usr/lib/python2.7/site-packages/pip/_vendor/distlib/markers.pytsanity_check�s$	sunsupported operation: %r(tleftR8RLtziptopstcomparatorsR0R1R2t	operatorsR/(	RR4RPRNtlhsRBREROtrhs((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:RRLR?R/(RR4R@RB((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__RUtsystplatformtversion_infotversiontsplittostnametstrRtreleasetmachineRR?RR R%R(R8R<RCRKRXRZR[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-RdR_R`tcompatRRtutilRt__all__tobjectRRR(((s?/usr/lib/python2.7/site-packages/pip/_vendor/distlib/markers.pyt<module>s	�

?>