o
    üÞ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
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'   úQ/var/www/html/premium_crap/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 )Néÿÿÿÿz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