j7i'dZddlmZddlZddlmZmZmZmZddl m Z m Z GddZ Gd d e Z Gd d e ZGd de Zee efZeeeefZeeedfZeedeefZGddeZd$dZd%dZ d&dZ d'dZd(dZd(dZd)dZd)dZd*dZd+dZd+dZ d,dZ!d-dZ"d.d Z#d/d!Z$d0d"Z%d1d#Z&y)2zHandwritten parser of dependency specifiers. The docstring for each __parse_* function contains EBNF-inspired grammar representing the implementation. ) annotationsN) NamedTupleSequenceTupleUnion) DEFAULT_RULES Tokenizerc,eZdZddZddZddZddZy)Nodec||_yNvalue)selfrs Z/mnt/ssd/data/python-lab/ChefSystem/venv/lib/python3.12/site-packages/packaging/_parser.py__init__z Node.__init__s  c|jSrrrs r__str__z Node.__str__s zzrc<d|jjd|dS)N) __class____name__rs r__repr__z Node.__repr__s"4>>**+2dV377rctr)NotImplementedErrorrs r serializezNode.serializes!!rN)rstrreturnNoner!r )r __module__ __qualname__rrrrrrr r s8"rr ceZdZddZy)Variablect|Srr rs rrzVariable.serialize 4yrNr#rr$r%rr&rrr(r(rr(ceZdZddZy)Valuecd|dS)N"r&rs rrzValue.serialize#s4&{rNr#r,r&rrr/r/"srr/ceZdZddZy)Opct|Srr*rs rrz Op.serialize(r+rNr#r,r&rrr3r3'r-rr3 MarkerAtom MarkerListc@eZdZUded<ded<ded<ded<ded<y ) ParsedRequirementr nameurl list[str]extras specifierzMarkerList | NonemarkerN)rr$r%__annotations__r&rrr8r82s I H N rr8c6tt|tSN)rules)_parse_requirementr r sources rparse_requirementrF= imD EErc|jd|jdd}|j}|jdt|}|jdt |\}}}|jddt |||||S)zI requirement = WS? IDENTIFIER WS? extras WS? requirement_details WS IDENTIFIERz1package name at the start of dependency specifierexpectedENDzend of dependency specifier)consumeexpecttext _parse_extras_parse_requirement_detailsr8) tokenizer name_tokenr9r<r:r=r>s rrCrCAsd!!R"J ??D d 9 %F d7 BCF U%BC T3 6 BBrcd}d}d}|jdr|j|jd|j}|j ddj }|jdd r|||fS|j dd |jdd r|||fSt ||d }nR|j}t|}|jd|jdd r|||fSt |||rdnd }|||fS)z~ requirement_details = AT URL (WS requirement_marker?)? | specifier WS? (requirement_marker)? NATrIURLz URL after @rKrMTpeekzwhitespace after URLzURL and whitespace) span_startafterversion specifierz#name and no valid version specifier)checkreadrNpositionrOrP_parse_requirement_marker_parse_specifier)rSr=r:r> url_startspecifier_starts rrRrRVs-I C Ft$&& u}=BB ??5t? ,F+ +(>? ??5t? ,F+ +* )3G $,,$Y/ $ ??5t? ,F+ +* &$:   F ##rc|jds|jd|d||jt|}|j d|S)z3 requirement_marker = SEMICOLON marker WS? SEMICOLONz!Expected end or semicolon (after ))r[rI)r^raise_syntax_errorr_ _parse_markerrN)rSr[r\r>s rraras[ ??; '$$/wa 8! % NN 9 %F d Mrc|jddsgS|jddd5|jdt|}|jdddd|S#1swYSxYw) zG extras = (LEFT_BRACKET wsp* extras_list? wsp* RIGHT_BRACKET)? LEFT_BRACKETTrY RIGHT_BRACKETr<aroundrIN)r^enclosing_tokensrN_parse_extras_list)rSr<s rrQrQs{ ??>? 5  # # $  $#I.$  M  Ms .A""A,cg}|jds|S|j|jj |j d|jddr|j dn|jds |S|j|j d|j dd}|j|j) z> extras_list = identifier (wsp* ',' wsp* identifier)* rJTrIrYz"Expected comma between extra namesCOMMAzextra name after commarK)r^appendr_rPrNrhrO)rSr< extra_tokens rrprpsF ??< (  MM).."''( $ ??V&W  k&&' rc|jddd5|jdt|}|jdddd|S#1swYSxYw)zr specifier = LEFT_PARENTHESIS WS? version_many WS? RIGHT_PARENTHESIS | WS? version_many WS? LEFT_PARENTHESISRIGHT_PARENTHESISr]rmrIN)rorN_parse_version_many)rSparsed_specifierss rrbrbsi  # #" $  $/ :$    s .A  Acd}|jdr|j}||jjz }|jddr!|j d||jdz|jd dr|j d ||j|j d |jd s |S||jjz }|j d |jdr|S) z@ version_many = (SPECIFIER (WS? COMMA WS? SPECIFIER)*)? rV SPECIFIERVERSION_PREFIX_TRAILTrYz6.* suffix can only be used with `==` or `!=` operatorsr)r[span_endVERSION_LOCAL_LABEL_TRAILz@Local version label can only be used with `==` or `!=` operatorsrIrr)r^r`r_rPrhrN)rSryr[s rrxrxs  //+ &'' Y^^-222 ??1? =  ( (H%"++a/ )  ??6T? B  ( (R%"++ )  $w'   Y^^-222$' //+ &* rc6tt|tSrA)_parse_full_markerr r rDs r parse_markerrrGrcBt|}|jdd|S)NrMzend of marker expressionrK)rirO)rSretvals rrrs% 9 %F U%?@ Mrct|g}|jdrJ|j}t|}|j|j|f|jdrJ|S)z4 marker = marker_atom (BOOLOP marker_atom)+ BOOLOP)_parse_marker_atomr^r_extendrP)rS expressiontoken expr_rights rriris`%Y/0J //( # ' 2 5::z23 //( # rc4|jd|jddrK|jddd5|jdt|}|jddddn t |}|jdS#1swYxYw) zw marker_atom = WS? LEFT_PARENTHESIS WS? marker WS? RIGHT_PARENTHESIS WS? | WS? marker_item WS? rIrvTrYrwzmarker expressionrmN)rNr^rori_parse_marker_item)rSr>s rrrs d)5  ' '  &(  $   d #!.y!9F   d # $ $$I. d M $ $s .BBc|jdt|}|jdt|}|jdt|}|jd|||fS)zG marker_item = WS? marker_var WS? marker_op WS? marker_var WS? rI)rN_parse_marker_var_parse_marker_op)rSmarker_var_left marker_opmarker_var_rights rrr(sid' 2O d +I d(3 d Y(8 99rc|jdr3t|jjj ddS|jdr#t |jjS|j dy)z/ marker_var = VARIABLE | QUOTED_STRING VARIABLE._ QUOTED_STRINGz+Expected a marker variable or quoted string)messageN)r^process_env_varr_rPreplaceprocess_python_strrhrSs rrr6soz"y~~/44<=, >, ~=, ===, in, not in)r^r_r3rOrPrhrs rrrPst$x  (@A(:;(|  ).."''((++ X  r)rEr r!r8)rSr r!r8)rSr r!z"tuple[str, str, MarkerList | None])rSr r[intr\r r!r6)rSr r!r;)rSr r!r )rEr r!r6)rSr r!r6)rSr r!r5)rSr r! MarkerItem)rSr r! MarkerVar)rr r!r()rr r!r/)rSr r!r3)'__doc__ __future__rrtypingrrrr _tokenizerr r r r(r/r3rrr5r r6r8rFrCrRrarQrprbrxrrrirrrrrrr&rrrs* # 550 " "t D  (E/ " 9b)+ , :x 55 6 eL*c9: ;  FC*0$0$'0$f),58(&6"@F , :  !  r