+
    <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       P/opt/headortail/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    779$q"jjm+e%''''5zA~~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%{{ell**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%    KK&<<$++e*<==r   c                V    V P                  V4      ;'       g    V P                  V4      # r5   rB   r0   s   &&r   __le__Version.__le__:   "    {{5!77T[[%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    DKK  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4dll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       QUr   >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       afoo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       afr   ===c                
    W8H  # r5   r   rf   s   &&&r   rj   rk   Y   s    qvr   ~=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   %=>>779$q""1%_q011FF	99??$===::d##-( *:<>*? @ @ "#3B&&r* "&!3!3A!6bf-. ' El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|,,((1G,0KK(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$		UZZ(?$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%xx599$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    DHH~T[[ 111r   c                R    V P                   P                  : R V P                  : R2# )()rR   rN   s   &r   rT   Matcher.__repr__   s    >>22DLL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!5A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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                   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     $J5ISVV5Ir   r   )_normalized_keyr   r   r   r    r   _release_clause)r"   r#   r   r   r   s   &&   r   r   NormalizedVersion.parse  sv     #
 ##A&$u$JVAY__S5I$Ju  %$JVAY__S5I$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+1Q44+++[s   	//TF)anyr   rN   s   fr   r\   NormalizedVersion.is_prerelease  s4    sFT[[FssFsFsFT[[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3K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43;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FGNN24FK )//33JJr8JK%%c1-a0A((+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hh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7F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~"+CR0Nhh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:   NNNr  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   
 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                    \        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&
 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   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}    $$QWWY/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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                    \        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1l++S0A0Aa(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    OO!!#j/2NN 018FHHJqM!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*Jt-.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      rWVV3W3# 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YF 	 bEKK$E eLe))++AGGAJ1<eLMF Ms   1A%r  |r7  )r   r   r   r   )
r#   rU  r   r   r   majorminorpatchr   builds
   &         r   _semantic_keyr\    s~     	!A%a((XXZF+1":6:a3q6:6E%F1Is+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@    	LL&&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    	LL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2T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 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   