+
    ®¾j¯\  ã                   óü  € R t ^ RIt^ RIt^RIHt ^RIHt . RGOt]P                  ! ]	4      t
 ! R R
]4      t ! R R]4      t ! R R]4      t]P                   ! R]P"                  4      tR t]t ! R R]4      tR t ! R R]4      t]P                   ! R4      R3]P                   ! R4      R3]P                   ! R4      R3]P                   ! R4      R3]P                   ! R4      R3]P                   ! R4      R3]P                   ! R4      R 3]P                   ! R!4      R"3]P                   ! R#4      R$3]P                   ! R%4      R&33
t]P                   ! R'4      R3]P                   ! R(4      R3]P                   ! R)4      R 3]P                   ! R4      R 3]P                   ! R*4      R33t]P                   ! R+4      tR, tR- t]P                   ! R.]P"                  4      tR/R0R1R0R2R3R4R0R5R6RRR R/tR7 t ! R8 R]4      t  ! R9 R]4      t!]P                   ! R:]P"                  4      t"R; t#R< t$ ! R= R]4      t% ! R> R	]4      t& ! R? R@]4      t'RA]'! ]]]4      RB]'! ]]!RC 4      RD]'! ]$]&]4      /t(](RA,          ](RE&   RF t)R# )Hz~
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ÚUnsupportedVersionErrorc                   ó   € ] tR t^tRtRtR# )r   zThis is an unsupported version.© N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__Ú__static_attributes__r   ó    ÚZ/home/ralf/ical-fahrzeuge/venv/lib/python3.14/site-packages/pip/_vendor/distlib/version.pyr   r      s   † Ù)Ûr   c                   óx   a € ] tR t^t o R tR tR tR tR tR t	R t
R tR	 tR
 tR tR t]R 4       tRtV tR# )ÚVersionc                ó¸   € VP                  4       ;V n        pV P                  V4      ;V n        p\	        V\
        4      '       g   Q h\        V4      ^ 8”  g   Q hR# ©é    N)Ú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                ó   € \        R 4      h)zplease implement in a subclass©ÚNotImplementedError©r"   r#   s   &&r   r   ÚVersion.parse%   s   € Ü!Ð"BÓCÐCr   c                ó^   € \        V 4      \        V4      8w  d   \        R V : RV: 24      hR# ©zcannot compare z and N)ÚtypeÚ	TypeError©r"   Úothers   &&r   Ú_check_compatibleÚVersion._check_compatible(   s'   € Ü�‹:œ˜e›Ô$Ý»$ÂÐFÓGÐGñ %r   c                óV   € V P                  V4       V P                  VP                  8H  # ©N©r2   r   r0   s   &&r   Ú__eq__ÚVersion.__eq__,   s#   € Ø×Ñ˜uÔ%Ø�{‰{˜eŸl™lÑ*Ð*r   c                ó.   € V P                  V4      '       * # r5   ©r7   r0   s   &&r   Ú__ne__ÚVersion.__ne__0   ó   € Ø—;‘;˜uÓ%Ô%Ð%r   c                óV   € V P                  V4       V P                  VP                  8  # r5   r6   r0   s   &&r   Ú__lt__ÚVersion.__lt__3   s#   € Ø×Ñ˜uÔ%Ø�{‰{˜UŸ\™\Ñ)Ð)r   c                ó`   € V P                  V4      ;'       g    V P                  V4      '       * # r5   ©r?   r7   r0   s   &&r   Ú__gt__ÚVersion.__gt__7   s%   € Ø—K‘K Ó&×<Ð<¨$¯+©+°eÓ*<Ô=Ð=r   c                óV   € V P                  V4      ;'       g    V P                  V4      # r5   rB   r0   s   &&r   Ú__le__ÚVersion.__le__:   ó"   € Ø�{‰{˜5Ó!×7Ð7 T§[¡[°Ó%7Ð7r   c                óV   € V P                  V4      ;'       g    V P                  V4      # r5   )rC   r7   r0   s   &&r   Ú__ge__ÚVersion.__ge__=   rH   r   c                ó,   € \        V P                  4      # r5   )Úhashr   ©r"   s   &r   Ú__hash__ÚVersion.__hash__A   s   € Ü�D—K‘KÓ Ð r   c                óR   € V P                   P                  : R V P                  : R2# )z('z')©Ú	__class__r   r   rN   s   &r   Ú__repr__ÚVersion.__repr__D   s   € Ø!Ÿ^™^×4Ô4°d·l´lÐCÐCr   c                ó   € V P                   # r5   ©r   rN   s   &r   Ú__str__ÚVersion.__str__G   ó   € Ø�|‰|Ðr   c                ó   € \        R 4      h)zPlease implement in subclasses.r(   rN   s   &r   Úis_prereleaseÚVersion.is_prereleaseJ   s   € ä!Ð"CÓDÐDr   )r   r   N)r   r   r   r   r%   r   r2   r7   r;   r?   rC   rF   rJ   rO   rT   rX   Úpropertyr\   r   Ú__classdictcell__©Ú__classdict__s   @r   r   r      sZ   ø‡ € òòDòHò+ò&ò*ò>ò8ò8ò!òDòð ñEó öEr   r   c                   óž   a € ] tR t^Ot o RtRR RR RR RR	 R
R RR RR RR /tR tR tR t]	R 4       t
R tR tR tR tR tR tRtV tR# )ÚMatcherNÚ<c                ó
   € W8  # r5   r   ©ÚvÚcÚps   &&&r   Ú<lambda>ÚMatcher.<lambda>T   ó   € ˜QšUr   Ú>c                ó
   € W8„  # r5   r   rf   s   &&&r   rj   rk   U   rl   r   ú<=c                ó"   € W8H  ;'       g    W8  # r5   r   rf   s   &&&r   rj   rk   V   ó   € ˜a™fŸo˜o¨©˜or   ú>=c                ó"   € W8H  ;'       g    W8„  # r5   r   rf   s   &&&r   rj   rk   W   rq   r   ú==c                ó
   € W8H  # r5   r   rf   s   &&&r   rj   rk   X   ó   € ˜ašfr   ú===c                ó
   € W8H  # r5   r   rf   s   &&&r   rj   rk   Y   s   € ˜qšvr   ú~=c                ó"   € W8H  ;'       g    W8„  # r5   r   rf   s   &&&r   rj   rk   [   rq   r   ú!=c                ó
   € W8g  # r5   r   rf   s   &&&r   rj   rk   \   rv   r   c                ó   € \        V4      # r5   r   r*   s   &&r   r   ÚMatcher.parse_requirementa   s   € Ü  Ó#Ð#r   c                óh  € V P                   f   \        R4      hVP                  4       ;V n        pV P	                  V4      pV'       g   \        RV,          4      hVP
                  V n        V P
                  P                  4       V n        . pVP                  '       dƒ   VP                   Fr  w  rAVP                  R4      '       d2   VR9  d   \        RV,          4      hVR R RreV P                  V4       MV P                  V4      RreVP                  WEV34       Kt  	  \        V4      V n        R # )	NzPlease specify a version classzNot valid: %rz.*z#'.*' not allowed for %r constraintsTF)rt   r{   éþÿÿÿ)Ú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                ó|  € \        V\        4      '       d   V P                  V4      pV P                   F„  w  r#pV P                  P                  V4      p\        V\        4      '       d   \        W4      pV'       g)   V: RV P                  P                  : 2p\        V4      hV! WV4      '       d   Kƒ   R# 	  R# )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ÚgetattrrS   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                ó°   € R p\        V P                  4      ^8X  d:   V P                  ^ ,          ^ ,          R9   d   V P                  ^ ,          ^,          pV# )N)rt   rw   )r!   r   )r"   Úresults   & r   Úexact_versionÚMatcher.exact_version–   sC   € àˆÜˆt�{‰{Ó˜qÔ  T§[¡[°¥^°AÕ%6¸-Ô%GØ—[‘[ •^ AÕ&ˆFØˆr   c                ó”   € \        V 4      \        V4      8w  g   V P                  VP                  8w  d   \        R V : RV: 24      hR# r-   )r.   rƒ   r/   r0   s   &&r   r2   ÚMatcher._check_compatible�   s7   € Ü�‹:œ˜e›Ô$¨¯	©	°U·Z±ZÔ(?Ý»$ÂÐFÓGÐGñ )@r   c                ó˜   € V P                  V4       V P                  VP                  8H  ;'       d    V P                  VP                  8H  # r5   )r2   r…   r   r0   s   &&r   r7   ÚMatcher.__eq__¡   s8   € Ø×Ñ˜uÔ%Ø�x‰x˜5Ÿ9™9Ñ$×DÐD¨¯©¸¿¹Ñ)DÐDr   c                ó.   € V P                  V4      '       * # r5   r:   r0   s   &&r   r;   ÚMatcher.__ne__¥   r=   r   c                ó`   € \        V P                  4      \        V P                  4      ,           # r5   )rM   r…   r   rN   s   &r   rO   ÚMatcher.__hash__©   s   € Ü�D—H‘H‹~¤ T§[¡[Ó 1Õ1Ð1r   c                óR   € V P                   P                  : R V P                  : R2# )Ú(Ú)rR   rN   s   &r   rT   ÚMatcher.__repr__¬   s   € ØŸ>™>×2Ô2°D·L´LÐAÐAr   c                ó   € V P                   # r5   rW   rN   s   &r   rX   ÚMatcher.__str__¯   rZ   r   )r   r   r…   rƒ   )r   r   r   r   r�   r�   r   r%   r˜   r^   rœ   r2   r7   r;   rO   rT   rX   r   r_   r`   s   @r   rc   rc   O   sŒ   ø‡ € Ø€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                 óÎ  € V P                  4       p \        P                  V 4      pV'       g   \        R V ,          4      hVP	                  4       p\
        ;QJ d*    . R V^,          P                  R4       4       F  NK  	  5M#! R V^,          P                  R4       4       4      p\        V4      ^8”  d   VR,          ^ 8X  d   VRR pK%  V^ ,          '       g   ^ pM\        V^ ,          RR 4      pVR,          pVR,          pVR,          pV^,          pVR8X  d   R	pM2V^,          f   V^ ,          ^ 3pMV^ ,          \        V^,          4      3pVR8X  d   R	pM2V^,          f   V^ ,          ^ 3pMV^ ,          \        V^,          4      3pVR8X  d   R	pM2V^,          f   V^ ,          ^ 3pMV^ ,          \        V^,          4      3pVf   R	pM^. p	VP                  R4       F<  p
V
P                  4       '       d   ^\        V
4      3p
M^ V
3p
V	P                  V
4       K>  	  \        V	4      pV'       g   V'       g   V'       d   R
pMRpV'       g   RpV'       g   RpWCWVWx3# )zNot a valid version: %sc              3   ó8   "  € T F  p\        V4      x € K  	  R # 5ir5   ©Úint©Ú.0rg   s   & r   Ú	<genexpr>Ú_pep_440_key.<locals>.<genexpr>¾   s   é € Ð6Ñ!5˜A”�Q—�Ó!5ùó   ‚Ú.N:é   é   N:é   é	   N:é
   é   Néÿÿÿÿ)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ßŒ5Ñ6 ¨¥§¡°Ô!5Ó6�5‰5Ñ6 ¨¥§¡°Ô!5Ó6Ó6€DÜ
ˆd‹)�aŒ-˜D �H¨œMØ�C�RˆyŠà�!�9Œ9Ø‰ä�F˜1•I˜c˜r�NÓ#ˆØ
��+€CØ�#�;€DØ
��-€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                   óN   a € ] tR tRt o RtR t]! . RO4      t]R 4       t	Rt
V tR# )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                ó.  € \        V4      p\        P                  V4      pVP                  4       p\        ;QJ d1    . R  V^,          P                  R4       4       F  NK  	  5V n        V# ! R  V^,          P                  R4       4       4      V n        V# )c              3   ó8   "  € T F  p\        V4      x € K  	  R # 5ir5   r®   r°   s   & r   r²   Ú*NormalizedVersion.parse.<locals>.<genexpr>  s   é € Ð$JÑ5I°¤S¨§V VÓ5Iùr´   rµ   )Ú_normalized_keyrÁ   r˜   rÂ   r    rÃ   Ú_release_clause)r"   r#   r›   rÅ   rÂ   s   &&   r   r   ÚNormalizedVersion.parse  sv   € Ü  Ó#ˆô
 ×#Ñ# AÓ&ˆØ—‘“ˆß$œuÑ$J°V¸AµY·_±_ÀSÔ5IÓ$JŸuˆÔØˆð  %Ñ$J°V¸AµY·_±_ÀSÔ5IÓ$JÓJˆÔØˆr   c                ó    a € \         ;QJ d)    V 3R  lS P                   4       F  '       g   K   R# 	  R# ! V 3R  lS P                   4       4      # )c              3   ób   <"  € T F$  q'       g   K  V^ ,          SP                   9   x € K&  	  R# 5ir   )ÚPREREL_TAGS)r±   Útr"   s   & €r   r²   Ú2NormalizedVersion.is_prerelease.<locals>.<genexpr>!  s%   øé € ÐF±[°ÃAÔ+�1�Q•4˜4×+Ñ+Ö+³[ùs   ƒ	/‘/TF)Úanyr   rN   s   fr   r\   ÚNormalizedVersion.is_prerelease  s4   ø€ ç‹sÔF°T·[²[ÓF�sŒsÐFŠsÐFˆsÔF°T·[²[ÓFÓFÐFr   )rÔ   N)r½   Úbrh   ÚrcrÊ   )r   r   r   r   r   r   ÚsetrØ   r^   r\   r   r_   r`   s   @r   r   r      s0   ø‡ € ñò"	ñ Ò2Ó3€KàñGó öGr   c                 óœ   € \        V 4      p \        V4      pW8X  d   R # V P                  V4      '       g   R# \        V4      pW,          R8H  # )TFrµ   )ÚstrÚ
startswithr!   )ÚxÚyÚns   && r   Ú_match_prefixræ   $  sA   € ÜˆA‹€AÜˆA‹€AØ„vÙØ�<‰<˜�?Š?ÙÜˆA‹€AØ�4�3‰;Ðr   c                   ó~   a € ] tR tRt o ]tRRRRRRRR	R
RRRRRRR/tR tR tR t	R t
R tR tR tR tR tRtV tR# )r   i/  ry   Ú_match_compatiblerd   Ú	_match_ltrm   Ú	_match_gtro   Ú	_match_lerr   Ú	_match_gert   Ú	_match_eqrw   Ú_match_arbitraryr{   Ú	_match_nec                ó8  € V'       d"   R V9  ;'       d    VP                   R,          pM3VP                   R,          '       * ;'       d    VP                   R,          pV'       d5   VP                  P                  R ^4      ^ ,          pV P                  V4      pW3# )Ú+r¼   )r   r   rÃ   r�   )r"   r“   r•   r�   Ústrip_localr#   s   &&&&  r   Ú_adjust_localÚNormalizedMatcher._adjust_local>  s}   € ßØ ZÑ/×FÐF°G·N±NÀ2Õ4F‰Kð )×/Ñ/°Õ3Ô3×JÐJ¸¿¹ÀrÕ8JˆKßØ—‘×%Ñ% c¨1Ó-¨aÕ0ˆAØ×(Ñ(¨Ó+ˆGØÐ"Ð"r   c                óÐ   € V P                  WV4      w  rW8¼  d   R # VP                  pRP                  V Uu. uF  p\        V4      NK  	  up4      p\	        W4      '       * # u upi ©Frµ   ©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                óÐ   € V P                  WV4      w  rW8:  d   R # VP                  pRP                  V Uu. uF  p\        V4      NK  	  up4      p\	        W4      '       * # u upi rö   r÷   rù   s   &&&&   r   rê   ÚNormalizedMatcher._match_gtT  rþ   rÿ   c                ó2   € V P                  WV4      w  rW8*  # r5   ©ró   ©r"   r“   r•   r�   s   &&&&r   rë   ÚNormalizedMatcher._match_le\  ó    € Ø"×0Ñ0°ÀfÓMÑˆØÑ$Ð$r   c                ó2   € V P                  WV4      w  rW8¬  # r5   r  r  s   &&&&r   rì   ÚNormalizedMatcher._match_ge`  r  r   c                ó`   € V P                  WV4      w  rV'       g   W8H  pV# \        W4      pV# r5   ©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   € \        V4      \        V4      8H  # r5   )rá   r  s   &&&&r   rî   Ú"NormalizedMatcher._match_arbitraryl  s   € Ü�7‹|œs :›Ñ.Ð.r   c                ój   € V P                  WV4      w  rV'       g   W8g  pV# \        W4      '       * pV# r5   r
  r  s   &&&& r   rï   ÚNormalizedMatcher._match_neo  s=   € Ø"×0Ñ0°ÀfÓMÑˆßØÑ+ˆFð ˆô ' wÓ;Ô;ˆFØˆr   c                ó   € V P                  WV4      w  rW8X  d   R # W8  d   R# VP                  p\        V4      ^8”  d   VRR pRP                  V Uu. uF  p\	        V4      NK  	  up4      p\        W4      # u upi )TFNrµ   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   ÁA;r   N)r   r   r   r   r   r�   r�   ró   ré   rê   rë   rì   rí   rî   rï   rè   r   r_   r`   s   @r   r   r   /  so   ø‡ € Ø%€Mð 	Ð!Øˆ[Øˆ[ØˆkØˆkØˆkØÐ!Øˆkð	€Jò#ò/ò/ò%ò%òò/ò÷+ð +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                óÜ  € V P                  4       P                  4       p\         F  w  r#VP                  W14      pK  	  V'       g   Rp\        P                  V4      pV'       g   RpTpEMVP                  4       ^ ,          P                  R4      pV Uu. uF  p\        V4      NK  	  pp\        V4      ^8  d   VP                  ^ 4       K#  \        V4      ^8X  d   WP                  4       R pMQRP                  VR,           Uu. uF  p\        V4      NK  	  up4      WP                  4       R ,           pVR,          pRP                  V Uu. uF  p\        V4      NK  	  up4      pVP                  4       pV'       d!   \         F  w  r#VP                  W64      pK  	  V'       g   TpMRV9   d   RMRpWX,           V,           p\        V4      '       g   RpV# u upi u upi u upi )	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µ   N:é   NNºNr  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˜!ÖÜˆv‹;˜!ÔØŸE™E›G˜HÐ%‰Fà—X‘X¨v°b®zÓ:©z¨!œs 1žv©zÑ:Ó;¸fÇUÁUÃWÀXÐ>NÕNˆFØ˜B•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                ó  €  \        V 4       V #   \         d     Mi ; iT P                  4       pR  F  w  r#TP                  Y#4      pK  	  \        P
                  ! RRT4      p\        P
                  ! RRT4      p\        P
                  ! RRT4      p\        P
                  ! RR	T4      p\        P
                  ! R
RT4      pTP                  R4      '       d
   TR,          p\        P
                  ! RRT4      p\        P
                  ! RRT4      p\        P
                  ! RRT4      p\        P
                  ! RRT4      p\        P
                  ! RRT4      p\        P
                  ! RRT4      p\        P
                  ! RRT4      p\        P
                  ! RRT4      p\        P
                  ! RRT4      p\        P
                  ! RRT4      p\        P
                  ! RRT4      p \        T4       T#   \         d    Rp T# i ; i)!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.
r  zpre$Úpre0zdev$Údev0z([abc]|rc)[\-\.](\d+)$z\1\2z[\-\.](dev)[\-\.]?r?(\d+)$z.\1\2z[.~]?([abc])\.?r  rg   ºé   NNz\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)$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\1N))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  )rÓ   r   r„   ÚreplaceÚrer  râ   )r#   ÚrsÚorigr"  s   &   r   Ú_suggest_normalized_versionr0  Í  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   ‚ �œÇ-G: Ç:HÈ
Hz([a-z]+|\d+|[\.-])rÈ   rh   Úpreviewr  zfinal-rÞ   rÊ   Ú@c                 ó>  € R  p. pV! V 4       F‚  pVP                  R4      '       dX   VR8  d)   V'       d!   VR,          R8X  d   VP                  4        K(  V'       d!   VR,          R8X  d   VP                  4        K(  VP                  V4       K„  	  \        V4      # )c                 óH  € . p\         P                  V P                  4       4       Fg  p\        P	                  W"4      pV'       g   K"  R VR,          u;8:  d   R8:  d   M MVP                  ^4      pM	RV,           pVP                  V4       Ki  	  VP                  R4       V# )Ú0:Nr*  NÚ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�%Ö& 3×&ØŸ™ ›
‘Aà˜a��AØ—‘˜aÖ ñ 0ð 	�‰�hÔØˆr   r7  r8  z*final-Ú00000000r¼   )râ   Úpoprˆ   r    )r#   r<  r›   ri   s   &   r   Ú_legacy_keyr@  L  sx   € òð €FÙ�qŽ\ˆØ�<‰<˜×ÒØ�8Œ|ß ¨¥¨yÔ!8Ø—J‘J–Lß˜V B�Z¨:Ô5Ø—
‘
–Ø�‰�aÖñ ô �‹=Ðr   c                   ó6   a € ] tR tRt o R t]R 4       tRtV tR# )r   if  c                ó   € \        V4      # r5   )r@  r*   s   &&r   r   ÚLegacyVersion.parseg  s   € Ü˜1‹~Ðr   c                óª   € R pV P                    F@  p\        V\        4      '       g   K  VP                  R4      '       g   K4  VR8  g   K=  Rp V# 	  V# )Fr7  r8  T)r   r   r   râ   )r"   r›   rã   s   &  r   r\   ÚLegacyVersion.is_prereleasej  sJ   € àˆØ—”ˆAÜ˜1œl×+Ô+°·±¸S×0AÔ0AÀaÈ(ÆlØ�ØØˆñ	 ð ˆr   r   N©	r   r   r   r   r   r^   r\   r   r_   r`   s   @r   r   r   f  s   ø‡ € òð ñó ör   c                   ó|   a € ] tR tRt o ]t]! ]P                  4      tR]R&   ]	P                  ! R4      tR tRtV tR# )r   it  rè   ry   z^(\d+(\.\d+)*)c                ó  € W8  d   R # V P                   P                  \        V4      4      pV'       g   \        P	                  RW4       R# VP                  4       ^ ,          pRV9   d   VP                  R^4      ^ ,          p\        W4      # )FzACannot compute compatible match for version %s  and constraint %sTrµ   )Ú
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`   s   @r   r   r   t  s=   ø‡ € Ø!€Má�g×(Ñ(Ó)€JØ*€JˆtÑà—’Ð-Ó.€J÷)ð )r   zN^(\d+)\.(\d+)\.(\d+)(-[a-z0-9]+(\.[a-z0-9-]+)*)?(\+[a-z0-9]+(\.[a-z0-9-]+)*)?$c                 ó,   € \         P                  V 4      # r5   )Ú
_SEMVER_REr˜   )r#   s   &r   r   r   “  s   € Ü×Ñ˜AÓÐr   c                 ó  € R  p\        V 4      pV'       g   \        V 4      hVP                  4       pVR,           Uu. uF  p\        V4      NK  	  upw  rVpV! V^,          R4      V! V^,          R4      r˜WVV3W‰3# u upi )c                 óÔ   € V f   V3pV# V R,          P                  R4      p\        V Uu. uF+  qDP                  4       '       d   VP                  ^4      MTNK-  	  up4      pV# u upi )Nr)  rµ   )rÃ   r    rÄ   r;  )r#   Úabsentr›   r$   ri   s   &&   r   Ú
make_tupleÚ!_semantic_key.<locals>.make_tuple˜  sd   € ØŠ9Ø�YˆFð ˆð	 �b•E—K‘K Ó$ˆEô ÁeÓLÁeÀ¯)©)¯+ª+˜AŸG™G AœJ¸1Ò<ÁeÑLÓMˆFØˆùò Ms   «1A%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°"®:Ó6©: aœ3˜qž6©:Ñ6Ñ€E�%á˜F 1�I sÓ+©Z¸¸q½	À3Ó-GˆØ˜%Ð  #Ð,Ð,ùò 7s   ½A<c                   ó6   a € ] tR tRt o R t]R 4       tRtV tR# )r	   i¬  c                ó   € \        V4      # r5   )r\  r*   s   &&r   r   ÚSemanticVersion.parse­  s   € Ü˜QÓÐr   c                ó<   € V P                   ^,          ^ ,          R8g  # )r*  rW  )r   rN   s   &r   r\   ÚSemanticVersion.is_prerelease°  s   € à�{‰{˜1�~˜aÕ  CÑ'Ð'r   r   NrF  r`   s   @r   r	   r	   ¬  s   ø‡ € ò ð ñ(ó ö(r   c                   ó   € ] tR tRt]tRtR# )r
   iµ  r   N)r   r   r   r   r	   r�   r   r   r   r   r
   r
   µ  s   † Ø#„Mr   c                   óB   a € ] tR tRt o R	R ltR tR tR tR tRt	V t
R# )
ÚVersionSchemei¹  Nc                ó*   € Wn         W n        W0n        R # r5   ©r…   ÚmatcherÚ	suggester)r"   r…   rg  rh  s   &&&&r   r%   ÚVersionScheme.__init__º  s   € ØŒØŒØ"Žr   c                ój   €  V P                   P                  V4       R pV#   \         d    Rp T# i ; i©TF)rg  r�   r   ©r"   r#   r›   s   && r   Úis_valid_versionÚVersionScheme.is_valid_version¿  s@   € ð	Ø�L‰L×&Ñ& qÔ)ØˆFð ˆøô 'ô 	Ø‰FØˆð	ús   ‚! ¡2±2c                óV   €  V P                  V4       R pV#   \         d    Rp T# i ; irk  )rg  r   rl  s   && r   Úis_valid_matcherÚVersionScheme.is_valid_matcherÇ  s9   € ð	Ø�L‰L˜ŒOØˆFð ˆøô 'ô 	Ø‰FØˆð	ús   ‚ —(§(c                ój   € VP                  R4      '       d   VRR pV P                  RV,          4      # )z*
Used for processing some metadata fields
Ú,Nzdummy_name (%s)r¼   )r‡   rp  r*   s   &&r   Úis_valid_constraint_listÚ&VersionScheme.is_valid_constraint_listÏ  s3   € ð
 �:‰:�c�?Š?Ø�#�2�ˆAØ×$Ñ$Ð%6¸Õ%:Ó;Ð;r   c                óL   € V P                   f   R pV# V P                  V4      pV# r5   )rh  rl  s   && r   ÚsuggestÚVersionScheme.suggestØ  s-   € Ø�>‰>Ò!ØˆFð ˆð —^‘^ AÓ&ˆFØˆr   rf  r5   )r   r   r   r   r%   rm  rp  rt  rw  r   r_   r`   s   @r   rd  rd  ¹  s#   ø‡ € ô#ò
òò<÷ð r   rd  Ú
normalizedÚlegacyc                 ó   € V# r5   r   r*   s   &&r   rj   rj   ã  s   € Ér   ÚsemanticÚdefaultc                 óV   € V \         9  d   \        R V ,          4      h\         V ,          # )zunknown scheme name: %r)Ú_SCHEMESr‚   )rƒ   s   &r   Ú
get_schemer€  ë  s%   € Ø”8ÔÜÐ2°TÕ9Ó:Ð:Ü�D�>Ðr   )r   r   r   r   r	   r
   r   r€  )*r   Úloggingr-  Úcompatr   Úutilr   Ú__all__Ú	getLoggerr   rJ  r‚   r   Úobjectr   rc   rO  ÚIrÁ   rÍ   rÓ   r   ræ   r   r  r  r  r%  r0  r9  r:  r@  r   r   rQ  r   r\  r	   r
   rd  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€à	ˆ3ØˆsØˆØˆ#Ø	ˆ3ØˆØˆðÐ òô4�Gô ô)�Gô )ð4 �ZŠZð :à;=¿4¹4óA€
ò
ò-ô*(�gô (ô$�gô $ô$�Fô $ðP ‘- Ð1BØ ;ó=à‰m˜K¨Ñ8IÓJØ‘˜m¨_Ø7ó9ð	€ð ˜|Õ,€ˆÑ ôr   