HEX
Server: Apache
System: Linux server2.voipitup.com.au 4.18.0-553.104.1.lve.el8.x86_64 #1 SMP Tue Feb 10 20:07:30 UTC 2026 x86_64
User: posscale (1027)
PHP: 8.2.29
Disabled: exec,passthru,shell_exec,system
Upload Files
File: //opt/saltstack/salt/lib/python3.10/site-packages/packaging/__pycache__/version.cpython-310.pyc
o

�N�g�?�@s�dZddlZddlZddlZddlmZmZmZmZm	Z	ddl
mZmZm
Z
mZgd�Ze	eefZe	eeeeffZe	eeefZe	eee	eeeefeeeffdffZeeeedfeeeefZeeegefZe�dgd	��Zd
eddfd
d�ZGdd�de�ZGdd�d�ZdZeZ 	Gdd�de�Z!dede	ee"efdeeeeffdd�Z#e�$d�Z%dedeefdd�Z&dedeedfdeeeefd eeeefd!eeeefdeeedefd"d#�Z'dS)$zB
.. testsetup::

    from packaging.version import parse, Version
�N)�Callable�Optional�SupportsInt�Tuple�Union�)�Infinity�InfinityType�NegativeInfinity�NegativeInfinityType)�VERSION_PATTERN�parse�Version�InvalidVersion.�_Version)�epoch�release�dev�pre�post�local�version�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�E/opt/saltstack/salt/lib/python3.10/site-packages/packaging/version.pyr
+s	r
c@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)�__name__�
__module__�__qualname__�__doc__rrrrr7src@s�eZdZUeed<defdd�Zdddefdd�Zdddefdd	�Z	de
defd
d�Zdddefdd
�Zdddefdd�Z
de
defdd�ZdS)�_BaseVersion�_keyrcCs
t|j�S�N)�hashr ��selfrrr�__hash__Ds
z_BaseVersion.__hash__�othercCst|t�stS|j|jkSr!��
isinstancer�NotImplementedr �r$r&rrr�__lt__J�
z_BaseVersion.__lt__cCst|t�stS|j|jkSr!r'r*rrr�__le__Pr,z_BaseVersion.__le__cCst|t�stS|j|jkSr!r'r*rrr�__eq__Vr,z_BaseVersion.__eq__cCst|t�stS|j|jkSr!r'r*rrr�__ge__\r,z_BaseVersion.__ge__cCst|t�stS|j|jkSr!r'r*rrr�__gt__br,z_BaseVersion.__gt__cCst|t�stS|j|jkSr!r'r*rrr�__ne__hr,z_BaseVersion.__ne__N)rrr�CmpKey�__annotations__�intr%�boolr+r-�objectr.r/r0r1rrrrrAs
ra�
    v?
    (?:
        (?:(?P<epoch>[0-9]+)!)?                           # epoch
        (?P<release>[0-9]+(?:\.[0-9]+)*)                  # release segment
        (?P<pre>                                          # pre-release
            [-_\.]?
            (?P<pre_l>(a|b|c|rc|alpha|beta|pre|preview))
            [-_\.]?
            (?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@sveZdZdZe�dedejejB�Z	de
ddfdd�Zde
fd	d
�Zde
fdd�Z
edefd
d��Zedeedffdd��Zedeee
effdd��Zedeefdd��Zedeefdd��Zedee
fdd��Zede
fdd��Zede
fdd��Zedefdd��Zedefd d!��Zedefd"d#��Zedefd$d%��Zedefd&d'��Zedefd(d)��Z dS)*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*$rrNc
Cs�|j�|�}|std|�d���t|�d�rt|�d��ndtdd�|�d��d�D��t|�d	�|�d
��t|�d�|�d�pD|�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!)r4��.0�irrr�	<genexpr>���z#Version.__init__.<locals>.<genexpr>r�.Zpre_lZpre_nZpost_lZpost_n1Zpost_n2Zdev_lZdev_nr)rrrrrrN)�_regex�searchrr�groupr4�tuple�split�_parse_letter_version�_parse_local_version�_version�_cmpkeyrrrrrrr )r$r�matchrrr�__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')>rr#rrr�__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)zA string representation of the version that can be rounded-tripped.

        >>> str(Version("1.0a5"))
        '1.0a5'
        r�!r>csr8r!��str�r:�xrrrr<�r=z"Version.__str__.<locals>.<genexpr>N�csr8r!rLrNrrrr<�r=z.postz.dev�+)r�append�joinrrrrr�r$�partsrrr�__str__�s





zVersion.__str__cC�|jj}|S)zThe epoch of the version.

        >>> Version("2.0.0").epoch
        0
        >>> Version("1!2.0.0").epoch
        1
        )rFr)r$�_epochrrrrs	z
Version.epoch.cCrW)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.
        )rFr)r$�_releaserrrrszVersion.releasecCrW)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)
        )rFr)r$�_prerrrr#s
zVersion.precC�|jjr
|jjdSdS)z�The post-release number of the version.

        >>> print(Version("1.2.3").post)
        None
        >>> Version("1.2.3.post1").post
        1
        rN)rFrr#rrrr3�	zVersion.postcCr[)z�The development number of the version.

        >>> print(Version("1.2.3").dev)
        None
        >>> Version("1.2.3.dev1").dev
        1
        rN)rFrr#rrrr>r\zVersion.devcCs$|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'
        r>csr8r!rLrNrrrr<Sr=z Version.local.<locals>.<genexpr>N)rFrrSr#rrrrIs	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.2.3+abc.dev1").public
        '1.2.3'
        rQrr)rMrCr#rrr�publicWszVersion.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.3+abc.dev1").base_version
        '1!1.2.3'

        The "base version" is the public version of the project without any pre or post
        release markers.
        rrKr>csr8r!rLrNrrrr<yr=z'Version.base_version.<locals>.<genexpr>rP)rrRrSrrTrrr�base_versionds


zVersion.base_versioncCs|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#rrr�
is_prerelease}szVersion.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#rrr�is_postrelease��
	zVersion.is_postreleasecCr`)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#rrr�
is_devrelease�rbzVersion.is_devreleasecCst|j�dkr|jdSdS)zqThe first item of :attr:`release` or ``0`` if unavailable.

        >>> Version("1.2.3").major
        1
        rr��lenrr#rrr�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
        �rrrdr#rrr�minor��	z
Version.minorcCrg)z�The third item of :attr:`release` or ``0`` if unavailable.

        >>> Version("1.2.3").micro
        3
        >>> Version("1").micro
        0
        �rhrrdr#rrr�micro�rjz
Version.micro)!rrrr�re�compiler�VERBOSE�
IGNORECASEr?rMrIrJrV�propertyr4rrrrrrrrr]r^r5r_rarcrfrirlrrrrr�sD&!





�letter�numbercCsv|r-|durd}|��}|dkrd}n|dkrd}n
|dvr!d}n|dvr'd	}|t|�fS|s9|r9d	}|t|�fSdS)
Nr�alpha�a�beta�b)�crZpreview�rc)Zrev�rr)�lowerr4)rrrsrrrrD�s"rDz[\._-]rcCs$|durtdd�t�|�D��SdS)zR
    Takes a string like abc.1.twelve and turns it into ("abc", 1, "twelve").
    Ncss(�|]}|��s|��nt|�VqdSr!)�isdigitr{r4)r:�partrrrr<�s
��
�z'_parse_local_version.<locals>.<genexpr>)rB�_local_version_separatorsrC)rrrrrE�s
�rErrrrrcCs�tttt�dd�t|�����}|dur|dur|durt}n	|dur&t}n|}|dur/t}n|}|dur8t}	n|}	|durAt}
n	tdd�|D��}
|||||	|
fS)NcSs|dkS)Nrr)rOrrr�<lambda>sz_cmpkey.<locals>.<lambda>css*�|]}t|t�r
|dfnt|fVqdS)rPN)r(r4r
r9rrrr</s�
�z_cmpkey.<locals>.<genexpr>)rB�reversed�list�	itertools�	dropwhiler
r)rrrrrrrYrZZ_postZ_dev�_localrrrrG�s(�	�rG)(r�collectionsr�rm�typingrrrrrZ_structuresrr	r
r�__all__Z
InfiniteTypesrMr4ZPrePostDevTypeZSubLocalTypeZ	LocalTyper2r5ZVersionComparisonMethod�
namedtuplerr
�
ValueErrorrrZ_VERSION_PATTERNrr�bytesrDrnr~rErGrrrr�<module>s�

��������
0)��
�
$�
����
��