o
    x¨Êh¯)  ã                	   @  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
 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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e	ƒZ"d@dd„Z#	dAdBdd„Z$d d!„ d"d!„ ej%ej&ej'ej(ej)ej*d#œZ+d$e,d%< dCd+d,„Z-dDd0d1„Z.dEd6d7„Z/dFd:d;„Z0dGd<d=„Z1G d>d?„ d?ƒZ2dS )Hé    )ÚannotationsN)ÚAnyÚCallableÚ	TypedDictÚcasté   )Ú
MarkerAtomÚ
MarkerListÚOpÚValueÚVariable)Úparse_marker)ÚParserSyntaxError)ÚInvalidSpecifierÚ	Specifier©Úcanonicalize_name)Ú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   úC/var/www/html/env/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!   1   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   )r/   ÚlhsÚopÚrhsÚnormalized_extrar   r   r   Ú_normalize_extra_valuesy   s   


r9   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)r<   N)Ú_format_marker©Ú.0Úmr   r   r   Ú	<genexpr>š   s   € z!_format_marker.<locals>.<genexpr>ú ú(ú)c                 S  s   g | ]}|  ¡ ‘qS r   )Ú	serializer?   r   r   r   Ú
<listcomp>    s    z"_format_marker.<locals>.<listcomp>)r2   Úlistr3   r"   Úlenr>   Újoin)r:   r<   Úinnerr   r   r   r>   ‰   s   ÿÿ


r>   c                 C  s   | |v S ©Nr   ©r5   r7   r   r   r   Ú<lambda>¦   ó    rN   c                 C  s   | |vS rL   r   rM   r   r   r   rN   §   rO   )Úinznot inú<z<=z==z!=z>=ú>zdict[str, Operator]Ú
_operatorsr5   r6   r
   r7   Úboolc                 C  sx   zt d | ¡ |g¡ƒ}W n	 ty   Y nw |j| dd�S t | ¡ ¡}|d u r7td|›d| ›d|›d�ƒ‚|| |ƒS )NÚ T)Úprereleasesz
Undefined z on z and Ú.)r   rJ   rF   r   ÚcontainsrS   Úgetr   )r5   r6   r7   ÚspecÚoperr   r   r   Ú_eval_op±   s   ÿ
r\   ÚvaluesÚkeyútuple[str, ...]c                 G  s   | dkrt dd„ |D ƒƒS |S )Nr1   c                 s  ó   � | ]}t |ƒV  qd S rL   r   )r@   Úvr   r   r   rB   Æ   ó   € z_normalize.<locals>.<genexpr>)r3   )r^   r]   r   r   r   Ú
_normalizeÀ   s   rc   Úmarkersr	   Úenvironmentúdict[str, str]c           
      C  sæ   g g}| D ]d}t |tttfƒsJ ‚t |tƒr!|d  t||ƒ¡ qt |tƒrZ|\}}}t |tƒr;|j}|| }|j}	n
|j}|j}|| }	t||	|d�\}}	|d  t	|||	ƒ¡ q|dv s`J ‚|dkri| g ¡ qt
dd„ |D ƒƒS )Néÿÿÿÿ)r^   )ÚandÚorri   c                 s  r`   rL   )Úall)r@   Úitemr   r   r   rB   ç   rb   z$_evaluate_markers.<locals>.<genexpr>)r2   rH   r3   r"   ÚappendÚ_evaluate_markersr   r4   rc   r\   Úany)
rd   re   Úgroupsr:   r5   r6   r7   Úenvironment_keyÚ	lhs_valueÚ	rhs_valuer   r   r   rm   Ì   s*   




€rm   Úinfoú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)rs   Ú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 )NrW   é   )r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   )r{   ÚsysÚimplementationry   ÚnameÚosÚplatformÚmachineÚreleaseÚsystemr,   Úpython_implementationrJ   Úpython_version_tuple)Úiverr#   r   r   r   r   ò   s   õr   c                   @  sJ   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   r:   r"   r0   ÚNonec              
   C  s<   z
t t|ƒƒ| _W d S  ty } ztt|ƒƒ|‚d }~ww rL   )r9   Ú_parse_markerÚ_markersr   r   r"   )Úselfr:   Úer   r   r   Ú__init__  s   €ÿzMarker.__init__c                 C  s
   t | jƒS rL   )r>   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 rL   )ÚhashÚ	__class__r   r"   rŽ   r   r   r   Ú__hash__$  s   zMarker.__hash__Úotherr   rT   c                 C  s   t |tƒstS t| ƒt|ƒkS rL   )r2   r   ÚNotImplementedr"   )r‹   r•   r   r   r   Ú__eq__'  s   
zMarker.__eq__Nre   údict[str, str] | Nonec                 C  sd   t dtƒ ƒ}d|d< |d  d¡r|d  d7  < |dur,| |¡ |d du r,d|d< 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.
        rf   rU   r1   r*   ú+ÚlocalN)r   r   ÚendswithÚupdaterm   rŠ   )r‹   re   Úcurrent_environmentr   r   r   Úevaluate-  s   	
zMarker.evaluate)r:   r"   r0   rˆ   )r0   r"   )r0   r‘   )r•   r   r0   rT   rL   )re   r˜   r0   rT   )	r   r   r   r�   r�   r�   r”   r—   rž   r   r   r   r   r     s    




r   )r/   r   r0   r   )T)r:   r;   r<   r=   r0   r"   )r5   r"   r6   r
   r7   r"   r0   rT   )r]   r"   r^   r"   r0   r_   )rd   r	   re   rf   r0   rT   )rs   rt   r0   r"   )r0   r!   )3Ú
__future__r   Úoperatorr€   r�   r}   Útypingr   r   r   r   Ú_parserr   r	   r
   r   r   r   r‰   Ú
_tokenizerr   Ú
specifiersr   r   Úutilsr   Ú__all__r"   rT   ÚOperatorÚ
ValueErrorr   r   r   r!   r9   r>   ÚltÚleÚeqÚneÚgeÚgtrS   r.   r\   rc   rm   r{   r   r   r   r   r   r   Ú<module>   sF   
Hÿø




