ó
    Þ jÃ\  ã                   óâ  • S r SSKrSSKrSSKJr  SSKJr  / SQr\R                  " \	5      r
 " S S\5      r " S	 S
\5      r " S S\5      r\R                   " S\R"                  5      rS r\r " S S\5      rS r " S S\5      r\R                   " S5      S4\R                   " S5      S4\R                   " S5      S4\R                   " S5      S4\R                   " S5      S4\R                   " S5      S4\R                   " S5      S4\R                   " S 5      S!4\R                   " S"5      S#4\R                   " S$5      S%44
r\R                   " S&5      S4\R                   " S'5      S4\R                   " S(5      S4\R                   " S5      S4\R                   " S)5      S44r\R                   " S*5      rS+ rS, r\R                   " S-\R"                  5      rS.S.S/S.S0SSS1.rS2 r " S3 S4\5      r  " S5 S6\5      r!\R                   " S7\R"                  5      r"S8 r#S9 r$ " S: S;\5      r% " S< S=\5      r& " S> S?\5      r'\'" \\\5      \'" \\!S@ 5      \'" \$\&\5      SA.r(\(SB   \(SC'   SD r)g)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                   ó   • \ rS rSrSrSrg)r   é   zThis is an unsupported version.© N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__Ú__static_attributes__r   ó    ÚU/var/www/html/gaurav/venv/lib/python3.13/site-packages/pip/_vendor/distlib/version.pyr   r      s   † Ù)Úr   r   c                   ól   • \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rS rS rS r\S 5       rSrg)ÚVersioné   c                 ó²   • UR                  5       =U l        nU R                  U5      =U l        n[	        U[
        5      (       d   e[        U5      S:”  d   eg )Nr   )ÚstripÚ_stringÚparseÚ_partsÚ
isinstanceÚtupleÚlen)ÚselfÚsÚpartss      r   Ú__init__ÚVersion.__init__   sK   € ØŸ7™7›9Ð$ˆŒ�qØ"Ÿj™j¨›mÐ+ˆŒ�eÜ˜%¤×'Ñ'Ð'Ð'Ü�5‹z˜A‹~Ð‰~r   c                 ó   • [        S5      e)Nzplease implement in a subclass©ÚNotImplementedError©r%   r&   s     r   r    ÚVersion.parse%   s   € Ü!Ð"BÓCÐCr   c                 óZ   • [        U 5      [        U5      :w  a  [        SU < SU< 35      eg ©Nzcannot compare z and )ÚtypeÚ	TypeError©r%   Úothers     r   Ú_check_compatibleÚVersion._check_compatible(   s'   € Ü�‹:œ˜e›Ó$Ý»$ÂÐFÓGÐGð %r   c                 óV   • U R                  U5        U R                  UR                  :H  $ ©N©r5   r!   r3   s     r   Ú__eq__ÚVersion.__eq__,   s#   € Ø×Ñ˜uÔ%Ø�{‰{˜eŸl™lÑ*Ð*r   c                 ó.   • U R                  U5      (       + $ r8   ©r:   r3   s     r   Ú__ne__ÚVersion.__ne__0   ó   € Ø—;‘;˜uÓ%Ô%Ð%r   c                 óV   • U R                  U5        U R                  UR                  :  $ r8   r9   r3   s     r   Ú__lt__ÚVersion.__lt__3   s#   € Ø×Ñ˜uÔ%Ø�{‰{˜UŸ\™\Ñ)Ð)r   c                 ó^   • U R                  U5      =(       d    U R                  U5      (       + $ r8   ©rB   r:   r3   s     r   Ú__gt__ÚVersion.__gt__7   s"   € Ø—K‘K Ó&×<¨$¯+©+°eÓ*<Ô=Ð=r   c                 óT   • U R                  U5      =(       d    U R                  U5      $ r8   rE   r3   s     r   Ú__le__ÚVersion.__le__:   ó   € Ø�{‰{˜5Ó!×7 T§[¡[°Ó%7Ð7r   c                 óT   • U R                  U5      =(       d    U R                  U5      $ r8   )rF   r:   r3   s     r   Ú__ge__ÚVersion.__ge__=   rK   r   c                 ó,   • [        U R                  5      $ r8   )Úhashr!   ©r%   s    r   Ú__hash__ÚVersion.__hash__A   s   € Ü�D—K‘KÓ Ð r   c                 óR   • U R                   R                  < SU R                  < S3$ )Nz('z')©Ú	__class__r   r   rQ   s    r   Ú__repr__ÚVersion.__repr__D   s   € Ø!Ÿ^™^×4Ô4°d·l´lÐCÐCr   c                 ó   • U R                   $ r8   ©r   rQ   s    r   Ú__str__ÚVersion.__str__G   ó   € Ø�|‰|Ðr   c                 ó   • [        S5      e)NzPlease implement in subclasses.r+   rQ   s    r   Úis_prereleaseÚVersion.is_prereleaseJ   s   € ä!Ð"CÓDÐDr   )r!   r   N)r   r   r   r   r(   r    r5   r:   r>   rB   rF   rI   rM   rR   rW   r[   Úpropertyr_   r   r   r   r   r   r      sW   † òòDòHò+ò&ò*ò>ò8ò8ò!òDòð ñEó óEr   r   c            	       ó„   • \ rS rSrSrS S S S S S S	 S
 S.rS rS rS r\	S 5       r
S rS rS rS rS rS rSrg)ÚMatcheréO   Nc                 ó
   • X:  $ r8   r   ©ÚvÚcÚps      r   Ú<lambda>ÚMatcher.<lambda>T   ó   € ˜QšUr   c                 ó
   • X:„  $ r8   r   rf   s      r   rj   rk   U   rl   r   c                 ó    • X:H  =(       d    X:  $ r8   r   rf   s      r   rj   rk   V   ó   € ˜a™fŸo¨©˜or   c                 ó    • X:H  =(       d    X:„  $ r8   r   rf   s      r   rj   rk   W   ro   r   c                 ó
   • X:H  $ r8   r   rf   s      r   rj   rk   X   ó   € ˜ašfr   c                 ó
   • X:H  $ r8   r   rf   s      r   rj   rk   Y   s   € ˜qšvr   c                 ó    • X:H  =(       d    X:„  $ r8   r   rf   s      r   rj   rk   [   ro   r   c                 ó
   • X:g  $ r8   r   rf   s      r   rj   rk   \   rr   r   )Ú<Ú>ú<=ú>=ú==ú===ú~=ú!=c                 ó   • [        U5      $ r8   r   r-   s     r   r   ÚMatcher.parse_requirementa   s   € Ü  Ó#Ð#r   c                 óL  • U R                   c  [        S5      eUR                  5       =U l        nU R	                  U5      nU(       d  [        SU-  5      eUR
                  U l        U R
                  R                  5       U l        / nUR                  (       a|  UR                   Hl  u  pAUR                  S5      (       a,  US;  a  [        SU-  5      eUS S SpeU R                  U5        OU R                  U5      SpeUR                  XEU45        Mn     [        U5      U l        g )	NzPlease specify a version classzNot valid: %rz.*)rz   r}   z#'.*' not allowed for %r constraintséþÿÿÿTF)Úversion_classÚ
ValueErrorr   r   r   ÚnameÚlowerÚkeyÚconstraintsÚendswithÚappendr#   r!   )r%   r&   ÚrÚclistÚopÚvnÚprefixs          r   r(   ÚMatcher.__init__d   s
  € Ø×ÑÑ%ÜÐ=Ó>Ð>ØŸ7™7›9Ð$ˆŒ�qØ×"Ñ" 1Ó%ˆÞÜ˜_¨qÑ0Ó1Ð1Ø—F‘FˆŒ	Ø—9‘9—?‘?Ó$ˆŒØˆØ�=�=àŸœ‘�Ø—:‘:˜d×#Ñ#Ø Ó-Ü(ð *:Ø<>ñ*?ó @ð @ð "# 3 B ¨˜à×&Ñ& rÕ*ð "&×!3Ñ!3°AÓ!6¸˜Ø—‘˜b fÐ-Ö.ñ 'ô ˜E“lˆ�r   c                 óp  • [        U[        5      (       a  U R                  U5      nU R                   H€  u  p#nU R                  R                  U5      n[        U[        5      (       a  [        X5      nU(       d(  U< SU R                  R                  < 3n[        U5      eU" XU5      (       a  M€    g   g)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)
r"   r   r‚   r!   Ú
_operatorsÚgetÚgetattrrV   r   r,   )r%   ÚversionÚoperatorÚ
constraintrŽ   ÚfÚmsgs          r   ÚmatchÚMatcher.match�   s™   € ô �gœ|×,Ñ,Ø×(Ñ(¨Ó1ˆGØ,0¯K¬KÑ(ˆH &Ø—‘×#Ñ# HÓ-ˆAÜ˜!œ\×*Ñ*Ü˜DÓ$�Þã#+¨T¯^©^×-DÓ-DðF�ä)¨#Ó.Ð.Ù�W¨&×1Ó1Ùñ -8ð r   c                 óŒ   • S n[        U R                  5      S:X  a(  U R                  S   S   S;   a  U R                  S   S   nU$ )Nr   r   )rz   r{   )r$   r!   )r%   Úresults     r   Úexact_versionÚMatcher.exact_version–   sC   € àˆÜˆt�{‰{Ó˜qÓ  T§[¡[°¡^°AÑ%6¸-Ó%GØ—[‘[ ‘^ AÑ&ˆFØˆr   c                 óŽ   • [        U 5      [        U5      :w  d  U R                  UR                  :w  a  [        SU < SU< 35      eg r0   )r1   r„   r2   r3   s     r   r5   ÚMatcher._check_compatible�   s7   € Ü�‹:œ˜e›Ó$¨¯	©	°U·Z±ZÓ(?Ý»$ÂÐFÓGÐGð )@r   c                 ó–   • U R                  U5        U R                  UR                  :H  =(       a    U R                  UR                  :H  $ r8   )r5   r†   r!   r3   s     r   r:   ÚMatcher.__eq__¡   s5   € Ø×Ñ˜uÔ%Ø�x‰x˜5Ÿ9™9Ñ$×D¨¯©¸¿¹Ñ)DÐDr   c                 ó.   • U R                  U5      (       + $ r8   r=   r3   s     r   r>   ÚMatcher.__ne__¥   r@   r   c                 óX   • [        U R                  5      [        U R                  5      -   $ r8   )rP   r†   r!   rQ   s    r   rR   ÚMatcher.__hash__©   s   € Ü�D—H‘H‹~¤ T§[¡[Ó 1Ñ1Ð1r   c                 óR   • U R                   R                  < SU R                  < S3$ )NÚ(Ú)rU   rQ   s    r   rW   ÚMatcher.__repr__¬   s   € ØŸ>™>×2Ô2°D·L´LÐAÐAr   c                 ó   • U R                   $ r8   rZ   rQ   s    r   r[   ÚMatcher.__str__¯   r]   r   )r!   r   r†   r„   )r   r   r   r   r‚   r‘   r   r(   r™   ra   r�   r5   r:   r>   rR   rW   r[   r   r   r   r   rc   rc   O   sl   † Ø€Mñ #Ù"Ù-Ù-Ù$Ù%á-Ù$ñ
€Jò$ò#ò:ð* ñó ðòHòEò&ò2òBõr   rc   z�^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                 óÔ  • U R                  5       n [        R                  U 5      nU(       d  [        SU -  5      eUR	                  5       n[        S US   R                  S5       5       5      n[        U5      S:”  a(  US   S:X  a  US S n[        U5      S:”  a  US   S:X  a  M  US   (       d  SnO[        US   S S 5      nUSS nUS	S
 nUSS nUS   nUS:X  a  SnO!US   c  US   S4nOUS   [        US   5      4nUS:X  a  SnO!US   c  US   S4nOUS   [        US   5      4nUS:X  a  SnO!US   c  US   S4nOUS   [        US   5      4nUc  SnO]/ n	UR                  S5       H;  n
U
R                  5       (       a  S[        U
5      4n
OSU
4n
U	R                  U
5        M=     [        U	5      nU(       d  U(       d
  U(       a  SnOSnU(       d  SnU(       d  SnXCXVXx4$ )NzNot a valid version: %sc              3   ó6   #   • U H  n[        U5      v •  M     g 7fr8   ©Úint©Ú.0rg   s     r   Ú	<genexpr>Ú_pep_440_key.<locals>.<genexpr>¾   s   é € Ð6Ñ!5˜A”�Q—�Ò!5ùó   ‚r   Ú.éÿÿÿÿr   é   é   é   é	   é
   é   é   )NNr   )Úar·   )Úz)Ú_)Úfinal)r   ÚPEP440_VERSION_REr™   r   Úgroupsr#   Úsplitr$   r°   Úisdigitr‰   )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æØˆÞØˆà˜ 3Ð-Ð-r   c                   óB   • \ rS rSrSrS r\" / SQ5      r\S 5       r	Sr
g)r   é   a  A 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                 ó¸   • [        U5      n[        R                  U5      nUR                  5       n[	        S US   R                  S5       5       5      U l        U$ )Nc              3   ó6   #   • U H  n[        U5      v •  M     g 7fr8   r¯   r±   s     r   r³   Ú*NormalizedVersion.parse.<locals>.<genexpr>  s   é € Ð$JÑ5I°¤S¨§V VÒ5Iùrµ   r   r¶   )Ú_normalized_keyrÃ   r™   rÄ   r#   rÅ   Ú_release_clause)r%   r&   rœ   rÇ   rÄ   s        r   r    ÚNormalizedVersion.parse  sN   € Ü  Ó#ˆô
 ×#Ñ# AÓ&ˆØ—‘“ˆÜ$Ñ$J°V¸A±Y·_±_ÀSÔ5IÓ$JÓJˆÔØˆr   )r¿   Úbrh   ÚrcrÌ   c                 óB   ^ • [        U 4S jT R                   5       5      $ )Nc              3   óV   >#   • U H  o(       d  M  US    TR                   ;   v •  M!     g7f)r   N)ÚPREREL_TAGS)r²   Útr%   s     €r   r³   Ú2NormalizedVersion.is_prerelease.<locals>.<genexpr>!  s%   øé € ÐF±[°ÃAÓ+�1�Q‘4˜4×+Ñ+Ö+²[ùs   ƒ	)�))Úanyr!   rQ   s   `r   r_   ÚNormalizedVersion.is_prerelease  s   ø€ äÔF°T·[²[ÓFÓFÐFr   )rÖ   N)r   r   r   r   r   r    ÚsetrÜ   ra   r_   r   r   r   r   r   r      s-   † ñò"	ñ Ò2Ó3€KàñGó óGr   r   c                 óŒ   • [        U 5      n [        U5      nX:X  a  gU R                  U5      (       d  g[        U5      nX   S:H  $ )NTFr¶   )ÚstrÚ
startswithr$   )ÚxÚyÚns      r   Ú_match_prefixrè   $  sA   € ÜˆA‹€AÜˆA‹€AØƒvØØ�<‰<˜�?‰?ØÜˆA‹€AØ‰4�3‰;Ðr   c            	       ód   • \ rS rSr\rSSSSSSSS	S
.rS rS rS r	S r
S rS rS rS rS rSrg)r   i/  Ú_match_compatibleÚ	_match_ltÚ	_match_gtÚ	_match_leÚ	_match_geÚ	_match_eqÚ_match_arbitraryÚ	_match_ne)r|   rv   rw   rx   ry   rz   r{   r}   c                 ó  • U(       a  SU;  =(       a    UR                   S   nO*UR                   S   (       + =(       a    UR                   S   nU(       a0  UR                  R                  SS5      S   nU R                  U5      nX4$ )NÚ+r·   r   r   )r!   r   rÅ   r‚   )r%   r”   r–   rŽ   Ústrip_localr&   s         r   Ú_adjust_localÚNormalizedMatcher._adjust_local>  sw   € ÞØ ZÑ/×F°G·N±NÀ2Ñ4F‰Kð )×/Ñ/°Ñ3Ô3×J¸¿¹ÀrÑ8JˆKÞØ—‘×%Ñ% c¨1Ó-¨aÑ0ˆAØ×(Ñ(¨Ó+ˆGØÐ"Ð"r   c                 óÌ   • U R                  XU5      u  pX:¼  a  gUR                  nSR                  U Vs/ sH  n[        U5      PM     sn5      n[	        X5      (       + $ s  snf ©NFr¶   ©rõ   rÖ   Újoinrã   rè   ©r%   r”   r–   rŽ   Úrelease_clauseÚiÚpfxs          r   rë   ÚNormalizedMatcher._match_ltL  ó_   € Ø"×0Ñ0°ÀfÓMÑˆØÓ ØØ#×3Ñ3ˆØ�h‰h©Ó7© 1œ˜Až©Ñ7Ó8ˆÜ  Ó.Ô.Ð.ùò 8ó   ¶A!c                 óÌ   • U R                  XU5      u  pX::  a  gUR                  nSR                  U Vs/ sH  n[        U5      PM     sn5      n[	        X5      (       + $ s  snf rø   rù   rû   s          r   rì   ÚNormalizedMatcher._match_gtT  r   r  c                 ó2   • U R                  XU5      u  pX:*  $ r8   ©rõ   ©r%   r”   r–   rŽ   s       r   rí   ÚNormalizedMatcher._match_le\  ó    € Ø"×0Ñ0°ÀfÓMÑˆØÑ$Ð$r   c                 ó2   • U R                  XU5      u  pX:¬  $ r8   r  r  s       r   rî   ÚNormalizedMatcher._match_ge`  r  r   c                 ó^   • U R                  XU5      u  pU(       d  X:H  nU$ [        X5      nU$ r8   ©rõ   rè   ©r%   r”   r–   rŽ   rœ   s        r   rï   ÚNormalizedMatcher._match_eqd  s:   € Ø"×0Ñ0°ÀfÓMÑˆÞØÑ+ˆFð ˆô # 7Ó7ˆFØˆr   c                 ó0   • [        U5      [        U5      :H  $ r8   )rã   r  s       r   rð   Ú"NormalizedMatcher._match_arbitraryl  s   € Ü�7‹|œs :›Ñ.Ð.r   c                 óh   • U R                  XU5      u  pU(       d  X:g  nU$ [        X5      (       + nU$ r8   r  r  s        r   rñ   ÚNormalizedMatcher._match_neo  s=   € Ø"×0Ñ0°ÀfÓMÑˆÞØÑ+ˆFð ˆô ' wÓ;Ô;ˆFØˆr   c                 óö   • U R                  XU5      u  pX:X  a  gX:  a  gUR                  n[        U5      S:”  a  US S nSR                  U Vs/ sH  n[	        U5      PM     sn5      n[        X5      $ s  snf )NTFr   r·   r¶   )rõ   rÖ   r$   rú   rã   rè   rû   s          r   rê   Ú#NormalizedMatcher._match_compatiblew  s€   € Ø"×0Ñ0°ÀfÓMÑˆØÓ ØØÓØð $×3Ñ3ˆÜˆ~Ó Ó"Ø+¨C¨RÐ0ˆNØ�h‰h©Ó7© 1œ˜Až©Ñ7Ó8ˆÜ˜WÓ*Ð*ùò 8s   ÁA6r   N)r   r   r   r   r   r‚   r‘   rõ   rë   rì   rí   rî   rï   rð   rñ   rê   r   r   r   r   r   r   /  sU   † Ø%€Mð "ØØØØØØ!Øñ	€Jò#ò/ò/ò%ò%òò/òõ+r   r   z[.+-]$Ú z^[.](\d)z0.\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                 óº  • U R                  5       R                  5       n[         H  u  p#UR                  X15      nM     U(       d  Sn[        R                  U5      nU(       d  SnUnGOUR                  5       S   R                  S5      nU Vs/ sH  n[        U5      PM     nn[        U5      S:  a"  UR                  S5        [        U5      S:  a  M"  [        U5      S:X  a  XR                  5       S nOESR                  USS  Vs/ sH  n[        U5      PM     sn5      XR                  5       S -   nUSS nSR                  U Vs/ sH  n[        U5      PM     sn5      nUR                  5       nU(       a   [         H  u  p#UR                  X65      nM     U(       d  UnOSU;   a  SOSnXX-   U-   n[        U5      (       d  SnU$ s  snf s  snf s  snf )	zt
Try to suggest a semantic form for a version for which
_suggest_normalized_version couldn't come up with anything.
z0.0.0r   r¶   é   NrÌ   Ú-ró   )r   r…   Ú_REPLACEMENTSÚsubÚ_NUMERIC_PREFIXr™   rÄ   rÅ   r°   r$   r‰   Úendrú   rã   Ú_SUFFIX_REPLACEMENTSÚ	is_semver)	r&   rœ   ÚpatÚreplrÇ   rŽ   Úsuffixrý   Úseps	            r   Ú_suggest_semantic_versionr&  Ÿ  s›  € ð
 �W‰W‹Y�_‰_Ó€Fß"‰	ˆØ—‘˜Ó&Šñ #æØˆô
 	×Ñ˜fÓ%€AÞØˆØŠà—‘“˜A‘×$Ñ$ SÓ)ˆÙ"(Ó)¡&˜Q”#�a–&¡&ˆÐ)Ü�&‹k˜A‹oØ�M‰M˜!Ôô �&‹k˜A�oäˆv‹;˜!ÓØŸE™E›G˜HÐ%‰Fà—X‘X¨v°a°b©zÓ:©z¨!œs 1žv©zÑ:Ó;¸fÇ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Ó*ŠFñ .ö Ø‰à˜f“_‰c¨#ˆØ‘ Ñ&ˆÜ�V×ÑØˆØ€Mùò/ *ùò ;ùâ2s   ÂGÄGÅGc                 ó  •  [        U 5        U $ ! [         a     Of = fU R                  5       nS H  u  p#UR                  X#5      nM     [        R
                  " SSU5      n[        R
                  " SSU5      n[        R
                  " SSU5      n[        R
                  " SS	U5      n[        R
                  " S
SU5      nUR                  S5      (       a  USS n[        R
                  " SSU5      n[        R
                  " SSU5      n[        R
                  " SSU5      n[        R
                  " SSU5      n[        R
                  " SSU5      n[        R
                  " SSU5      n[        R
                  " SSU5      n[        R
                  " SSU5      n[        R
                  " SSU5      n[        R
                  " SSU5      n[        R
                  " SS U5      n [        U5        U$ ! [         a    Sn U$ f = f)!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Ù   rh   )z-finalr  )z-prerh   )z-releaser  )z.releaser  )z-stabler  )ró   r¶   )rÁ   r¶   )Ú r  )z.finalr  )rÂ   r  zpre$Úpre0zdev$Údev0z([abc]|rc)[\-\.](\d+)$z\1\2z[\-\.](dev)[\-\.]?r?(\d+)$z.\1\2z[.~]?([abc])\.?r  rg   r   Nz\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+)$zc\g<2>zp(\d+)$z.post\1)rÕ   r   r…   ÚreplaceÚrer  rä   )r&   ÚrsÚorigr#  s       r   Ú_suggest_normalized_versionr/  Í  sæ  € ð"Ü˜ÔØˆøÜ"ó Ùðúð 
�‰‹€Bó&‰
ˆð �Z‰Z˜Ó#Šñ&ô 
�Š�˜ "Ó	%€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   ‚ �
›Ç'G4 Ç4HÈHz([a-z]+|\d+|[\.-])rh   zfinal-Ú@)rÊ   Úpreviewr  rÙ   rÌ   r  r¶   c                 ób  • S n/ nU" U 5       H”  nUR                  S5      (       aj  US:  a2  U(       a+  US   S:X  a"  UR                  5         U(       a  US   S:X  a  M"  U(       a+  US   S:X  a"  UR                  5         U(       a  US   S:X  a  M"  UR                  U5        M–     [        U5      $ )Nc                 ó2  • / n[         R                  U R                  5       5       H\  n[        R	                  X"5      nU(       d  M!  SUS S s=::  a  S::  a  O  OUR                  S5      nOSU-   nUR                  U5        M^     UR                  S5        U$ )NÚ0r   Ú9é   Ú*ú*final)Ú_VERSION_PARTrÅ   r…   Ú_VERSION_REPLACEr’   Úzfillr‰   )r&   rœ   ri   s      r   Ú	get_partsÚ_legacy_key.<locals>.get_partsM  s   € ØˆÜ×$Ñ$ Q§W¡W£YÖ/ˆAÜ ×$Ñ$ QÓ*ˆAßˆqØ˜!˜B˜Q˜%Õ& 3Ö&ØŸ™ ›
‘Aà˜a™�AØ—‘˜aÖ ñ 0ð 	�‰�hÔØˆr   r7  r8  r·   z*final-Ú00000000)rä   Úpopr‰   r#   )r&   r<  rœ   ri   s       r   Ú_legacy_keyr@  L  s˜   € òð €FÙ�qŽ\ˆØ�<‰<˜×ÑØ�8‹|Þ ¨¡¨yÓ!8Ø—J‘J”Lö  ¨¡¨yÕ!8æ˜V B™Z¨:Ó5Ø—
‘
”ö ˜V B™Z¨:Õ5à�‰�aÖñ ô �‹=Ðr   c                   ó*   • \ rS rSrS r\S 5       rSrg)r	   if  c                 ó   • [        U5      $ r8   )r@  r-   s     r   r    ÚLegacyVersion.parseg  s   € Ü˜1‹~Ðr   c                 ó¤   • SnU R                    H=  n[        U[        5      (       d  M  UR                  S5      (       d  M2  US:  d  M:  Sn  U$    U$ )NFr7  r8  T)r!   r"   r   rä   )r%   rœ   rå   s      r   r_   ÚLegacyVersion.is_prereleasej  sK   € àˆØ—”ˆAÜ˜1œl×+Ó+°·±¸S×0AÓ0AØ˜•LØ�ØØˆñ ð
 ˆr   r   N©r   r   r   r   r    ra   r_   r   r   r   r   r	   r	   f  s   † òð ñó ór   r	   c                   óp   • \ rS rSr\r\" \R                  5      rS\S'   \	R                  " S5      rS rSrg)r
   iu  rê   r|   z^(\d+(\.\d+)*)c                 ó  • X:  a  gU R                   R                  [        U5      5      nU(       d  [        R	                  SX5        gUR                  5       S   nSU;   a  UR                  SS5      S   n[        X5      $ )NFzACannot compute compatible match for version %s  and constraint %sTr   r¶   r   )Ú
numeric_rer™   rã   ÚloggerÚwarningrÄ   Úrsplitrè   )r%   r”   r–   rŽ   rÇ   r&   s         r   rê   ÚLegacyMatcher._match_compatible}  st   € ØÓØØ�O‰O×!Ñ!¤# j£/Ó2ˆÞÜ�N‰Nð 0Ø18ôFàØ�H‰H‹J�q‰MˆØ�!‹8Ø—‘˜˜aÓ  Ñ#ˆAÜ˜WÓ(Ð(r   r   N)r   r   r   r   r	   r‚   Údictrc   r‘   r,  ÚcompilerI  rê   r   r   r   r   r
   r
   u  s5   † Ø!€Má�g×(Ñ(Ó)€JØ*€JˆtÑà—’Ð-Ó.€Jõ)r   r
   zN^(\d+)\.(\d+)\.(\d+)(-[a-z0-9]+(\.[a-z0-9-]+)*)?(\+[a-z0-9]+(\.[a-z0-9-]+)*)?$c                 ó,   • [         R                  U 5      $ r8   )Ú
_SEMVER_REr™   )r&   s    r   r!  r!  ”  s   € Ü×Ñ˜AÓÐr   c                 óè   • S n[        U 5      nU(       d  [        U 5      eUR                  5       nUS S  Vs/ sH  n[        U5      PM     snu  pVnU" US   S5      U" US   S5      p˜XVU4X‰4$ s  snf )Nc                 óÈ   • U c  U4nU$ U SS  R                  S5      n[        U Vs/ sH*  oDR                  5       (       a  UR                  S5      OUPM,     sn5      nU$ s  snf )Nr   r¶   r6  )rÅ   r#   rÆ   r;  )r&   Úabsentrœ   r'   ri   s        r   Ú
make_tupleÚ!_semantic_key.<locals>.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Øˆùò Ms   ¦0Ar  Ú|é   r7  )r!  r   rÄ   r°   )
r&   rU  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�%á˜F 1™I sÓ+©Z¸¸q¹	À3Ó-GˆØ˜%Ð  #Ð,Ð,ùò 7s   ¸A/c                   ó*   • \ rS rSrS r\S 5       rSrg)r   i­  c                 ó   • [        U5      $ r8   )r]  r-   s     r   r    ÚSemanticVersion.parse®  s   € Ü˜QÓÐr   c                 ó,   • U R                   S   S   S:g  $ )Nr   r   rW  )r!   rQ   s    r   r_   ÚSemanticVersion.is_prerelease±  s   € à�{‰{˜1‰~˜aÑ  CÑ'Ð'r   r   NrF  r   r   r   r   r   ­  s   † ò ð ñ(ó ó(r   r   c                   ó   • \ rS rSr\rSrg)r   i¶  r   N)r   r   r   r   r   r‚   r   r   r   r   r   r   ¶  s   † Ø#ƒMr   r   c                   ó6   • \ rS rSrS	S jrS rS rS rS rSr	g)
ÚVersionSchemeiº  Nc                 ó(   • Xl         X l        X0l        g r8   ©r†   ÚmatcherÚ	suggester)r%   r†   rh  ri  s       r   r(   ÚVersionScheme.__init__»  s   € ØŒØŒØ"�r   c                 óh   •  U R                   R                  U5        SnU$ ! [         a    Sn U$ f = f©NTF)rh  r‚   r   ©r%   r&   rœ   s      r   Úis_valid_versionÚVersionScheme.is_valid_versionÀ  s@   € ð	Ø�L‰L×&Ñ& qÔ)ØˆFð ˆøô 'ó 	Ø‰FØˆð	ús   ‚! ¡1°1c                 óT   •  U R                  U5        SnU$ ! [         a    Sn U$ f = frl  )rh  r   rm  s      r   Úis_valid_matcherÚVersionScheme.is_valid_matcherÈ  s9   € ð	Ø�L‰L˜ŒOØˆFð ˆøô 'ó 	Ø‰FØˆð	ús   ‚ —'¦'c                 ó`   • UR                  S5      (       a  USS nU R                  SU-  5      $ )z*
Used for processing some metadata fields
Ú,Nr·   zdummy_name (%s))rˆ   rq  r-   s     r   Úis_valid_constraint_listÚ&VersionScheme.is_valid_constraint_listÐ  s3   € ð
 �:‰:�c�?‰?Ø�#�2�ˆAØ×$Ñ$Ð%6¸Ñ%:Ó;Ð;r   c                 óJ   • U R                   c  S nU$ U R                  U5      nU$ r8   )ri  rm  s      r   ÚsuggestÚVersionScheme.suggestÙ  s-   € Ø�>‰>Ñ!ØˆFð ˆð —^‘^ AÓ&ˆFØˆr   rg  r8   )
r   r   r   r   r(   rn  rq  ru  rx  r   r   r   r   re  re  º  s   † ô#ò
òò<õr   re  c                 ó   • U$ r8   r   r-   s     r   rj   rj   ä  s   € Ér   )Ú
normalizedÚlegacyÚsemanticr{  Údefaultc                 óD   • U [         ;  a  [        SU -  5      e[         U    $ )Nzunknown scheme name: %r)Ú_SCHEMESrƒ   )r„   s    r   r   r   ì  s%   € Ø”8ÓÜÐ2°TÑ9Ó:Ð:Ü�D‰>Ðr   )*r   Úloggingr,  Úcompatr   Úutilr   Ú__all__Ú	getLoggerr   rJ  rƒ   r   Úobjectr   rc   rO  ÚIrÃ   rÏ   rÕ   r   rè   r   r  r   r  r&  r/  r9  r:  r@  r	   r
   rQ  r!  r]  r   r   re  r€  r   r   r   r   Ú<module>rˆ     sÊ  ðñó
 Û 	å  Ý #ò4€ð
 
×	Ò	˜8Ó	$€ô	˜jô 	ô
.Eˆfô .Eôbaˆfô aðH —J’Jð  FàGIÇtÁtóMÐ ò
B.ðJ €ô!G˜ô !GòHôT+˜ô T+ðp ‡Z‚Z�Ó˜2ÐØ‡Z‚Z�Ó˜gÐ&Ø‡Z‚Z�Ó˜"ÐØ‡Z‚Z�Ó Ð&Ø‡Z‚ZÐ&Ó'¨Ð/Ø‡Z‚ZÐ"Ó# UÐ+Ø‡Z‚Z�	Ó˜CÐ Ø‡Z‚ZÐ"Ó# WÐ-Ø‡Z‚ZÐ+Ó,Øðà‡Z‚Z�Ó˜vÐ&ð€ð ‡Z‚Z�Ó˜rÐ"Ø‡Z‚Z�Ó Ð#Ø‡Z‚Z�
Ó˜SÐ!Ø‡Z‚Z�	Ó˜CÐ Ø‡Z‚Z�Ó˜ÐðÐ ð —*’*Ð-Ó.€ò+ò\lðf —
’
Ð0°"·$±$Ó7€àØØ	Ø
ØØØ	ñÐ òô4�Gô ô)�Gô )ð4 �ZŠZð :à;=¿4¹4óA€
ò
ò-ô*(�gô (ô$�gô $ô$�Fô $ñP   Ð1BØ ;ó=á˜K¨Ñ8IÓJÙ˜m¨_Ø7ó9ñ	€ð ˜|Ñ,€ˆÑ ór   