hyb
2026-01-09 4cb426cb3ae31e772a09d4ade5b2f0242aaeefa0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
Ë
ñúhí'ãó˜—dZddlmZddlZddlmZmZmZmZddl    m
Z
m Z Gd„d«Z Gd    „d
e «Z Gd „d e «ZGd „de «Zee efZeeeefZeeedfZeedeefZGd„de«Zd$d„Zd%d„Z                d&d„Z                                d'd„Zd(d„Zd(d„Zd)d„Zd)d„Zd*d„Zd+d„Zd+d„Z d,d„Z!d-d„Z"d.d „Z#d/d!„Z$d0d"„Z%d1d#„Z&y)2z˜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ó,—eZdZdd„Zdd„Zdd„Zdd„Zy)ÚNodecó—||_y©N©Úvalue)Úselfrs  úPH:\Change_password\venv_build\Lib\site-packages\pip/_vendor/packaging/_parser.pyÚ__init__z Node.__init__s    €Øˆ
ócó—|jSrr©rs rÚ__str__z Node.__str__s €Øz‰zÐrcó<—d|jj›d|›dS)Nú<z('z')>)Ú    __class__Ú__name__rs rÚ__repr__z Node.__repr__s"€Ø4—>‘>×*Ñ*Ð+¨2¨d¨V°3Ð7Ð7rcó—t‚r)ÚNotImplementedErrorrs rÚ    serializezNode.serializes€Ü!Ð!rN)rÚstrÚreturnÚNone©r!r )rÚ
__module__Ú __qualname__rrrr©rrr r s„óóó8ô"rr có—eZdZdd„Zy)ÚVariablecó—t|«Sr©r rs rrzVariable.serializeó €Ü4‹yÐrNr#©rr$r%rr&rrr(r(ó„ôrr(có—eZdZdd„Zy)ÚValuecó—d|›dS)Nú"r&rs rrzValue.serialize#s€Ø4&˜ˆ{ÐrNr#r,r&rrr/r/"s„ôrr/có—eZdZdd„Zy)ÚOpcó—t|«Srr*rs rrz Op.serialize(r+rNr#r,r&rrr3r3'r-rr3Ú
MarkerAtomÚ
MarkerListcó@—eZdZUded<ded<ded<ded<ded<y    )
ÚParsedRequirementr ÚnameÚurlú    list[str]ÚextrasÚ    specifierzMarkerList | NoneÚmarkerN)rr$r%Ú__annotations__r&rrr8r82s…Ø
ƒIØ     ƒHØ ÓØƒNØ Ôrr8có6—tt|t¬««S©N)Úrules)Ú_parse_requirementr
r    ©Úsources rÚparse_requirementrF=ó€Ü œi¨´mÔDÓ EÐErcó—|jd«|jdd¬«}|j}|jd«t|«}|jd«t    |«\}}}|jdd¬«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_detailsr8)Ú    tokenizerÚ
name_tokenr9r<r:r=r>s       rrCrCAs–€ð×ѐdÔà×!Ñ!ØÐRð"ó€Jð ?‰?€DØ ×ѐdÔä ˜9Ó %€FØ ×ѐdÔä7¸    ÓBÑ€CˆFØ ×ѐUÐ%BÐÔCä ˜T 3¨°    ¸6Ó BÐBrcó—d}d}d}|jd«rœ|j«|jd«|j}|j    dd¬«j
}|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)?
    ÚNÚATrIÚURLz URL after @rKrMT©Úpeekzwhitespace after URLzURL and whitespace)Ú
span_startÚafterúversion specifierz#name and no valid version specifier)ÚcheckÚreadrNÚpositionrOrPÚ_parse_requirement_markerÚ_parse_specifier)rSr=r:r>Ú    url_startÚspecifier_starts      rrRrRVs-€ð€IØ
€CØ €Fà‡tÔØ‰ÔØ×ј$Ôà×&Ñ&ˆ    Ø×јu¨}ÐÓ=×BÑBˆØ ?‰?˜5 tˆ?Ô ,ؘ FÐ+Ð +à×јÐ(>ÐÔ?ð ?‰?˜5 tˆ?Ô ,ؘ FÐ+Ð +ä*Ø  )Ð3Gô
‰ð$×,Ñ,ˆÜ$ YÓ/ˆ    Ø×ј$Ôà ?‰?˜5 tˆ?Ô ,ؘ FÐ+Ð +ä*Ø Ø&ññ$à:ô 
ˆð ˜FÐ #Ð#rcó®—|jd«s|jd|›d|¬«|j«t|«}|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    rrara‰s[€ð ?‰?˜;Ô 'Ø×$Ñ$Ø/°¨w°aÐ 8Ø!ð    %ô    
ð‡NNÔä ˜9Ó %€FØ ×ѐdÔà €Mrcóޗ|jdd¬«sgS|jddd¬«5|jd«t|«}|jd«ddd«|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  rrQrQs{€ð ?‰?˜>°ˆ?Ô 5؈    à    ×    #Ñ    #ØØØð
$ó
ñ ð
    ×ј$ÔÜ# IÓ.ˆØ×ј$Ô÷ ð €M÷ ð €Mús ª.A"Á"A,có´—g}|jd«s|S|j|j«j«    |j    d«|jdd¬«r|j d«n|jd«s    |S|j«|j    d«|j dd¬«}|j|j«Œš)    z>
    extras_list = identifier (wsp* ',' wsp* identifier)*
    rJTrIrYz"Expected comma between extra namesÚCOMMAzextra name after commarK)r^Úappendr_rPrNrhrO)rSr<Ú extra_tokens   rrprp°sÀ€ð€Fà ?‰?˜<Ô (؈ à
‡MM)—.‘.Ó"×'Ñ'Ô(à
Ø×ј$ÔØ ?‰?˜<¨dˆ?Ô 3Ø × (Ñ (Ð)MÕ NØ—‘ Ô)Ø ð €Mð     ‰ÔØ×ј$Ôà×&Ñ& |Ð>VÐ&ÓWˆ ؏ ‰ k×&Ñ&Ô'ð rcó´—|jddd¬«5|jd«t|«}|jd«ddd«|S#1swYSxYw)zr
    specifier = LEFT_PARENTHESIS WS? version_many WS? RIGHT_PARENTHESIS
              | WS? version_many WS?
    ÚLEFT_PARENTHESISÚRIGHT_PARENTHESISr]rmrIN)rorNÚ_parse_version_many)rSÚparsed_specifierss  rrbrbËsi€ð
 
×    #Ñ    #ØØØ"ð
$ó
ñ ð
    ×ј$ÔÜ/°    Ó:ÐØ×ј$Ô÷ ð Ð÷ ð Ðús •.A Á Acó—d}|jd«ró|j}||j«jz }|jdd¬«r!|j    d||jdz¬«|jd    d¬«r|j    d
||j¬«|j d «|jd «s    |S||j«jz }|j d «|jd«rŒó|S) z@
    version_many = (SPECIFIER (WS? COMMA WS? SPECIFIER)*)?
    rVÚ    SPECIFIERÚVERSION_PREFIX_TRAILTrYz6.* suffix can only be used with `==` or `!=` operatorsr)r[Úspan_endÚVERSION_LOCAL_LABEL_TRAILz@Local version label can only be used with `==` or `!=` operatorsrIrr)r^r`r_rPrhrN)rSryr[s   rrxrxÜs €ðÐØ
/‰/˜+Ô
&Ø×'Ñ'ˆ
ؘYŸ^™^Ó-×2Ñ2Ñ2ÐØ ?‰?Ð1¸ˆ?Ô =Ø × (Ñ (ØHØ%Ø"×+Ñ+¨aÑ/ð )ô ð
?‰?Ð6¸Tˆ?Ô BØ × (Ñ (ØRØ%Ø"×+Ñ+ð )ô ð
    ×ј$ÔØ‰˜wÔ'Ø ð Ðð    ˜YŸ^™^Ó-×2Ñ2Ñ2ÐØ×ј$Ôð' /‰/˜+Õ
&ð* Ðrcó6—tt|t¬««SrA)Ú_parse_full_markerr
r    rDs rÚ parse_markerrürGrcóB—t|«}|jdd¬«|S)NrMzend of marker expressionrK)rirO)rSÚretvals  rr€r€s%€Ü ˜9Ó %€FØ ×ѐUÐ%?ÐÔ@Ø €Mrcóԗt|«g}|jd«rJ|j«}t|«}|j|j|f«|jd«rŒJ|S)z4
    marker = marker_atom (BOOLOP marker_atom)+
    ÚBOOLOP)Ú_parse_marker_atomr^r_ÚextendrP)rSÚ
expressionÚtokenÚ
expr_rights    rriris`€ô% YÓ/Ð0€JØ
/‰/˜(Ô
#Ø—‘Ó ˆÜ'¨    Ó2ˆ
Ø×ј5Ÿ:™: zÐ2Ô3ð /‰/˜(Õ
#ð Ðrcó4—|jd«|jdd¬«rK|jddd¬«5|jd«t|«}|jd«ddd«n t    |«}|jd«S#1swYŒxYw)    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  rr†r†s €ð ×ѐdÔØ‡Ð)°€Ô5Ø × 'Ñ 'Ø Ø Ø&ð(ó
ñ    $ð
× Ñ ˜dÔ #Ü!.¨yÓ!9ˆFØ × Ñ ˜dÔ #÷    $ð    $ô$ IÓ.ˆØ ×ѐdÔØ €M÷    $ð    $ús ¹.BÂBcó֗|jd«t|«}|jd«t|«}|jd«t|«}|jd«|||fS)zG
    marker_item = WS? marker_var WS? marker_op WS? marker_var WS?
    rI)rNÚ_parse_marker_varÚ_parse_marker_op)rSÚmarker_var_leftÚ    marker_opÚmarker_var_rights    rrŒrŒ(si€ð×ѐdÔÜ'¨    Ó2€OØ ×ѐdÔÜ  Ó+€IØ ×ѐdÔÜ(¨Ó3ÐØ ×ѐdÔØ ˜YÐ(8Ð 9Ð9rcó—|jd«r3t|j«jj    dd««S|jd«r#t |j«j«S|j d¬«y)z/
    marker_var = VARIABLE | QUOTED_STRING
    ÚVARIABLEú.Ú_Ú QUOTED_STRINGz+Expected a marker variable or quoted string)ÚmessageN)r^Úprocess_env_varr_rPÚreplaceÚprocess_python_strrh©rSs rrŽrŽ6so€ð‡zÔ"ܘyŸ~™~Ó/×4Ñ4×<Ñ<¸SÀ#ÓFÓGÐGØ    ‰˜Ô    )Ü! )§.¡.Ó"2×"7Ñ"7Ó8Ð8à×$Ñ$ØAð    %õ    
rcó6—|dvr td«St|«S)N)Úplatform_python_implementationÚpython_implementationrž)r()Úenv_vars rr™r™Ds"€ØÐMÑMÜÐ8Ó9Ð9ä˜Ó Ð rcóT—tj|«}tt|««Sr)ÚastÚ literal_evalr/r )Ú
python_strrs  rr›r›Ks!€Ü × Ñ ˜ZÓ (€EÜ ”U“Ó Ðrcóˆ—|jd«r|j«td«S|jd«rA|j«|jdd¬«|jdd¬«td«S|jd    «r#t|j«j«S|j d
«S) z&
    marker_op = IN | NOT IN | OP
    ÚINÚinÚNOTrIzwhitespace after 'not'rKz'in' after 'not'znot inÚOPzJExpected marker operator, one of <=, <, !=, ==, >=, >, ~=, ===, in, not in)r^r_r3rOrPrhrœs rrrPs¥€ð‡tÔØ‰Ôܐ$‹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)r r r!r()r¤r r!r/)rSr
r!r3)'Ú__doc__Ú
__future__rr¢ÚtypingrrrrÚ
_tokenizerr    r
r r(r/r3r¬r«r5r r6r8rFrCrRrarQrprbrxrr€rir†rŒrŽr™r›rr&rrú<module>r±s*ðñõ #ã
ß5Ó5ç0÷ "ñ "ôˆtôô
ˆDôô
ˆôð
(˜E/Ñ "€    Ø 9˜b )Ð+Ñ ,€
Ø :˜x¨ Ñ5Ð5Ñ 6€
Ø e˜L¨*°cÐ9Ñ:Ñ ;€
ô˜
ôóFóCð*0$Øð0$à'ó0$ðfØðØ),ðØ58ðàóó(ó&ó6ó"ó@Fóó     óó, :ó 
ó!óô
 
r