o
    Éó·iã1  ã                	   @  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"h d£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(dLdd„Z)dMdd„Z*	 dNdOd&d'„Z+d(d)„ d*d)„ d+d)„ ej,ej,ej-ej,d,d)„ d-œZ.d.e/d/< dPd7d8„Z0dQd:d;„Z1dRd?d@„Z2dSdCdD„Z3dTdEdF„Z4G dGdH„ dHƒZ5dUdJdK„Z6dS )Vé    )Ú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>   Úpython_full_versionÚimplementation_versionÚplatform_releaseÚpython_versionc                   @  ó   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,   úWC:\Users\psant\Downloads\PAF backend\school\venv\Lib\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   4   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 )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.   
 r   ÚresultúMarkerList | MarkerAtom | strÚreturnc                 C  sp   t | tƒs| S | \}}}t |tƒr |jdkr t|jƒ}t|ƒ}nt |tƒr3|jdkr3t|jƒ}t|ƒ}|||fS )NÚextra)Ú
isinstanceÚtupler   Úvaluer   r   )r8   ÚlhsÚopÚrhsZnormalized_extrar,   r,   r-   Ú_normalize_extrasƒ   s   





rB   Úresultsr   c                 C  s   dd„ | D ƒS )z!
    Normalize extra values.
    c                 S  s   g | ]}t |ƒ‘qS r,   )rB   )Ú.0Úrr,   r,   r-   Ú
<listcomp>˜   ó    z+_normalize_extra_values.<locals>.<listcomp>Nr,   )rC   r,   r,   r-   Ú_normalize_extra_values“   s   rH   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)rK   N)Ú_format_marker©rD   Úmr,   r,   r-   Ú	<genexpr>¬   s   € z!_format_marker.<locals>.<genexpr>ú ú(ú)c                 S  s   g | ]}|  ¡ ‘qS r,   )Ú	serializerN   r,   r,   r-   rF   ²   rG   z"_format_marker.<locals>.<listcomp>)r<   Úlistr=   r/   ÚlenrM   Újoin)rI   rK   Úinnerr,   r,   r-   rM   ›   s    ÿ
þý


rM   c                 C  s   | |v S ©Nr,   ©r?   rA   r,   r,   r-   Ú<lambda>¸   ó    r[   c                 C  s   | |vS rY   r,   rZ   r,   r,   r-   r[   ¹   r\   c                 C  ó   dS ©NFr,   ©Z_lhsZ_rhsr,   r,   r-   r[   º   ó    c                 C  r]   r^   r,   r_   r,   r,   r-   r[   ¿   r`   )Úinznot inú<z<=z==z!=z>=ú>zdict[str, Operator]Ú
_operatorsr?   r@   r   rA   ústr | AbstractSet[str]ÚkeyÚboolc                C  s~   |  ¡ }|tv r#z
t|› |› �ƒ}W n	 ty   Y nw |j| dd�S t |¡}|d u r:td|›d| ›d|›d�ƒ‚|| |ƒS )NT)Úprereleasesz
Undefined z on z and Ú.)rT   ÚMARKERS_REQUIRING_VERSIONr   r   Úcontainsrd   Úgetr   )r?   r@   rA   rf   Zop_strÚspecÚoperr,   r,   r-   Ú_eval_opÃ   s   ÿ

ro   ú"tuple[str, str | AbstractSet[str]]c                 C  sb   |dkrt |tƒsJ dƒ‚| |fS |tv r-t |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   )rD   Úvr,   r,   r-   Ú	<setcomp>ã   rG   z_normalize.<locals>.<setcomp>)r<   r/   ÚMARKERS_ALLOWING_SETr   )r?   rA   rf   r,   r,   r-   Ú
_normalizeÔ   s   
rt   ÚmarkersÚenvironmentú!dict[str, str | AbstractSet[str]]c           
   	   C  sô   g g}| D ]k}t |tƒr|d  t||ƒ¡ qt |tƒr[|\}}}t |tƒr1|j}|| }|j}	n
|j}|j}|| }	t |tƒsDJ dƒ‚t||	|d�\}}	|d  t	|||	|d�¡ q|dkre| g ¡ q|dkrjqt
d|›�ƒ‚tdd„ |D ƒƒS )	Néÿÿÿÿzlhs must be a string)rf   ÚorÚandzUnexpected marker c                 s  s   � | ]}t |ƒV  qd S rY   )Úall)rD   Úitemr,   r,   r-   rP     s   € z$_evaluate_markers.<locals>.<genexpr>)r<   rU   ÚappendÚ_evaluate_markersr=   r   r>   r/   rt   ro   Ú	TypeErrorÚany)
ru   rv   ÚgroupsrI   r?   r@   rA   Zenvironment_keyÚ	lhs_valueÚ	rhs_valuer,   r,   r-   r~   é   s,   



r~   Úinfoúsys._version_infoc                 C  sB   | j › d| j› d| j› �}| j}|dkr||d t| jƒ 7 }|S )Nri   Ú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 )Nri   é   )r0   r#   r1   r2   r$   r3   r4   r"   r5   r%   r6   )rŽ   ÚsysÚimplementationrŒ   ÚnameÚosÚplatformÚmachineÚreleaseÚsystemr%   Úpython_implementationrW   Úpython_version_tuple)Úiverr0   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   rI   r/   r:   ÚNonec              
   C  sB   g | _ z
tt|ƒƒ| _ W d S  ty  } ztt|ƒƒ|‚d }~ww rY   )Ú_markersrH   Ú_parse_markerr   r   r/   )ÚselfrI   Úer,   r,   r-   Ú__init__%  s   €ÿzMarker.__init__c                 C  s
   t | jƒS rY   )rM   rœ   ©rž   r,   r,   r-   Ú__str__C  s   
zMarker.__str__c                 C  s   d| j j› d| › d�S )Nrb   z('z')>)Ú	__class__r(   r¡   r,   r,   r-   Ú__repr__F  s   zMarker.__repr__Úintc                 C  s   t t| ƒƒS rY   )Úhashr/   r¡   r,   r,   r-   Ú__hash__I  s   zMarker.__hash__ÚotherÚobjectrg   c                 C  s   t |tƒstS t| ƒt|ƒkS rY   )r<   r   ÚNotImplementedr/   )rž   r¨   r,   r,   r-   Ú__eq__L  s   
zMarker.__eq__Nr   rv   ú+Mapping[str, str | AbstractSet[str]] | NoneÚcontextr   c                 C  s„   t dtƒ ƒ}|dkr|jtƒ tƒ d� n|dkrd|d< |dur:| |¡ d|v r:t d|d ƒ}|r6t|ƒ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.
        rw   r   )r    r!   r   Ú r;   Nz
str | None)r	   r   ÚupdateÚ	frozensetr   r~   rœ   Ú_repair_python_full_version)rž   rv   r­   Úcurrent_environmentr;   r,   r,   r-   ÚevaluateR  s"   ÿÿ

ÿzMarker.evaluate)rI   r/   r:   r›   )r:   r/   )r:   r¥   )r¨   r©   r:   rg   )Nr   )rv   r¬   r­   r   r:   rg   )	r(   r)   r*   r    r¢   r¤   r§   r«   r³   r,   r,   r,   r-   r   $  s    




ýr   Úenvc                 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"   ú+ÚlocalN)r	   Úendswith)r´   r"   r,   r,   r-   r±   z  s   
r±   )r8   r9   r:   r9   )rC   r   r:   r   )T)rI   rJ   rK   rL   r:   r/   )
r?   r/   r@   r   rA   re   rf   r/   r:   rg   )r?   r/   rA   re   rf   r/   r:   rp   )ru   r   rv   rw   r:   rg   )r„   r…   r:   r/   )r:   r   )r´   rw   r:   rw   )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/   rg   ÚOperatorr   rs   rj   Ú
ValueErrorr   r   r   r   rB   rH   rM   ÚeqÚnerd   r7   ro   rt   r~   rŽ   r   r   r±   r,   r,   r,   r-   Ú<module>   sP   $

H
	ÿø



!
V