
    vKgZ1                         S r SSKrSSKrSSKr\R                  S 5       r " S S5      r " S S\5      r " S S	\5      rg)
a  Provides classes to represent module version numbers (one class for
each style of version numbering).  There are currently two such classes
implemented: StrictVersion and LooseVersion.

Every version number class implements the following interface:
  * the 'parse' method takes a string and parses it to some internal
    representation; if the string is an invalid version number,
    'parse' raises a ValueError exception
  * the class constructor takes an optional string argument which,
    if supplied, is passed to 'parse'
  * __str__ reconstructs the string that was passed to 'parse' (or
    an equivalent string -- ie. one that will generate an equivalent
    version number instance)
  * __repr__ generates Python code to recreate the version number instance
  * _cmp compares the current instance with either another instance
    of the same class or a string (which will be parsed to an instance
    of the same class, thus must follow the same rules)
    Nc               #      #    [         R                  " SS9 n [         R                  " S[        SS9  U v   S S S 5        g ! , (       d  f       g = f7f)NT)recorddefaultz)distutils Version classes are deprecated.)actioncategorymessage)warningscatch_warningsfilterwarningsDeprecationWarning)ctxs    ]/var/www/highfloat_scraper/venv/lib/python3.13/site-packages/setuptools/_distutils/version.pysuppress_known_deprecationr   "   s>     		 	 	-'?	

 	 
.	-	-s   A?	A
A	Ac                   F    \ rS rSrSrSS jrS rS rS rS r	S	 r
S
 rSrg)Version-   zAbstract base class for version numbering classes.  Just provides
constructor (__init__) and reproducer (__repr__), because those
seem to be the same for all version numbering classes; and route
rich comparisons to _cmp.
Nc                 h    U(       a  U R                  U5        [        R                  " S[        SS9  g )NzHdistutils Version classes are deprecated. Use packaging.version instead.   )
stacklevel)parser	   warnr   selfvstrings     r   __init__Version.__init__4   s(    JJw-		
    c                 :    U R                   R                   SU  S3$ )Nz (''))	__class____name__r   s    r   __repr__Version.__repr__>   s     ..))*#dV266r   c                 D    U R                  U5      nU[        L a  U$ US:H  $ Nr   _cmpNotImplementedr   othercs      r   __eq__Version.__eq__A   &    IIeHAvr   c                 D    U R                  U5      nU[        L a  U$ US:  $ r&   r'   r*   s      r   __lt__Version.__lt__G   &    IIeH1ur   c                 D    U R                  U5      nU[        L a  U$ US:*  $ r&   r'   r*   s      r   __le__Version.__le__M   r/   r   c                 D    U R                  U5      nU[        L a  U$ US:  $ r&   r'   r*   s      r   __gt__Version.__gt__S   r3   r   c                 D    U R                  U5      nU[        L a  U$ US:  $ r&   r'   r*   s      r   __ge__Version.__ge__Y   r/   r    N)r!   
__module____qualname____firstlineno____doc__r   r#   r-   r1   r5   r8   r;   __static_attributes__r=   r   r   r   r   -   s*    
7r   r   c                       \ rS rSrSr\R                  " S\R                  \R                  -  5      r	S r
S rS rS rSrg	)
StrictVersionq   a  Version numbering for anal retentives and software idealists.
Implements the standard interface for version number classes as
described above.  A version number consists of two or three
dot-separated numeric components, with an optional "pre-release" tag
on the end.  The pre-release tag consists of the letter 'a' or 'b'
followed by a number.  If the numeric components of two version
numbers are equal, then one with a pre-release tag will always
be deemed earlier (lesser) than one without.

The following are valid version numbers (shown in the order that
would be obtained by sorting according to the supplied cmp function):

    0.4       0.4.0  (these two are equivalent)
    0.4.1
    0.5a1
    0.5b3
    0.5
    0.9.6
    1.0
    1.0.4a3
    1.0.4b1
    1.0.4

The following are examples of invalid version numbers:

    1
    2.7.2.2
    1.3.a4
    1.3pl1
    1.3c4

The rationale for this version numbering system will be explained
in the distutils documentation.
z)^(\d+) \. (\d+) (\. (\d+))? ([ab](\d+))?$c                 t   U R                   R                  U5      nU(       d  [        SU S35      eUR                  SSSSS5      u  p4pVnU(       a!  [	        [        [        X4U/5      5      U l        O"[	        [        [        X4/5      5      S-   U l        U(       a  US	   [        U5      4U l        g S U l        g )
Nzinvalid version number ''   r            )r   r   )	
version_rematch
ValueErrorgrouptuplemapintversion
prerelease)r   r   rN   majorminorpatchrU   prerelease_nums           r   r   StrictVersion.parse   s    %%g.7yBCC<AKK1aQRTU<V9u. S5*?!@ADL S5.!9:TADL)!}c..ABDO"DOr   c                 N   U R                   S   S:X  a-  SR                  [        [        U R                   SS 5      5      nO)SR                  [        [        U R                   5      5      nU R                  (       a*  XR                  S   -   [        U R                  S   5      -   nU$ )Nr   r   .rI   )rT   joinrR   strrU   r   s     r   __str__StrictVersion.__str__   s{    <<?ahhs3Qq(9:;Ghhs356G?? 22S9K5LLGr   c                 T   [        U[        5      (       a  [        5          [        U5      nS S S 5        O[        U[        5      (       d  [        $ U R
                  UR
                  :X  a  U R                  U5      $ U R
                  UR
                  :  a  S$ S$ ! , (       d  f       NW= f)NrI   )
isinstancer^   r   rE   r)   rT   _cmp_prereleaser   r+   s     r   r(   StrictVersion._cmp   s~    eS!!+-%e, .-E=11!!<<5==(''..\\EMM1r8q8 .-s   B
B'c                     U R                   (       a  UR                   (       d  gU R                   (       d  UR                   (       a  gU R                   UR                   :X  a  gU R                   UR                   :  a  gg)z
case 1: self has prerelease, other doesn't; other is greater
case 2: self doesn't have prerelease, other does: self is greater
case 3: both or neither have prerelease: compare them!
rb   rI   r   )rU   re   s     r   rd   StrictVersion._cmp_prerelease   sU     ??5#3#3U%5%5??e...__u///r   )rU   rT   N)r!   r?   r@   rA   rB   recompileVERBOSEASCIIrM   r   r_   r(   rd   rC   r=   r   r   rE   rE   q   s>    !F 4bjj2886KJ#"	9r   rE   c                   j    \ rS rSrSr\R                  " S\R                  5      rS r	S r
S rS rSrg	)
LooseVersioni  a8  Version numbering for anarchists and software realists.
Implements the standard interface for version number classes as
described above.  A version number consists of a series of numbers,
separated by either periods or strings of letters.  When comparing
version numbers, the numeric components will be compared
numerically, and the alphabetic components lexically.  The following
are all valid version numbers, in no particular order:

    1.5.1
    1.5.2b2
    161
    3.10a
    8.02
    3.4j
    1996.07.12
    3.2.pl0
    3.1.1.6
    2g6
    11g
    0.960923
    2.2beta29
    1.13++
    5.5.kw
    2.0b1pl0

In fact, there is no such thing as an invalid version number under
this scheme; the rules for comparison are simple and predictable,
but may not always give the results you want (for some definition
of "want").
z(\d+ | [a-z]+ | \.)c                     Xl         U R                  R                  U5       Vs/ sH  o"(       d  M  US:w  d  M  UPM     nn[        U5       H  u  pE [	        U5      X4'   M     X0l        g s  snf ! [
         a     M0  f = f)Nr\   )r   component_resplit	enumeraterS   rO   rT   )r   r   x
componentsiobjs         r   r   LooseVersion.parse;  s}     !%!2!2!8!8!AT!AAQa1PS8a!A
T
+FA #C
 , " U  s!   	A*A*A*A//
A=<A=c                     U R                   $ r>   )r   r"   s    r   r_   LooseVersion.__str__I  s    ||r   c                     SU  S3$ )NzLooseVersion ('r   r=   r"   s    r   r#   LooseVersion.__repr__L  s     b))r   c                    [        U[        5      (       a  [        U5      nO[        U[        5      (       d  [        $ U R                  UR                  :X  a  gU R                  UR                  :  a  gU R                  UR                  :  a  gg )Nr   rb   rI   )rc   r^   rn   r)   rT   re   s     r   r(   LooseVersion._cmpO  sj    eS!! 'EE<00!!<<5==(<<%--'<<%--' (r   )rT   r   N)r!   r?   r@   rA   rB   ri   rj   rk   rp   r   r_   r#   r(   rC   r=   r   r   rn   rn     s2    > ::4bjjAL"*r   rn   )	rB   
contextlibri   r	   contextmanagerr   r   rE   rn   r=   r   r   <module>r      sW   &  	   0 0HaG aPA7 Ar   