U
    M»{j/  ã                	   @  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 d
dddddg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/d0œd1d2„Z3d3d4d+d5œd6d7„Z4d8dd9œd:d;„Z5dd<œd=d„Z6G d>d„ dƒZ7d4d4d?œ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&   úP/var/www/html/bwave/python/venv/lib/python3.8/site-packages/packaging/markers.pyr   !   s   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   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   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t‚t | tƒrHt| ƒdkrHt | d ttfƒrHt| d ƒS t | tƒr‚dd„ | D ƒ}|rnd |¡S dd |¡ d S n"t | tƒr d 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>�   s     z!_format_marker.<locals>.<genexpr>ú ú(ú)c                 S  s   g | ]}|  ¡ ‘qS r&   )Ú	serializerD   r&   r&   r'   Ú
<listcomp>£   s     z"_format_marker.<locals>.<listcomp>)r9   Úlistr:   r)   ÚAssertionErrorÚlenrC   Újoin)rA   rB   Úinnerr&   r&   r'   rC   Œ   s     ÿ
þý


rC   c                 C  s   | |kS ©Nr&   ©r<   r>   r&   r&   r'   Ú<lambda>©   ó    rT   c                 C  s   | |kS rR   r&   rS   r&   r&   r'   rT   ª   rU   )Ú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ƒrHztd | ¡ |g¡ƒ}W n tk
r8   Y nX |j| dd�S t | ¡ ¡}|d krzt	d|›d| ›d|›d�ƒ‚|| |ƒS )NÚ T)Úprereleasesz
Undefined z on z and Ú.)
r9   r)   r   rP   rK   r   ÚcontainsrY   Úgetr   )r<   r=   r>   ÚspecÚoperr&   r&   r'   Ú_eval_op´   s    
rb   z"tuple[str, str | AbstractSet[str]])r<   r>   Úkeyr7   c                 C  sj   |dkr*t |tƒstdƒ‚t| ƒt|ƒfS |tk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>Ò   s     z_normalize.<locals>.<setcomp>)r9   r)   rN   r   ÚMARKERS_ALLOWING_SET)r<   r>   rc   r&   r&   r'   Ú
_normalizeÄ   s    
rg   r   ú!dict[str, str | AbstractSet[str]])ÚmarkersÚenvironmentr7   c           
      C  sø   g g}| D ]Ú}t |tttfƒs"t‚t |tƒrB|d  t||ƒ¡ q
t |tƒrÆ|\}}}t |tƒrv|j}|| }|j}	n|j}|j}|| }	t |tƒsœtdƒ‚t	||	|d�\}}	|d  t
|||	ƒ¡ q
|dksÒt‚|dkr
| g ¡ q
tdd„ |D ƒƒS )Néÿÿÿÿzlhs must be a string)rc   )ÚandÚorrm   c                 s  s   | ]}t |ƒV  qd S rR   )Úall)rE   Úitemr&   r&   r'   rG   õ   s     z$_evaluate_markers.<locals>.<genexpr>)r9   rM   r:   r)   rN   ÚappendÚ_evaluate_markersr   r;   rg   rb   Úany)
ri   rj   ÚgroupsrA   r<   r=   r>   Úenvironment_keyÚ	lhs_valueÚ	rhs_valuer&   r&   r'   rq   Ø   s*    



rq   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)rw   Ú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    õ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  sH   zt t|ƒƒ| _W n0 tk
rB } ztt|ƒƒ|‚W 5 d }~X Y nX 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   rZ   )Ú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   )rj   Úcontextr7   c                 C  sv   t dtƒ ƒ}|dkr(|jtƒ tƒ d� n|dkr8d|d< |dk	rf| |¡ d|krf|d dk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.
        rh   r   )r   r    r   r[   r8   N)r	   r   ÚupdateÚ	frozensetrq   r�   Ú_repair_python_full_version)r‘   rj   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     ý)Ú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)   rZ   ÚOperatorr   rf   Ú
ValueErrorr   r   r   r(   r@   rC   ÚltÚleÚeqÚneÚgeÚgtrY   r5   rb   rg   rq   r€   r   r   r¡   r&   r&   r&   r'   Ú<module>   sX    $ú	H ÿø N