o
    N&`!                  	   @   s  U d dl Z d dlZd dlZd dlZd dlmZmZmZmZm	Z	m
Z
mZ d dlmZmZmZmZmZmZmZmZmZ ddlmZmZ g dZeeegef ZG dd deZG d	d
 d
eZ G dd deZ!G dd dZ"G dd de"Z#G dd de"Z$G dd de"Z%ededB edB edB edB edB edB edB edB edB edB ed B ed!B ed"B ed#B ed$B ed%B ed&B Z&ddddddd'Z'e&(d(d)  ed*ed+B ed,B ed-B ed.B ed/B ed0B ed1B Z)e)ed2B ed3B Z*e*(d4d)  ed5ed6B Z+e+(d7d)  ed8ed9B Z,e&e+B Z-ee-e* e- Z.e.(d:d)  ed;/ Z0ed</ Z1e Z2e.ee0e2 e1 B Z3e2e3ee,e2  >  ee2 e Z4d=eeee f d>ee fd?d@Z5	AdadBeee e
e"dCf ef dDe	e d>efdEdFZ6dGd) dHd) e j7e j8e j9e j:e j;e j<dIZ=eeef e>dJ< dKedLe%dMed>efdNdOZ?G dPdQ dQZ@e@ ZAdReeef dSed>efdTdUZBdVee dReeef d>efdWdXZCdYdZd>efd[d\ZDd>eeef fd]d^ZEG d_d` d`ZFdS )b    N)AnyCallableDictListOptionalTupleUnion)	ForwardGroupLiteralParseExceptionParseResultsQuotedString
ZeroOrMore	stringEndstringStart   )InvalidSpecifier	Specifier)InvalidMarkerUndefinedComparisonUndefinedEnvironmentNameMarkerdefault_environmentc                   @      e Zd ZdZdS )r   zE
    An invalid marker was found, users should refer to PEP 508.
    N__name__
__module____qualname____doc__ r    r    3/usr/lib/python3/dist-packages/packaging/markers.pyr   $       r   c                   @   r   )r   zP
    An invalid operation was attempted on a value that doesn't support it.
    Nr   r    r    r    r!   r   *   r"   r   c                   @   r   )r   z\
    A name was attempted to be used that does not exist inside of the
    environment.
    Nr   r    r    r    r!   r   0   r"   r   c                   @   sH   e Zd ZdeddfddZdefddZdefdd	Zdefd
dZdS )NodevaluereturnNc                 C   s
   || _ d S N)r$   )selfr$   r    r    r!   __init__8      
zNode.__init__c                 C   
   t | jS r&   )strr$   r'   r    r    r!   __str__;   r)   zNode.__str__c                 C   s   d| j j d|  dS )N<z('')>)	__class__r   r,   r    r    r!   __repr__>   s   zNode.__repr__c                 C   s   t r&   )NotImplementedErrorr,   r    r    r!   	serializeA   s   zNode.serialize)	r   r   r   r   r(   r+   r-   r1   r3   r    r    r    r!   r#   7   s
    r#   c                   @      e Zd ZdefddZdS )Variabler%   c                 C      t | S r&   r+   r,   r    r    r!   r3   F      zVariable.serializeNr   r   r   r+   r3   r    r    r    r!   r5   E       r5   c                   @   r4   )Valuer%   c                 C   s   d|  dS )N"r    r,   r    r    r!   r3   K      zValue.serializeNr9   r    r    r    r!   r;   J   r:   r;   c                   @   r4   )Opr%   c                 C   r6   r&   r7   r,   r    r    r!   r3   P   r8   zOp.serializeNr9   r    r    r    r!   r>   O   r:   r>   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_implementationZextra)rJ   rK   rL   rM   rN   rO   c                 C   s   t t|d |d S Nr   )r5   ALIASESgetsltr    r    r!   <lambda>p   s    rW   z=====>=<=!=z~=>r.   not ininc                 C      t |d S rP   )r>   rS   r    r    r!   rW   w       'r<   c                 C   r_   rP   )r;   rS   r    r    r!   rW   z   r`   andorc                 C   r_   rP   )tuplerS   r    r    r!   rW      r`   ()resultsr%   c                 C   s   t | trdd | D S | S )Nc                 S   s   g | ]}t |qS r    )_coerce_parse_result).0ir    r    r!   
<listcomp>       z(_coerce_parse_result.<locals>.<listcomp>)
isinstancer   )rg   r    r    r!   rh      s   
rh   Tmarker.firstc                 C   s   t | tttfs
J t | tr$t| dkr$t | d ttfr$t| d S t | tr@dd | D }|r7d|S dd| d S t | trOddd	 | D S | S )
Nr   r   c                 s   s    | ]	}t |d dV  qdS )F)ro   N)_format_markerri   mr    r    r!   	<genexpr>   s    z!_format_marker.<locals>.<genexpr> re   rf   c                 S   s   g | ]}|  qS r    )r3   rq   r    r    r!   rk      rl   z"_format_marker.<locals>.<listcomp>)rm   listrd   r+   lenrp   join)rn   ro   innerr    r    r!   rp      s    



rp   c                 C   s   | |v S r&   r    lhsrhsr    r    r!   rW          c                 C   s   | |vS r&   r    ry   r    r    r!   rW      r|   )r^   r]   r.   rZ   rX   r[   rY   r\   
_operatorsrz   opr{   c                 C   st   zt d| |g}W n	 ty   Y nw || S t| }|d u r5td|d| d|d|| |S )N z
Undefined z on z and .)r   rw   r3   r   containsr}   rR   r   )rz   r~   r{   specZoperr    r    r!   _eval_op   s   

r   c                   @   s   e Zd ZdS )	UndefinedN)r   r   r   r    r    r    r!   r      s    r   environmentnamec                 C   s(   |  |t}t|trt|d|S )Nz* does not exist in evaluation environment.)rR   
_undefinedrm   r   r   )r   r   r$   r    r    r!   _get_env   s   
r   markersc           	      C   s   g g}| D ]Y}t |tttfsJ t |tr!|d t|| qt |trO|\}}}t |tr:t||j}|j}n	|j}t||j}|d t	||| q|dv sUJ |dkr^|g  qt
dd |D S )N)rb   rc   rc   c                 s   s    | ]}t |V  qd S r&   )all)ri   itemr    r    r!   rs      s    z$_evaluate_markers.<locals>.<genexpr>)rm   ru   rd   r+   append_evaluate_markersr5   r   r$   r   any)	r   r   groupsrn   rz   r~   r{   Z	lhs_valueZ	rhs_valuer    r    r!   r      s$   




r   infozsys._version_infoc                 C   s2   d | }| j}|dkr||d t| j 7 }|S )Nz{0.major}.{0.minor}.{0.micro}finalr   )formatreleaselevelr+   serial)r   versionkindr    r    r!   format_full_version   s
   
r   c                  C   s^   t tjj} tjj}|| tjt t t	 t t
 t dt d d tjdS )Nr      )rA   r?   rI   rE   rC   rF   rD   rB   r@   rG   rH   )r   sysimplementationr   r   osplatformmachinereleasesystemrG   rO   rw   Zpython_version_tuple)ZiverrA   r    r    r!   r     s   r   c                   @   sZ   e Zd ZdeddfddZdefddZdefdd	Zdd
eeeef  de	fddZ
dS )r   rn   r%   Nc                 C   sT   zt t|| _W d S  ty) } ztd|d||j|jd  d }~ww )NzInvalid marker: z, parse error at    )rh   MARKERZparseString_markersr   r   loc)r'   rn   er    r    r!   r(     s   zMarker.__init__c                 C   r*   r&   )rp   r   r,   r    r    r!   r-     r)   zMarker.__str__c                 C   s   d|  dS )Nz	<Marker('r/   r    r,   r    r    r!   r1      r=   zMarker.__repr__r   c                 C   s$   t  }|du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'   r   Zcurrent_environmentr    r    r!   evaluate#  s   	
zMarker.evaluater&   )r   r   r   r+   r(   r-   r1   r   r   boolr   r    r    r    r!   r     s
    	$r   )T)Goperatorr   r   r   typingr   r   r   r   r   r   r   Z	pyparsingr	   r
   r   Lr   r   r   r   r   r   Z
specifiersr   r   __all__r+   r   ZOperator
ValueErrorr   r   r   r#   r5   r;   r>   ZVARIABLErQ   ZsetParseActionZVERSION_CMPZ	MARKER_OPZMARKER_VALUEZBOOLOPZ
MARKER_VARZMARKER_ITEMsuppressZLPARENZRPARENZMARKER_EXPRZMARKER_ATOMr   rh   rp   ltleeqnegegtr}   __annotations__r   r   r   r   r   r   r   r   r    r    r    r!   <module>   s   
$,	
>"
"