
    h$A              
         S r SSKJr  SSKrSSKrSSKJrJrJrJ	r	J
r
Jr  SSKJrJrJrJr  / SQr\
\\\4   S4   r\\\\
\\4   4   r\\\
\\
\\4   \
\\\\4   4   4   S4   4   r\
\\
\S4   \\\\4   r\\\/\4   r " S	 S
\5      rSS jr " S S\5      r " S S5      rSr\r   " S S\5      r! " S S\!5      r"      SS jr#\RH                  " S5      r%SS jr&              SS jr'g)zB
.. testsetup::

    from packaging.version import parse, Version
    )annotationsN)AnyCallable
NamedTupleSupportsIntTupleUnion   )InfinityInfinityTypeNegativeInfinityNegativeInfinityType)VERSION_PATTERNInvalidVersionVersionparse.c                  R    \ rS rSr% S\S'   S\S'   S\S'   S\S'   S\S	'   S
\S'   Srg)_Version&   intepochtuple[int, ...]releasetuple[str, int] | NonedevprepostLocalType | Nonelocal N)__name__
__module____qualname____firstlineno____annotations____static_attributes__r        C/var/www/html/env/lib/python3.13/site-packages/packaging/version.pyr   r   &   s%    J		
  r'   r   r   c                    [        U 5      $ )zParse the given version string.

>>> parse('1.0.dev1')
<Version('1.0.dev1')>

:param version: The version string to parse.
:raises InvalidVersion: When the version string is not a valid version.
)r   )versions    r(   r   r   /   s     7r'   c                      \ rS rSrSrSrg)r   ;   zRaised when a version string is not a valid version.

>>> Version("invalid")
Traceback (most recent call last):
    ...
packaging.version.InvalidVersion: Invalid version: 'invalid'
r    N)r!   r"   r#   r$   __doc__r&   r    r'   r(   r   r   ;   s    r'   r   c                  f    \ rS rSr% S\S'   SS jrSS jrSS jrSS jrSS jr	SS	 jr
SS
 jrSrg)_BaseVersionE   ztuple[Any, ...]_keyc                ,    [        U R                  5      $ N)hashr1   selfs    r(   __hash___BaseVersion.__hash__H   s    DIIr'   c                j    [        U[        5      (       d  [        $ U R                  UR                  :  $ r3   
isinstancer/   NotImplementedr1   r6   others     r(   __lt___BaseVersion.__lt__N   (    %..!!yy5::%%r'   c                j    [        U[        5      (       d  [        $ U R                  UR                  :*  $ r3   r:   r=   s     r(   __le___BaseVersion.__le__T   (    %..!!yyEJJ&&r'   c                j    [        U[        5      (       d  [        $ U R                  UR                  :H  $ r3   r:   r=   s     r(   __eq___BaseVersion.__eq__Z   rE   r'   c                j    [        U[        5      (       d  [        $ U R                  UR                  :  $ r3   r:   r=   s     r(   __ge___BaseVersion.__ge__`   rE   r'   c                j    [        U[        5      (       d  [        $ U R                  UR                  :  $ r3   r:   r=   s     r(   __gt___BaseVersion.__gt__f   rA   r'   c                j    [        U[        5      (       d  [        $ U R                  UR                  :g  $ r3   r:   r=   s     r(   __ne___BaseVersion.__ne__l   rE   r'   r    Nreturnr   )r>   r/   rS   bool)r>   objectrS   rT   )r!   r"   r#   r$   r%   r7   r?   rC   rG   rJ   rM   rP   r&   r    r'   r(   r/   r/   E   s+    
&'''&'r'   r/   a  
    v?
    (?:
        (?:(?P<epoch>[0-9]+)!)?                           # epoch
        (?P<release>[0-9]+(?:\.[0-9]+)*)                  # release segment
        (?P<pre>                                          # pre-release
            [-_\.]?
            (?P<pre_l>alpha|a|beta|b|preview|pre|c|rc)
            [-_\.]?
            (?P<pre_n>[0-9]+)?
        )?
        (?P<post>                                         # post release
            (?:-(?P<post_n1>[0-9]+))
            |
            (?:
                [-_\.]?
                (?P<post_l>post|rev|r)
                [-_\.]?
                (?P<post_n2>[0-9]+)?
            )
        )?
        (?P<dev>                                          # dev release
            [-_\.]?
            (?P<dev_l>dev)
            [-_\.]?
            (?P<dev_n>[0-9]+)?
        )?
    )
    (?:\+(?P<local>[a-z0-9]+(?:[-_\.][a-z0-9]+)*))?       # local version
c                     \ rS rSr% Sr\R                  " S\-   S-   \R                  \R                  -  5      r
S\S'   SS jrSS jrSS	 jr\SS
 j5       r\SS j5       r\SS j5       r\SS j5       r\SS j5       r\S S j5       r\SS j5       r\SS j5       r\S!S j5       r\S!S j5       r\S!S j5       r\SS j5       r\SS j5       r\SS j5       rSrg)"r      am  This class abstracts handling of a project's versions.

A :class:`Version` instance is comparison aware and can be compared and
sorted using the standard Python interfaces.

>>> v1 = Version("1.0a5")
>>> v2 = Version("1.0")
>>> v1
<Version('1.0a5')>
>>> v2
<Version('1.0')>
>>> v1 < v2
True
>>> v1 == v2
False
>>> v1 > v2
False
>>> v1 >= v2
False
>>> v1 <= v2
True
z^\s*z\s*$CmpKeyr1   c                   U R                   R                  U5      nU(       d  [        SU< 35      e[        UR	                  S5      (       a  [        UR	                  S5      5      OS[        S UR	                  S5      R                  S5       5       5      [        UR	                  S5      UR	                  S5      5      [        UR	                  S	5      UR	                  S
5      =(       d    UR	                  S5      5      [        UR	                  S5      UR	                  S5      5      [        UR	                  S5      5      S9U l
        [        U R                  R                  U R                  R                  U R                  R                  U R                  R                  U R                  R                   U R                  R"                  5      U l        g)a  Initialize a Version object.

:param version:
    The string representation of a version which will be parsed and normalized
    before use.
:raises InvalidVersion:
    If the ``version`` does not conform to PEP 440 in any way then this
    exception will be raised.
zInvalid version: r   r   c              3  8   #    U  H  n[        U5      v   M     g 7fr3   )r   .0is     r(   	<genexpr>#Version.__init__.<locals>.<genexpr>   s     L*KQ#a&&*K   r   .pre_lpre_npost_lpost_n1post_n2dev_ldev_nr   )r   r   r   r   r   r   N)_regexsearchr   r   groupr   tuplesplit_parse_letter_version_parse_local_version_version_cmpkeyr   r   r   r   r   r   r1   )r6   r*   matchs      r(   __init__Version.__init__   sS    ""7+ #4WK!@AA !/4{{7/C/C#ekk'*+L%++i*@*F*Fs*KLL%ekk'&:EKK<PQ&H%u{{9'='WYAW &ekk'&:EKK<PQ&u{{7';<	
 MMMM!!MMMMMMMM
	r'   c                    SU  S3$ )zhA representation of the Version that shows all internal state.

>>> Version('1.0.0')
<Version('1.0.0')>
z
<Version('z')>r    r5   s    r(   __repr__Version.__repr__   s     D6%%r'   c                d   / nU R                   S:w  a  UR                  U R                    S35        UR                  SR                  S U R                   5       5      5        U R                  b1  UR                  SR                  S U R                   5       5      5        U R
                  b  UR                  SU R
                   35        U R                  b  UR                  SU R                   35        U R                  b  UR                  S	U R                   35        SR                  U5      $ )
zeA string representation of the version that can be round-tripped.

>>> str(Version("1.0a5"))
'1.0a5'
r   !ra   c              3  8   #    U  H  n[        U5      v   M     g 7fr3   strr\   xs     r(   r^   "Version.__str__.<locals>.<genexpr>        ;lc!fflr`    c              3  8   #    U  H  n[        U5      v   M     g 7fr3   r{   r}   s     r(   r^   r      s      :AQr`   z.postz.dev+)r   appendjoinr   r   r   r   r   r6   partss     r(   __str__Version.__str__   s      ::?LLDJJ<q)* 	SXX;dll;;< 88LL : ::; 99 LL5,- 88LL4z*+ ::!LL1TZZL)*wwu~r'   c                .    U R                   R                  $ )zWThe epoch of the version.

>>> Version("2.0.0").epoch
0
>>> Version("1!2.0.0").epoch
1
)rp   r   r5   s    r(   r   Version.epoch  s     }}"""r'   c                .    U R                   R                  $ )a  The components of the "release" segment of the version.

>>> Version("1.2.3").release
(1, 2, 3)
>>> Version("2.0.0").release
(2, 0, 0)
>>> Version("1!2.0.0.post0").release
(2, 0, 0)

Includes trailing zeroes but not the epoch or any pre-release / development /
post-release suffixes.
)rp   r   r5   s    r(   r   Version.release  s     }}$$$r'   c                .    U R                   R                  $ )zThe pre-release segment of the version.

>>> print(Version("1.2.3").pre)
None
>>> Version("1.2.3a1").pre
('a', 1)
>>> Version("1.2.3b1").pre
('b', 1)
>>> Version("1.2.3rc1").pre
('rc', 1)
)rp   r   r5   s    r(   r   Version.pre&  s     }}   r'   c                n    U R                   R                  (       a  U R                   R                  S   $ S$ )zqThe post-release number of the version.

>>> print(Version("1.2.3").post)
None
>>> Version("1.2.3.post1").post
1
r
   N)rp   r   r5   s    r(   r   Version.post5  s*     )-(:(:t}}!!!$DDr'   c                n    U R                   R                  (       a  U R                   R                  S   $ S$ )zmThe development number of the version.

>>> print(Version("1.2.3").dev)
None
>>> Version("1.2.3.dev1").dev
1
r
   N)rp   r   r5   s    r(   r   Version.dev@  s*     (,}}'8'8t}}  #BdBr'   c                    U R                   R                  (       a,  SR                  S U R                   R                   5       5      $ g)zwThe local version segment of the version.

>>> print(Version("1.2.3").local)
None
>>> Version("1.2.3+abc").local
'abc'
ra   c              3  8   #    U  H  n[        U5      v   M     g 7fr3   r{   r}   s     r(   r^    Version.local.<locals>.<genexpr>U  s     @,?qCFF,?r`   N)rp   r   r   r5   s    r(   r   Version.localK  s3     ==88@DMM,?,?@@@r'   c                >    [        U 5      R                  SS5      S   $ )zThe public portion of the version.

>>> Version("1.2.3").public
'1.2.3'
>>> Version("1.2.3+abc").public
'1.2.3'
>>> Version("1!1.2.3dev1+abc").public
'1!1.2.3.dev1'
r   r
   r   )r|   rm   r5   s    r(   publicVersion.publicY  s     4ysA&q))r'   c                    / nU R                   S:w  a  UR                  U R                    S35        UR                  SR                  S U R                   5       5      5        SR                  U5      $ )a  The "base version" of the version.

>>> Version("1.2.3").base_version
'1.2.3'
>>> Version("1.2.3+abc").base_version
'1.2.3'
>>> Version("1!1.2.3dev1+abc").base_version
'1!1.2.3'

The "base version" is the public version of the project without any pre or post
release markers.
r   ry   ra   c              3  8   #    U  H  n[        U5      v   M     g 7fr3   r{   r}   s     r(   r^   'Version.base_version.<locals>.<genexpr>{  r   r`   r   )r   r   r   r   r   s     r(   base_versionVersion.base_versionf  s\      ::?LLDJJ<q)* 	SXX;dll;;<wwu~r'   c                H    U R                   SL=(       d    U R                  SL$ )zWhether this version is a pre-release.

>>> Version("1.2.3").is_prerelease
False
>>> Version("1.2.3a1").is_prerelease
True
>>> Version("1.2.3b1").is_prerelease
True
>>> Version("1.2.3rc1").is_prerelease
True
>>> Version("1.2.3dev1").is_prerelease
True
N)r   r   r5   s    r(   is_prereleaseVersion.is_prerelease  s!     xxt#;txxt';;r'   c                    U R                   SL$ )zWhether this version is a post-release.

>>> Version("1.2.3").is_postrelease
False
>>> Version("1.2.3.post1").is_postrelease
True
N)r   r5   s    r(   is_postreleaseVersion.is_postrelease  s     yy$$r'   c                    U R                   SL$ )zWhether this version is a development release.

>>> Version("1.2.3").is_devrelease
False
>>> Version("1.2.3.dev1").is_devrelease
True
N)r   r5   s    r(   is_devreleaseVersion.is_devrelease  s     xxt##r'   c                V    [        U R                  5      S:  a  U R                  S   $ S$ )zYThe first item of :attr:`release` or ``0`` if unavailable.

>>> Version("1.2.3").major
1
r
   r   lenr   r5   s    r(   majorVersion.major  s'     #&dll"3q"8t||A?a?r'   c                V    [        U R                  5      S:  a  U R                  S   $ S$ )zsThe second item of :attr:`release` or ``0`` if unavailable.

>>> Version("1.2.3").minor
2
>>> Version("1").minor
0
   r
   r   r   r5   s    r(   minorVersion.minor  '     #&dll"3q"8t||A?a?r'   c                V    [        U R                  5      S:  a  U R                  S   $ S$ )zrThe third item of :attr:`release` or ``0`` if unavailable.

>>> Version("1.2.3").micro
3
>>> Version("1").micro
0
   r   r   r   r5   s    r(   microVersion.micro  r   r'   )r1   rp   N)r*   r|   rS   None)rS   r|   rR   rS   r   )rS   r   )rS   z
int | None)rS   
str | None)rS   rT   )r!   r"   r#   r$   r-   recompiler   VERBOSE
IGNORECASEri   r%   rs   rv   r   propertyr   r   r   r   r   r   r   r   r   r   r   r   r   r   r&   r    r'   r(   r   r      sh   . ZZ/1G;RZZ"--=WXF
L$
L&B # # % % ! ! E E C C   
* 
*  0 < <  % % $ $ @ @ @ @ @ @r'   c                  6   ^  \ rS rSr\SU 4S jj5       rSrU =r$ )_TrimmedReleasei  c                `   > [         TU ]  nS [        U5       5       n[        USS9nUSUS-    $ )z
Release segment without any trailing zeros.

>>> _TrimmedRelease('1.0.0').release
(1,)
>>> _TrimmedRelease('0.0').release
(0,)
c              3  <   #    U  H  u  pU(       d  M  Uv   M     g 7fr3   r    )r\   indexvals      r(   r^   *_TrimmedRelease.release.<locals>.<genexpr>  s     BNjecEENs   	r   )defaultNr
   )superr   	enumeratemax)r6   relnonzeroslast_nonzero	__class__s       r(   r   _TrimmedRelease.release  s;     goBIcNB8Q/%\A%&&r'   r    r   )r!   r"   r#   r$   r   r   r&   __classcell__)r   s   @r(   r   r     s    ' 'r'   r   c                    U (       aE  Uc  SnU R                  5       n U S:X  a  Sn OU S:X  a  Sn OU S;   a  Sn OU S;   a  S	n U [        U5      4$ U (       a   eU(       a  S	n U [        U5      4$ g )
Nr   alphaabetab)cr   previewrc)revrr   )lowerr   )letternumbers     r(   rn   rn     s      >F 
 WFvF..F|#Fs6{"": s6{""r'   z[\._-]c                T    U b%  [        S [        R                  U 5       5       5      $ g)zJ
Takes a string like abc.1.twelve and turns it into ("abc", 1, "twelve").
Nc              3     #    U  H5  nUR                  5       (       d  UR                  5       O
[        U5      v   M7     g 7fr3   )isdigitr   r   )r\   parts     r(   r^   '_parse_local_version.<locals>.<genexpr>  s0      
> !%DJJLCI=>s   =?)rl   _local_version_separatorsrm   )r   s    r(   ro   ro     s4      
177>
 
 	
 r'   c                $   [        [        [        [        R                  " S [        U5      5      5      5      5      nUc  Uc
  Ub  [
        nOUc  [        nOUnUc  [
        nOUnUc  [        n	OUn	Uc  [
        n
O[        S U 5       5      n
XXxX4$ )Nc                    U S:H  $ )Nr   r    )r~   s    r(   <lambda>_cmpkey.<locals>.<lambda>  s    AFr'   c              3  d   #    U  H&  n[        U[        5      (       a  US 4O[        U4v   M(     g7f)r   N)r;   r   r   r[   s     r(   r^   _cmpkey.<locals>.<genexpr>B  s.      
NSz!S))QG0@!/DDes   .0)rl   reversedlist	itertools	dropwhiler   r   )r   r   r   r   r   r   _release_pre_post_dev_locals              r(   rq   rq     s     i))*:HW<MNOPH {t|"2 
 |#3  {"* }/  
NS
 
 D55r'   )r*   r|   rS   r   )r   r   r   z str | bytes | SupportsInt | NonerS   r   )r   r   rS   r   )r   r   r   r   r   r   r   r   r   r   r   r   rS   rX   )(r-   
__future__r   r   r   typingr   r   r   r   r   r	   _structuresr   r   r   r   __all__r   r|   	LocalTypeCmpPrePostDevTypeCmpLocalTyperX   rT   VersionComparisonMethodr   r   
ValueErrorr   r/   _VERSION_PATTERNr   r   r   rn   r   r   ro   rq   r    r'   r(   <module>r      s   #  	 G G W W
C%S/3&'	,(<eCHoMN 	%c3h';U38_'L!MM
NPS
STV 
	#s(O
 #FF#3T#9: z 	Z +' +'` > #	b@l b@J	'g '""" @""J JJy1 	;6;6;6 
 ;6 !	;6
 
 ;6 ;6 ;6r'   