a
    qJh/                  	   @  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 g d
Ze	eeeee f gef Z e
d Z!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(dBdddddd Z)d!d" d#d" ej*ej+ej,ej-ej.ej/d$Z0d%e1d&< dd'd(d)d*d+d,Z2dd(dd-d.d/d0Z3d1d2d)d3d4d5Z4d6dd7d8d9Z5dd:d;d<Z6G d=d> d>Z7d2d2d?d@dAZ8dS )C    )annotationsN)AbstractSetAnyCallableLiteral	TypedDictUnioncast   )
MarkerAtom
MarkerListOpValueVariable)parse_marker)ParserSyntaxError)InvalidSpecifier	Specifiercanonicalize_name)EvaluateContextInvalidMarkerMarkerUndefinedComparisonUndefinedEnvironmentNamedefault_environment)metadata	lock_filerequirementextrasdependency_groupsc                   @  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&   C/var/www/shaz/venv/lib/python3.9/site-packages/packaging/markers.pyr   !   s   r   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   r   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   -   s   r   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 )Environmentstrimplementation_nameimplementation_versionos_nameplatform_machineplatform_releaseplatform_systemplatform_versionpython_full_versionplatform_python_implementationpython_versionsys_platformN)r"   r#   r$   __annotations__r&   r&   r&   r'   r(   4   s   
r(   r   )resultsreturnc                 C  s|   t | d trx| d \}}}t |trD|jdkrDt|j}t|}n&t |trj|jdkrjt|j}t|}|||f| d< | S )z!
    Normalize extra values.
    r   extra)
isinstancetupler   valuer   r   )r6   lhsoprhsnormalized_extrar&   r&   r'   _normalize_extra_values|   s    


r@   Tzlist[str] | MarkerAtom | strzbool | Noner)   )markerfirstr7   c                 C  s   t | tttfsJ 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)rB   N)_format_marker.0mr&   r&   r'   	<genexpr>       z!_format_marker.<locals>.<genexpr> ()c                 S  s   g | ]}|  qS r&   )	serializerD   r&   r&   r'   
<listcomp>   rH   z"_format_marker.<locals>.<listcomp>)r9   listr:   r)   lenrC   join)rA   rB   innerr&   r&   r'   rC      s     



rC   c                 C  s   | |v S Nr&   r<   r>   r&   r&   r'   <lambda>   rH   rT   c                 C  s   | |vS rR   r&   rS   r&   r&   r'   rT      rH   )inznot in<z<=z==z!=z>=>zdict[str, Operator]
_operatorsr   zstr | AbstractSet[str]bool)r<   r=   r>   r7   c                 C  s   t |trFztd| |g}W n ty6   Y n0 |j| ddS t| }|d u rxt	d|d| d|d|| |S )N T)prereleasesz
Undefined z on z and .)
r9   r)   r   rP   rL   r   containsrX   getr   )r<   r=   r>   specoperr&   r&   r'   _eval_op   s    
ra   z"tuple[str, str | AbstractSet[str]])r<   r>   keyr7   c                 C  sj   |dkr*t |tsJ dt| t|fS |tv rbt |trLt| 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   )rE   vr&   r&   r'   	<setcomp>   rH   z_normalize.<locals>.<setcomp>)r9   r)   r   MARKERS_ALLOWING_SET)r<   r>   rb   r&   r&   r'   
_normalize   s    
rf   r   !dict[str, str | AbstractSet[str]])markersenvironmentr7   c           
      C  s   g g}| D ]}t |tttfs"J t |trB|d t|| q
t |tr|\}}}t |trv|j}|| }|j}	n|j}|j}|| }	t |tsJ dt||	|d\}}	|d t	|||	 q
|dv sJ |dkr
|g  q
t
dd |D S )Nzlhs must be a string)rb   )andorrl   c                 s  s   | ]}t |V  qd S rR   )all)rE   itemr&   r&   r'   rG      rH   z$_evaluate_markers.<locals>.<genexpr>)r9   rN   r:   r)   append_evaluate_markersr   r;   rf   ra   any)
rh   ri   groupsrA   r<   r=   r>   environment_key	lhs_value	rhs_valuer&   r&   r'   rp      s*    



rp   zsys._version_info)infor7   c                 C  sB   | j  d| j d| j }| j}|dkr>||d t| j 7 }|S )Nr\   finalr   )majorminormicroreleaselevelr)   serial)rv   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 )Nr\      )r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   )r   sysimplementationr}   nameosplatformmachinereleasesystemr3   python_implementationrP   python_version_tuple)iverr*   r&   r&   r'   r      s    r   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)rA   r7   c              
   C  sJ   zt t|| _W n2 tyD } ztt||W Y d }~n
d }~0 0 d S rR   )r@   _parse_marker_markersr   r   r)   )selfrA   er&   r&   r'   __init__  s    zMarker.__init__r   c                 C  s
   t | jS rR   )rC   r   r   r&   r&   r'   __str__,  s    zMarker.__str__c                 C  s   d|  dS )Nz	<Marker('z')>r&   r   r&   r&   r'   __repr__/  s    zMarker.__repr__intc                 C  s   t | jjt| fS rR   )hash	__class__r"   r)   r   r&   r&   r'   __hash__2  s    zMarker.__hash__r   rY   )otherr7   c                 C  s   t |tstS t| t|kS rR   )r9   r   NotImplementedr)   )r   r   r&   r&   r'   __eq__5  s    
zMarker.__eq__Nr   zdict[str, str] | Noner   )ri   contextr7   c                 C  sv   t dt }|dkr(|jt t d n|dkr8d|d< |durf|| d|v rf|d du rfd|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.
        rg   r   )r   r    r   rZ   r8   N)r	   r   update	frozensetrp   r   _repair_python_full_version)r   ri   r   current_environmentr&   r&   r'   evaluate;  s     

zMarker.evaluate)Nr   )	r"   r#   r$   r   r   r   r   r   r   r&   r&   r&   r'   r     s     r   )envr7   c                 C  s*   t t| 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.
    r1   +local)r	   r)   endswith)r   r1   r&   r&   r'   r   `  s    
r   )T)9
__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)   rY   Operatorr   re   
ValueErrorr   r   r   r(   r@   rC   ltleeqnegegtrX   r5   ra   rf   rp   r   r   r   r   r&   r&   r&   r'   <module>   sJ   $	H  N