U
    i1                  	   @  s  U d dl mZ 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 ddlmZ ddlmZ ddlmZmZ dd	lmZ d
ddddddgZeeeeee f gef Z e	d Z!ddhZ"ddddhZ#G dd de$Z%G dd de$Z&G dd de$Z'G dd
 d
eZ(dddddZ)d d d!d"d#Z*dKd%d&d'd(d)d*Z+d+d, d-d, d.d, ej,ej,ej-ej,d/d, d0Z.d1e/d2< d'd3d4d'd5d6d7d8Z0d'd4d'd9d:d;d<Z1d d=d5d>d?d@Z2dAd'dBdCdDZ3d
dEdFdZ4G dGd dZ5d=d=dHdIdJZ6dS )L    )annotationsN)AbstractSetCallableLiteralMapping	TypedDictUnioncast   )
MarkerAtom
MarkerListOpValueVariable)parse_marker)ParserSyntaxError)InvalidSpecifier	Specifiercanonicalize_nameEnvironmentEvaluateContextInvalidMarkerMarkerUndefinedComparisonUndefinedEnvironmentNamedefault_environment)metadata	lock_filerequirementextrasdependency_groupsimplementation_versionplatform_releasepython_full_versionpython_versionc                   @  s   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+   G/var/www/SKSBV.IN/venv/lib/python3.8/site-packages/packaging/markers.pyr   (   s   c                   @  s   e Zd ZdZdS )r   zP
    An invalid operation was attempted on a value that doesn't support it.
    Nr&   r+   r+   r+   r,   r   .   s   c                   @  s   e Zd ZdZdS )r   z\
    A name was attempted to be used that does not exist inside of the
    environment.
    Nr&   r+   r+   r+   r,   r   4   s   c                   @  sf   e Zd ZU ded< ded< ded< ded< ded< ded< ded< ded	< ded
< ded< ded< dS )r   strimplementation_namer"   os_nameplatform_machiner#   platform_systemplatform_versionr$   platform_python_implementationr%   sys_platformN)r'   r(   r)   __annotations__r+   r+   r+   r,   r   ;   s   
zMarkerList | MarkerAtom | str)resultreturnc                 C  sp   t | ts| S | \}}}t |tr@|jdkr@t|j}t|}n&t |trf|jdkrft|j}t|}|||fS )Nextra)
isinstancetupler   valuer   r   )r6   lhsoprhsnormalized_extrar+   r+   r,   _normalize_extras   s    




r@   r   )resultsr7   c                 C  s   dd | D S )z!
    Normalize extra values.
    c                 S  s   g | ]}t |qS r+   )r@   ).0rr+   r+   r,   
<listcomp>   s     z+_normalize_extra_values.<locals>.<listcomp>r+   )rA   r+   r+   r,   _normalize_extra_values   s    rE   Tzlist[str] | MarkerAtom | strzbool | Noner-   )markerfirstr7   c                 C  s   t | tttfstt | trHt| dkrHt | d ttfrHt| d S t | trdd | D }|rnd|S dd| d S n"t | trddd	 | D S | S d S )
Nr
   r   c                 s  s   | ]}t |d dV  qdS )F)rG   N)_format_markerrB   mr+   r+   r,   	<genexpr>   s     z!_format_marker.<locals>.<genexpr> ()c                 S  s   g | ]}|  qS r+   )	serializerI   r+   r+   r,   rD      s     z"_format_marker.<locals>.<listcomp>)r9   listr:   r-   AssertionErrorlenrH   join)rF   rG   innerr+   r+   r,   rH      s     



rH   c                 C  s   | |kS Nr+   r<   r>   r+   r+   r,   <lambda>       rW   c                 C  s   | |kS rU   r+   rV   r+   r+   r,   rW      rX   c                 C  s   dS NFr+   Z_lhsZ_rhsr+   r+   r,   rW      rX   c                 C  s   dS rY   r+   rZ   r+   r+   r,   rW      rX   )inznot in<z<=z==z!=z>=>zdict[str, Operator]
_operatorsr   zstr | AbstractSet[str]bool)r<   r=   r>   keyr7   c                C  s   |  }|tkrHzt| | }W n tk
r8   Y nX |j| ddS t|}|d krvtd|d| d|d|| |S )NT)prereleasesz
Undefined z on z and .)rO   MARKERS_REQUIRING_VERSIONr   r   containsr^   getr   )r<   r=   r>   r`   Zop_strspecoperr+   r+   r,   _eval_op   s    
rh   z"tuple[str, str | AbstractSet[str]])r<   r>   r`   r7   c                 C  sb   |dkr"t |tstd| |fS |tkrZt |trDt| t|fS t| dd |D fS | |fS )Nr8   zextra value must be a stringc                 S  s   h | ]}t |qS r+   r   )rB   vr+   r+   r,   	<setcomp>   s     z_normalize.<locals>.<setcomp>)r9   r-   rQ   MARKERS_ALLOWING_SETr   )r<   r>   r`   r+   r+   r,   
_normalize   s    
rl   !dict[str, str | AbstractSet[str]])markersenvironmentr7   c           
   	   C  s   g g}| D ]}t |tr.|d t|| q
t |tr|\}}}t |trb|j}|| }|j}	n|j}|j}|| }	t |tstdt	||	|d\}}	|d t
|||	|d q
|dkr|g  q
|dkrq
td|q
tdd |D S )	Nzlhs must be a string)r`   orandzUnexpected marker c                 s  s   | ]}t |V  qd S rU   )all)rB   itemr+   r+   r,   rK     s     z$_evaluate_markers.<locals>.<genexpr>)r9   rP   append_evaluate_markersr:   r   r;   r-   rQ   rl   rh   	TypeErrorany)
rn   ro   groupsrF   r<   r=   r>   environment_key	lhs_value	rhs_valuer+   r+   r,   rv      s,    



rv   zsys._version_info)infor7   c                 C  sB   | j  d| j d| j }| j}|dkr>||d t| j 7 }|S )Nrb   finalr   )majorminormicroreleaselevelr-   serial)r}   versionkindr+   r+   r,   format_full_version
  s
    r   r7   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 )Nrb      )r.   r"   r/   r0   r#   r1   r2   r$   r3   r%   r4   )r   sysimplementationr   nameosplatformmachinereleasesystemr%   python_implementationrS   python_version_tuple)iverr.   r+   r+   r,   r     s    c                   @  sj   e Zd ZdddddZddddZddd	d
ZddddZdddddZdddddddZdS )r   r-   None)rF   r7   c              
   C  sN   g | _ ztt|| _ W n0 tk
rH } ztt||W 5 d }~X Y nX d S rU   )_markersrE   _parse_markerr   r   r-   )selfrF   er+   r+   r,   __init__%  s
    zMarker.__init__r   c                 C  s
   t | jS rU   )rH   r   r   r+   r+   r,   __str__C  s    zMarker.__str__c                 C  s   d| j j d|  dS )Nr\   z('z')>)	__class__r'   r   r+   r+   r,   __repr__F  s    zMarker.__repr__intc                 C  s   t t| S rU   )hashr-   r   r+   r+   r,   __hash__I  s    zMarker.__hash__objectr_   )otherr7   c                 C  s   t |tstS t| t|kS rU   )r9   r   NotImplementedr-   )r   r   r+   r+   r,   __eq__L  s    
zMarker.__eq__Nr   z+Mapping[str, str | AbstractSet[str]] | Noner   )ro   contextr7   c                 C  s   t dt }|dkr(|jt t d n|dkr8d|d< |dk	rt|| d|krtt d|d }|rlt|nd|d< t| jt|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 *context* parameter specifies what
        context the markers are being evaluated for, which influences what markers
        are considered valid. Acceptable values are "metadata" (for core metadata;
        default), "lock_file", and "requirement" (i.e. all other situations).

        The environment is determined from the current Python process.
        rm   r   )r    r!   r    r8   Nz
str | None)r	   r   update	frozensetr   rv   r   _repair_python_full_version)r   ro   r   current_environmentr8   r+   r+   r,   evaluateR  s(      
 zMarker.evaluate)Nr   )	r'   r(   r)   r   r   r   r   r   r   r+   r+   r+   r,   r   $  s     )envr7   c                 C  s*   t d| d }|dr&| d| d< | S )z
    Work around platform.python_version() returning something that is not PEP 440
    compliant for non-tagged Python builds.
    r-   r$   +local)r	   endswith)r   r$   r+   r+   r,   r   z  s    
r   )T)7
__future__r   operatorr   r   r   typingr   r   r   r   r   r   r	   _parserr   r   r   r   r   r   r   
_tokenizerr   
specifiersr   r   utilsr   __all__r-   r_   Operatorr   rk   rc   
ValueErrorr   r   r   r   r@   rE   rH   eqner^   r5   rh   rl   rv   r   r   r   r   r+   r+   r+   r,   <module>   sf    $
H	 !V