
    wiZ              
      *   d Z ddlmZ ddlZddlZddlZddlmZmZmZm	Z	m
Z
mZmZmZ ddlmZmZmZmZ ej&                  rddlmZmZ ej.                  dk\  rdd	lmZ nej&                  rdd	lmZ nddlZddlZd6d
ZddddddddZg dZeeeef   df   Z eeeeeef   f   Z!eeeeeeef   eeeeef   f   f   df   f   Z"eeeedf   e!e!e!e"f   Z#ee#e#ge$f   Z% G d ded      Z&d7dZ' G d de(      Z) G d d      Z*dZ+e+jY                  dd      jY                  dd       Z-ej\                  j^                  d!k(  rej.                  d"k  s7ej\                  j^                  d#k(  rej.                  d$k  sej.                  d%k  re-ne+Z0	  ejb                  d&ejd                        Z3d8d'Z4d9d(Z5d:d)Z6d;d*Z7d<d+Z8d=d,Z9 G d- d.e	      Z: G d/ de*      Z; G d0 d1e;      Z<	 	 	 	 	 	 d>d2Z= ejb                  d3      Z>d?d4Z?	 	 	 	 	 	 	 	 	 	 	 	 	 	 d@d5Z@y)AzB
.. testsetup::

    from packaging.version import parse, Version
    )annotationsN)AnyCallableLiteral
NamedTupleSupportsIntTuple	TypedDictUnion   )InfinityInfinityTypeNegativeInfinityNegativeInfinityType)SelfUnpack)      )
deprecatedc                     d fd}|S )Nc                H     t        j                         d fd       }|S )Nc                 L    t        j                  t        d        | i |S )N   )category
stacklevel)warningswarnDeprecationWarning)argskwargsfuncmessages     c/var/www/feuerwehr-webapp/venv/lib/python3.12/site-packages/setuptools/_vendor/packaging/version.pywrapperz/_deprecated.<locals>.decorator.<locals>.wrapper)   s*    / 
 T,V,,    )r   objectr    r&   returnr&   )	functoolswraps)r!   r$   r"   s   ` r#   	decoratorz_deprecated.<locals>.decorator(   s%    __T"- #- Nr%   )r!   r&   r'   r&    )r"   r*   s   ` r#   _deprecatedr,   '   s    
	 r%   abrcpost)alphabetacprepreviewrevr)VERSION_PATTERNInvalidVersionVersionparse.c                  J    e Zd ZU ded<   ded<   ded<   ded<   ded<   d	ed
<   y)_VersionReplace
int | Noneepochztuple[int, ...] | Nonerelease*tuple[Literal['a', 'b', 'rc'], int] | Noner4   r0   dev
str | NonelocalN__name__
__module____qualname____annotations__r+   r%   r#   r=   r=   U   s%    ##	33
	Or%   r=   F)totalr:   c                    t        |       S )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                      e Zd ZdZy)r9   zRaised when a version string is not a valid version.

    >>> Version("invalid")
    Traceback (most recent call last):
        ...
    packaging.version.InvalidVersion: Invalid version: 'invalid'
    N)rF   rG   rH   __doc__r+   r%   r#   r9   r9   j   s    r%   r9   c                  r    e Zd ZdZej
                  r	edd       ZddZddZ	ddZ
ddZddZddZdd	Zy
)_BaseVersionr+   c                     y Nr+   selfs    r#   _keyz_BaseVersion._key|   s    +.r%   c                ,    t        | j                        S rR   )hashrU   rS   s    r#   __hash__z_BaseVersion.__hash__   s    DIIr%   c                `    t        |t              st        S | j                  |j                  k  S rR   
isinstancerP   NotImplementedrU   rT   others     r#   __lt__z_BaseVersion.__lt__   %    %.!!yy5::%%r%   c                `    t        |t              st        S | j                  |j                  k  S rR   rZ   r]   s     r#   __le__z_BaseVersion.__le__   %    %.!!yyEJJ&&r%   c                `    t        |t              st        S | j                  |j                  k(  S rR   rZ   r]   s     r#   __eq__z_BaseVersion.__eq__   rc   r%   c                `    t        |t              st        S | j                  |j                  k\  S rR   rZ   r]   s     r#   __ge__z_BaseVersion.__ge__   rc   r%   c                `    t        |t              st        S | j                  |j                  kD  S rR   rZ   r]   s     r#   __gt__z_BaseVersion.__gt__   r`   r%   c                `    t        |t              st        S | j                  |j                  k7  S rR   rZ   r]   s     r#   __ne__z_BaseVersion.__ne__   rc   r%   N)r'   ztuple[Any, ...]r'   int)r^   rP   r'   bool)r^   r&   r'   rn   )rF   rG   rH   	__slots__typingTYPE_CHECKINGpropertyrU   rX   r_   rb   re   rg   ri   rk   r+   r%   r#   rP   rP   t   sC    I
 	. 
.&'''&'r%   rP   a1  
    v?+                                                   # optional leading 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>                                        # local version
            [a-z0-9]+
            (?:[._-][a-z0-9]+)*+
        )
    )?+
z*+*z?+?cpython)r         pypy)r   rv   r   )r   rv   z[a-z0-9]+(?:[._-][a-z0-9]+)*c               \    | xs d}t        |t              r|dk\  r|S d| }t        |      )Nr   z(epoch must be non-negative integer, got r[   rm   r9   )valuer?   msgs      r#   _validate_epochr}      s7    JQE%%1*4UG
<C

r%   c                   | dn| }t        |t              r"t        |      dkD  rt        d |D              r|S d| }t	        |      )N)r   r   c              3  J   K   | ]  }t        |t              xr |d k\    yw)r   N)r[   rm   .0is     r#   	<genexpr>z$_validate_release.<locals>.<genexpr>   s#     ?!
1c"-qAv-?s   !#z@release must be a non-empty tuple of non-negative integers, got )r[   tuplelenallr9   )r{   r@   r|   s      r#   _validate_releaser      sM    mdG7E"L1?w??LWI
VC

r%   c                   | | S t        | t              r2t        |       dk(  r$| d   dv rt        | d   t              r
| d   dk\  r| S d|  }t	        |      )Nr   r   )r-   r.   r/   r   z=pre must be a tuple of ('a'|'b'|'rc', non-negative int), got )r[   r   r   rm   r9   r{   r|   s     r#   _validate_prer     sc    }5% J!O!H((uQx%!HMI%
QC

r%   c               \    | | S t        | t              r	| dk\  rd| fS d|  }t        |      )Nr   r0   z'post must be non-negative integer, got rz   r   s     r#   _validate_postr     s=    }%%1*3E7
;C

r%   c               \    | | S t        | t              r	| dk\  rd| fS d|  }t        |      )Nr   rB   z&dev must be non-negative integer, got rz   r   s     r#   _validate_devr     s=    }%%1*u~25'
:C

r%   c                   | | S t        | t              r t        j                  |       rt	        |       S d| }t        |      )Nz*local must be a valid version string, got )r[   str_LOCAL_PATTERN	fullmatch_parse_local_versionr9   r   s     r#   _validate_localr   #  sE    }%.":":5"A#E**6ui
@C

r%   c                  J    e Zd ZU ded<   ded<   ded<   ded<   ded<   d	ed
<   y)_Versionrm   r?   tuple[int, ...]r@   tuple[str, int] | NonerB   r4   r0   LocalType | NonerD   NrE   r+   r%   r#   r   r   -  s%    J		
  r%   r   c                  d   e Zd ZU dZdZdZ ej                  dez   dz   ej                  ej                  z        Zded<   ded<   d	ed
<   d	ed<   d	ed<   ded<   ded<   d)dZd*dZed+d       Ze ed      d,d              Zej&                   ed      d-d              Zd.dZd.dZed.d       Zed/d       Zed0d       Zed1d       Zed2d       Zed2d       Zed3d       Zed.d        Zed.d!       Zed4d"       Zed4d#       Z ed4d$       Z!ed/d%       Z"ed/d&       Z#ed/d'       Z$y()5r:   a  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
    )_dev_epoch
_key_cache_local_post_pre_release)_strz\s*rm   r   r   r   r   r   r   r   r   r   zCmpKey | Noner   c                   | j                   j                  |      }|st        d|      |j                  d      rt	        |j                  d            nd| _        t        t        t        |j                  d      j                  d                  | _	        t        |j                  d      |j                  d            | _        t        |j                  d      |j                  d	      xs |j                  d
            | _        t        |j                  d      |j                  d            | _        t        |j                  d            | _        d| _        y)aC  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   r@   .pre_lpre_npost_lpost_n1post_n2dev_ldev_nrD   N)_regexr   r9   grouprm   r   r   mapsplitr   _parse_letter_versionr   r   r   r   r   r   )rT   rL   matchs      r#   __init__zVersion.__init__\  s    %%g. #4WK!@AA38;;w3Gc%++g./Qc#u{{9'='C'CC'HIJ)%++g*>G@TU	*KK!5;;y#9#SU[[=S

 *%++g*>G@TU	*5;;w+?@ r%   c                   d|v rt        |d         n| j                  }d|v rt        |d         n| j                  }d|v rt	        |d         n| j
                  }d|v rt        |d         n| j                  }d|v rt        |d         n| j                  }d|v rt        |d         n| j                  }|| j                  k(  rM|| j                  k(  r>|| j
                  k(  r/|| j                  k(  r || j                  k(  r|| j                  k(  r| S | j                  j                  | j                        }d |_        ||_        ||_        ||_        ||_        ||_	        ||_        |S )Nr?   r@   r4   r0   rB   rD   )r}   r   r   r   r   r   r   r   r   r   r   r   	__class____new__r   )	rT   r    r?   r@   r4   r0   rB   rD   new_versions	            r#   __replace__zVersion.__replace__v  sS   4;v4Ew04;; F" fY/0 	
 /4vomF5M*4991761A~fVn-tzz.3vomF5M*4994;v4Ew04;; T[[ 4==(tyy 

"tyy $Knn,,T^^<!%"& "r%   c                    | j                   Qt        | j                  | j                  | j                  | j
                  | j                  | j                        | _         | j                   S rR   )r   _cmpkeyr   r   r   r   r   r   rS   s    r#   rU   zVersion._key  sN    ??"%		

		DO r%   z4Version._version is private and will be removed soonc                    t        | j                  | j                  | j                  | j                  | j
                  | j                        S rR   )r   r   r   r   r   r   r   rS   s    r#   _versionzVersion._version  s6     KK		499djj$++
 	
r%   c                    |j                   | _        |j                  | _        |j                  | _        |j                  | _        |j                  | _	        |j                  | _        d | _        y rR   )r?   r   r@   r   rB   r   r4   r   r0   r   rD   r   r   )rT   r{   s     r#   r   zVersion._version  sM     kkII	II	ZZ
kkr%   c                    d|  dS )zA representation of the Version that shows all internal state.

        >>> Version('1.0.0')
        <Version('1.0.0')>
        z
<Version('z')>r+   rS   s    r#   __repr__zVersion.__repr__  s     D6%%r%   c                   dj                  t        t        | j                              }| j                  r| j                   d| }| j
                  ,|dj                  t        t        | j
                              z  }| j                  |d| j                   z  }| j                  |d| j                   z  }| j                  |d| j                   z  }|S )z}A string representation of the version that can be round-tripped.

        >>> str(Version("1.0a5"))
        '1.0a5'
        r   ! z.postz.dev+)	joinr   r   r@   r?   r4   r0   rB   rD   )rT   rL   s     r#   __str__zVersion.__str__  s     ((3sDLL12 ::AgY/G 88rwws3122G 99 tyyk**G 88dhhZ((G ::!4::,''Gr%   c                    t        |       S )z Internal property for match_argsr   rS   s    r#   r   zVersion._str  s     4yr%   c                    | j                   S )zThe epoch of the version.

        >>> Version("2.0.0").epoch
        0
        >>> Version("1!2.0.0").epoch
        1
        )r   rS   s    r#   r?   zVersion.epoch  s     {{r%   c                    | j                   S )ad  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.
        )r   rS   s    r#   r@   zVersion.release  s     }}r%   c                    | j                   S )a  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)
        )r   rS   s    r#   r4   zVersion.pre  s     yyr%   c                <    | j                   r| j                   d   S dS )zThe post-release number of the version.

        >>> print(Version("1.2.3").post)
        None
        >>> Version("1.2.3.post1").post
        1
        r   N)r   rS   s    r#   r0   zVersion.post  s     !%

tzz!}44r%   c                <    | j                   r| j                   d   S dS )zThe development number of the version.

        >>> print(Version("1.2.3").dev)
        None
        >>> Version("1.2.3.dev1").dev
        1
        r   N)r   rS   s    r#   rB   zVersion.dev  s      $yytyy|2d2r%   c                `    | j                   r"dj                  d | j                   D              S y)zThe local version segment of the version.

        >>> print(Version("1.2.3").local)
        None
        >>> Version("1.2.3+abc").local
        'abc'
        r   c              3  2   K   | ]  }t        |        y wrR   r   )r   xs     r#   r   z Version.local.<locals>.<genexpr>,  s     8qCF8s   N)r   r   rS   s    r#   rD   zVersion.local"  s'     ;;888DKK888r%   c                >    t        |       j                  dd      d   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   r   rS   s    r#   publiczVersion.public0  s     4ysA&q))r%   c                    dj                  t        t        | j                              }| j                  r| j                   d| S |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.
        r   r   )r   r   r   r@   r?   )rT   release_segments     r#   base_versionzVersion.base_version=  s>     ((3sDLL#9:48JJ$**Q/0SOSr%   c                >    | j                   duxs | j                  duS )aT  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)rB   r4   rS   s    r#   is_prereleasezVersion.is_prereleaseN  s!     xxt#;txxt';;r%   c                    | j                   duS )zWhether this version is a post-release.

        >>> Version("1.2.3").is_postrelease
        False
        >>> Version("1.2.3.post1").is_postrelease
        True
        N)r0   rS   s    r#   is_postreleasezVersion.is_postrelease_  s     yy$$r%   c                    | j                   duS )zWhether this version is a development release.

        >>> Version("1.2.3").is_devrelease
        False
        >>> Version("1.2.3.dev1").is_devrelease
        True
        N)rB   rS   s    r#   is_devreleasezVersion.is_devreleasej  s     xxt##r%   c                T    t        | j                        dk\  r| j                  d   S dS )zqThe first item of :attr:`release` or ``0`` if unavailable.

        >>> Version("1.2.3").major
        1
        r   r   r   r@   rS   s    r#   majorzVersion.majoru  s'     #&dll"3q"8t||A?a?r%   c                T    t        | j                        dk\  r| j                  d   S dS )zThe second item of :attr:`release` or ``0`` if unavailable.

        >>> Version("1.2.3").minor
        2
        >>> Version("1").minor
        0
        r   r   r   r   rS   s    r#   minorzVersion.minor~  '     #&dll"3q"8t||A?a?r%   c                T    t        | j                        dk\  r| j                  d   S dS )zThe third item of :attr:`release` or ``0`` if unavailable.

        >>> Version("1.2.3").micro
        3
        >>> Version("1").micro
        0
        r   r   r   r   rS   s    r#   microzVersion.micro  r   r%   N)rL   r   r'   None)r    zUnpack[_VersionReplace]r'   r   )r'   CmpKey)r'   r   )r{   r   r'   r   )r'   r   rl   r'   r   )r'   r   )r'   r>   )r'   rC   )r'   rn   )%rF   rG   rH   rN   ro   __match_args__recompiler8   VERBOSE
IGNORECASEr   rI   r   r   rr   rU   r,   r   setterr   r   r   r?   r@   r4   r0   rB   rD   r   r   r   r   r   r   r   r   r+   r%   r#   r:   r:   6  s   . XINRZZ0692::;UVFK
  
  !!4B 
 
 GH
 I 

 __GH I &>         5 5 3 3   
* 
* T T  < <  % % $ $ @ @ @ @ @ @r%   c                  :     e Zd ZdZd fdZed fd       Z xZS )_TrimmedReleaser+   c                4   t        |t              rx|j                  | _        |j                  | _        |j                  | _        |j
                  | _        |j                  | _        |j                  | _        |j                  | _        y t        | )  |       y rR   )r[   r:   r   r   r   r   r   r   r   superr   )rT   rL   r   s     r#   r   z_TrimmedRelease.__init__  sn    gw'!..DK#,,DMDIDI DJ!..DK%00DO!r%   c                    t         |   }t        |      }|}|dkD  r!||dz
     dk(  r|dz  }|dkD  r||dz
     dk(  r||k(  r|S |d| S )z
        Release segment without any trailing zeros.

        >>> _TrimmedRelease('1.0.0').release
        (1,)
        >>> _TrimmedRelease('0.0').release
        (0,)
        r   r   N)r   r@   r   )rT   rellen_releaser   r   s       r#   r@   z_TrimmedRelease.release  si     go#h!eAE
aFA !eAE
a;&s3CG3r%   )rL   zstr | Versionr'   r   r   )rF   rG   rH   ro   r   rr   r@   __classcell__)r   s   @r#   r   r     s!    I
" 4 4r%   r   c                    | r7| j                         } t        j                  | |       } | t        |xs d      fS |rdt        |      fS y )Nr   r0   )lower_LETTER_NORMALIZATIONgetrm   )letternumbers     r#   r   r     sS     
 '**66: s6;Q''' s6{""r%   z[\._-]c                R    | %t        d t        j                  |       D              S y)zR
    Takes a string like abc.1.twelve and turns it into ("abc", 1, "twelve").
    Nc              3  r   K   | ]/  }|j                         s|j                         n
t        |       1 y wrR   )isdigitr   rm   )r   parts     r#   r   z'_parse_local_version.<locals>.<genexpr>  s/      
 !%DJJLCI=
s   57)r   _local_version_separatorsr   )rD   s    r#   r   r     s4      
177>
 
 	
 r%   c                   t        |      }|}|r||dz
     dk(  r|dz  }|r||dz
     dk(  r||k(  r|n|d | }||	|t        }	n|t        }	n|}	|t        }
n|}
|t        }n|}|t        }nt        d |D              }| ||	|
||fS )Nr   r   c              3  T   K   | ]   }t        |t              r|d fnt        |f " yw)r   N)r[   rm   r   r   s     r#   r   z_cmpkey.<locals>.<genexpr>  s-      
IJz!S)QG0@!/DD
s   &()r   r   r   r   )r?   r@   r4   r0   rB   rD   r   r   r   r   r   r   r   s                r#   r   r     s     g,KA
A!#	Q A!#{*wH {t|"2 
 |#3  {"* }/  
NS
 
 (D%v55r%   )r"   r   r'   r&   )rL   r   r'   r:   )r{   r&   r'   rm   )r{   r&   r'   r   )r{   r&   r'   rA   )r{   r&   r'   z"tuple[Literal['post'], int] | None)r{   r&   r'   z!tuple[Literal['dev'], int] | None)r{   r&   r'   r   )r   rC   r   z str | bytes | SupportsInt | Noner'   r   )rD   rC   r'   r   )r?   rm   r@   r   r4   r   r0   r   rB   r   rD   r   r'   r   )ArN   
__future__r   r   sysrp   r   r   r   r   r   r	   r
   r   _structuresr   r   r   r   rq   typing_extensionsr   r   version_infor   r   r,   r(   r   __all__rm   r   	LocalTypeCmpPrePostDevTypeCmpLocalTyper   rn   VersionComparisonMethodr=   r;   
ValueErrorr9   rP   _VERSION_PATTERNreplace_VERSION_PATTERN_OLDimplementationnamer8   r   r   r   r}   r   r   r   r   r   r   r:   r   r   r   r   r   r+   r%   r#   <module>r     s   # 	 
 	 	 	 X W	.w2;" 		  D%S/3&'	,(<eCHoMN 	%c3h';U38_'L!MM
NPS
STV 
	#s(O
 #FF#3T#9: iu 	Z 3' 3't" H (//c:BB4M  	9,1A1AJ1N6)c.>.>.L
'!  
 	 ;R]]K	z \@l \@~
4g 4D @0 'BJJy1 	:6:6:6 
 :6 !	:6
 
 :6 :6 :6r%   