o
    'j6h/                  	   @  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'dFddZ(	dGdHd!d"Z)d#d$ d%d$ ej*ej+ej,ej-ej.ej/d&Z0d'e1d(< dId/d0Z2dJd3d4Z3dKd9d:Z4dLd=d>Z5dMd?d@Z6G dAdB dBZ7dNdDdEZ8dS )O    )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                   @     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'   `/var/www/html/chefvision.cloud.itp360.com/venv/lib/python3.10/site-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   -   r)   r   c                   @  sz   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*   resultsr   returnc                 C  s|   t | d tr<| d \}}}t |tr"|jdkr"t|j}t|}nt |tr5|jdkr5t|j}t|}|||f| d< | S )z!
    Normalize extra values.
    r   extra)
isinstancetupler   valuer   r   )r8   lhsoprhsnormalized_extrar'   r'   r(   _normalize_extra_values|   s   


rB   Tmarkerlist[str] | MarkerAtom | strfirstbool | Noner+   c                 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)rE   N)_format_marker.0mr'   r'   r(   	<genexpr>   s    z!_format_marker.<locals>.<genexpr> ()c                 S  s   g | ]}|  qS r'   )	serializerH   r'   r'   r(   
<listcomp>       z"_format_marker.<locals>.<listcomp>)r;   listr<   r+   lenrG   join)rC   rE   innerr'   r'   r(   rG      s   


rG   c                 C  s   | |v S Nr'   r>   r@   r'   r'   r(   <lambda>       rX   c                 C  s   | |vS rV   r'   rW   r'   r'   r(   rX      rY   )inznot in<z<=z==z!=z>=>zdict[str, Operator]
_operatorsr>   r?   r   r@   str | AbstractSet[str]boolc                 C  s   t |tr#ztd| |g}W n	 ty   Y nw |j| ddS t| }|d u r<t	d|d| d|d|| |S )N T)prereleasesz
Undefined z on z and .)
r;   r+   r   rT   rO   r   containsr]   getr   )r>   r?   r@   specoperr'   r'   r(   _eval_op   s   

rg   key"tuple[str, str | AbstractSet[str]]c                 C  sj   |dkrt |tsJ dt| t|fS |tv r1t |tr&t| t|fS t| dd |D fS | |fS )Nr:   zextra value must be a stringc                 S  s   h | ]}t |qS r'   r   )rI   vr'   r'   r(   	<setcomp>   rQ   z_normalize.<locals>.<setcomp>)r;   r+   r   MARKERS_ALLOWING_SET)r>   r@   rh   r'   r'   r(   
_normalize   s   
rm   markersr   environment!dict[str, str | AbstractSet[str]]c           
      C  s   g g}| D ]m}t |tttfsJ t |tr!|d t|| qt |trc|\}}}t |tr;|j}|| }|j}	n
|j}|j}|| }	t |tsNJ dt||	|d\}}	|d t	|||	 q|dv siJ |dkrr|g  qt
dd |D S )Nzlhs must be a string)rh   )andorrs   c                 s  s    | ]}t |V  qd S rV   )all)rI   itemr'   r'   r(   rK      s    z$_evaluate_markers.<locals>.<genexpr>)r;   rR   r<   r+   append_evaluate_markersr   r=   rm   rg   any)
rn   ro   groupsrC   r>   r?   r@   environment_key	lhs_value	rhs_valuer'   r'   r(   rw      s,   




rw   infosys._version_infoc                 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   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.   r/   r0   r1   r2   r3   r4   r5   r6   )r   sysimplementationr   nameosplatformmachinereleasesystemr5   python_implementationrT   python_version_tuple)iverr,   r'   r'   r(   r      s   r   c                   @  sN   e Zd ZdddZdddZdd	d
ZdddZdddZ		dd ddZdS )!r   rC   r+   r9   Nonec              
   C  s<   z
t t|| _W d S  ty } ztt||d }~ww rV   )rB   _parse_marker_markersr   r   r+   )selfrC   er'   r'   r(   __init__  s   zMarker.__init__c                 C  s
   t | jS rV   )rG   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 rV   )hash	__class__r#   r+   r   r'   r'   r(   __hash__2  s   zMarker.__hash__otherr   r_   c                 C  s   t |tstS t| t|kS rV   )r;   r   NotImplementedr+   )r   r   r'   r'   r(   __eq__5  s   
zMarker.__eq__Nr   ro   dict[str, str] | Nonecontextr   c                 C  sv   t dt }|dkr|jt t d n|dkrd|d< |dur3|| d|v r3|d du r3d|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.
        rp   r   )r   r    r   r`   r:   N)r	   r   update	frozensetrw   r   _repair_python_full_version)r   ro   r   current_environmentr'   r'   r(   evaluate;  s    

zMarker.evaluate)rC   r+   r9   r   )r9   r+   )r9   r   )r   r   r9   r_   )Nr   )ro   r   r   r   r9   r_   )	r#   r$   r%   r   r   r   r   r   r   r'   r'   r'   r(   r     s    




r   envc                 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.
    r3   +local)r	   r+   endswith)r   r3   r'   r'   r(   r   `  s   
r   )r8   r   r9   r   )T)rC   rD   rE   rF   r9   r+   )r>   r+   r?   r   r@   r^   r9   r_   )r>   r+   r@   r^   rh   r+   r9   ri   )rn   r   ro   rp   r9   r_   )r}   r~   r9   r+   )r9   r*   )r   rp   r9   rp   )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+   r_   Operatorr   rl   
ValueErrorr   r   r   r*   rB   rG   ltleeqnegegtr]   r7   rg   rm   rw   r   r   r   r   r'   r'   r'   r(   <module>   sL   $	
H



 
N