o
    )ri1                  	   @  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_versionplatform_releasepython_full_versionimplementation_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,   P/home/air/biblejyuku/back/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   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rhsnormalized_extrar,   r,   r-   _normalize_extras   s   





rC   resultsr   c                 C  s   dd | D S )z!
    Normalize extra values.
    c                 S  s   g | ]}t |qS r,   )rC   ).0rr,   r,   r-   
<listcomp>       z+_normalize_extra_values.<locals>.<listcomp>r,   )rD   r,   r,   r-   _normalize_extra_values   s   rI   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)rL   N)_format_markerrE   mr,   r,   r-   	<genexpr>   s    z!_format_marker.<locals>.<genexpr> ()c                 S  s   g | ]}|  qS r,   )	serializerO   r,   r,   r-   rG      rH   z"_format_marker.<locals>.<listcomp>)r<   listr=   r/   lenrN   join)rJ   rL   innerr,   r,   r-   rN      s   


rN   c                 C  s   | |v S Nr,   r?   rA   r,   r,   r-   <lambda>       r\   c                 C  s   | |vS rZ   r,   r[   r,   r,   r-   r\      r]   c                 C     dS NFr,   _lhs_rhsr,   r,   r-   r\          c                 C  r^   r_   r,   r`   r,   r,   r-   r\      rc   )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 .)rU   MARKERS_REQUIRING_VERSIONr   r   containsrg   getr   )r?   r@   rA   ri   op_strspecoperr,   r,   r-   _eval_op   s   

rs   "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   )rE   vr,   r,   r-   	<setcomp>   rH   z_normalize.<locals>.<setcomp>)r<   r/   MARKERS_ALLOWING_SETr   )r?   rA   ri   r,   r,   r-   
_normalize   s   
rx   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 )	Nzlhs must be a string)ri   orandzUnexpected marker c                 s  s    | ]}t |V  qd S rZ   )all)rE   itemr,   r,   r-   rQ     s    z$_evaluate_markers.<locals>.<genexpr>)r<   rV   append_evaluate_markersr=   r   r>   r/   rx   rs   	TypeErrorany)
ry   rz   groupsrJ   r?   r@   rA   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 )Nrl   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 )Nrl      )r0   r%   r1   r2   r#   r3   r4   r$   r5   r"   r6   )r   sysimplementationr   nameosplatformmachinereleasesystemr"   python_implementationrX   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   rJ   r/   r:   Nonec              
   C  sB   g | _ z
tt|| _ W d S  ty  } ztt||d }~ww rZ   )_markersrI   _parse_markerr   r   r/   )selfrJ   er,   r,   r-   __init__%  s   zMarker.__init__c                 C  s
   t | jS rZ   )rN   r   r   r,   r,   r-   __str__C  s   
zMarker.__str__c                 C  s   d| j j d|  dS )Nre   z('z')>)	__class__r(   r   r,   r,   r-   __repr__F  s   zMarker.__repr__intc                 C  s   t t| S rZ   )hashr/   r   r,   r,   r-   __hash__I  s   zMarker.__hash__otherobjectrj   c                 C  s   t |tstS t| t|kS rZ   )r<   r   NotImplementedr/   )r   r   r,   r,   r-   __eq__L  s   
zMarker.__eq__Nr   rz   +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.
        r{   r   )r    r!   r    r;   Nz
str | None)r	   r   update	frozensetr   r   r   _repair_python_full_version)r   rz   r   current_environmentr;   r,   r,   r-   evaluateR  s"   

zMarker.evaluate)rJ   r/   r:   r   )r:   r/   )r:   r   )r   r   r:   rj   )Nr   )rz   r   r   r   r:   rj   )	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$   +local)r	   endswith)r   r$   r,   r,   r-   r   z  s   
r   )r8   r9   r:   r9   )rD   r   r:   r   )T)rJ   rK   rL   rM   r:   r/   )
r?   r/   r@   r   rA   rh   ri   r/   r:   rj   )r?   r/   rA   rh   ri   r/   r:   rt   )ry   r   rz   r{   r:   rj   )r   r   r:   r/   )r:   r   )r   r{   r:   r{   )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/   rj   Operatorr   rw   rm   
ValueErrorr   r   r   r   rC   rI   rN   eqnerg   r7   rs   rx   r   r   r   r   r   r,   r,   r,   r-   <module>   sP   $

H
	



!
V