HEX
Server: Apache/2.4.52 (Ubuntu)
System: Linux spn-python 5.15.0-89-generic #99-Ubuntu SMP Mon Oct 30 20:42:41 UTC 2023 x86_64
User: arjun (1000)
PHP: 8.1.2-1ubuntu2.20
Disabled: NONE
Upload Files
File: //home/arjun/.local/lib/python3.10/site-packages/packaging/__pycache__/version.cpython-310.pyc
o

���g$A�
@sxdZddlmZddlZddlZddlmZmZmZm	Z	m
Z
mZddlm
Z
mZmZmZgd�Ze
eeefdfZeeee
eeffZeee
ee
eefe
eeeefffdffZe
ee
edfeeeefZeeegefZGd	d
�d
e�Zd/dd�ZGdd�de�ZGdd�d�ZdZeZ 	Gdd�de�Z!Gdd�de!�Z"d0dd�Z#e�$d �Z%d1d#d$�Z&d2d-d.�Z'dS)3zB
.. testsetup::

    from packaging.version import parse, Version
�)�annotationsN)�Any�Callable�
NamedTuple�SupportsInt�Tuple�Union�)�Infinity�InfinityType�NegativeInfinity�NegativeInfinityType)�VERSION_PATTERN�InvalidVersion�Version�parse.c@s>eZdZUded<ded<ded<ded<ded<d	ed
<dS)�_Version�int�epoch�tuple[int, ...]�release�tuple[str, int] | None�dev�pre�post�LocalType | None�localN)�__name__�
__module__�__qualname__�__annotations__�r!r!�D/home/arjun/.local/lib/python3.10/site-packages/packaging/version.pyr&s
r�version�str�returnrcCst|�S)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)r#r!r!r"r/�	rc@seZdZdZdS)rz�Raised when a version string is not a valid version.

    >>> Version("invalid")
    Traceback (most recent call last):
        ...
    packaging.version.InvalidVersion: Invalid version: 'invalid'
    N)rrr�__doc__r!r!r!r"r;src@s\eZdZUded<ddd�Zdd	d
�Zddd�Zddd�Zddd�Zddd�Z	ddd�Z
dS)�_BaseVersionztuple[Any, ...]�_keyr%rcCs
t|j�S�N)�hashr)��selfr!r!r"�__hash__Hs
z_BaseVersion.__hash__�other�boolcCst|t�stS|j|jkSr*��
isinstancer(�NotImplementedr)�r-r/r!r!r"�__lt__N�
z_BaseVersion.__lt__cCst|t�stS|j|jkSr*r1r4r!r!r"�__le__Tr6z_BaseVersion.__le__�objectcCst|t�stS|j|jkSr*r1r4r!r!r"�__eq__Zr6z_BaseVersion.__eq__cCst|t�stS|j|jkSr*r1r4r!r!r"�__ge__`r6z_BaseVersion.__ge__cCst|t�stS|j|jkSr*r1r4r!r!r"�__gt__fr6z_BaseVersion.__gt__cCst|t�stS|j|jkSr*r1r4r!r!r"�__ne__lr6z_BaseVersion.__ne__N�r%r)r/r(r%r0)r/r8r%r0)rrrr r.r5r7r9r:r;r<r!r!r!r"r(Es






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@seZdZUdZe�dedejejB�Z	de
d<d3d
d�Zd4dd
�Zd4dd�Z
ed5dd��Zed6dd��Zed7dd��Zed8dd��Zed8dd��Zed9dd ��Zed4d!d"��Zed4d#d$��Zed:d&d'��Zed:d(d)��Zed:d*d+��Zed5d,d-��Zed5d.d/��Zed5d0d1��Zd2S);ra�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*$�CmpKeyr)r#r$r%�Nonec
Cs�|j�|�}|std|����t|�d�rt|�d��ndtdd�|�d��d�D��t|�d�|�d	��t|�d
�|�d�pC|�d��t|�d
�|�d��t	|�d��d�|_
t|j
j|j
j
|j
j|j
j|j
j|j
j�|_dS)aCInitialize 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.
        zInvalid version: rrcs��|]}t|�VqdSr*)r��.0�ir!r!r"�	<genexpr>���z#Version.__init__.<locals>.<genexpr>r�.�pre_l�pre_n�post_l�post_n1�post_n2�dev_l�dev_nr)rrrrrrN)�_regex�searchrr�groupr�tuple�split�_parse_letter_version�_parse_local_version�_version�_cmpkeyrrrrrrr))r-r#�matchr!r!r"�__init__�s*��
�zVersion.__init__cCsd|�d�S)z�A representation of the Version that shows all internal state.

        >>> Version('1.0.0')
        <Version('1.0.0')>
        z
<Version('z')>r!r,r!r!r"�__repr__�szVersion.__repr__cCs�g}|jdkr|�|j�d��|�d�dd�|jD���|jdur1|�d�dd�|jD���|jdur?|�d	|j���|jdurM|�d
|j���|jdur[|�d|j���d�|�S)z}A string representation of the version that can be round-tripped.

        >>> str(Version("1.0a5"))
        '1.0a5'
        r�!rFcsr@r*�r$�rB�xr!r!r"rD�rEz"Version.__str__.<locals>.<genexpr>N�csr@r*r[r\r!r!r"rD�rEz.postz.dev�+)r�append�joinrrrrr�r-�partsr!r!r"�__str__�s





zVersion.__str__rcC�|jjS)zThe epoch of the version.

        >>> Version("2.0.0").epoch
        0
        >>> Version("1!2.0.0").epoch
        1
        )rUrr,r!r!r"rr&z
Version.epochrcCre)adThe 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.
        )rUrr,r!r!r"rszVersion.releasercCre)aThe 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)
        )rUrr,r!r!r"r&s
zVersion.pre�
int | NonecC�|jjr
|jjdSdS)z�The post-release number of the version.

        >>> print(Version("1.2.3").post)
        None
        >>> Version("1.2.3.post1").post
        1
        r	N)rUrr,r!r!r"r5�	zVersion.postcCrg)z�The development number of the version.

        >>> print(Version("1.2.3").dev)
        None
        >>> Version("1.2.3.dev1").dev
        1
        r	N)rUrr,r!r!r"r@rhzVersion.dev�
str | NonecCs$|jjrd�dd�|jjD��SdS)z�The local version segment of the version.

        >>> print(Version("1.2.3").local)
        None
        >>> Version("1.2.3+abc").local
        'abc'
        rFcsr@r*r[r\r!r!r"rDUrEz Version.local.<locals>.<genexpr>N)rUrrar,r!r!r"rKs	z
Version.localcCst|��dd�dS)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$rRr,r!r!r"�publicYszVersion.publiccCsFg}|jdkr|�|j�d��|�d�dd�|jD���d�|�S)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.
        rrZrFcsr@r*r[r\r!r!r"rD{rEz'Version.base_version.<locals>.<genexpr>r^)rr`rarrbr!r!r"�base_versionfs


zVersion.base_versionr0cCs|jdup	|jduS)aTWhether 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)rrr,r!r!r"�
is_prereleaseszVersion.is_prereleasecC�
|jduS)z�Whether this version is a post-release.

        >>> Version("1.2.3").is_postrelease
        False
        >>> Version("1.2.3.post1").is_postrelease
        True
        N)rr,r!r!r"�is_postrelease��
	zVersion.is_postreleasecCrm)z�Whether this version is a development release.

        >>> Version("1.2.3").is_devrelease
        False
        >>> Version("1.2.3.dev1").is_devrelease
        True
        N)rr,r!r!r"�
is_devrelease�rozVersion.is_devreleasecCst|j�dkr|jdSdS)zqThe first item of :attr:`release` or ``0`` if unavailable.

        >>> Version("1.2.3").major
        1
        r	r��lenrr,r!r!r"�major�sz
Version.majorcC�t|j�dkr|jdSdS)z�The second item of :attr:`release` or ``0`` if unavailable.

        >>> Version("1.2.3").minor
        2
        >>> Version("1").minor
        0
        �r	rrqr,r!r!r"�minor��	z
Version.minorcCrt)z�The third item of :attr:`release` or ``0`` if unavailable.

        >>> Version("1.2.3").micro
        3
        >>> Version("1").micro
        0
        �rurrqr,r!r!r"�micro�rwz
Version.microN)r#r$r%r?)r%r$r=�r%r)r%r)r%rf)r%ri)r%r0)rrrr'�re�compiler�VERBOSE�
IGNORECASErNr rXrYrd�propertyrrrrrrrjrkrlrnrprsrvryr!r!r!r"r�sF


&
!






cs"eZdZed�fdd��Z�ZS)�_TrimmedReleaser%rcs6t�j}dd�t|�D�}t|dd�}|d|d�S)z�
        Release segment without any trailing zeros.

        >>> _TrimmedRelease('1.0.0').release
        (1,)
        >>> _TrimmedRelease('0.0').release
        (0,)
        css�|]	\}}|r|VqdSr*r!)rB�index�valr!r!r"rD�s�z*_TrimmedRelease.release.<locals>.<genexpr>r)�defaultNr	)�superr�	enumerate�max)r-�rel�nonzeros�last_nonzero��	__class__r!r"r�s
z_TrimmedRelease.releaserz)rrrrr�
__classcell__r!r!r�r"r��sr��letterri�number� str | bytes | SupportsInt | NonercCsz|r-|durd}|��}|dkrd}n|dkrd}n
|dvr!d}n|dvr'd	}|t|�fS|r1J�|r;d	}|t|�fSdS)
Nr�alpha�a�beta�b)�cr�preview�rc)�rev�rr)�lowerr)r�r�r!r!r"rS�s$rSz[\._-]rrcCs$|durtdd�t�|�D��SdS)zR
    Takes a string like abc.1.twelve and turns it into ("abc", 1, "twelve").
    Ncss(�|]}|��s|��nt|�VqdSr*)�isdigitr�r)rB�partr!r!r"rDs
��
�z'_parse_local_version.<locals>.<genexpr>)rQ�_local_version_separatorsrR)rr!r!r"rT�s
�rTrrrrrrrr>cCs�tttt�dd�t|�����}|dur|dur|durt}n	|dur&t}n|}|dur/t}n|}|dur8t}	n|}	|durAt}
n	tdd�|D��}
|||||	|
fS)NcSs|dkS)Nrr!)r]r!r!r"�<lambda>sz_cmpkey.<locals>.<lambda>css*�|]}t|t�r
|dfnt|fVqdS)r^N)r2rrrAr!r!r"rDBs�
�z_cmpkey.<locals>.<genexpr>)rQ�reversed�list�	itertools�	dropwhilerr
)rrrrrr�_release�_pre�_post�_dev�_localr!r!r"rVs(
�	�rV)r#r$r%r)r�rir�r�r%r)rrir%r)rrrrrrrrrrrrr%r>)(r'�
__future__rr�r{�typingrrrrrr�_structuresr
rrr
�__all__rr$�	LocalType�CmpPrePostDevType�CmpLocalTyper>r0�VersionComparisonMethodrr�
ValueErrorrr(�_VERSION_PATTERNrrr�rSr|r�rTrVr!r!r!r"�<module>sN *��
��
	
0'

%