+
     h\  c                   s   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                   s    ] 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
       @/usr/lib/python3.14/site-packages/pip/_vendor/distlib/version.pyr	   r	      s    )r   c                   sx   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                s    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# i    N)strip_stringparse_parts
isinstancetuplelen)selfsparts   && r   __init__ZVersion.__init__   sK    779$q"jjm+e%''''5zA~~r   c                    \        R 4      h)zplease implement in a subclassNotImplementedErrorr   r      &&r   r   ZVersion.parse%   s    !"BCCr   c                s^    \        V 4      \        V4      8w  d   \        R V : RV: 24      hR# zcannot compare z and N)type	TypeErrorr   Zotherr%   r   _check_compatibleZVersion._check_compatible(   s'    :e$$FGG %r   c                sV    V P                  V4       V P                  VP                  8H  # Nr*   r   r)   r%   r   __eq__ZVersion.__eq__,   s#    u%{{ell**r   c                .    V P                  V4      '       * # r+   r-   r)   r%   r   __ne__ZVersion.__ne__0       ;;u%%%r   c                sV    V P                  V4       V P                  VP                  8  # r+   r,   r)   r%   r   __lt__ZVersion.__lt__3   s#    u%{{U\\))r   c                s`    V P                  V4      ;'       g    V P                  V4      '       * # r+   r2   r-   r)   r%   r   __gt__ZVersion.__gt__7   s%    KK&<<$++e*<==r   c                V    V P                  V4      ;'       g    V P                  V4      # r+   r3   r)   r%   r   __le__ZVersion.__le__:   "    {{5!77T[[%77r   c                r5   r+   )r4   r-   r)   r%   r   __ge__ZVersion.__ge__=   r7   r   c                s,    \        V P                  4      # r+   )hashr   r      &r   __hash__ZVersion.__hash__A   s    DKK  r   c                sR    V P                   P                  : R V P                  : R2# )z('z')	__class__r   r   r:   r;   r   __repr__ZVersion.__repr__D   s    !^^44dllCCr   c                    V P                   # r+   r   r:   r;   r   __str__ZVersion.__str__G       ||r   c                r!   )zPlease implement in subclasses.r"   r:   r;   r   is_prereleaseZVersion.is_prereleaseJ   s    !"CDDr   )r   r   N)r   r   r   r   r    r   r*   r-   r0   r2   r4   r6   r8   r<   r?   rB   propertyrD   r   __classdictcell__Z__classdict__   @r   r   r      sZ     DH+&*>88!D E Er   r   c                   s   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                s
    W8  # r+   r
   vcp   &&&r   <lambda>Matcher.<lambda>T       QUr   >c                s
    W8  # r+   r
   rK   rO   r   rP   rQ   U   rR   r   <=c                s"    W8H  ;'       g    W8  # r+   r
   rK   rO   r   rP   rQ   V       afooor   >=c                "    W8H  ;'       g    W8  # r+   r
   rK   rO   r   rP   rQ   W   rU   r   ==c                
    W8H  # r+   r
   rK   rO   r   rP   rQ   X       afr   ===c                rY   r+   r
   rK   rO   r   rP   rQ   Y   s    qvr   ~=c                rW   r+   r
   rK   rO   r   rP   rQ   [   rU   r   !=c                s
    W8g  # r+   r
   rK   rO   r   rP   rQ   \   rZ   r   c                    \        V4      # r+   r   r$   r%   r   r   ZMatcher.parse_requirementa   s     ##r   c                sh   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)rX   r]   i)version_class
ValueErrorr   r   r   namelowerkeyZconstraintsendswithappendr   r   )r   r   ZrZclistZopZvnprefix   &&     r   r    ZMatcher.__init__d   s   %=>>779$q""1%_q011FF	99??$===::d##-( *:<>*? @ @ "#3B&&r* "&!3!3A!6bf-. ' Elr   c                s|   \        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getZgetattrr>   r   r#   )r   versionZoperator
constraintrf   ZfZmsgrg   r   matchZMatcher.match   s     g|,,((1G,0KK(H&##H-A!\**D$#+T^^-D-DF)#..W&11 -8 r   c                s    R p\        V P                  4      ^8X  d:   V P                  ^ ,          ^ ,          R9   d   V P                  ^ ,          ^,          pV# )N)rX   r[   )r   r   )r   result   & r   exact_versionZMatcher.exact_version   sC    t{{q T[[^A%6-%G[[^A&Fr   c                s    \        V 4      \        V4      8w  g   V P                  VP                  8w  d   \        R V : RV: 24      hR# r&   )r'   ra   r(   r)   r%   r   r*   ZMatcher._check_compatible   s7    :e$		UZZ(?$FGG )@r   c                s    V P                  V4       V P                  VP                  8H  ;'       d    V P                  VP                  8H  # r+   )r*   rc   r   r)   r%   r   r-   ZMatcher.__eq__   s8    u%xx599$DD)DDr   c                r.   r+   r/   r)   r%   r   r0   ZMatcher.__ne__   r1   r   c                s`    \        V P                  4      \        V P                  4      ,           # r+   )r9   rc   r   r:   r;   r   r<   ZMatcher.__hash__   s    DHH~T[[ 111r   c                sR    V P                   P                  : R V P                  : R2# )Z(Z)r=   r:   r;   r   r?   ZMatcher.__repr__   s    >>22DLLAAr   c                r@   r+   rA   r:   r;   r   rB   ZMatcher.__str__   rC   r   )r   r   rc   ra   )r   r   r   r   r_   rh   r   r    rl   rE   ro   r*   r-   r0   r<   r?   rB   r   rF   rG   rH   r   rI   rI   O   s     M 	""--$%-$
J$#:*  HE&2B r   rI   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                 s   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r+   int.0rL   rn   r   	<genexpr>Z_pep_440_key.<locals>.<genexpr>   s     6!5AQ!5   .N:i   i   N:i   i	   N:i
   i   N)NNr
   )arx   )Zz)_)final)r   PEP440_VERSION_RErl   r	   groupsr   splitr   rr   isdigitre   )r   mr}   ZnumsZepochpreZpostdevZlocalr   Zparts   &          r   _pep_440_keyr      s   		A"A%&?!&CDDXXZF56!56556!566D
d)a-DHMCRy!99F1IcrN#
+C#;D
-C2JE
lq6>a&!)Ca&#c!f+%C|7?7A:D7CQL(D
lq6>a&!)Ca&#c!f+%C}KK$D ||~~3t9~4yLL % eCC3--r   c                   sN   a  ] tR tRt o RtR t]! . RO4      t]R 4       t	Rt
V tR# )r   i   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                s.   \        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   rp   r+   rq   rs   rn   r   ru   Z*NormalizedVersion.parse.<locals>.<genexpr>  s     $J5ISVV5Irv   rw   )_normalized_keyr|   rl   r}   r   r~   _release_clause)r   r   rm   r   r}      &&   r   r   ZNormalizedVersion.parse  sv     #
 ##A&$u$JVAY__S5I$Ju  %$JVAY__S5I$JJr   c                s   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   sb   <"   T F$  q'       g   K  V^ ,          SP                   9   x  K&  	  R# 5ir   )PREREL_TAGS)rt   Ztr   s   & r   ru   Z2NormalizedVersion.is_prerelease.<locals>.<genexpr>!  s%     F[A+1Q44+++[s   	//TF)Zanyr   r:   s   fr   rD   ZNormalizedVersion.is_prerelease  s4    sFT[[FssFsFsFT[[FFFr   )r   N)ry   brM   rcr   )r   r   r   r   r   r   Zsetr   rE   rD   r   rF   rG   rH   r   r   r      s0     "	 23KG Gr   c                 s    \        V 4      p \        V4      pW8X  d   R # V P                  V4      '       g   R# \        V4      pW,          R8H  # )TFrw   )str
startswithr   )xZyZnr   r   _match_prefixr   $  sA    AAAAv<<??AA43;r   c                   s~   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/  r\   _match_compatiblerJ   	_match_ltrS   	_match_gtrT   	_match_lerV   	_match_gerX   	_match_eqr[   _match_arbitraryr]   	_match_nec                s8   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# )+rx   )r   r   r~   r_   )r   rj   rk   rf   Zstrip_localr      &&&&  r   _adjust_localZNormalizedMatcher._adjust_local>  s}    Z/FFGNN24FK )//33JJr8JK%%c1-a0A((+G""r   c                s    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 Frw   r   r   joinr   r   r   rj   rk   rf   Zrelease_clauseiZpfx   &&&&   r   r   ZNormalizedMatcher._match_ltL  _    "00fM #33hh71A78 ... 8   A#c                s    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   r   r   r   ZNormalizedMatcher._match_gtT  r   r   c                s2    V P                  WV4      w  rW8*  # r+   r   r   rj   rk   rf      &&&&r   r   ZNormalizedMatcher._match_le\       "00fM$$r   c                s2    V P                  WV4      w  rW8  # r+   r   r   r   r   r   ZNormalizedMatcher._match_ge`  r   r   c                s`    V P                  WV4      w  rV'       g   W8H  pV# \        W4      pV# r+   r   r   r   rj   rk   rf   rm      &&&& r   r   ZNormalizedMatcher._match_eqd  s:    "00fM+F  #77Fr   c                s0    \        V4      \        V4      8H  # r+   )r   r   r   r   r   Z"NormalizedMatcher._match_arbitraryl  s    7|s:..r   c                sj    V P                  WV4      w  rV'       g   W8g  pV# \        W4      '       * pV# r+   r   r   r   r   r   ZNormalizedMatcher._match_neo  s=    "00fM+F  'w;;Fr   c                s    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 )TFNrw   rx   )r   r   r   r   r   r   r   r   r   r   Z#NormalizedMatcher._match_compatiblew  s    "00fM  $33~"+CR0Nhh71A78W** 8s   A;r
   N)r   r   r   r   r   r_   rh   r   r   r   r   r   r   r   r   r   r   rF   rG   rH   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,}rw   z\b(alfa|apha)\balphaz\b(pre-alpha|prealpha)\bz	pre.alphaz	\(beta\)$betaz
^[:~._+-]+z
[,*")([\]]z[~:+_ -]z\.$z(\d+(\.\d+)*)c                s   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.0rw   N:   NNNr   Nr   -r   )r   rb   _REPLACEMENTSsub_NUMERIC_PREFIXrl   r}   r~   rr   r   re   Zendr   r   _SUFFIX_REPLACEMENTS	is_semver)	r   rm   Zpatreplr   rf   Zsuffixr   Zseps	   &        r   _suggest_semantic_versionr     s   
 WWY__F"	& #
 	f%AA$$S)"()&Q#a&&)&kAoMM!v;!EEGH%FXXvbz:z!s1vz:;fUUWX>NNFBZF626a3q6623 .ICWWT*F . f_c#&VM/ * ;2s   GG$G)c                s    \        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$Zpre0zdev$Zdev0z([abc]|rc)[\-\.](\d+)$z\1\2z[\-\.](dev)[\-\.]?r?(\d+)$z.\1\2z[.~]?([abc])\.?r   rL      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-alphary   )z-betar   )r   ry   )r   r   )r   rM   )z-finalr   )z-prerM   )z-releaser   )z.releaser   )z-stabler   )r   rw   )rz   rw   )Z r   )z.finalr   )r{   r   )r   r	   rb   Zreplacerer   r   )r   ZrsZorigr      &   r   _suggest_normalized_versionr     s   ""  
B&
 ZZ#& 
"	%B	"	%B
 
)7B	7B 
-x	<B 
"E2	.B 
}}SV
 
"E2	.B
 
	2	.B 
-y"	=B 
!7B	/B 
%x	4B 
!8R	0B 
"B	+B 
'R	8B 
,i	<B 
,i	<B 

J	+B I # Is    -G: :H
Hz([a-z]+|\d+|[\.-])r   rM   Zpreviewr   zfinal-r   r   Z@c                 s>   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                 sH   . 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# )Z0:Nr   NZ9**final)_VERSION_PARTr~   rb   _VERSION_REPLACEri   zfillre   )r   rm   rN      &  r   	get_partsZ_legacy_key.<locals>.get_partsM  s}    $$QWWY/A $$Q*Aq!B%&3&
AaAa  0 	hr   r   r   z*final-Z00000000rx   )r   Zpopre   r   )r   r   rm   rN   r   r   _legacy_keyr   L  sx     Fq\<<8|y!8JJLVBZ: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                r^   r+   )r   r$   r%   r   r   ZLegacyVersion.parseg  s    1~r   c                s    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# )Fr   r   T)r   r   r    r   )r   rm   r   r   r   rD   ZLegacyVersion.is_prereleasej  sJ    A1l++S0A0Aa(l	  r   r
   N	r   r   r   r   r   rE   rD   r   rF   rG   rH   r   r   r   f  s       r   c                   s|   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   r\   z^(\d+(\.\d+)*)c                s   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 %sTrw   )
numeric_rerl   r   loggerZwarningr}   Zrsplitr   )r   rj   rk   rf   r   r   r   r   r   ZLegacyMatcher._match_compatible|  st    OO!!#j/2NN 018FHHJqM!8a #AW((r   r
   N)r   r   r   r   r   r_   ZdictrI   rh   r   compiler   r   r   rF   rG   rH   r   r   r   t  s=     !Mg(()J*Jt-.J) )r   zN^(\d+)\.(\d+)\.(\d+)(-[a-z0-9]+(\.[a-z0-9-]+)*)?(\+[a-z0-9]+(\.[a-z0-9-]+)*)?$c                 s,    \         P                  V 4      # r+   )
_SEMVER_RErl   )r   r;   r   r   r     s    Ar   c                 s   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      rWVV3W3# u upi )c                 s    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   rw   )r~   r   r   r   )r   Zabsentrm   r   rN   r   r   
make_tupleZ!_semantic_key.<locals>.make_tuple  sd    9YF 	 bEKK$E eLe))++AGGAJ1<eLMF Ms   1A%r   |r   )r   r	   r}   rr   )
r   r   r   r}   r   ZmajorZminorZpatchr   Zbuilds
   &         r   _semantic_keyr     s~     	!A%a((XXZF+1":6:a3q6:6E%F1Is+Zq	3-G% #,, 7s   A<c                   r   )r   i  c                r^   r+   )r   r$   r%   r   r   ZSemanticVersion.parse  s    Qr   c                s<    V P                   ^,          ^ ,          R8g  # )r   r   )r   r:   r;   r   rD   ZSemanticVersion.is_prerelease  s    {{1~a C''r   r
   Nr   rG   rH   r   r   r     s       ( (r   c                   s    ] 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                   sB   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                s*    Wn         W n        W0n        R # r+   rc   matcher	suggester)r   rc   r   r   r   r   r    ZVersionScheme.__init__  s    "r   c                sj     V P                   P                  V4       R pV#   \         d    Rp T# i ; iTF)r   r_   r	   r   r   rm   r   r   is_valid_versionZVersionScheme.is_valid_version  s@    	LL&&q)F  ' 	F	s   ! 22c                sV     V P                  V4       R pV#   \         d    Rp T# i ; ir   )r   r	   r   r   r   is_valid_matcherZVersionScheme.is_valid_matcher  s9    	LLOF  ' 	F	s    ((c                sj    VP                  R4      '       d   VRR pV P                  RV,          4      # )z*
Used for processing some metadata fields
Z,Nzdummy_name (%s)rx   )rd   r   r$   r%   r   is_valid_constraint_listZ&VersionScheme.is_valid_constraint_list  s3    
 ::c??#2A$$%6%:;;r   c                sL    V P                   f   R pV# V P                  V4      pV# r+   )r   r   r   r   suggestZVersionScheme.suggest  s-    >>!F  ^^A&Fr   r   r+   )r   r   r   r   r    r   r   r   r   r   rF   rG   rH   r   r   r     s#     #
< r   r   Z
normalizedZlegacyc                 s    V# r+   r
   r$   r%   r   rP   rP     s    r   ZsemanticZdefaultc                 sV    V \         9  d   \        R V ,          4      h\         V ,          # )zunknown scheme name: %r)_SCHEMESr`   )ra   r;   r   
get_schemer     s%    82T9::D>r   )r   r   r   r   r   r   r	   r   )*r   Zloggingr   Zcompatr    Zutilr   Z__all__Z	getLoggerr   r   r`   r	   Zobjectr   rI   r   ZIr|   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r
   r   r   <module>r      s  
  	   #4
 
		8	$	j 	
.Ef .Ebaf aH JJ  FGIttM 
B.J !G !GHT+ T+p ZZ2ZZg&ZZ"ZZ&ZZ&'/ZZ"#U+ZZ	C ZZ"#W-ZZ+,ZZv& ZZr"ZZ#ZZ
S!ZZ	C ZZ  **-.+\lf 

0"$$7	3s#	3 4G )G )4 ZZ :;=44A

-*(g ($g $$F $P -1B ;=mK8IJm_79	 |, r   