o �J�h�'�@sxdZddlmZddlZddlmZmZmZmZddl m Z m Z Gdd�d�Z Gd d �d e �Z Gd d �d e �ZGd d�de �Zee efZeeeefZeeedfZeedeefZGdd�de�ZdCdd�ZdDdd�ZdEdd�ZdFd"d#�ZdGd%d&�ZdGd'd(�ZdHd)d*�ZdHd+d,�ZdId-d.�ZdJd/d0�ZdJd1d2�Z dKd3d4�Z!dLd6d7�Z"dMd9d:�Z#dNd<d=�Z$dOd?d@�Z%dPdAdB�Z&dS)Qz�Handwritten parser of dependency specifiers. The docstring for each __parse_* function contains EBNF-inspired grammar representing the implementation. �)� annotationsN)� NamedTuple�Sequence�Tuple�Union�)� DEFAULT_RULES� Tokenizerc@s4eZdZddd�Zddd�Zdd d �Zdd d �Zd S)�Node�value�str�return�NonecCs ||_dS�N�r )�selfr �r�OC:\pinokio\api\whisper-webui.git\app\env\lib\site-packages\packaging\_parser.py�__init__s z Node.__init__cCs|jSrr�rrrr�__str__sz Node.__str__cCsd|jj�d|�d�S)N�<z('z')>)� __class__�__name__rrrr�__repr__sz Node.__repr__cCst�r)�NotImplementedErrorrrrr� serializeszNode.serializeN)r r r r�r r )r� __module__� __qualname__rrrrrrrrr s    r c@�eZdZddd�ZdS)�Variabler r cC�t|�Sr�r rrrrr�zVariable.serializeNr�rrrrrrrrr!�r!c@r )�Valuer r cCs d|�d�S)N�"rrrrrr#s zValue.serializeNrr%rrrrr'"r&r'c@r )�Opr r cCr"rr#rrrrr(r$z Op.serializeNrr%rrrrr)'r&r)� MarkerAtom� MarkerListc@s6eZdZUded<ded<ded<ded<ded<d S) �ParsedRequirementr �name�url� list[str]�extras� specifierzMarkerList | None�markerN)rrr�__annotations__rrrrr,2s  r,�sourcer r cC�tt|td��S�N)�rules)�_parse_requirementr r�r4rrr�parse_requirement=�r:� tokenizerr cCsf|�d�|jddd�}|j}|�d�t|�}|�d�t|�\}}}|jddd�t|||||�S)zI requirement = WS? IDENTIFIER WS? extras WS? requirement_details �WS� IDENTIFIERz1package name at the start of dependency specifier��expected�ENDzend of dependency specifier)�consume�expect�text� _parse_extras�_parse_requirement_detailsr,)r<Z name_tokenr-r0r.r1r2rrrr8As �  r8�"tuple[str, str, MarkerList | None]cCs�d}d}d}|�d�rF|��|�d�|j}|jddd�j}|jdd d �r+|||fS|jdd d�|jdd d �r>|||fSt||d d �}n#|j}t|�}|�d�|jdd d �r^|||fSt|||redndd �}|||fS)z~ requirement_details = AT URL (WS requirement_marker?)? | specifier WS? (requirement_marker)? �N�ATr=�URLz URL after @r?rAT��peekzwhitespace after URLzURL and whitespace)� span_start�after�version specifierz#name and no valid version specifier)�check�readrB�positionrCrD�_parse_requirement_marker�_parse_specifier)r<r1r.r2Z url_startZspecifier_startrrrrFVs:    �  �� rFrM�intrNcCs>|�d�s|jd|�d�|d�|��t|�}|�d�|S)z3 requirement_marker = SEMICOLON marker WS? � SEMICOLONz!Expected end or semicolon (after �))rMr=)rP�raise_syntax_errorrQ� _parse_markerrB)r<rMrNr2rrrrS�s  � rSr/cCsd|jddd�s gS|jdddd��|�d�t|�}|�d�Wd�|S1s+wY|S) zG extras = (LEFT_BRACKET wsp* extras_list? wsp* RIGHT_BRACKET)? Z LEFT_BRACKETTrKZ RIGHT_BRACKETr0��aroundr=N)rP�enclosing_tokensrB�_parse_extras_list)r<r0rrrrE�s�   � � rEcCs�g}|�d�s |S|�|��j� |�d�|jddd�r$|�d�n|�d�s, |S|��|�d�|jddd�}|�|j�q) z> extras_list = identifier (wsp* ',' wsp* identifier)* r>Tr=rKz"Expected comma between extra names�COMMAzextra name after commar?)rP�appendrQrDrBrXrC)r<r0Z extra_tokenrrrr]�s     �  �r]cCsR|jdddd��|�d�t|�}|�d�Wd�|S1s"wY|S)zr specifier = LEFT_PARENTHESIS WS? version_many WS? RIGHT_PARENTHESIS | WS? version_many WS? �LEFT_PARENTHESIS�RIGHT_PARENTHESISrOrZr=N)r\rB�_parse_version_many)r<�parsed_specifiersrrrrT�s�   � � rTcCs�d}|�d�rQ|j}||��j7}|jddd�r#|jd||jdd�|jd dd�r3|jd ||jd�|�d �|�d �s@ |S||��j7}|�d �|�d�s|S) z@ version_many = (SPECIFIER (WS? COMMA WS? SPECIFIER)*)? rHZ SPECIFIERZVERSION_PREFIX_TRAILTrKz6.* suffix can only be used with `==` or `!=` operatorsr)rM�span_endZVERSION_LOCAL_LABEL_TRAILz@Local version label can only be used with `==` or `!=` operatorsr=r^)rPrRrQrDrXrB)r<rcrMrrrrb�s0 ��  �  �rbcCr5r6)�_parse_full_markerr rr9rrr� parse_marker�r;rfcCst|�}|jddd�|S)NrAzend of marker expressionr?)rYrC)r<�retvalrrrresrecCsBt|�g}|�d�r|��}t|�}|�|j|f�|�d�s |S)z4 marker = marker_atom (BOOLOP marker_atom)+ ZBOOLOP)�_parse_marker_atomrPrQ�extendrD)r<� expression�tokenZ expr_rightrrrrYs   �rYcCs||�d�|jddd�r3|jdddd��|�d�t|�}|�d�Wd�n1s-wYnt|�}|�d�|S) zw marker_atom = WS? LEFT_PARENTHESIS WS? marker WS? RIGHT_PARENTHESIS WS? | WS? marker_item WS? r=r`TrKrazmarker expressionrZN)rBrPr\rY�_parse_marker_item)r<r2rrrrhs �  �� rh� MarkerItemcCsJ|�d�t|�}|�d�t|�}|�d�t|�}|�d�|||fS)zG marker_item = WS? marker_var WS? marker_op WS? marker_var WS? r=)rB�_parse_marker_var�_parse_marker_op)r<Zmarker_var_leftZ marker_opZmarker_var_rightrrrrl(s     rl� MarkerVarcCsH|�d�rt|��j�dd��S|�d�rt|��j�S|jdd�dS)z/ marker_var = VARIABLE | QUOTED_STRING ZVARIABLE�.�_Z QUOTED_STRINGz+Expected a marker variable or quoted string)�messageN)rP�process_env_varrQrD�replace�process_python_strrX�r<rrrrn6s   �rn�env_varcCs|dvrtd�St|�S)N)�platform_python_implementation�python_implementationry)r!)rxrrrrtDsrt� python_strcCst�|�}tt|��Sr)�ast� literal_evalr'r )r{r rrrrvKs  rvcCsr|�d�r |��td�S|�d�r(|��|jddd�|jddd�td�S|�d �r4t|��j�S|�d �S) z& marker_op = IN | NOT IN | OP �IN�in�NOTr=zwhitespace after 'not'r?z'in' after 'not'znot in�OPzJExpected marker operator, one of <=, <, !=, ==, >=, >, ~=, ===, in, not in)rPrQr)rCrDrXrwrrrroPs   �ro)r4r r r,)r<r r r,)r<r r rG)r<r rMrUrNr r r+)r<r r r/)r<r r r )r4r r r+)r<r r r+)r<r r r*)r<r r rm)r<r r rp)rxr r r!)r{r r r')r<r r r))'�__doc__� __future__rr|�typingrrrr� _tokenizerrr r r!r'r)rprmr*r r+r,r:r8rFrSrEr]rTrbrfrerYrhrlrnrtrvrorrrr�<module>s>     3          
Memory