<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet"
        integrity="sha384-GLhlTQ8iRABdZLl6O3oVMWSktQOp6b7In1Zl3/Jr59b6EGGoI1aFkw7cmDA6j6gD" crossorigin="anonymous">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.3.0/css/all.min.css"
        integrity="sha512-SzlrxWUlpfuzQ+pcUCosxcglQRNAq/DZjVsC0lE40xsADsfeQoEypE+enwcOiGjk/bSuGGKHEyjSoQ1zVisanQ=="
        crossorigin="anonymous" referrerpolicy="no-referrer" />
</head>
</html>
U
    .e_[                     @   sf  d Z ddlZddlZddlmZ ddlmZ dddd	d
dddg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d0Zd1d2 Zd3d4 Zed5ejZd6d6d7d6d8ddd9Zd:d; ZG d<d deZ G d=d	 d	eZ!ed>ejZ"d?d@ Z#dAdB Z$G dCd
 d
eZ%G dDd deZ&G dEdF dFeZ'e'eeee'ee!dGdH e'e$e&edIZ(e(dJ e(dK< dLd Z)dS )Mz~
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   ?/usr/lib/python3.8/site-packages/pip/_vendor/distlib/version.pyr      s   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"   |   | _}| | | _}d S N)strip_stringparse_parts)selfspartsr   r   r   __init__   s    zVersion.__init__c                 C   s   t dd S )Nzplease implement in a subclassNotImplementedErrorr   r   r   r   r   r   %   s    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 r   r%   r   r#   r   r   r   __eq__,   s    
zVersion.__eq__c                 C   s   |  | S r   r'   r#   r   r   r   __ne__0   s    zVersion.__ne__c                 C   s   |  | | j|jk S r   r&   r#   r   r   r   __lt__3   s    
zVersion.__lt__c                 C   s   |  |p| | S r   r*   r'   r#   r   r   r   __gt__7   s    zVersion.__gt__c                 C   s   |  |p| |S r   r+   r#   r   r   r   __le__:   s    zVersion.__le__c                 C   s   |  |p| |S r   )r,   r'   r#   r   r   r   __ge__=   s    zVersion.__ge__c                 C   s
   t | jS r   )hashr   r   r   r   r   __hash__A   s    zVersion.__hash__c                 C   s   d| j j| jf S )Nz%s('%s')	__class__r   r   r0   r   r   r   __repr__D   s    zVersion.__repr__c                 C   s   | j S r   r   r0   r   r   r   __str__G   s    zVersion.__str__c                 C   s   t dd S )NzPlease implement in subclasses.r   r0   r   r   r   is_prereleaseJ   s    zVersion.is_prereleaseN)r   r   r   r   r   r%   r'   r)   r*   r,   r-   r.   r1   r4   r6   propertyr7   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   r:   r   r   r   r>   U   r?   c                 C   s   | |kp| |k S r   r   r:   r   r   r   r>   V   r?   c                 C   s   | |kp| |kS r   r   r:   r   r   r   r>   W   r?   c                 C   s   | |kS r   r   r:   r   r   r   r>   X   r?   c                 C   s   | |kS r   r   r:   r   r   r   r>   Y   r?   c                 C   s   | |kp| |kS r   r   r:   r   r   r   r>   [   r?   c                 C   s   | |kS r   r   r:   r   r   r   r>   \   r?   )<><=>======~=!=c                 C   s   t |S r   r   r    r   r   r   r   a   s    zMatcher.parse_requirementc                 C   s   | j d krtd|  | _}| |}|s:td| |j| _| j | _g }|jr|jD ]d\}}|	dr|dkrtd| |d d d }}|  | n|  |d }}|
|||f q^t|| _d S )	NzPlease specify a version classzNot valid: %rz.*)rD   rG   z#'.*' not allowed for %r constraintsTF)version_class
ValueErrorr   r   r   namelowerkeyZconstraintsendswithappendtupler   )r   r   rZclistopZvnprefixr   r   r   r   d   s*    


zMatcher.__init__c                 C   sx   t |tr| |}| jD ]X\}}}| j|}t |trDt| |}|s`d|| jjf }t	|||||s 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)

isinstancer   rI   r   
_operatorsgetgetattrr3   r   r   )r   versionoperator
constraintrS   fmsgr   r   r   match   s    




zMatcher.matchc                 C   s6   d }t | jdkr2| jd d dkr2| jd d }|S )Nr   r   )rD   rE   )lenr   )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!   rK   r"   r#   r   r   r   r%      s    zMatcher._check_compatiblec                 C   s"   |  | | j|jko | j|jkS r   )r%   rM   r   r#   r   r   r   r'      s    
zMatcher.__eq__c                 C   s   |  | S r   r(   r#   r   r   r   r)      s    zMatcher.__ne__c                 C   s   t | jt | j S r   )r/   rM   r   r0   r   r   r   r1      s    zMatcher.__hash__c                 C   s   d| j j| jf S )Nz%s(%r)r2   r0   r   r   r   r4      s    zMatcher.__repr__c                 C   s   | j S r   r5   r0   r   r   r   r6      s    zMatcher.__str__)r   r   r   rI   rU   r   r   r]   r8   r`   r%   r'   r)   r1   r4   r6   r   r   r   r   r9   O   s*   
r9   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rl|d dkrl|d d }qF|d szd}nt|d }|dd	 }|d
d }|dd }|d }|dkrd}n|d t|d f}|dkrd}n|d t|d f}|dkrd}n|d t|d f}|d kr*d}nHg }	|dD ]0}
|
	 rTdt|
f}
nd|
f}
|	
|
 q8t|	}|s|s|rd}nd}|sd}|sd}||||||fS )NzNot a valid version: %sc                 s   s   | ]}t |V  qd S r   int.0r;   r   r   r   	<genexpr>   s     z_pep_440_key.<locals>.<genexpr>r   .r            	   
         )NNr   )arg   )z)_)final)r   PEP440_VERSION_REr]   r   groupsrP   splitr^   rb   isdigitrO   )r   mrt   ZnumsZepochpreZpostdevZlocalr   partr   r   r   _pep_440_key   sT    



r{   c                   @   s6   e Zd ZdZdd Zedddddg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   s   | ]}t |V  qd S r   ra   rc   r   r   r   re     s     z*NormalizedVersion.parse.<locals>.<genexpr>r   rf   )_normalized_keyrs   r]   rt   rP   ru   _release_clause)r   r   r_   rw   rt   r   r   r   r   
  s
    
zNormalizedVersion.parsero   br<   rcry   c                    s   t  fdd jD S )Nc                 3   s    | ]}|r|d   j kV  qdS )r   N)PREREL_TAGS)rd   tr0   r   r   re     s      z2NormalizedVersion.is_prerelease.<locals>.<genexpr>)anyr   r0   r   r0   r   r7     s    zNormalizedVersion.is_prereleaseN)	r   r   r   r   r   setr   r8   r7   r   r   r   r   r      s
   c                 C   s>   t | } t |}| |krdS | |s*dS t|}| | dkS )NTFrf   )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)rF   r@   rA   rB   rC   rD   rE   rG   c                 C   sV   |rd|ko|j d }n|j d  o,|j d }|rN|jddd }| |}||fS )N+rg   r   r   )r   r   ru   rI   )r   rX   rZ   rS   Z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 )NFrf   c                 S   s   g | ]}t |qS r   r   rd   ir   r   r   
<listcomp>I  s     z/NormalizedMatcher._match_lt.<locals>.<listcomp>r   r}   joinr   r   rX   rZ   rS   Zrelease_clauseZpfxr   r   r   r   D  s    zNormalizedMatcher._match_ltc                 C   sD   |  |||\}}||krdS |j}ddd |D }t|| S )NFrf   c                 S   s   g | ]}t |qS r   r   r   r   r   r   r   Q  s     z/NormalizedMatcher._match_gt.<locals>.<listcomp>r   r   r   r   r   r   L  s    zNormalizedMatcher._match_gtc                 C   s   |  |||\}}||kS r   r   r   rX   rZ   rS   r   r   r   r   T  s    zNormalizedMatcher._match_lec                 C   s   |  |||\}}||kS r   r   r   r   r   r   r   X  s    zNormalizedMatcher._match_gec                 C   s.   |  |||\}}|s ||k}n
t||}|S r   r   r   r   rX   rZ   rS   r_   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   s0   |  |||\}}|s ||k}n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rH|d d }ddd |D }t||S )NTFr   rg   rf   c                 S   s   g | ]}t |qS r   r   r   r   r   r   r   z  s     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   rI   rU   r   r   r   r   r   r   r   r   r   r   r   r   r   r   '  s&   z[.+-]$ z^[.](\d)z0.\1z^[.-]z
^\((.*)\)$\1z^v(ersion)?\s*(\d+)z\2z^r(ev)?\s*(\d+)z[.]{2,}rf   z\b(alfa|apha)\balphaz\b(pre-alpha|prealpha)\bz	pre.alphaz	\(beta\)$betaz
^[:~._+-]+z
[,*")([\]]z[~:+_ -]z\.$z(\d+(\.\d+)*)c                 C   sL  |    }tD ]\}}|||}q|s.d}t|}|sFd}|}n| d d}dd |D }t|dk r~|	d qft|dkr||
 d }n8ddd |dd D ||
 d  }|dd }dd	d |D }|  }|rtD ]\}}|||}q|s|}nd
|kr*dnd}|| | }t|sHd}|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   rf   c                 S   s   g | ]}t |qS r   ra   r   r   r   r   r     s     z-_suggest_semantic_version.<locals>.<listcomp>   Nc                 S   s   g | ]}t |qS r   r   r   r   r   r   r     s     c                 S   s   g | ]}t |qS r   r   r   r   r   r   r     s     ry   -r   )r   rL   _REPLACEMENTSsub_NUMERIC_PREFIXr]   rt   ru   r^   rO   endr   _SUFFIX_REPLACEMENTS	is_semver)r   r_   Zpatreplrw   rS   suffixsepr   r   r   _suggest_semantic_version  s:    
,
r   c                 C   sh  zt |  | W S  tk
r"   Y nX |  }dD ]\}}|||}q0tdd|}tdd|}tdd|}tdd	|}td
d|}|dr|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 n tk
rb   d}Y nX |S )!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-alpharo   )z-betar~   )r   ro   )r   r~   )r   r<   )z-finalr   )z-prer<   )z-releaser   )z.releaser   )z-stabler   )r   rf   )rq   rf   ) r   )z.finalr   )rr   r   zpre$Zpre0zdev$Zdev0z([abc]|rc)[\-\.](\d+)$z\1\2z[\-\.](dev)[\-\.]?r?(\d+)$z.\1\2z[.~]?([abc])\.?r   r;   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   rL   replacerer   r   )r   ZrsZorigr   r   r   r   _suggest_normalized_version  s>    
	
r   z([a-z]+|\d+|[\.-])r<   zfinal-@)rx   Zpreviewr   r   ry   r   rf   c                 C   sr   dd }g }|| D ]T}| dr^|dk rD|rD|d dkrD|  q*|r^|d dkr^|  qD|| qt|S )Nc                 S   st   g }t |  D ]R}t||}|rd|d d   krBdkrRn n|d}nd| }|| q|d |S )N0r   9   **final)_VERSION_PARTru   rL   _VERSION_REPLACErV   zfillrO   )r   r_   r=   r   r   r   	get_partsC  s     
z_legacy_key.<locals>.get_partsr   r   rg   z*final-Z00000000)r   poprO   rP   )r   r   r_   r=   r   r   r   _legacy_keyB  s    


r   c                   @   s    e Zd Zdd Zedd ZdS )r   c                 C   s   t |S r   )r   r    r   r   r   r   ]  s    zLegacyVersion.parsec                 C   s8   d}| j D ](}t|tr
|dr
|dk r
d} q4q
|S )NFr   r   T)r   rT   r   r   )r   r_   r   r   r   r   r7   `  s    
zLegacyVersion.is_prereleaseNr   r   r   r   r8   r7   r   r   r   r   r   \  s   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   rF   z^(\d+(\.\d+)*)c                 C   s`   ||k rdS | j t|}|s2td|| dS | d }d|krV|ddd }t||S )NFzACannot compute compatible match for version %s  and constraint %sTr   rf   r   )
numeric_rer]   r   loggerZwarningrt   rsplitr   )r   rX   rZ   rS   rw   r   r   r   r   r   s  s     zLegacyMatcher._match_compatibleN)r   r   r   r   rI   dictr9   rU   r   compiler   r   r   r   r   r   r	   k  s
   

zN^(\d+)\.(\d+)\.(\d+)(-[a-z0-9]+(\.[a-z0-9-]+)*)?(\+[a-z0-9]+(\.[a-z0-9-]+)*)?$c                 C   s
   t | S r   )
_SEMVER_REr]   )r   r   r   r   r     s    r   c           	      C   sn   dd }t | }|st| | }dd |d d D \}}}||d d||d d }}|||f||fS )	Nc                 S   s8   | d kr|f}n$| dd   d}tdd |D }|S )Nr   rf   c                 S   s"   g | ]}|  r|d n|qS )r   )rv   r   )rd   r=   r   r   r   r     s     z5_semantic_key.<locals>.make_tuple.<locals>.<listcomp>)ru   rP   )r   Zabsentr_   r   r   r   r   
make_tuple  s
    z!_semantic_key.<locals>.make_tuplec                 S   s   g | ]}t |qS r   ra   r   r   r   r   r     s     z!_semantic_key.<locals>.<listcomp>r   |   r   )r   r   rt   )	r   r   rw   rt   majorminorZpatchrx   Zbuildr   r   r   _semantic_key  s    
r   c                   @   s    e Zd Zdd Zedd ZdS )r
   c                 C   s   t |S r   )r   r    r   r   r   r     s    zSemanticVersion.parsec                 C   s   | j d d dkS )Nr   r   r   )r   r0   r   r   r   r7     s    zSemanticVersion.is_prereleaseNr   r   r   r   r   r
     s   c                   @   s   e Zd ZeZdS )r   N)r   r   r   r
   rI   r   r   r   r   r     s   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   )rM   matcher	suggester)r   rM   r   r   r   r   r   r     s    zVersionScheme.__init__c                 C   s2   z| j | d}W n tk
r,   d}Y nX |S NTF)r   rI   r   r   r   r_   r   r   r   is_valid_version  s    
zVersionScheme.is_valid_versionc                 C   s0   z|  | d}W n tk
r*   d}Y nX |S r   )r   r   r   r   r   r   is_valid_matcher  s    

zVersionScheme.is_valid_matcherc                 C   s   |  d| S )z:
        Used for processing some metadata fields
        zdummy_name (%s))r   r    r   r   r   is_valid_constraint_list  s    z&VersionScheme.is_valid_constraint_listc                 C   s   | j d krd }n
|  |}|S r   )r   r   r   r   r   suggest  s    

zVersionScheme.suggest)N)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   r>     r?   r>   )
normalizedlegacyZsemanticr   defaultc                 C   s   | t krtd|  t |  S )Nzunknown scheme name: %r)_SCHEMESrJ   )rK   r   r   r   r     s    )*r   Zloggingr   compatr   utilr   __all__Z	getLoggerr   r   rJ   r   objectr   r9   r   rs   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	$