
    ce                    $   U d Z ddlmZ g dZddlZddlZddlZddlZddl	Z
 ej        d          Zded<   ej         G d d	                      Zd$dZd%dZej        	 d&dddd'd            Zej        	 d&ddd(d             Z	 d)d!d!dd*d#ZdS )+z!Utilities for version comparison.    )annotations)VersioncomparesortNz([0-9]+)ztyping.Final[re.Pattern[str]]NUMBERc                      e Zd ZdZddZej        dd            Zej        dd
            ZddZ	ddZ
ddZddZddZdS )r   z=Wrapper for versions strings that can be used for comparison.valuestr | Version | NonereturnNonec                V    t          |pd                                          | _        dS )z/Initialize new instance of a :class:`~Version`. N)strstripraw)selfr	   s     Flib/python3.11/site-packages/anaconda_navigator/utils/version_utils.py__init__zVersion.__init__   s%    &)%+2&6&6&<&<&>&>    tuple[str | int, ...]c                    t          d t          t                              | j                            D                       S )z
        Format-independent representation of a version.

        Might be used for a general comparison when version is not compatible with semver specifics.
        c              3  b   K   | ]*\  }}|d z  rt          |          nt          |          V  +dS )   N)intr   ).0indexparts      r   	<genexpr>z Version.parts.<locals>.<genexpr>#   sS       
 
t  !)3CIII#d))
 
 
 
 
 
r   )tuple	enumerater   splitr   r   s    r   partszVersion.parts   sH      
 
(dh)?)?@@
 
 
 
 
 	
r    packaging.version.Version | Nonec                    	 t           j                            | j                  S # t           j        j        $ r Y dS w xY w)z)Semver compatible version representation.N)	packagingversionr   r   InvalidVersionr"   s    r   r'   zVersion.version(   sH    	$,,TX666 / 	 	 	44	s   #& >>other
typing.Anyboolc                z    t          |t                    r | j        |j        k    p| j        |j        k    S t          S )zCheck if instances are equal.)
isinstancer   r   r'   NotImplementedr   r)   s     r   __eq__zVersion.__eq__0   s8    eW%% 	NH	)Mt|u}/LMr   r   c                *    t          | j                  S )zCompute a hash of an instance.)hashr   r"   s    r   __hash__zVersion.__hash__6   s    DH~~r   c                    t          |t                    r.| j        |j        | j        |j        k     S | j        |j        k     S t          S )z6Check if current instance is less than other instance.)r-   r   r'   r#   r.   r/   s     r   __lt__zVersion.__lt__:   sG    eW%% 	,(u}/H|em33:++r   r   c                @    t          |           j         d| j        dS ),Return string representation of an instance.())type__name__r   r"   s    r   __repr__zVersion.__repr__B   s$    t**%555555r   c                    | j         S )r7   )r   r"   s    r   __str__zVersion.__str__F   s	    xr   N)r	   r
   r   r   )r   r   )r   r$   )r)   r*   r   r+   )r   r   )r   r   )r;   
__module____qualname____doc__r   	functoolscached_propertyr#   r'   r0   r3   r5   r<   r>    r   r   r   r      s        GG? ? ? ? 	
 	
 	
 	
             6 6 6 6     r   r   r	   str | Versionr   c                N    t          | t                    r| S t          |           S )z2Make sure that :code:`value` is :class:`~Version`.)r-   r   )r	   s    r   
as_versionrG   K   s%    %!! 5>>r   leftrightr   c                b    t          |           } t          |          }| |k    rdS | |k     rdS dS )zCompare two versions.r      )rG   )rH   rI   s     r   r   r   R   s=    dDuEu}}qe||r1r   .)keep_versionsuniquevalues'collections.abc.Iterable[str | Version]reverser+   rM   typing.Literal[False]rN   	list[str]c                   dS zSort sequence of versions.NrD   rO   rQ   rM   rN   s       r   r   r   ]         r   )rN   typing.Literal[True]list[Version]c                   dS rU   rD   rV   s       r   r   r   h   rW   r   Flist[Version] | list[str]c                   |rt          |           } t          t          t          |           |          }|r|S t	          t          t
          |                    S )aG  
    Sort sequence of versions.

    :param values: Versions to sort.
    :param reverse: Perform a reversed sorting (from largest to smallest).
    :param keep_versions: Return list of versions instead of list of strings.
    :param unique: Remove repeating versions from the output.
    :return: List of sorted versions.
    )rQ   )setsortedmaprG   listr   )rO   rQ   rM   rN   results        r   r   r   s   sX       V"3z6#:#:GLLLF C  !!!r   )r	   rE   r   r   )rH   rE   rI   rE   r   r   ).)
rO   rP   rQ   r+   rM   rR   rN   r+   r   rS   )
rO   rP   rQ   r+   rM   rX   rN   r+   r   rY   )F)
rO   rP   rQ   r+   rM   r+   rN   r+   r   r[   )rA   
__future__r   __all__collections.abccollectionsrB   retypingpackaging.versionr&   compiler   __annotations__total_orderingr   rG   r   overloadr   rD   r   r   <module>rm      s   ( ' ' " " " " " "
(
(
(         				      )3
;(?(? ? ? ? ? 3 3 3 3 3 3 3 3l        % 03% % % % % %  %
 % % % % % % " $" " " " " " " "r   