ó
    ÂÜ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    ó    Ú3/usr/lib/python3/dist-packages/packaging/version.pyr   r   &   s%   ‡ ØƒJØÓØ	ÓØ	ÓØ
 Ó ØÖr'   r   r   c                ó   • [        U 5      $ )zÃParse 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   é;   zµRaised 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)Ú_BaseVersionéE   ztuple[Any, ...]Ú_keyc                ó,   • [        U R                  5      $ ©N)Úhashr1   ©Úselfs    r(   Ú__hash__Ú_BaseVersion.__hash__H   s   € Ü�D—I‘I‹Ðr'   c                ój   • [        U[        5      (       d  [        $ U R                  UR                  :  $ r3   ©Ú
isinstancer/   ÚNotImplementedr1   ©r6   Úothers     r(   Ú__lt__Ú_BaseVersion.__lt__N   ó(   € Ü˜%¤×.Ñ.Ü!Ð!à�y‰y˜5Ÿ:™:Ñ%Ð%r'   c                ój   • [        U[        5      (       d  [        $ U R                  UR                  :*  $ r3   r:   r=   s     r(   Ú__le__Ú_BaseVersion.__le__T   ó(   € Ü˜%¤×.Ñ.Ü!Ð!à�y‰y˜EŸJ™JÑ&Ð&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Ò*K Qœ#˜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Ó+ˆÞÜ Ð#4°W±KÐ!@ÓAÐAô !Ø/4¯{©{¸7×/CÑ/C”#�e—k‘k 'Ó*Ô+ÈÜÑL¨%¯+©+°iÓ*@×*FÑ*FÀsÔ*KÓLÓLÜ% e§k¡k°'Ó&:¸E¿K¹KÈÓ<PÓQÜ&Ø—‘˜HÓ% u§{¡{°9Ó'=×'WÀÇÁÈYÓAWóô & e§k¡k°'Ó&:¸E¿K¹KÈÓ<PÓQÜ& u§{¡{°7Ó';Ó<ñ	
ˆŒô Ø�M‰M×ÑØ�M‰M×!Ñ!Ø�M‰M×ÑØ�M‰M×ÑØ�M‰M×ÑØ�M‰M×Ñó
ˆ�	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   € ð ˜D˜6 Ð%Ð%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 !Ÿf˜fªlùr`   Ú 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ð   € ð ˆð �:‰:˜‹?Ø�L‰L˜DŸJ™J˜< qÐ)Ô*ð 	�‰�S—X‘XÑ;¨d¯lªlÓ;Ó;Ô<ð �8‰8ÑØ�L‰L˜Ÿ™Ñ :°·²Ó :Ó:Ô;ð �9‰9Ñ Ø�L‰L˜5 §¡ Ð,Ô-ð �8‰8ÑØ�L‰L˜4 §¡˜zÐ*Ô+ð �:‰:Ñ!Ø�L‰L˜1˜TŸZ™Z˜LÐ)Ô*à�w‰w�u‹~Ð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                  $ )z¼The 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×'8ˆt�}‰}× Ñ  Ñ#ÐB¸dÐ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   é € Ð@Ò,? qœC ŸF˜FÒ,?ùr`   N)rp   r   r…   r5   s    r(   r   ÚVersion.localK  s3   € ð �=‰=××Ø—8‘8Ñ@¨D¯M©M×,?Ò,?Ó@Ó@Ð@àr'   c                ó>   • [        U 5      R                  SS5      S   $ )z¥The 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   € ô �4‹y�‰˜s AÓ& 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\   € ð ˆð �:‰:˜‹?Ø�L‰L˜DŸJ™J˜< qÐ)Ô*ð 	�‰�S—X‘XÑ;¨d¯lªlÓ;Ó;Ô<à�w‰w�u‹~Ðr'   c                óH   • U R                   SL=(       d    U R                  SL$ )züWhether 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!   € ð �x‰x˜tÐ#×; t§x¡x°tÐ';Ð;r'   c                ó   • U R                   SL$ )z‚Whether 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   € ð �y‰y Ð$Ð$r'   c                ó   • U R                   SL$ )z†Whether 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   € ð �x‰x˜tÐ#Ð#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'   € ô #& d§l¡lÓ"3°qÓ"8ˆt�|‰|˜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¯  ó'   € ô #& d§l¡lÓ"3°qÓ"8ˆt�|‰|˜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  ‡ ñð. �ZŠZ˜ /Ñ1°GÑ;¸R¿Z¹ZÈ"Ï-É-Ñ=WÓX€FØ
ƒ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   é € ÐBªN™j˜e¼c—E‘EªNùs   ‚“	r   )ÚdefaultNr
   )Úsuperr   Ú	enumerateÚmax)r6   ÚrelÚnonzerosÚlast_nonzeroÚ	__class__s       €r(   r   Ú_TrimmedRelease.releaseÇ  s;   ø€ ô ‰g‰oˆÙB¬I°c¬NÓBˆÜ˜8¨QÑ/ˆØÐ%�\ 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à”s˜6“{Ð"Ð"æÐˆ:Þð ˆà”s˜6“{Ð"Ð"à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   é € ð 
â>�ð !%§¡§¡ˆD�J‰JŒL´C¸³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XxXš4$ )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�‰GÔ0@À!Ð/DÔDÊeùs   ‚.0)rl   ÚreversedÚlistÚ	itertoolsÚ	dropwhiler   r   )r   r   r   r   r   r   Ú_releaseÚ_preÚ_postÚ_devÚ_locals              r(   rq   rq     s«   € ô Ü””i×)Ò)Ñ*:¼HÀWÓ<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Ð&Ñ'€	à˜,Ð(<¸eÀCÈÀH¹oÐMÑNÐ ØØØ	ˆ%��c˜3�h‘ Ð';¸UÀ3ÈÀ8¹_Ð'LÑ!MÐMÑ
NÐPSÐ
SÑTðVñ€ð 
ØØ	ˆ#ˆsˆ(�OØØØØðñ
€ð # F¨FÐ#3°TÐ#9Ñ:Ð ôˆzô ô	ô�Zô ÷+'ñ +'ð`Ð ð> #€ð	ôb@ˆlô b@ôJ	'�gô 'ð""Øð"Ø @ð"àô"ðJ ŸJšJ yÓ1Ð ô	ð;6Øð;6àð;6ð 
 ð;6ð !ð	;6ð
 
 ð;6ð ð;6ð õ;6r'   