\h\ dZddlZddlZddlmZddlmZgdZeje Z Gdde Z Gd d e ZGd d e Zej d ej"ZdZeZGddeZdZGddeZej ddfej ddfej ddfej ddfej ddfej ddfej ddfej d d!fej d"d#fej d$d%ff Zej d&dfej d'dfej d(dfej ddfej d)dffZej d*Zd+Zd,Zej d-ej"Zd.d.d/d.d0ddd1Zd2ZGd3d4eZ Gd5d6eZ!ej d7ej"Z"d8Z#d9Z$Gd:d;eZ%Gd<d=eZ&Gd>d?e Z'e'eeee'ee!d@e'e$e&edAZ(e(dBe(dC<dDZ)y)Ez~ Implementation of a flexible versioning scheme providing support for PEP-440, setuptools-compatible and semantic versioning. N) string_typesparse_requirement)NormalizedVersionNormalizedMatcher LegacyVersion LegacyMatcherSemanticVersionSemanticMatcherUnsupportedVersionError get_schemeceZdZdZy)r zThis is an unsupported version.N)__name__ __module__ __qualname____doc__^/root/niggaflix-v3/playground/venv/lib/python3.12/site-packages/pip/_vendor/distlib/version.pyr r s)rr cdeZdZdZdZdZdZdZdZdZ dZ d Z d Z d Z d Zed Zy)Versionc|jx|_}|j|x|_}t |t sJt |dkDsJy)Nr)strip_stringparse_parts isinstancetuplelen)selfspartss r__init__zVersion.__init__sH779$ q"jjm+ e%'''5zA~~rctd)Nzplease implement in a subclassNotImplementedErrorr!r"s rrz Version.parse%s!"BCCrcTt|t|k7rtd|d|yNzcannot compare z and )type TypeErrorr!others r_check_compatiblezVersion._check_compatible(s' :e $$FG G %rcV|j||j|jk(SNr/rr-s r__eq__zVersion.__eq__,s# u%{{ell**rc&|j| Sr1r3r-s r__ne__zVersion.__ne__0;;u%%%rcV|j||j|jkSr1r2r-s r__lt__zVersion.__lt__3s# u%{{U\\))rcL|j|xs|j| Sr1r9r3r-s r__gt__zVersion.__gt__7s"KK&<$++e*<==rcJ|j|xs|j|Sr1r;r-s r__le__zVersion.__le__:{{5!7T[[%77rcJ|j|xs|j|Sr1)r<r3r-s r__ge__zVersion.__ge__=r?rc,t|jSr1)hashrr!s r__hash__zVersion.__hash__AsDKK  rcN|jjd|jdS)Nz('z') __class__rrrDs r__repr__zVersion.__repr__Ds!^^44dllCCrc|jSr1rrDs r__str__zVersion.__str__G ||rctd)NzPlease implement in subclasses.r&rDs r is_prereleasezVersion.is_prereleaseJs!"CDDrN)rrrr$rr/r3r6r9r<r>rArErIrLpropertyrOrrrrrsW DH+&*>88!DEErrc |eZdZdZdddddddd d Zd Zd Zd ZedZ dZ dZ dZ dZ dZdZy)MatcherNc ||kSr1rvcps rzMatcher.T QUrc ||kDSr1rrTs rrXzMatcher.UrYrc||k(xs||kSr1rrTs rrXzMatcher.Va1foArc||k(xs||kDSr1rrTs rrXzMatcher.Wr\rc ||k(Sr1rrTs rrXzMatcher.X a1frc ||k(Sr1rrTs rrXzMatcher.Ys qAvrc||k(xs||kDSr1rrTs rrXzMatcher.[r\rc ||k7Sr1rrTs rrXzMatcher.\r_r)<><=>======~=!=ct|Sr1rr(s rrzMatcher.parse_requirementas  ##rc,|j td|jx|_}|j |}|std|z|j |_|j j |_g}|jrw|jD]h\}}|jdr+|dvrtd|z|ddd}}|j|n|j|d}}|j|||fjt||_ y) NzPlease specify a version classz Not valid: %rz.*)rgrjz#'.*' not allowed for %r constraintsTF) version_class ValueErrorrrrnamelowerkey constraintsendswithappendrr)r!r"rclistopvnprefixs rr$zMatcher.__init__ds    %=> >779$ q  " "1 %_q01 1FF 99??$ == /A::d#-(*:<>*?@@"#3BB&&r*"&!3!3A!6B b"f-. /El rcFt|tr|j|}|jD]q\}}}|jj |}t|tr t ||}|s&|d|jj}t|||||rqyy)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 not implemented for FT) rrrnr _operatorsgetgetattrrHrr')r!versionoperator constraintrzfmsgs rmatchz Matcher.matchs g| ,((1G,0KK  (Hj&##H-A!\*D!$#+T^^-D-DF)#..Wj&1 rcd}t|jdk(r&|jdddvr|jdd}|S)Nrr)rgrh)r r)r!results r exact_versionzMatcher.exact_versionsC t{{ q T[[^A%6-%G[[^A&F rct|t|k7s|j|jk7rtd|d|yr*)r+rpr,r-s rr/zMatcher._check_compatibles7 :e $ UZZ(?$FG G)@rc|j||j|jk(xr|j|jk(Sr1)r/rrrr-s rr3zMatcher.__eq__s5 u%xx599$D )DDrc&|j| Sr1r5r-s rr6zMatcher.__ne__r7rcXt|jt|jzSr1)rCrrrrDs rrEzMatcher.__hash__sDHH~T[[ 111rcN|jjd|jdS)N()rGrDs rrIzMatcher.__repr__s>>22DLLAArc|jSr1rKrDs rrLzMatcher.__str__rMr)rrrrnr|rr$rrPrr/r3r6rErIrLrrrrRrROslM# "--$%-$ J$#:* HE&2BrrRz^v?(\d+!)?(\d+(\.\d+)*)((a|alpha|b|beta|c|rc|pre|preview)(\d+)?)?(\.(post|r|rev)(\d+)?)?([._-]?(dev)(\d+)?)?(\+([a-zA-Z\d]+(\.[a-zA-Z\d]+)?))?$cn|j}tj|}|std|z|j }t d|dj dD}t|dkDr$|ddk(r|dd}t|dkDr |ddk(r|dsd}nt|ddd}|dd}|d d }|d d }|d }|dk(rd}n |d|ddf}n|dt|df}|dk(rd}n |d|ddf}n|dt|df}|dk(rd}n |d|ddf}n|dt|df}|d}nVg} |j dD]5} | jrdt| f} nd| f} | j| 7t | }|s |s|rd}nd}|sd}|sd}||||||fS)NzNot a valid version: %sc32K|]}t|ywr1int.0rUs r z_pep_440_key..s6AQ6r.r )NNr)ar)z)_)final) rPEP440_VERSION_RErr groupsrsplitr risdigitru) r"mrnumsepochprepostdevlocalr#parts r _pep_440_keyrs  A"A %&?!&CDD XXZF 6!56 6D d)a-DHMCRy d)a-DHM !9F1IcrN# 1+C !A;D B-C 2JE l q6>a&!)Ca&#c!f+%C | 7?7A:D7CQL(D l q6>a&!)Ca&#c!f+%C }KK$ D||~3t9~4y LL  e  CC   $T3 --rc:eZdZdZdZegdZedZy)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 ct|}tj|}|j}t d|dj dD|_|S)Nc32K|]}t|ywr1rrs rrz*NormalizedVersion.parse..s$JSV$Jrrr)_normalized_keyrrrrr_release_clause)r!r"rrrs rrzNormalizedVersion.parsesN #  # #A &$$JVAY__S5I$JJ r)rbrVrcrc@tfdjDS)Nc3FK|]}|s|djvyw)rN) PREREL_TAGS)rtr!s rrz2NormalizedVersion.is_prerelease..!s"FA1Q44+++Fs!!)anyrrDs`rrOzNormalizedVersion.is_prereleasesFT[[FFFrN) rrrrrsetrrPrOrrrrrs-" 23K GGrrct|}t|}||k(ry|j|syt|}||dk(S)NTFr)str startswithr )xyns r _match_prefixr$sC AA AAAv <<? AA Q43;rc \eZdZeZddddddddd Zd Zd Zd Zd Z dZ dZ dZ dZ dZy)r_match_compatible _match_lt _match_gt _match_le _match_ge _match_eq_match_arbitrary _match_ne)rircrdrerfrgrhrjc|rd|vxr|jd}n!|jd xr|jd}|r0|jjddd}|j|}||fS)N+rrr)rrrrn)r!rrrz strip_localr"s r _adjust_localzNormalizedMatcher._adjust_local>sy Z/FGNN24FK )//33Jr8JK %%c1-a0A((+G ""rc|j|||\}}||k\ry|j}dj|Dcgc] }t|c}}t || Scc}wNFrrrjoinrrr!rrrzrelease_clauseipfxs rrzNormalizedMatcher._match_ltLc"00*fM j #33hh71A78 #...8Ac|j|||\}}||kry|j}dj|Dcgc] }t|c}}t || Scc}wrrrs rrzNormalizedMatcher._match_gtTrrc8|j|||\}}||kSr1rr!rrrzs rrzNormalizedMatcher._match_le\&"00*fM*$$rc8|j|||\}}||k\Sr1rrs rrzNormalizedMatcher._match_ge`rrc\|j|||\}}|s||k(}|St||}|Sr1rrr!rrrzrs rrzNormalizedMatcher._match_eqdsB"00*fM+F #7J7F rc0t|t|k(Sr1)rrs rrz"NormalizedMatcher._match_arbitraryls7|s:..rc^|j|||\}}|s||k7}|St|| }|Sr1rrs rrzNormalizedMatcher._match_neosE"00*fM+F 'w ;;F rc|j|||\}}||k(ry||kry|j}t|dkDr|dd}dj|Dcgc] }t |c}}t ||Scc}w)NTFrrr)rrr rrrrs rrz#NormalizedMatcher._match_compatiblews"00*fM j  Z $33 ~  "+CR0Nhh71A78Wc**8sA6N)rrrrrnr|rrrrrrrrrrrrrr/sU%M"  ! J #//%%/ +rrz[.+-]$z^[.](\d)z0.\1z^[.-]z ^\((.*)\)$\1z^v(ersion)?\s*(\d+)z\2z^r(ev)?\s*(\d+)z[.]{2,}rz\b(alfa|apha)\balphaz\b(pre-alpha|prealpha)\bz pre.alphaz \(beta\)$betaz ^[:~._+-]+z [,*")([\]]z[~:+_ -]z\.$z (\d+(\.\d+)*)cv|jj}tD]\}}|j||}|sd}tj |}|sd}|}n|j djd}|Dcgc] }t|}}t|dkr |jdt|dkr t|dk(r||jd}nDdj|ddDcgc] }t|c}||jdz}|dd}dj|Dcgc] }t|c}}|j}|r tD]\}}|j||}|s|}nd|vrdnd}||z|z}t|sd}|Scc}wcc}wcc}w) z Try to suggest a semantic form for a version for which _suggest_normalized_version couldn't come up with anything. z0.0.0rrNr-r)rrq _REPLACEMENTSsub_NUMERIC_PREFIXrrrrr ruendrr_SUFFIX_REPLACEMENTS is_semver) r"rpatreplrrzsuffixrseps r_suggest_semantic_versionrs WWY__ F"' Tv&'  f%A A$$S)"()Q#a&))&kAo MM! &kAo v;! AEEGH%FXXvabz:!s1v:;fQUUWX>NNFBQZF62a3q623 . +ICWWT6*F + f_c##& V  M/* ;2sF,<F1=F6c t||S#t$rYnwxYw|j}dD]\}}|j||}t j dd|}t j dd|}t j dd|}t j dd |}t j d d |}|j d r|d d}t j dd |}t j dd|}t j dd|}t j dd|}t j dd|}t j dd|}t j dd|}t j dd|}t j dd|}t j dd|}t j dd |} t||S#t$rd}Y|SwxYw)!aSuggest 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-alphar)z-betar)rr)rr)rrV)z-finalr)z-prerV)z-releaser)z.releaser)z-stabler)rr)rr) r)z.finalr)rrzpre$pre0zdev$dev0z([abc]|rc)[\-\.](\d+)$z\1\2z[\-\.](dev)[\-\.]?r?(\d+)$z.\1\2z[.~]?([abc])\.?rrUrNz\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)$rz\.?(r|-|-r)\.?(\d+)$z.post\2z\.?(dev|git|bzr)\.?(\d+)$z\.?(pre|preview|-c)(\d+)$zc\g<2>zp(\d+)$z.post\1)rr rqreplacererr)r"rsorigrs r_suggest_normalized_versionrs"  "    B&$ d ZZd # $ " %B " %B )7B 7B -x .get_partsMs$$QWWY/ !A $$Q*A!BQ%&3& AaA a  !  h rr r rz*final-00000000)rpoprur)r"rrrWs r _legacy_keyrLs F q\ << 8|y!8JJLy!8VBZ:5 VBZ:5 a =rc"eZdZdZedZy)r ct|Sr1)rr(s rrzLegacyVersion.parsegs 1~rcd}|jD]/}t|ts|jds&|dks,d}|S|S)NFr r T)rrrr)r!rrs rrOzLegacyVersion.is_prereleasejsJ A1l+ S0AL    rNrrrrrPrOrrrr r fsrr cheZdZeZeejZded<ejdZ dZ y)r rriz^(\d+(\.\d+)*)c||kry|jjt|}|stj d||y|j d}d|vr|j ddd}t||S)NFzACannot compute compatible match for version %s and constraint %sTrrr) numeric_rerrloggerwarningrrsplitr)r!rrrzrr"s rrzLegacyMatcher._match_compatible}sz Z  OO ! !#j/ 2 NN018* F HHJqM !8a #AWa((rN) rrrr rndictrRr|rcompilerrrrrr r us7!Mg(()J*Jt-.J )rr zN^(\d+)\.(\d+)\.(\d+)(-[a-z0-9]+(\.[a-z0-9-]+)*)?(\+[a-z0-9]+(\.[a-z0-9-]+)*)?$c,tj|Sr1) _SEMVER_REr)r"s rrrs   A rcd}t|}|s t||j}|ddDcgc] }t|c}\}}}||dd||dd} }|||f|| fScc}w)Nc||f}|S|ddjd}t|Dcgc]%}|jr|jdn|'c}}|Scc}w)Nrrr )rrrr)r"absentrr#rWs r make_tuplez!_semantic_key..make_tuplesb 9YF  abEKK$EeL!))+AGGAJ1<LMF Ms*Ar|r )rr rr) r"r%rrrmajorminorpatchrbuilds r _semantic_keyr,s ! A %a(( XXZF+1"1:6a3q66E5%F1Is+Zq 3-GC 5% #u ,,7sA,c"eZdZdZedZy)r ct|Sr1)r,r(s rrzSemanticVersion.parses Qrc,|jdddk7S)Nrrr&)rrDs rrOzSemanticVersion.is_prereleases{{1~a C''rNrrrrr r s ((rr ceZdZeZy)r N)rrrr rnrrrr r s#Mrr c,eZdZddZdZdZdZdZy) VersionSchemeNc.||_||_||_yr1)rrmatcher suggester)r!rrr4r5s rr$zVersionScheme.__init__s "rcf |jj|d}|S#t$rd}Y|SwxYwNTF)r4rnr r!r"rs ris_valid_versionzVersionScheme.is_valid_versions@  LL & &q )F ' F  s ! 00cR |j|d}|S#t$rd}Y|SwxYwr7)r4r r8s ris_valid_matcherzVersionScheme.is_valid_matchers9  LLOF ' F  s  &&cV|jdr|dd}|jd|zS)z: Used for processing some metadata fields ,Nrzdummy_name (%s))rtr;r(s ris_valid_constraint_listz&VersionScheme.is_valid_constraint_lists1 ::c?#2A$$%6%:;;rcH|jd}|S|j|}|Sr1)r5r8s rsuggestzVersionScheme.suggests- >> !F ^^A&F rr1)rrrr$r9r;r>r@rrrr2r2s# <rr2c|Sr1rr(s rrXrXsr) normalizedlegacysemanticrBdefaultc@|tvrtd|zt|S)Nzunknown scheme name: %r)_SCHEMESro)rps rrrs% 82T9:: D>r)*rloggingrcompatrutilr__all__ getLoggerrrror objectrrRrIrrrrrrrrrrrr rrr r r!rr,r r r2rGrrrrrOs   # 4   8 $ j .Ef.EbafaHBJJ FGIttM B.J!G!GHT+T+pRZZ2RZZ g&RZZ"RZZ &RZZ&'/RZZ"#U+RZZ C RZZ"#W-RZZ+,RZZ v&  RZZ r"RZZ #RZZ S!RZZ C RZZ "**-.+\lf 0"$$7    4 G )G)4RZZ:;=44A -*(g($g$$F$P 1B ;=K8IJm_79  |,r