o
    Mf[                     @   sZ  d Z ddlZddlZddlmZ ddlmZ g dZee	Z
G dd deZG d	d
 d
eZG dd deZedZdd ZeZG dd deZdd ZG dd deZeddfeddfeddfeddfeddfeddfed d!fed"d#fed$d%fed&d'ff
Zed(dfed)dfed*d!fed d!fed+dffZed,Zd-d. Zd/d0 Zed1ejZd2d2d3d2d4ddd5Zd6d7 ZG d8d9 d9eZ G d:d; d;eZ!ed<ejZ"d=d> Z#d?d@ Z$G dAdB dBeZ%G dCdD dDeZ&G dEdF dFeZ'e'eeee'ee!dGdH e'e$e&edIZ(e(dJ e(dK< dLdM Z)dS )Nz~
Implementation of a flexible versioning scheme providing support for PEP-440,
setuptools-compatible and semantic versioning.
    N   )string_typesparse_requirement)NormalizedVersionNormalizedMatcherLegacyVersionLegacyMatcherSemanticVersionSemanticMatcherUnsupportedVersionError
get_schemec                   @   s   e Zd ZdZdS )r   zThis is an unsupported version.N)__name__
__module____qualname____doc__ r   r   ]/var/www/html/analyze/labelStudio/lib/python3.10/site-packages/pip/_vendor/distlib/version.pyr      s    r   c                   @   sx   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Zdd Zdd Zdd Zedd ZdS )Versionc                 C   s@   |   | _}| | | _}t|tsJ t|dksJ d S )Nr   )strip_stringparse_parts
isinstancetuplelen)selfspartsr   r   r   __init__   s   zVersion.__init__c                 C      t d)Nzplease implement in a subclassNotImplementedErrorr   r   r   r   r   r   %      zVersion.parsec                 C   s$   t | t |krtd| |f d S )Nzcannot compare %r and %r)type	TypeErrorr   otherr   r   r   _check_compatible(   s   zVersion._check_compatiblec                 C   s   |  | | j|jkS Nr)   r   r'   r   r   r   __eq__,      
zVersion.__eq__c                 C      |  | S r*   r,   r'   r   r   r   __ne__0      zVersion.__ne__c                 C   s   |  | | j|jk S r*   r+   r'   r   r   r   __lt__3   r-   zVersion.__lt__c                 C   s   |  |p	| | S r*   r2   r,   r'   r   r   r   __gt__7   s   zVersion.__gt__c                 C      |  |p	| |S r*   r3   r'   r   r   r   __le__:      zVersion.__le__c                 C   r5   r*   )r4   r,   r'   r   r   r   __ge__=   r7   zVersion.__ge__c                 C   s
   t | jS r*   )hashr   r   r   r   r   __hash__A      
zVersion.__hash__c                 C      d| j j| jf S )Nz%s('%s')	__class__r   r   r:   r   r   r   __repr__D      zVersion.__repr__c                 C      | j S r*   r   r:   r   r   r   __str__G      zVersion.__str__c                 C   r    )NzPlease implement in subclasses.r!   r:   r   r   r   is_prereleaseJ   s   zVersion.is_prereleaseN)r   r   r   r   r   r)   r,   r0   r2   r4   r6   r8   r;   r@   rD   propertyrF   r   r   r   r   r      s    r   c                	   @   s   e Zd ZdZdd dd dd dd dd dd d	d d
d dZdd Zdd Zdd Zedd Z	dd Z
dd Zdd Zdd Zdd Zdd ZdS ) MatcherNc                 C   s   | |k S r*   r   vcpr   r   r   <lambda>T       zMatcher.<lambda>c                 C   s   | |kS r*   r   rI   r   r   r   rM   U   rN   c                 C   s   | |kp| |k S r*   r   rI   r   r   r   rM   V       c                 C      | |kp| |kS r*   r   rI   r   r   r   rM   W   rO   c                 C      | |kS r*   r   rI   r   r   r   rM   X   rN   c                 C   rQ   r*   r   rI   r   r   r   rM   Y   rN   c                 C   rP   r*   r   rI   r   r   r   rM   [   rO   c                 C   s   | |kS r*   r   rI   r   r   r   rM   \   rN   )<><=>======~=!=c                 C      t |S r*   r   r#   r   r   r   r   a   r$   zMatcher.parse_requirementc                 C   s   | j d u r	td|  | _}| |}|std| |j| _| j | _g }|jrb|jD ]2\}}|	drQ|dvrBtd| |d d d}}|  | n|  |d}}|
|||f q/t|| _d S )	NzPlease specify a version classzNot valid: %rz.*)rV   rY   z#'.*' not allowed for %r constraintsTF)version_class
ValueErrorr   r   r   namelowerkeyconstraintsendswithappendr   r   )r   r   rclistopvnprefixr   r   r   r   d   s*   


zMatcher.__init__c                 C   sx   t |tr
| |}| jD ],\}}}| j|}t |tr"t| |}|s0d|| jjf }t	|||||s9 dS qdS )z
        Check if the provided version matches the constraints.

        :param version: The version to match against this instance.
        :type version: String or :class:`Version` instance.
        z%r not implemented for %sFT)
r   r   r\   r   
_operatorsgetgetattrr?   r   r"   )r   versionoperator
constraintrh   fmsgr   r   r   match   s   




zMatcher.matchc                 C   s6   d }t | jdkr| jd d dv r| jd d }|S )Nr   r   )rV   rW   )r   r   )r   resultr   r   r   exact_version   s    zMatcher.exact_versionc                 C   s0   t | t |ks| j|jkrtd| |f d S )Nzcannot compare %s and %s)r%   r^   r&   r'   r   r   r   r)      s   zMatcher._check_compatiblec                 C   s"   |  | | j|jko| j|jkS r*   )r)   r`   r   r'   r   r   r   r,      s   
zMatcher.__eq__c                 C   r.   r*   r/   r'   r   r   r   r0      r1   zMatcher.__ne__c                 C   s   t | jt | j S r*   )r9   r`   r   r:   r   r   r   r;      r7   zMatcher.__hash__c                 C   r=   )Nz%s(%r)r>   r:   r   r   r   r@      rA   zMatcher.__repr__c                 C   rB   r*   rC   r:   r   r   r   rD      rE   zMatcher.__str__)r   r   r   r\   ri   r   r   rq   rG   rs   r)   r,   r0   r;   r@   rD   r   r   r   r   rH   O   s,    
rH   zk^v?(\d+!)?(\d+(\.\d+)*)((a|b|c|rc)(\d+))?(\.(post)(\d+))?(\.(dev)(\d+))?(\+([a-zA-Z\d]+(\.[a-zA-Z\d]+)?))?$c                 C   s  |   } t| }|std|  | }tdd |d dD }t|dkrA|d dkrA|d d }t|dkrA|d dks/|d sHd}n
t|d d d }|dd	 }|d
d }|dd }|d }|dkrod}n
|d t|d f}|dkrd}n
|d t|d f}|dkrd}n
|d t|d f}|d u rd}n"g }	|dD ]}
|
	 rdt|
f}
nd|
f}
|	
|
 qt|	}|s|s|rd}nd}|sd}|sd}||||||fS )NzNot a valid version: %sc                 s       | ]}t |V  qd S r*   int.0rJ   r   r   r   	<genexpr>       z_pep_440_key.<locals>.<genexpr>r   .r            	   
         )NNr   )ar|   )z)_)final)r   PEP440_VERSION_RErq   r   groupsr   splitr   rv   isdigitrc   )r   mr   numsepochprepostdevlocalr   partr   r   r   _pep_440_key   sV   
r   c                   @   s0   e Zd ZdZdd Zeg dZedd ZdS )r   aI  A rational version.

    Good:
        1.2         # equivalent to "1.2.0"
        1.2.0
        1.2a1
        1.2.3a2
        1.2.3b1
        1.2.3c1
        1.2.3.4
        TODO: fill this out

    Bad:
        1           # minimum two numbers
        1.2a        # release level must have a release serial
        1.2.3b
    c                 C   s<   t |}t|}| }tdd |d dD | _|S )Nc                 s   rt   r*   ru   rw   r   r   r   ry     rz   z*NormalizedVersion.parse.<locals>.<genexpr>r   r{   )_normalized_keyr   rq   r   r   r   _release_clause)r   r   rr   r   r   r   r   r   r   
  s
   
zNormalizedVersion.parse)r   brK   rcr   c                    s   t  fdd jD S )Nc                 3   s"    | ]}|r|d   j v V  qdS )r   N)PREREL_TAGS)rx   tr:   r   r   ry     s     z2NormalizedVersion.is_prerelease.<locals>.<genexpr>)anyr   r:   r   r:   r   rF     s   zNormalizedVersion.is_prereleaseN)	r   r   r   r   r   setr   rG   rF   r   r   r   r   r      s    r   c                 C   s>   t | } t |}| |krdS | |sdS t|}| | dkS )NTFr{   )str
startswithr   )xynr   r   r   _match_prefix  s   
r   c                	   @   sn   e Zd ZeZddddddddd	Zd
d Zdd Zdd Zdd Z	dd Z
dd Zdd Zdd Zdd ZdS )r   _match_compatible	_match_lt	_match_gt	_match_le	_match_ge	_match_eq_match_arbitrary	_match_ne)rX   rR   rS   rT   rU   rV   rW   rY   c                 C   sV   |rd|vo
|j d }n|j d  o|j d }|r'|jddd }| |}||fS )N+r|   r   r   )r   r   r   r\   )r   rl   rn   rh   strip_localr   r   r   r   _adjust_local6  s   
zNormalizedMatcher._adjust_localc                 C   sD   |  |||\}}||krdS |j}ddd |D }t|| S )NFr{   c                 S      g | ]}t |qS r   r   rx   ir   r   r   
<listcomp>I      z/NormalizedMatcher._match_lt.<locals>.<listcomp>r   r   joinr   r   rl   rn   rh   release_clausepfxr   r   r   r   D     zNormalizedMatcher._match_ltc                 C   sD   |  |||\}}||krdS |j}ddd |D }t|| S )NFr{   c                 S   r   r   r   r   r   r   r   r   Q  r   z/NormalizedMatcher._match_gt.<locals>.<listcomp>r   r   r   r   r   r   L  r   zNormalizedMatcher._match_gtc                 C   s   |  |||\}}||kS r*   r   r   rl   rn   rh   r   r   r   r   T     zNormalizedMatcher._match_lec                 C   s   |  |||\}}||kS r*   r   r   r   r   r   r   X  r   zNormalizedMatcher._match_gec                 C   s0   |  |||\}}|s||k}|S t||}|S r*   r   r   r   rl   rn   rh   rr   r   r   r   r   \  s   
zNormalizedMatcher._match_eqc                 C   s   t |t |kS r*   r   r   r   r   r   r   d  s   z"NormalizedMatcher._match_arbitraryc                 C   s2   |  |||\}}|s||k}|S t|| }|S r*   r   r   r   r   r   r   g  s   zNormalizedMatcher._match_nec                 C   sf   |  |||\}}||krdS ||k rdS |j}t|dkr$|d d }ddd |D }t||S )NTFr   r|   r{   c                 S   r   r   r   r   r   r   r   r   z  r   z7NormalizedMatcher._match_compatible.<locals>.<listcomp>)r   r   r   r   r   r   r   r   r   r   o  s   
z#NormalizedMatcher._match_compatibleN)r   r   r   r   r\   ri   r   r   r   r   r   r   r   r   r   r   r   r   r   r   '  s(    r   z[.+-]$ z^[.](\d)z0.\1z^[.-]z
^\((.*)\)$\1z^v(ersion)?\s*(\d+)z\2z^r(ev)?\s*(\d+)z[.]{2,}r{   z\b(alfa|apha)\balphaz\b(pre-alpha|prealpha)\bz	pre.alphaz	\(beta\)$betaz
^[:~._+-]+z
[,*")([\]]z[~:+_ -]z\.$z(\d+(\.\d+)*)c                 C   sN  |    }tD ]
\}}|||}q|sd}t|}|s#d}|}nZ| d d}dd |D }t|dk rD|	d t|dk s9t|dkrS||
 d }nddd |dd D ||
 d  }|dd }dd	d |D }|  }|rtD ]
\}}|||}q|s|}nd
|v rdnd}|| | }t|sd}|S )z
    Try to suggest a semantic form for a version for which
    _suggest_normalized_version couldn't come up with anything.
    z0.0.0r   r{   c                 S   r   r   ru   r   r   r   r   r     r   z-_suggest_semantic_version.<locals>.<listcomp>   Nc                 S   r   r   r   r   r   r   r   r     r   c                 S   r   r   r   r   r   r   r   r     r   r   -r   )r   r_   _REPLACEMENTSsub_NUMERIC_PREFIXrq   r   r   r   rc   endr   _SUFFIX_REPLACEMENTS	is_semver)r   rr   patreplr   rh   suffixsepr   r   r   _suggest_semantic_version  s<   

,r   c                 C   sb  zt |  | W S  ty   Y nw |  }dD ]
\}}|||}qtdd|}tdd|}tdd|}tdd	|}td
d|}|drP|dd }tdd|}tdd|}tdd|}tdd|}tdd|}tdd|}tdd|}tdd|}tdd|}tdd|}tdd |}zt | W |S  ty   d}Y |S w )!a  Suggest a normalized version close to the given version string.

    If you have a version string that isn't rational (i.e. NormalizedVersion
    doesn't like it) then you might be able to get an equivalent (or close)
    rational version from this function.

    This does a number of simple normalizations to the given string, based
    on observation of versions currently in use on PyPI. Given a dump of
    those version during PyCon 2009, 4287 of them:
    - 2312 (53.93%) match NormalizedVersion without change
      with the automatic suggestion
    - 3474 (81.04%) match when using this suggestion method

    @param s {str} An irrational version string.
    @returns A rational version string, or None, if couldn't determine one.
    ))z-alphar   )z-betar   )r   r   )r   r   )r   rK   )z-finalr   )z-prerK   )z-releaser   )z.releaser   )z-stabler   )r   r{   )r   r{   ) r   )z.finalr   )r   r   zpre$pre0zdev$dev0z([abc]|rc)[\-\.](\d+)$z\1\2z[\-\.](dev)[\-\.]?r?(\d+)$z.\1\2z[.~]?([abc])\.?r   rJ   r   Nz\b0+(\d+)(?!\d)z(\d+[abc])$z\g<1>0z\.?(dev-r|dev\.r)\.?(\d+)$z.dev\2z-(a|b|c)(\d+)$z[\.\-](dev|devel)$z.dev0z(?![\.\-])dev$z(final|stable)$r   z\.?(r|-|-r)\.?(\d+)$z.post\2z\.?(dev|git|bzr)\.?(\d+)$z\.?(pre|preview|-c)(\d+)$zc\g<2>zp(\d+)$z.post\1)r   r   r_   replacerer   r   )r   rsorigr   r   r   r   _suggest_normalized_version  sD   
	
r   z([a-z]+|\d+|[\.-])rK   zfinal-@)r   previewr   r   r   r   r{   c                 C   s   dd }g }|| D ]8}| dr=|dk r)|r)|d dkr)|  |r)|d dks|r=|d dkr=|  |r=|d dks1|| q
t|S )Nc                 S   st   g }t |  D ])}t||}|r2d|d d   kr!dkr)n n|d}nd| }|| q	|d |S )N0r   9   **final)_VERSION_PARTr   r_   _VERSION_REPLACErj   zfillrc   )r   rr   rL   r   r   r   	get_partsC  s    

z_legacy_key.<locals>.get_partsr   r   r|   z*final-00000000)r   poprc   r   )r   r   rr   rL   r   r   r   _legacy_keyB  s   
r   c                   @       e Zd Zdd Zedd ZdS )r   c                 C   rZ   r*   )r   r#   r   r   r   r   ]  r$   zLegacyVersion.parsec                 C   s:   d}| j D ]}t|tr|dr|dk rd} |S q|S )NFr   r   T)r   r   r   r   )r   rr   r   r   r   r   rF   `  s   
 zLegacyVersion.is_prereleaseNr   r   r   r   rG   rF   r   r   r   r   r   \      r   c                   @   s4   e Zd ZeZeejZded< e	dZ
dd ZdS )r	   r   rX   z^(\d+(\.\d+)*)c                 C   s`   ||k rdS | j t|}|std|| dS | d }d|v r+|ddd }t||S )NFzACannot compute compatible match for version %s  and constraint %sTr   r{   r   )
numeric_rerq   r   loggerwarningr   rsplitr   )r   rl   rn   rh   r   r   r   r   r   r   s  s   
zLegacyMatcher._match_compatibleN)r   r   r   r   r\   dictrH   ri   r   compiler   r   r   r   r   r   r	   k  s    

r	   zN^(\d+)\.(\d+)\.(\d+)(-[a-z0-9]+(\.[a-z0-9-]+)*)?(\+[a-z0-9]+(\.[a-z0-9-]+)*)?$c                 C   s
   t | S r*   )
_SEMVER_RErq   )r   r   r   r   r     r<   r   c           	      C   sn   dd }t | }|st| | }dd |d d D \}}}||d d||d d}}|||f||fS )	Nc                 S   s:   | d u r	|f}|S | dd   d}tdd |D }|S )Nr   r{   c                 S   s"   g | ]}|  r|d n|qS )r   )r   r   )rx   rL   r   r   r   r     s   " z5_semantic_key.<locals>.make_tuple.<locals>.<listcomp>)r   r   )r   absentrr   r   r   r   r   
make_tuple  s   z!_semantic_key.<locals>.make_tuplec                 S   r   r   ru   r   r   r   r   r     r   z!_semantic_key.<locals>.<listcomp>r   |   r   )r   r   r   )	r   r   r   r   majorminorpatchr   buildr   r   r   _semantic_key  s   
r   c                   @   r   )r
   c                 C   rZ   r*   )r   r#   r   r   r   r     r$   zSemanticVersion.parsec                 C   s   | j d d dkS )Nr   r   r   )r   r:   r   r   r   rF     s   zSemanticVersion.is_prereleaseNr   r   r   r   r   r
     r   r
   c                   @   s   e Zd ZeZdS )r   N)r   r   r   r
   r\   r   r   r   r   r     s    r   c                   @   s6   e Zd ZdddZdd Zdd Zdd	 Zd
d ZdS )VersionSchemeNc                 C   s   || _ || _|| _d S r*   )r`   matcher	suggester)r   r`   r   r   r   r   r   r     s   
zVersionScheme.__init__c                 C   s0   z| j | d}W |S  ty   d}Y |S w NTF)r   r\   r   r   r   rr   r   r   r   is_valid_version  s   zVersionScheme.is_valid_versionc                 C   s.   z
|  | d}W |S  ty   d}Y |S w r   )r   r   r   r   r   r   is_valid_matcher  s   
zVersionScheme.is_valid_matcherc                 C   s$   | dr|dd }| d| S )z:
        Used for processing some metadata fields
        ,Nr|   zdummy_name (%s))rb   r   r#   r   r   r   is_valid_constraint_list  s   
z&VersionScheme.is_valid_constraint_listc                 C   s    | j d u r	d }|S |  |}|S r*   )r   r   r   r   r   suggest  s
   

zVersionScheme.suggestr*   )r   r   r   r   r   r   r  r  r   r   r   r   r     s    
	r   c                 C   s   |S r*   r   r#   r   r   r   rM     s    rM   )
normalizedlegacysemanticr  defaultc                 C   s   | t vr
td|  t |  S )Nzunknown scheme name: %r)_SCHEMESr]   )r^   r   r   r   r     s   r   )*r   loggingr   compatr   utilr   __all__	getLoggerr   r   r]   r   objectr   rH   r   r   r   r   r   r   r   r   r   r   r   r   Ir   r   r   r   r	   r   r   r   r
   r   r   r  r   r   r   r   r   <module>   s   
1
d=$W
.r	'