U ��.e: � @s@ddlmZmZmZddlZddlZddlZddlZddlm Z m Z m Z m Z ddlm Z mZmZmZddlmZddlmZddlmZmZd d d d d gZGdd �d e�ZGdd �d e�ZGdd �d e�ZGdd�de�ZGdd�de�ZGdd�de�Z Gdd�de�Z!ed�ed�Bed�Bed�Bed�Bed�Bed�Bed �Bed!�Bed"�Bed#�Bed$�Bed%�Bed&�Bed'�Bed(�Bed)�Bed*�BZ"d#d"ddddd+�Z#e"�$d,d-��ed.�ed/�Bed0�Bed1�Bed2�Bed3�Bed4�Bed5�BZ%e%ed6�Bed7�BZ&e&�$d8d-��ed9�ed:�BZ'e'�$d;d-��ed<�ed=�BZ(e"e'BZ)ee)e&e)�Z*e*�$d>d-��ed?��+�Z,ed@��+�Z-e�Z.e*ee,e.e-�BZ/e.e/e e(e.�>e e.e Z0dAdB�Z1dSdDdE�Z2dFd-�dGd-�ej3ej4ej5ej6ej7ej8dH�Z9dIdJ�Z:e�Z;dKdL�ZdQd �Z?GdRd �d e�Z@dS)T�)�absolute_import�division�print_functionN)�ParseException� ParseResults� stringStart� stringEnd)� ZeroOrMore�Group�Forward� QuotedString)�Literal�)� string_types)� Specifier�InvalidSpecifier� InvalidMarker�UndefinedComparison�UndefinedEnvironmentName�Marker�default_environmentc@seZdZdZdS)rzE An invalid marker was found, users should refer to PEP 508. N��__name__� __module__� __qualname__�__doc__�rr�A/usr/lib/python3.8/site-packages/pip/_vendor/packaging/markers.pyrsc@seZdZdZdS)rzP An invalid operation was attempted on a value that doesn't support it. Nrrrrrr"sc@seZdZdZdS)rz\ A name was attempted to be used that does not exist inside of the environment. Nrrrrrr(sc@s,eZdZdd�Zdd�Zdd�Zdd�Zd S) �NodecCs ||_dS�N)�value)�selfr rrr�__init__0sz Node.__init__cCs t|j�Sr)�strr �r!rrr�__str__3sz Node.__str__cCsd�|jjt|��S)Nz <{0}({1!r})>)�format� __class__rr#r$rrr�__repr__6sz Node.__repr__cCst�dSr)�NotImplementedErrorr$rrr� serialize9szNode.serializeN)rrrr"r%r(r*rrrrr/src@seZdZdd�ZdS)�VariablecCst|�Sr�r#r$rrrr*>szVariable.serializeN�rrrr*rrrrr+=sr+c@seZdZdd�ZdS)�ValuecCs d�|�S)Nz"{0}")r&r$rrrr*CszValue.serializeNr-rrrrr.Bsr.c@seZdZdd�ZdS)�OpcCst|�Srr,r$rrrr*Hsz Op.serializeNr-rrrrr/Gsr/�implementation_version�platform_python_implementation�implementation_name�python_full_version�platform_release�platform_version�platform_machine�platform_system�python_version� sys_platform�os_name�os.name� sys.platform�platform.version�platform.machine�platform.python_implementation�python_implementationZextra)r;r<r=r>r?r@cCstt�|d|d��S�Nr)r+�ALIASES�get��s�l�trrr�h�rHz===�==�>=�<=�!=z~=�>�<�not in�incCs t|d�SrA)r/rDrrrrHorI�'�"cCs t|d�SrA)r.rDrrrrHrrI�and�orcCs t|d�SrA)�tuplerDrrrrHyrI�(�)cCs t|t�rdd�|D�S|SdS)NcSsg|] }t|��qSr)�_coerce_parse_result)�.0�irrr� �sz(_coerce_parse_result..)� isinstancer)�resultsrrrrY�s rYTcCs�t|t�r4t|�dkr4t|dttf�r4t|d�St|t�rndd�|D�}|rZd�|�Sdd�|�dSn"t|t�r�d�dd �|D��S|SdS) Nrrcss|]}t|dd�VqdS)F)�firstN)�_format_marker�rZ�mrrr� �sz!_format_marker..� rWrXcSsg|] }|���qSr)r*rarrrr\�sz"_format_marker..)r]�list�lenrVr`�join)�markerr_�innerrrrr`�s� ��    r`cCs||kSrr��lhs�rhsrrrrH�rIcCs||kSrrrjrrrrH�rI)rQrPrOrLrJrMrKrNcCslztd�|��|g��}Wntk r.Yn X|�|�St�|���}|dkrbtd�|||���|||�S)N�z#Undefined {0!r} on {1!r} and {2!r}.) rrgr*r�contains� _operatorsrCrr&)rk�oprl�specZoperrrr�_eval_op�s  �rrcCs&|�|t�}|tkr"td�|���|S)Nz/{0!r} does not exist in evaluation environment.)rC� _undefinedrr&)� environment�namer rrr�_get_env�s  �rvc Cs�gg}|D]�}t|t�r.|d�t||��q t|t�r�|\}}}t|t�r`t||j�}|j}n|j}t||j�}|d�t|||��q |dkr |�g�q t dd�|D��S)N�����rUcss|]}t|�VqdSr)�all)rZ�itemrrrrc�sz$_evaluate_markers..) r]re�append�_evaluate_markersrVr+rvr rr�any) Zmarkersrt�groupsrhrkrprlZ lhs_valueZ rhs_valuerrrr{�s       r{cCs2d�|�}|j}|dkr.||dt|j�7}|S)Nz{0.major}.{0.minor}.{0.micro}�finalr)r&� releaselevelr#�serial)�info�versionZkindrrr�format_full_version�s  r�cCsrttd�r ttjj�}tjj}nd}d}||tjt��t� �t� �t��t� �t� �d� t��dd��tjd� S)N�implementation�0rm�.�) r2r0r:r6r4r7r5r3r1r8r9)�hasattr�sysr�r�r�ru�os�platform�machine�release�systemr8r@rgZpython_version_tuple)Ziverr2rrrr�s"   �c@s.eZdZdd�Zdd�Zdd�Zd dd �ZdS) rc Cs`ztt�|��|_WnFtk rZ}z(d�|||j|jd��}t|��W5d}~XYnXdS)Nz+Invalid marker: {0!r}, parse error at {1!r}�)rY�MARKERZ parseString�_markersrr&Zlocr)r!rh�eZerr_strrrrr" s�zMarker.__init__cCs t|j�Sr)r`r�r$rrrr%szMarker.__str__cCsd�t|��S)Nz)r&r#r$rrrr(szMarker.__repr__NcCs$t�}|dk r|�|�t|j|�S)a$Evaluate a marker. Return the boolean from evaluating the given marker against the environment. environment is an optional argument to override all or part of the determined environment. The environment is determined from the current Python process. N)r�updater{r�)r!rtZcurrent_environmentrrr�evaluates  zMarker.evaluate)N)rrrr"r%r(r�rrrrr s )T)AZ __future__rrr�operatorr�r�r�Zpip._vendor.pyparsingrrrrr r r r r �LZ_compatrZ specifiersrr�__all__� ValueErrorrrr�objectrr+r.r/ZVARIABLErBZsetParseActionZ VERSION_CMPZ MARKER_OPZ MARKER_VALUEZBOOLOPZ MARKER_VARZ MARKER_ITEM�suppressZLPARENZRPARENZ MARKER_EXPRZ MARKER_ATOMr�rYr`�lt�le�eq�ne�ge�gtrorrrsrvr{r�rrrrrr�s�  � �������� � � � � �������>�    �