zmc
2023-12-22 9fdbf60165db0400c2e8e6be2dc6e88138ac719a
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
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
U
H=®d_[ã @sfdZddlZddlZddlmZddlmZdddd    d
d d d gZe e    ¡Z
Gdd „d e ƒZ Gdd„de ƒZGdd„de ƒZe d¡Zdd„ZeZGdd„deƒZdd„ZGdd„deƒZe d¡dfe d¡dfe d¡dfe d¡d fe d!¡d"fe d#¡d"fe d$¡d%fe d&¡d'fe d(¡d)fe d*¡d+ff
Ze d,¡dfe d-¡dfe d.¡d%fe d$¡d%fe d/¡dffZe d0¡Zd1d2„Zd3d4„Ze d5ej¡Zd6d6d7d6d8ddd9œZd:d;„ZGd<d„deƒZ Gd=d    „d    eƒZ!e d>ej¡Z"d?d@„Z#dAdB„Z$GdCd
„d
eƒZ%GdDd „d eƒZ&GdEdF„dFe ƒZ'e'eeeƒe'ee!dGdH„ƒe'e$e&eƒdIœZ(e(dJe(dK<dLd „Z)dS)Mz~
Implementation of a flexible versioning scheme providing support for PEP-440,
setuptools-compatible and semantic versioning.
éNé)Ú string_types©Úparse_requirementÚNormalizedVersionÚNormalizedMatcherÚ LegacyVersionÚ LegacyMatcherÚSemanticVersionÚSemanticMatcherÚUnsupportedVersionErrorÚ
get_schemec@seZdZdZdS)r zThis is an unsupported version.N)Ú__name__Ú
__module__Ú __qualname__Ú__doc__©rrúRD:\z\workplace\VsCode\pyvenv\venv\Lib\site-packages\pip/_vendor/distlib/version.pyr sc@sxeZdZdd„Zdd„Zdd„Zdd„Zd    d
„Zd d „Zd d„Z    dd„Z
dd„Z dd„Z dd„Z dd„Zedd„ƒZdS)ÚVersioncCs@| ¡|_}| |¡|_}t|tƒs,t‚t|ƒdks<t‚dS)Nr)ÚstripÚ_stringÚparseÚ_partsÚ
isinstanceÚtupleÚAssertionErrorÚlen)ÚselfÚsÚpartsrrrÚ__init__szVersion.__init__cCs tdƒ‚dS)Nzplease implement in a subclass©ÚNotImplementedError©rrrrrr%sz Version.parsecCs$t|ƒt|ƒkr td||fƒ‚dS)Nzcannot compare %r and %r)ÚtypeÚ    TypeError©rÚotherrrrÚ_check_compatible(szVersion._check_compatiblecCs| |¡|j|jkS©N©r(rr&rrrÚ__eq__,s
zVersion.__eq__cCs | |¡ Sr)©r+r&rrrÚ__ne__0szVersion.__ne__cCs| |¡|j|jkSr)r*r&rrrÚ__lt__3s
zVersion.__lt__cCs| |¡p| |¡ Sr)©r.r+r&rrrÚ__gt__7szVersion.__gt__cCs| |¡p| |¡Sr)r/r&rrrÚ__le__:szVersion.__le__cCs| |¡p| |¡Sr))r0r+r&rrrÚ__ge__=szVersion.__ge__cCs
t|jƒSr))Úhashr©rrrrÚ__hash__AszVersion.__hash__cCsd|jj|jfS)Nz%s('%s')©Ú    __class__rrr4rrrÚ__repr__DszVersion.__repr__cCs|jSr)©rr4rrrÚ__str__GszVersion.__str__cCs tdƒ‚dS)NzPlease implement in subclasses.r!r4rrrÚ is_prereleaseJszVersion.is_prereleaseN)rrrr rr(r+r-r.r0r1r2r5r8r:Úpropertyr;rrrrrsrc    @sšeZdZdZdd„dd„dd„dd„dd„dd„d    d„d
d„d œZd d „Zdd„Zdd„Zedd„ƒZ    dd„Z
dd„Z dd„Z dd„Z dd„Zdd„ZdS) ÚMatcherNcCs||kSr)r©ÚvÚcÚprrrÚ<lambda>TózMatcher.<lambda>cCs||kSr)rr>rrrrBUrCcCs||kp||kSr)rr>rrrrBVrCcCs||kp||kSr)rr>rrrrBWrCcCs||kSr)rr>rrrrBXrCcCs||kSr)rr>rrrrBYrCcCs||kp||kSr)rr>rrrrB[rCcCs||kSr)rr>rrrrB\rC)ú<ú>ú<=ú>=ú==ú===ú~=ú!=cCst|ƒSr)rr#rrrraszMatcher.parse_requirementcCsÒ|jdkrtdƒ‚| ¡|_}| |¡}|s:td|ƒ‚|j|_|j ¡|_g}|jrÄ|jD]d\}}|     d¡r¢|dkr„td|ƒ‚|dd…d}}| |¡n| |¡d}}| 
|||f¡q^t |ƒ|_ dS)    NzPlease specify a version classz Not valid: %rz.*)rHrKz#'.*' not allowed for %r constraintséþÿÿÿTF) Ú version_classÚ
ValueErrorrrrÚnameÚlowerÚkeyÚ constraintsÚendswithÚappendrr)rrÚrZclistÚopZvnÚprefixrrrr ds*
 
 
ÿ zMatcher.__init__cCsxt|tƒr| |¡}|jD]X\}}}|j |¡}t|tƒrDt||ƒ}|s`d||jjf}t    |ƒ‚||||ƒsdSqdS)zÉ
        Check if the provided version matches the constraints.
 
        :param version: The version to match against this instance.
        :type version: String or :class:`Version` instance.
        z%r not implemented for %sFT)
rrrMrÚ
_operatorsÚgetÚgetattrr7rr")rÚversionÚoperatorÚ
constraintrWÚfÚmsgrrrÚmatchs
 
 
 
 
ÿ z Matcher.matchcCs6d}t|jƒdkr2|jdddkr2|jdd}|S)Nrr)rHrI)rr)rÚresultrrrÚ exact_version–s zMatcher.exact_versioncCs0t|ƒt|ƒks|j|jkr,td||fƒ‚dS)Nzcannot compare %s and %s)r$rOr%r&rrrr(szMatcher._check_compatiblecCs"| |¡|j|jko |j|jkSr))r(rQrr&rrrr+¡s
zMatcher.__eq__cCs | |¡ Sr)r,r&rrrr-¥szMatcher.__ne__cCst|jƒt|jƒSr))r3rQrr4rrrr5©szMatcher.__hash__cCsd|jj|jfS)Nz%s(%r)r6r4rrrr8¬szMatcher.__repr__cCs|jSr)r9r4rrrr:¯szMatcher.__str__)rrrrMrXrr r`r<rbr(r+r-r5r8r:rrrrr=Os*÷
r=zk^v?(\d+!)?(\d+(\.\d+)*)((a|b|c|rc)(\d+))?(\.(post)(\d+))?(\.(dev)(\d+))?(\+([a-zA-Z\d]+(\.[a-zA-Z\d]+)?))?$c Cs²| ¡}t |¡}|s"td|ƒ‚| ¡}tdd„|d d¡Dƒƒ}t|ƒdkrl|ddkrl|dd…}qF|dszd}n t|dƒ}|dd    …}|d
d …}|d d …}|d}|dkrÀd}n|dt|dƒf}|dkrâd}n|dt|dƒf}|dkrd}n|dt|dƒf}|dkr*d}nHg}    | d¡D]0}
|
     ¡rTdt|
ƒf}
nd|
f}
|     
|
¡q8t|    ƒ}|sŽ|sŠ|rŠd}nd}|s˜d}|s¢d}||||||fS)NzNot a valid version: %scss|]}t|ƒVqdSr)©Úint©Ú.0r?rrrÚ    <genexpr>¾sz_pep_440_key.<locals>.<genexpr>rÚ.éÿÿÿÿréééé    é
é é )NNr)Úari)Úz)Ú_)Úfinal) rÚPEP440_VERSION_REr`r ÚgroupsrÚsplitrrdÚisdigitrT) rÚmrvÚnumsÚepochÚpreÚpostÚdevÚlocalrÚpartrrrÚ _pep_440_key¸sT
 
 
 
 rc@s6eZdZdZdd„ZedddddgƒZed    d
„ƒZd S) raIA rational version.
 
    Good:
        1.2         # equivalent to "1.2.0"
        1.2.0
        1.2a1
        1.2.3a2
        1.2.3b1
        1.2.3c1
        1.2.3.4
        TODO: fill this out
 
    Bad:
        1           # minimum two numbers
        1.2a        # release level must have a release serial
        1.2.3b
    cCs<t|ƒ}t |¡}| ¡}tdd„|d d¡Dƒƒ|_|S)Ncss|]}t|ƒVqdSr)rcrerrrrgsz*NormalizedVersion.parse.<locals>.<genexpr>rrh)Ú_normalized_keyrur`rvrrwÚ_release_clause)rrraryrvrrrr
s
 
zNormalizedVersion.parserqÚbr@Úrcr~cst‡fdd„ˆjDƒƒS)Nc3s |]}|r|dˆjkVqdS)rN)Ú PREREL_TAGS)rfÚtr4rrrgsz2NormalizedVersion.is_prerelease.<locals>.<genexpr>)Úanyrr4rr4rr;szNormalizedVersion.is_prereleaseN)    rrrrrÚsetr†r<r;rrrrrøs
 cCs>t|ƒ}t|ƒ}||krdS| |¡s*dSt|ƒ}||dkS)NTFrh)ÚstrÚ
startswithr)ÚxÚyÚnrrrÚ _match_prefixs
rc    @sneZdZeZddddddddd    œZd
d „Zd d „Zdd„Zdd„Z    dd„Z
dd„Z dd„Z dd„Z dd„ZdS)rÚ_match_compatibleÚ    _match_ltÚ    _match_gtÚ    _match_leÚ    _match_geÚ    _match_eqÚ_match_arbitraryÚ    _match_ne)rJrDrErFrGrHrIrKcCsV|rd|ko|jd}n|jd o,|jd}|rN|j dd¡d}| |¡}||fS)Nú+rirr)rrrwrM)rr[r]rWZ strip_localrrrrÚ _adjust_local6s
zNormalizedMatcher._adjust_localcCsD| |||¡\}}||krdS|j}d dd„|Dƒ¡}t||ƒ S)NFrhcSsg|] }t|ƒ‘qSr©rŠ©rfÚirrrÚ
<listcomp>Isz/NormalizedMatcher._match_lt.<locals>.<listcomp>©r™rƒÚjoinr©rr[r]rWZrelease_clauseÚpfxrrrr‘Ds zNormalizedMatcher._match_ltcCsD| |||¡\}}||krdS|j}d dd„|Dƒ¡}t||ƒ S)NFrhcSsg|] }t|ƒ‘qSrršr›rrrrQsz/NormalizedMatcher._match_gt.<locals>.<listcomp>ržr rrrr’Ls zNormalizedMatcher._match_gtcCs| |||¡\}}||kSr)©r™©rr[r]rWrrrr“TszNormalizedMatcher._match_lecCs| |||¡\}}||kSr)r¢r£rrrr”XszNormalizedMatcher._match_gecCs.| |||¡\}}|s ||k}n
t||ƒ}|Sr)©r™r©rr[r]rWrarrrr•\s
 
 
zNormalizedMatcher._match_eqcCst|ƒt|ƒkSr)ršr£rrrr–dsz"NormalizedMatcher._match_arbitrarycCs0| |||¡\}}|s ||k}n t||ƒ }|Sr)r¤r¥rrrr—gs
 
 zNormalizedMatcher._match_necCsf| |||¡\}}||krdS||kr*dS|j}t|ƒdkrH|dd…}d dd„|Dƒ¡}t||ƒS)NTFrrirhcSsg|] }t|ƒ‘qSrršr›rrrrzsz7NormalizedMatcher._match_compatible.<locals>.<listcomp>)r™rƒrrŸrr rrrros  z#NormalizedMatcher._match_compatibleN)rrrrrMrXr™r‘r’r“r”r•r–r—rrrrrr's&ø z[.+-]$Úz^[.](\d)z0.\1z^[.-]z
^\((.*)\)$ú\1z^v(ersion)?\s*(\d+)z\2z^r(ev)?\s*(\d+)z[.]{2,}rhz\b(alfa|apha)\bÚalphaz\b(pre-alpha|prealpha)\bz    pre.alphaz    \(beta\)$Úbetaz
^[:~._+-]+z
[,*")([\]]z[~:+_ -]z\.$z (\d+(\.\d+)*)cCsL| ¡ ¡}tD]\}}| ||¡}q|s.d}t |¡}|sFd}|}nª| ¡d d¡}dd„|Dƒ}t|ƒdkr~|     d¡qft|ƒdkrœ|| 
¡d…}n8d  dd„|dd…Dƒ¡|| 
¡d…}|dd…}d  d    d„|Dƒ¡}| ¡}|rt D]\}}| ||¡}qú|s|}nd
|kr*d nd }|||}t |ƒsHd}|S) z€
    Try to suggest a semantic form for a version for which
    _suggest_normalized_version couldn't come up with anything.
    z0.0.0rrhcSsg|] }t|ƒ‘qSrrcr›rrrrªsz-_suggest_semantic_version.<locals>.<listcomp>éNcSsg|] }t|ƒ‘qSrršr›rrrr°scSsg|] }t|ƒ‘qSrršr›rrrr²sr~ú-r˜)rrPÚ _REPLACEMENTSÚsubÚ_NUMERIC_PREFIXr`rvrwrrTÚendrŸÚ_SUFFIX_REPLACEMENTSÚ    is_semver)rraÚpatÚreplryrWÚsuffixÚseprrrÚ_suggest_semantic_version–s:  
   ,   
r¶cCshzt|ƒ|WStk
r"YnX| ¡}dD]\}}| ||¡}q0t dd|¡}t dd|¡}t dd|¡}t dd    |¡}t d
d |¡}| d ¡r¢|d d…}t dd |¡}t dd|¡}t dd|¡}t dd|¡}t dd|¡}t dd|¡}t dd|¡}t dd|¡}t dd|¡}t dd|¡}t dd |¡}z t|ƒWntk
rbd}YnX|S)!aèSuggest a normalized version close to the given version string.
 
    If you have a version string that isn't rational (i.e. NormalizedVersion
    doesn't like it) then you might be able to get an equivalent (or close)
    rational version from this function.
 
    This does a number of simple normalizations to the given string, based
    on observation of versions currently in use on PyPI. Given a dump of
    those version during PyCon 2009, 4287 of them:
    - 2312 (53.93%) match NormalizedVersion without change
      with the automatic suggestion
    - 3474 (81.04%) match when using this suggestion method
 
    @param s {str} An irrational version string.
    @returns A rational version string, or None, if couldn't determine one.
    ))z-alpharq)z-betar„)r¨rq)r©r„)r…r@)z-finalr¦)z-prer@)z-releaser¦)z.releaser¦)z-stabler¦)r˜rh)rsrh)ú r¦)z.finalr¦)rtr¦zpre$Zpre0zdev$Zdev0z([abc]|rc)[\-\.](\d+)$z\1\2z[\-\.](dev)[\-\.]?r?(\d+)$z.\1\2z[.~]?([abc])\.?r§r?rNz\b0+(\d+)(?!\d)z (\d+[abc])$z\g<1>0z\.?(dev-r|dev\.r)\.?(\d+)$z.dev\2z-(a|b|c)(\d+)$z[\.\-](dev|devel)$z.dev0z(?![\.\-])dev$z(final|stable)$r¦z\.?(r|-|-r)\.?(\d+)$z.post\2z\.?(dev|git|bzr)\.?(\d+)$z\.?(pre|preview|-c)(\d+)$zc\g<2>zp(\d+)$z.post\1)r‚r rPÚreplaceÚrer­r‹)rÚrsÚorigr³rrrÚ_suggest_normalized_versionÄs> 
      
r¼z([a-z]+|\d+|[\.-])r@zfinal-ú@)r|Úpreviewr«r…r~r¦rhcCsrdd„}g}||ƒD]T}| d¡r^|dkrD|rD|ddkrD| ¡q*|r^|ddkr^| ¡qD| |¡qt|ƒS)NcSstg}t | ¡¡D]R}t ||¡}|rd|dd…krBdkrRnn | d¡}nd|}| |¡q| d¡|S)NÚ0rÚ9éÚ*ú*final)Ú _VERSION_PARTrwrPÚ_VERSION_REPLACErYÚzfillrT)rrarArrrÚ    get_partsCs    
z_legacy_key.<locals>.get_partsrÂrÃriz*final-Ú00000000)r‹ÚpoprTr)rrÇrarArrrÚ _legacy_keyBs  
 
 
 rÊc@s eZdZdd„Zedd„ƒZdS)rcCst|ƒSr))rÊr#rrrr]szLegacyVersion.parsecCs8d}|jD](}t|tƒr
| d¡r
|dkr
d}q4q
|S)NFrÂrÃT)rrrr‹)rrarŒrrrr;`s
ÿzLegacyVersion.is_prereleaseN©rrrrr<r;rrrrr\sc@s4eZdZeZeejƒZded<e     d¡Z
dd„Z dS)r    rrJz^(\d+(\.\d+)*)cCs`||kr dS|j t|ƒ¡}|s2t d||¡dS| ¡d}d|krV| dd¡d}t||ƒS)NFzACannot compute compatible match for version %s  and constraint %sTrrhr)Ú
numeric_rer`rŠÚloggerÚwarningrvÚrsplitr)rr[r]rWryrrrrrssÿ zLegacyMatcher._match_compatibleN) rrrrrMÚdictr=rXr¹ÚcompilerÌrrrrrr    ks
 
 
zN^(\d+)\.(\d+)\.(\d+)(-[a-z0-9]+(\.[a-z0-9-]+)*)?(\+[a-z0-9]+(\.[a-z0-9-]+)*)?$cCs
t |¡Sr))Ú
_SEMVER_REr`)rrrrr±‰sr±c    Csndd„}t|ƒ}|st|ƒ‚| ¡}dd„|dd…Dƒ\}}}||ddƒ||ddƒ}}|||f||fS)    NcSs8|dkr|f}n$|dd… d¡}tdd„|Dƒƒ}|S)NrrhcSs"g|]}| ¡r| d¡n|‘qS)rÁ)rxrÆ)rfrArrrr•sz5_semantic_key.<locals>.make_tuple.<locals>.<listcomp>)rwr)rZabsentrarrrrÚ
make_tupleŽs
z!_semantic_key.<locals>.make_tuplecSsg|] }t|ƒ‘qSrrcr›rrrrœsz!_semantic_key.<locals>.<listcomp>rªú|érÂ)r±r rv)    rrÓryrvÚmajorÚminorÚpatchr|ÚbuildrrrÚ _semantic_keys
rÚc@s eZdZdd„Zedd„ƒZdS)r
cCst|ƒSr))rÚr#rrrr£szSemanticVersion.parsecCs|jdddkS)NrrrÔ)rr4rrrr;¦szSemanticVersion.is_prereleaseNrËrrrrr
¢sc@seZdZeZdS)r N)rrrr
rMrrrrr «sc@s6eZdZd dd„Zdd„Zdd„Zdd    „Zd
d „ZdS) Ú VersionSchemeNcCs||_||_||_dSr))rQÚmatcherÚ    suggester)rrQrÜrÝrrrr °szVersionScheme.__init__cCs2z|j |¡d}Wntk
r,d}YnX|S©NTF)rÜrMr ©rrrarrrÚis_valid_versionµs  
zVersionScheme.is_valid_versioncCs0z| |¡d}Wntk
r*d}YnX|SrÞ)rÜr rßrrrÚis_valid_matcher½s 
 
zVersionScheme.is_valid_matchercCs| d|¡S)z:
        Used for processing some metadata fields
        zdummy_name (%s))rár#rrrÚis_valid_constraint_listÅsz&VersionScheme.is_valid_constraint_listcCs|jdkrd}n
| |¡}|Sr))rÝrßrrrÚsuggestËs
 
zVersionScheme.suggest)N)rrrr ràrárârãrrrrrÛ¯s
 
rÛcCs|Sr)rr#rrrrBÕrCrB)Ú
normalizedÚlegacyZsemanticräÚdefaultcCs|tkrtd|ƒ‚t|S)Nzunknown scheme name: %r)Ú_SCHEMESrN)rOrrrr Ýs )*rÚloggingr¹ÚcompatrÚutilrÚ__all__Ú    getLoggerrrÍrNr Úobjectrr=rÑrurr‚rrrr¬r°r®r¶r¼ÚIrÄrÅrÊrr    rÒr±rÚr
r rÛrçr rrrrÚ<module>s”  ý
1d
=$ W        ÿ õ     û
.rù þ    $ÿÿü