Ë Ì?(œsGƒã óâ—dZddlZddlZddlmZddlmZgd¢Zeje «Z Gd„de «Z Gd „d e «ZGd „d e «Zej d ej"«Zd„ZeZGd„de«Zd„ZGd„de«Zej d«dfej d«dfej d«dfej d«dfej d«dfej d«dfej d«dfej d «d!fej d"«d#fej d$«d%ff Zej d&«dfej d'«dfej d(«dfej d«dfej d)«dffZej d*«Zd+„Zd,„Zej d-ej"«Zd.d.d/d.d0ddd1œZd2„ZGd3„d4e«Z Gd5„d6e«Z!ej d7ej"«Z"d8„Z#d9„Z$Gd:„d;e«Z%Gd<„d=e«Z&Gd>„d?e «Z'e'eee«e'ee!d@„«e'e$e&e«dAœZ(e(dBe(dC<dD„Z)y)Ez~ 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ó—eZdZdZy)r zThis is an unsupported version.N)Ú__name__Ú __module__Ú __qualname__Ú__doc__©óú4/usr/lib/python3.12/site-packages/distlib/version.pyr r s„Ù)Ørr cód—eZdZd„Zd„Zd„Zd„Zd„Zd„Zd„Z d„Z d „Z d „Z d „Z d „Zed „«Zy)ÚVersioncó¦—|j«x|_}|j|«x|_}t |t «sJ‚t |«dkDsJ‚y)Nr)ÚstripÚ_stringÚparseÚ_partsÚ isinstanceÚtupleÚlen)ÚselfÚsÚpartss rÚ__init__zVersion.__init__sH€ØŸ7™7›9Ð$ˆŒ �qØ"Ÿj™j¨›mÐ+ˆŒ �eܘ%¤Ô'Ð'Ð'Ü�5‹z˜AŠ~Љ~rcó—td«‚)Nzplease implement in a subclass©ÚNotImplementedError©r!r"s rrz Version.parse%s€Ü!Ð"BÓCÐCrcóT—t|«t|«k7rtd|›d|›�«‚y©Nzcannot compare z and )ÚtypeÚ TypeError©r!Úothers rÚ_check_compatiblezVersion._check_compatible(s'€Ü �‹:œ˜e›Ò $ݺ$ÁÐFÓGÐ Gð %rcóV—|j|«|j|jk(S©N©r/rr-s rÚ__eq__zVersion.__eq__,s#€Ø ×јuÔ%Ø�{‰{˜eŸl™lÑ*Ð*rcó&—|j|« Sr1©r3r-s rÚ__ne__zVersion.__ne__0󀨗;‘;˜uÓ%Ð%Ð%rcóV—|j|«|j|jkSr1r2r-s rÚ__lt__zVersion.__lt__3s#€Ø ×јuÔ%Ø�{‰{˜UŸ\™\Ñ)Ð)rcóL—|j|«xs|j|« Sr1©r9r3r-s rÚ__gt__zVersion.__gt__7s"€Ø—K‘K Ó&Ò<¨$¯+©+°eÓ*<Ð=Ð=rcóJ—|j|«xs|j|«Sr1r;r-s rÚ__le__zVersion.__le__:ó€Ø�{‰{˜5Ó!Ò7 T§[¡[°Ó%7Ð7rcóJ—|j|«xs|j|«Sr1)r<r3r-s rÚ__ge__zVersion.__ge__=r?rcó,—t|j«Sr1)Úhashr©r!s rÚ__hash__zVersion.__hash__As€Ü�D—K‘KÓ Ð rcóN—|jj›d|j›d�S)Nz('z')©Ú __class__rrrDs rÚ__repr__zVersion.__repr__Ds€Ø!Ÿ^™^×4Ó4°d·l³lÐCÐCrcó—|jSr1©rrDs rÚ__str__zVersion.__str__Gó €Ø�|‰|Ðrcó—td«‚)NzPlease implement in subclasses.r&rDs rÚ is_prereleasezVersion.is_prereleaseJs€ä!Ð"CÓDÐDrN)rrrr$rr/r3r6r9r<r>rArErIrLÚpropertyrOrrrrrsW„òò DòHò+ò&ò*ò>ò8ò8ò!òDòðñEóñErrc ó|—eZdZdZd„d„d„d„d„d„d„d „d œZd „Zd „Zd „Zed„«Z d„Z d„Z d„Z d„Z d„Zd„Zy)ÚMatcherNcó —||kSr1r©ÚvÚcÚps rÚzMatcher.Tó€˜Q šUrcó —||kDSr1rrTs rrXzMatcher.UrYrcó—||k(xs||kSr1rrTs rrXzMatcher.Vó€˜a 1™fšo¨¨A©˜orcó—||k(xs||kDSr1rrTs rrXzMatcher.Wr\rcó —||k(Sr1rrTs rrXzMatcher.Xó€˜a 1šfrcó —||k(Sr1rrTs rrXzMatcher.Ys€˜q Ašvrcó—||k(xs||kDSr1rrTs rrXzMatcher.[r\rcó —||k7Sr1rrTs rrXzMatcher.\r_r)Ú<Ú>ú<=ú>=ú==ú===ú~=ú!=có—t|«Sr1rr(s rrzMatcher.parse_requirementas €Ü  Ó#Ð#rcó,—|j€ td«‚|j«x|_}|j |«}|std|z«‚|j |_|j j «|_g}|jrw|jD]h\}}|jd«r+|dvrtd|z«‚|ddd}}|j|«n|j|«d}}|j|||f«Œjt|«|_ y) NzPlease specify a version classz Not valid: %rz.*)rgrjz#'.*' not allowed for %r constraintséþÿÿÿTF) Ú version_classÚ ValueErrorrrrÚnameÚlowerÚkeyÚ constraintsÚendswithÚappendrr)r!r"ÚrÚclistÚopÚvnÚprefixs rr$zMatcher.__init__ds€Ø × Ñ Ð %ÜÐ=Ó>Ð >ØŸ7™7›9Ð$ˆŒ �qØ × "Ñ " 1Ó %ˆÙܘ_¨qÑ0Ó1Ð 1Ø—F‘FˆŒ Ø—9‘9—?‘?Ó$ˆŒØˆØ �=Š=àŸœ‘��AØ—:‘:˜dÔ#Ø Ñ-Ü(ð*:Ø<>ñ*?ó@ð@ð"# 3 B ¨˜�Bà×&Ñ& rÕ*ð"&×!3Ñ!3°AÓ!6¸˜�BØ— ‘ ˜b " fÐ-Õ.ð'ô˜E“lˆ� rcóF—t|t«r|j|«}|jD]q\}}}|jj |«}t|t«r t ||«}|s&|›d|jj›�}t|«‚||||«rŒqyy)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Ú _operatorsÚgetÚgetattrrHrr')r!ÚversionÚoperatorÚ constraintrzÚfÚmsgs rÚmatchz Matcher.match�s–€ô �gœ|Ô ,Ø×(Ñ(¨Ó1ˆGØ,0¯K¬KÑ (ˆH�j &Ø—‘×#Ñ# HÓ-ˆAܘ!œ\Ô*ܘD !Ó$�Ùâ#+¨T¯^©^×-DÒ-DðF�ä)¨#Ó.Ð.Ù�W˜j¨&Õ1Ùð-8ðrcó†—d}t|j«dk(r&|jdddvr|jdd}|S)Nrr)rgrh)r r)r!Úresults rÚ exact_versionzMatcher.exact_version–sC€àˆÜ ˆt�{‰{Ó ˜qÒ  T§[¡[°¡^°AÑ%6¸-Ñ%GØ—[‘[ ‘^ AÑ&ˆF؈ rcó†—t|«t|«k7s|j|jk7rtd|›d|›�«‚yr*)r+rpr,r-s rr/zMatcher._check_compatible�s7€Ü �‹:œ˜e›Ò $¨¯ © °U·Z±ZÒ(?ݺ$ÁÐFÓGÐ Gð)@rcóŒ—|j|«|j|jk(xr|j|jk(Sr1)r/rrrr-s rr3zMatcher.__eq__¡s5€Ø ×јuÔ%Ø�x‰x˜5Ÿ9™9Ñ$ÒD¨¯©¸¿ ¹ Ñ)DÐDrcó&—|j|« Sr1r5r-s rr6zMatcher.__ne__¥r7rcóX—t|j«t|j«zSr1)rCrrrrDs rrEzMatcher.__hash__©s€Ü�D—H‘H‹~¤ T§[¡[Ó 1Ñ1Ð1rcóN—|jj›d|j›d�S)NÚ(Ú)rGrDs rrIzMatcher.__repr__¬s€ØŸ>™>×2Ó2°D·L³LÐAÐArcó—|jSr1rKrDs rrLzMatcher.__str__¯rMr)rrrrnr|rr$r„rPr‡r/r3r6rErIrLrrrrRrROsl„Ø€Mñ#Ù "Ù-Ù-Ù$Ù%á-Ù$ñ €Jò$ò#ò:ð*ñóðò HòEò&ò2òBórrRz�^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]+)?))?$cón—|j«}tj|«}|std|z«‚|j «}t d„|dj d«D««}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|d«f}|dk(rd}n |d€|ddf}n|dt|d«f}|dk(rd}n |d€|ddf}n|dt|d«f}|€d}nVg} |j d«D]5} | j«rdt| «f} nd| f} | j| «Œ7t | «}|s |s|rd}nd}|sd}|sd}||||||fS)NzNot a valid version: %sc3ó2K—|]}t|«–—Œy­wr1©Úint©Ú.0rUs rÚ z_pep_440_key..¾sèø€Ð6Ñ!5˜A”�Q—Ñ!5ùó‚rÚ.éÿÿÿÿréééé é é é )NNr)Úar™)Úz)Ú_)Úfinal) rÚPEP440_VERSION_REr„r ÚgroupsrÚsplitr r“Úisdigitru) r"Úmr¦ÚnumsÚepochÚpreÚpostÚdevÚlocalr#Úparts rÚ _pep_440_keyr±¸s€Ø �‰‹ €AÜ×Ñ Ó"€AÙ Ü%Ð&?À!Ñ&CÓDÐDØ �X‰X‹Z€FÜ Ñ6 ¨¡§¡°Ô!5Ó6Ó 6€DÜ ˆd‹)�aŠ-˜D ™H¨šMØ�C�Rˆyˆô ˆd‹)�aŠ-˜D ™H¨›Mð �!Š9؉ä�F˜1‘I˜c˜r�NÓ#ˆØ ��1ˆ+€CØ �!�Aˆ;€DØ ��Bˆ-€CØ �2‰J€EØ ˆlÒØ‰à ˆq‰6ˆ>Ø�a‘&˜!�)‰Cà�a‘&œ#˜c !™f›+Ð%ˆCØ ˆ|ÒØ‰à �‰7ˆ?ؘ‘7˜A�:‰Dà˜‘7œC  Q¡›LÐ(ˆDØ ˆlÒØ‰à ˆq‰6ˆ>Ø�a‘&˜!�)‰Cà�a‘&œ#˜c !™f›+Ð%ˆCØ €}Ø‰àˆØ—K‘K Ö$ˆDð�|‰|Œ~Øœ3˜t›9�~‘à˜4�y�Ø �L‰L˜Õ ð%ô�e“ ˆÙ á™à‰CàˆCá ØˆÙ ؈à �$˜˜T 3¨Ð -Ð-rcó:—eZdZdZd„Zegd¢«Zed„«Zy)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 có¸—t|«}tj|«}|j«}t d„|dj d«D««|_|S)Nc3ó2K—|]}t|«–—Œy­wr1r’r”s rr–z*NormalizedVersion.parse..sèø€Ð$JÑ5I°¤S¨§VÑ5Iùr—rr˜)Ú_normalized_keyr¥r„r¦rr§Ú_release_clause)r!r"r†r©r¦s rrzNormalizedVersion.parsesN€Ü  Ó#ˆô × #Ñ # AÓ &ˆØ—‘“ˆÜ$Ñ$J°V¸A±Y·_±_ÀSÔ5IÓ$JÓJˆÔ؈ r)r¡ÚbrVÚrcr®có@‡—tˆfd„‰jD««S)Nc3óF•K—|]}|sŒ|d‰jv–—Œy­w)rN)Ú PREREL_TAGS)r•Útr!s €rr–z2NormalizedVersion.is_prerelease..!s#øèø€ÐF±[°ÂA�1�Q‘4˜4×+Ñ+Ô+±[ùsƒ!‹!)ÚanyrrDs`rrOzNormalizedVersion.is_prereleasesø€äÓF°T·[²[ÓFÓFÐFrN) rrrrrÚsetr»rPrOrrrrrs-„ñò" ñÒ2Ó3€Kà ñGóñGrrcó„—t|«}t|«}||k(ry|j|«syt|«}||dk(S)NTFr˜)ÚstrÚ startswithr )ÚxÚyÚns rÚ _match_prefixrÅ$sC€Ü ˆA‹€AÜ ˆA‹€A؈A‚vØØ �<‰<˜Œ?ØÜ ˆA‹€AØ ˆQ‰4�3‰;Ðrc ó\—eZdZeZddddddddd œZd „Zd „Zd „Zd „Z d„Z d„Z d„Z d„Z d„Zy)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|jjdd«d}|j|«}||fS)NÚ+r™rr)rrr§rn)r!rr�rzÚ strip_localr"s rÚ _adjust_localzNormalizedMatcher._adjust_local>sy€Ù Ø ZÐ/ÒF°G·N±NÀ2Ñ4F‰Kð )×/Ñ/°Ñ3Ð3ÒJ¸¿¹ÀrÑ8JˆKÙ Ø—‘×%Ñ% c¨1Ó-¨aÑ0ˆAØ×(Ñ(¨Ó+ˆGؘ Ð"Ð"rcóÆ—|j|||«\}}||k\ry|j}dj|D�cgc] }t|«‘Œc}«}t ||« Scc}w©NFr˜©rÒr¶ÚjoinrÀrÅ©r!rr�rzÚrelease_clauseÚiÚpfxs rrÈzNormalizedMatcher._match_ltLóg€Ø"×0Ñ0°¸*ÀfÓMш�Ø �jÒ ØØ#×3Ñ3ˆØ�h‰h©Ó7© 1œ˜A�¨Ñ7Ó8ˆÜ  ¨#Ó.Ð.Ð.ùò8ó¸AcóÆ—|j|||«\}}||kry|j}dj|D�cgc] }t|«‘Œc}«}t ||« Scc}wrÔrÕr×s rrÉzNormalizedMatcher._match_gtTrÛrÜcó8—|j|||«\}}||kSr1©rÒ©r!rr�rzs rrÊzNormalizedMatcher._match_le\ó&€Ø"×0Ñ0°¸*ÀfÓMш�ؘ*Ñ$Ð$rcó8—|j|||«\}}||k\Sr1rßràs rrËzNormalizedMatcher._match_ge`rárcó\—|j|||«\}}|s||k(}|St||«}|Sr1©rÒrÅ©r!rr�rzr†s rrÌzNormalizedMatcher._match_eqdsB€Ø"×0Ñ0°¸*ÀfÓMш�ÙØ Ñ+ˆFðˆ ô# 7¨JÓ7ˆF؈ rcó0—t|«t|«k(Sr1)rÀràs rrÍz"NormalizedMatcher._match_arbitraryls€Ü�7‹|œs :›Ñ.Ð.rcó^—|j|||«\}}|s||k7}|St||« }|Sr1rärås rrÎzNormalizedMatcher._match_neosE€Ø"×0Ñ0°¸*ÀfÓMш�ÙØ Ñ+ˆFðˆ ô' w° Ó;Ð;ˆF؈ rcóö—|j|||«\}}||k(ry||kry|j}t|«dkDr|dd}dj|D�cgc] }t |«‘Œc}«}t ||«Scc}w)NTFrr™r˜)rÒr¶r rÖrÀrÅr×s rrÇz#NormalizedMatcher._match_compatiblewsŠ€Ø"×0Ñ0°¸*ÀfÓMш�Ø �jÒ ØØ �ZÒ Øð$×3Ñ3ˆÜ ˆ~Ó  Ò "Ø+¨C¨RÐ0ˆNØ�h‰h©Ó7© 1œ˜A�¨Ñ7Ó8ˆÜ˜W cÓ*Ð*ùò8sÁA6N)rrrrrnr|rÒrÈrÉrÊrËrÌrÍrÎrÇrrrrr/sU„Ø%€Mð"Ø Ø ØØØØ!Øñ €Jò #ò/ò/ò%ò%òò/òó +rrz[.+-]$Úz^[.](\d)z0.\1z^[.-]z ^\((.*)\)$ú\1z^v(ersion)?\s*(\d+)z\2z^r(ev)?\s*(\d+)z[.]{2,}r˜z\b(alfa|apha)\bÚalphaz\b(pre-alpha|prealpha)\bz pre.alphaz \(beta\)$Úbetaz ^[:~._+-]+z [,*")([\]]z[~:+_ -]z\.$z (\d+(\.\d+)*)cóv—|j«j«}tD]\}}|j||«}Œ|sd}tj |«}|sd}|}�n|j «djd«}|D�cgc] }t|«‘Œ}}t|«dkr |jd«t|«dkrŒ t|«dk(r||j«d}nDdj|ddD�cgc] }t|«‘Œc}«||j«dz}|dd}dj|D�cgc] }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.0rr˜éNr®Ú-rÐ)rrqÚ _REPLACEMENTSÚsubÚ_NUMERIC_PREFIXr„r¦r§r“r ruÚendrÖrÀÚ_SUFFIX_REPLACEMENTSÚ is_semver) r"r†ÚpatÚreplr©rzÚsuffixrÙÚseps rÚ_suggest_semantic_versionrúŸs¦€ð �W‰W‹Y�_‰_Ó €Fß"‰ ˆˆTØ—‘˜˜vÓ&‰ð#á Øˆô ×јfÓ%€AÙ ØˆØŠà—‘“˜A‘×$Ñ$ SÓ)ˆÙ"(Ó)¡&˜Q”#�a•& &ˆÐ)Ü�&‹k˜AŠoØ �M‰M˜!Ô ô�&‹k˜A‹oä ˆv‹;˜!Ò Ø˜AŸE™E›G˜HÐ%‰Fà—X‘X¨v°a°b©zÓ:©z¨!œs 1�v¨zÑ:Ó;¸fÀQÇUÁUÃWÀXÐ>NÑNˆFؘB˜Q�ZˆFØ—‘©6Ó2©6 aœ3˜q�6¨6Ñ2Ó3ˆØ—‘“ˆÙ ÷.‰IˆC�Ø—W‘W˜T 6Ó*‰Fð.ñ ؉à˜f‘_‰c¨#ˆØ˜#‘ Ñ&ˆÜ �VÔ ØˆØ €Mùò/*ùò ;ùâ2sÂF,Ã<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)!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-alphar¡)z-betar·)rër¡)rìr·)r¸rV)z-finalré)z-prerV)z-releaseré)z.releaseré)z-stableré)rÐr˜)r£r˜)Ú ré)z.finalré)r¤rézpre$Úpre0zdev$Údev0z([abc]|rc)[\-\.](\d+)$z\1\2z[\-\.](dev)[\-\.]?r?(\d+)$z.\1\2z[.~]?([abc])\.?rêrUrNz\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 rqÚreplaceÚrerñrÁ)r"ÚrsÚorigr÷s rÚ_suggest_normalized_versionrÍsç€ð" Ü˜ÔØˆøÜ "ò Ù ð úð �‰‹€Bó&‰ ˆˆdð �Z‰Z˜˜dÓ #‰ð &ô �‰�˜ "Ó %€BÜ �‰�˜ "Ó %€Bô �‰Ð)¨7°BÓ 7€Bô �‰Ð-¨x¸Ó <€Bô �‰Ð" E¨2Ó .€Bð ‡}�}�SÔØ ��ˆVˆô �‰Ð" E¨2Ó .€Bô �‰�  ¨2Ó .€Bô �‰Ð-¨y¸"Ó =€Bô �‰Ð! 7¨BÓ /€Bô �‰Ð% x°Ó 4€Bô �‰Ð! 8¨RÓ 0€Bô �‰Ð" B¨Ó +€Bô �‰Ð'¨°RÓ 8€Bô �‰Ð,¨i¸Ó <€Bô �‰Ð,¨i¸Ó <€Bô �‰� ˜J¨Ó +€BðܘÔð €Iøô #òØ ‰Ø €Iðús‚ � šÇ GÇ G-Ç,G-z([a-z]+|\d+|[\.-])rVzfinal-Ú@)r¬Úpreviewrïr¸r®rér˜có—d„}g}||«D]s}|jd«rO|dkr%|r#|ddk(r|j«|r |ddk(rŒ|r#|ddk(r|j«|r |ddk(rŒ|j|«Œut|«S)Ncó —g}tj|j««D]T}tj ||«}|sŒd|ddcxkrdkrnn|j d«}nd|z}|j |«ŒV|j d«|S)NÚ0rÚ9éÚ*ú*final)Ú _VERSION_PARTr§rqÚ_VERSION_REPLACEr}Úzfillru)r"r†rWs rÚ get_partsz_legacy_key..get_partsMs€ØˆÜ×$Ñ$ Q§W¡W£YÖ/ˆAÜ ×$Ñ$ Q¨Ó*ˆAÚØ˜!˜B˜Q˜%Ô& 3Õ&ØŸ™ › ‘Aà˜a™�AØ— ‘ ˜aÕ ð0ð � ‰ �hÔØˆ rr r r™z*final-Ú00000000)rÁÚpoprur)r"rr†rWs rÚ _legacy_keyrLs•€ò ð€FÙ �qŽ\ˆØ �<‰<˜Ô Ø�8Š|Ù ¨¡¨yÒ!8Ø—J‘J”Lñ ¨¡¨yÓ!8á˜V B™Z¨:Ò5Ø— ‘ ” ñ˜V B™Z¨:Ó5à� ‰ �aÕðô �‹=Ðrcó"—eZdZd„Zed„«Zy)r có—t|«Sr1)rr(s rrzLegacyVersion.parsegs €Ü˜1‹~Ðrcó†—d}|jD]/}t|t«sŒ|jd«sŒ&|dksŒ,d}|S|S)NFr r T)rrrrÁ)r!r†rÂs rrOzLegacyVersion.is_prereleasejsE€àˆØ—”ˆAܘ1œlÕ+°· ± ¸SÕ0Aؘ“LØ�ØØˆ ð ð ˆ rN©rrrrrPrOrrrr r fs„òðñóñrr cóh—eZdZeZeej«Zded<ejd«Z d„Z y)r rÇriz^(\d+(\.\d+)*)cóú—||kry|jjt|««}|stj d||«y|j «d}d|vr|j dd«d}t||«S)NFzACannot compute compatible match for version %s and constraint %sTrr˜r)Ú numeric_rer„rÀÚloggerÚwarningr¦ÚrsplitrÅ)r!rr�rzr©r"s rrÇzLegacyMatcher._match_compatible}sz€Ø �ZÒ ØØ �O‰O× !Ñ !¤# j£/Ó 2ˆÙÜ �N‰Nð0Ø18¸*ô FàØ �H‰H‹J�q‰MˆØ �!‰8Ø—‘˜˜aÓ  Ñ#ˆAܘW aÓ(Ð(rN) rrrr rnÚdictrRr|rÚcompilerrÇrrrr r us7„Ø!€Má�g×(Ñ(Ó)€JØ*€JˆtÑà�—‘Ð-Ó.€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 rrõrõ”s€Ü × Ñ ˜AÓ Ðrcóâ—d„}t|«}|s t|«‚|j«}|ddD�cgc] }t|«‘Œc}\}}}||dd«||dd«} }|||f|| fScc}w)Ncóº—|€|f}|S|ddjd«}t|D�cgc]%}|j«r|jd«n|‘Œ'c}«}|Scc}w)Nrr˜r )r§rr¨r)r"Úabsentr†r#rWs rÚ make_tuplez!_semantic_key..make_tuple™sf€Ø ˆ9Ø�YˆFð ˆ ð �a�b�E—K‘K Ó$ˆEôÁeÓLÁeÀ¨!¯)©)¬+˜AŸG™G AœJ¸1Ñ<ÀeÑLÓMˆF؈ ùòMs¥*ArîÚ|ér )rõr r¦r“) r"r%r©r¦rÙÚmajorÚminorÚpatchr¬Úbuilds rÚ _semantic_keyr,˜sˆ€òô �!‹ €AÙ Ü% aÓ(Ð(Ø �X‰X‹Z€FØ+1°"°1©:Ó6©: aœ3˜q�6¨:Ñ6Ñ€Eˆ5�%á˜F 1™I sÓ+©Z¸¸q¹ À3Ó-Gˆ€CØ �5˜%Ð  # uÐ ,Ð,ùò7s³A,có"—eZdZd„Zed„«Zy)r có—t|«Sr1)r,r(s rrzSemanticVersion.parse®s €Ü˜QÓÐrcó,—|jdddk7S)Nrrr&)rrDs rrOzSemanticVersion.is_prerelease±s€à�{‰{˜1‰~˜aÑ  CÑ'Ð'rNrrrrr r ­s„ò ðñ(óñ(rr có—eZdZeZy)r N)rrrr rnrrrr r ¶s„Ø#�Mrr có,—eZdZdd„Zd„Zd„Zd„Zd„Zy)Ú VersionSchemeNcó.—||_||_||_yr1)rrÚmatcherÚ suggester)r!rrr4r5s rr$zVersionScheme.__init__»s€ØˆŒØˆŒ Ø"ˆ�rcóf— |jj|«d}|S#t$rd}Y|SwxYw©NTF)r4rnr ©r!r"r†s rÚis_valid_versionzVersionScheme.is_valid_versionÀs@€ð Ø �L‰L× &Ñ & qÔ )؈Fðˆ øô'ò ؉F؈ ð ús ‚!¡ 0¯0cóR— |j|«d}|S#t$rd}Y|SwxYwr7)r4r r8s rÚis_valid_matcherzVersionScheme.is_valid_matcherÈs9€ð Ø �L‰L˜ŒO؈Fðˆ øô'ò ؉F؈ ð ús ‚— &¥&cóV—|jd«r|dd}|jd|z«S)z: Used for processing some metadata fields Ú,Nr™zdummy_name (%s))rtr;r(s rÚis_valid_constraint_listz&VersionScheme.is_valid_constraint_listÐs1€ð �:‰:�cŒ?Ø�#�2�ˆAØ×$Ñ$Ð%6¸Ñ%:Ó;Ð;rcóH—|j€d}|S|j|«}|Sr1)r5r8s rÚsuggestzVersionScheme.suggestÙs-€Ø �>‰>Ð !؈Fðˆ ð—^‘^ AÓ&ˆF؈ rr1)rrrr$r9r;r>r@rrrr2r2ºs„ó#ò òò<órr2có—|Sr1rr(s rrXrXäs€Ér)Ú normalizedÚlegacyÚsemanticrBÚdefaultcó@—|tvrtd|z«‚t|S)Nzunknown scheme name: %r)Ú_SCHEMESro)rps rrrìs%€Ø ”8ÑÜÐ2°TÑ9Ó:Ð:Ü �D‰>Ðr)*rÚloggingrÚcompatrÚutilrÚ__all__Ú getLoggerrrror ÚobjectrrRrÚIr¥r±rµrrÅrrðrôròrúrr rrr r r!rõr,r r r2rGrrrrÚrOsòðñ ó Û å Ý#ò 4€ð ˆ× Ñ ˜8Ó $€ô ˜jô ô .Eˆfô.EôbaˆfôaðH�B—J‘Jð FàGIÇtÁtóMÐò B.ðJ€ô!G˜ô!GòHôT+˜ôT+ðp€R‡Z�Z�Ó˜2ÐØ€R‡Z�Z� Ó˜gÐ&Ø€R‡Z�Z�Ó˜"ÐØ€R‡Z�Z� Ó Ð&Ø€R‡Z�ZÐ&Ó'¨Ð/Ø€R‡Z�ZÐ"Ó# UÐ+Ø€R‡Z�Z� Ó˜CР؀R‡Z�ZÐ"Ó# WÐ-Ø€R‡Z�ZÐ+Ó,Øðà€R‡Z�Z� Ó˜vÐ&ð € ð€R‡Z�Z� Ó˜rÐ"Ø€R‡Z�Z� Ó Ð#Ø€R‡Z�Z� Ó˜SÐ!Ø€R‡Z�Z� Ó˜CР؀R‡Z�Z�Ó˜Ðð Ðð�"—*‘*Ð-Ó.€ò+ò\lðf�— ‘ Ð0°"·$±$Ó7€ à ØØ Ø Ø Ø Ø ñÐòô4 �Gô ô)�Gô)ð4ˆR�Z‰Zð:à;=¿4¹4óA€ ò ò-ô*(�gô(ô$�gô$ô$�Fô$ñP  Ð1BØ ;ó=á˜K¨Ñ8IÓJÙ˜m¨_Ø7ó9ñ  €ð˜|Ñ,€ˆÑór