o
    hn<                  	   @   s  d dl mZmZmZ d dlZd dlZd dlZddlmZm	Z	 ddl
mZ erd dlmZmZmZmZmZmZmZ ddlmZmZ eeef Zeeeeef f Zeeeef Zeeeeeeeef eeef f df f Zeeeedf eeeef Zeeeedf f Zeeeef eeef gef Zg d	Z e!d
g dZ"dd Z#G dd de$Z%G dd de&Z'G dd de'Z(e)dej*Z+ddddddZ,dd Z-dd Z.dZ/G dd de'Z0d d! Z1e)d"Z2d#d$ Z3d%d& Z4dS )'    )absolute_importdivisionprint_functionN   )InfinityNegativeInfinity)TYPE_CHECKING)CallableIteratorListOptionalSupportsIntTupleUnion)InfinityTypeNegativeInfinityType.)parseVersionLegacyVersionInvalidVersionVERSION_PATTERN_Version)epochreleasedevprepostlocalc                 C   s&   zt | W S  ty   t|  Y S w )z
    Parse the given version string and return either a :class:`Version` object
    or a :class:`LegacyVersion` object depending on if the given version is
    a valid PEP 440 version or a legacy version.
    )r   r   r   )version r   j/home/www/facesmatcher.com/frenv_dlib/lib/python3.10/site-packages/setuptools/_vendor/packaging/version.pyr   0   s
   
r   c                   @   s   e Zd ZdZdS )r   zF
    An invalid version was found, users should refer to PEP 440.
    N)__name__
__module____qualname____doc__r   r   r   r    r   =   s    r   c                   @   sP   e Zd 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S )_BaseVersionNc                 C   s
   t | jS N)hash_keyselfr   r   r    __hash__F   s   
z_BaseVersion.__hash__c                 C      |  |dd S )Nc                 S   s   | |k S r&   r   sor   r   r    <lambda>L       z%_BaseVersion.__lt__.<locals>.<lambda>_comparer*   otherr   r   r    __lt__J      z_BaseVersion.__lt__c                 C   r,   )Nc                 S   s   | |kS r&   r   r-   r   r   r    r0   P   r1   z%_BaseVersion.__le__.<locals>.<lambda>r2   r4   r   r   r    __le__N   r7   z_BaseVersion.__le__c                 C   r,   )Nc                 S   s   | |kS r&   r   r-   r   r   r    r0   T   r1   z%_BaseVersion.__eq__.<locals>.<lambda>r2   r4   r   r   r    __eq__R   r7   z_BaseVersion.__eq__c                 C   r,   )Nc                 S   s   | |kS r&   r   r-   r   r   r    r0   X   r1   z%_BaseVersion.__ge__.<locals>.<lambda>r2   r4   r   r   r    __ge__V   r7   z_BaseVersion.__ge__c                 C   r,   )Nc                 S   s   | |kS r&   r   r-   r   r   r    r0   \   r1   z%_BaseVersion.__gt__.<locals>.<lambda>r2   r4   r   r   r    __gt__Z   r7   z_BaseVersion.__gt__c                 C   r,   )Nc                 S   s   | |kS r&   r   r-   r   r   r    r0   `   r1   z%_BaseVersion.__ne__.<locals>.<lambda>r2   r4   r   r   r    __ne__^   r7   z_BaseVersion.__ne__c                 C   s   t |tstS || j|jS r&   )
isinstancer%   NotImplementedr(   )r*   r5   methodr   r   r    r3   b   s   
z_BaseVersion._compare)r!   r"   r#   r(   r+   r6   r8   r9   r:   r;   r<   r3   r   r   r   r    r%   C   s    r%   c                   @   s   e Zd Zdd Zdd Zdd Zedd Zed	d
 Zedd Z	edd Z
edd Zedd Zedd Zedd Zedd Zedd Zedd ZdS )r   c                 C   s   t || _t| j| _d S r&   )str_version_legacy_cmpkeyr(   )r*   r   r   r   r    __init__k   s   
zLegacyVersion.__init__c                 C      | j S r&   rA   r)   r   r   r    __str__p   s   zLegacyVersion.__str__c                 C      d tt| S )Nz<LegacyVersion({0})>formatreprr@   r)   r   r   r    __repr__t      zLegacyVersion.__repr__c                 C   rD   r&   rE   r)   r   r   r    publicx      zLegacyVersion.publicc                 C   rD   r&   rE   r)   r   r   r    base_version}   rN   zLegacyVersion.base_versionc                 C      dS )Nr   r)   r   r   r    r         zLegacyVersion.epochc                 C      d S r&   r   r)   r   r   r    r      rR   zLegacyVersion.releasec                 C   rS   r&   r   r)   r   r   r    r      rR   zLegacyVersion.prec                 C   rS   r&   r   r)   r   r   r    r      rR   zLegacyVersion.postc                 C   rS   r&   r   r)   r   r   r    r      rR   zLegacyVersion.devc                 C   rS   r&   r   r)   r   r   r    r      rR   zLegacyVersion.localc                 C   rP   NFr   r)   r   r   r    is_prerelease   rR   zLegacyVersion.is_prereleasec                 C   rP   rT   r   r)   r   r   r    is_postrelease   rR   zLegacyVersion.is_postreleasec                 C   rP   rT   r   r)   r   r   r    is_devrelease   rR   zLegacyVersion.is_devreleaseN)r!   r"   r#   rC   rF   rK   propertyrM   rO   r   r   r   r   r   r   rU   rV   rW   r   r   r   r    r   j   s4    









r   z(\d+ | [a-z]+ | \.| -)czfinal-@)r   preview-rcr   c                 c   s^    t | D ]#}t||}|r|dkrq|d d dv r$|dV  qd| V  qdV  d S )N.r   
0123456789   **final)_legacy_version_component_resplit_legacy_version_replacement_mapgetzfill)r.   partr   r   r    _parse_version_parts   s   
ri   c                 C   s   d}g }t |  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|fS )NrQ   ra   rb   z*final-00000000)ri   lower
startswithpopappendtuple)r   r   partsrh   r   r   r    rB      s   
rB   a  
    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                   @   s   e Zd Zede d ejejB Zdd Z	dd Z
dd Zed	d
 Zedd Zedd Zedd Zedd Zedd Zedd Zedd Zedd Zedd Zedd Zedd  Zed!d" Zed#d$ Zd%S )&r   z^\s*z\s*$c              
   C   s   | j |}|std|t|drt|dndtdd |ddD t	|d|d	t	|d
|dpC|dt	|d|dt
|dd| _t| jj| jj| jj| jj| jj| jj| _d S )NzInvalid version: '{0}'r   r   c                 s       | ]}t |V  qd S r&   )int.0ir   r   r    	<genexpr>      z#Version.__init__.<locals>.<genexpr>r   r^   pre_lpre_npost_lpost_n1post_n2dev_ldev_nr   )r   r   r   r   r   r   )_regexsearchr   rI   r   grouprr   ro   rd   _parse_letter_version_parse_local_versionrA   _cmpkeyr   r   r   r   r   r   r(   )r*   r   matchr   r   r    rC     s*   
zVersion.__init__c                 C   rG   )Nz<Version({0})>rH   r)   r   r   r    rK   -  rL   zVersion.__repr__c                 C   s   g }| j dkr|d| j  |ddd | jD  | jd ur1|ddd | jD  | jd ur?|d| j | jd urM|d	| j | jd ur[|d
| j d|S )Nr   {0}!r^   c                 s   rq   r&   r@   rt   xr   r   r    rv   :  rw   z"Version.__str__.<locals>.<genexpr> c                 s   rq   r&   r   r   r   r   r    rv   >  rw   z.post{0}z.dev{0}z+{0})	r   rn   rI   joinr   r   r   r   r   r*   rp   r   r   r    rF   1  s   





zVersion.__str__c                 C      | j j}|S r&   )rA   r   )r*   _epochr   r   r    r   N     zVersion.epochc                 C   r   r&   )rA   r   )r*   _releaser   r   r    r   T  r   zVersion.releasec                 C   r   r&   )rA   r   )r*   _prer   r   r    r   Z  r   zVersion.prec                 C      | j jr
| j jd S d S Nr   )rA   r   r)   r   r   r    r   `     zVersion.postc                 C   r   r   )rA   r   r)   r   r   r    r   e  r   zVersion.devc                 C   s$   | j jrddd | j jD S d S )Nr^   c                 s   rq   r&   r   r   r   r   r    rv   n  rw   z Version.local.<locals>.<genexpr>)rA   r   r   r)   r   r   r    r   j  s   zVersion.localc                 C   s   t | ddd S )N+r   r   )r@   rd   r)   r   r   r    rM   r     zVersion.publicc                 C   sF   g }| j dkr|d| j  |ddd | jD  d|S )Nr   r   r^   c                 s   rq   r&   r   r   r   r   r    rv     rw   z'Version.base_version.<locals>.<genexpr>r   )r   rn   rI   r   r   r   r   r   r    rO   w  s
   

zVersion.base_versionc                 C   s   | j d up	| jd uS r&   )r   r   r)   r   r   r    rU     r   zVersion.is_prereleasec                 C   
   | j d uS r&   )r   r)   r   r   r    rV        
zVersion.is_postreleasec                 C   r   r&   )r   r)   r   r   r    rW     r   zVersion.is_devreleasec                 C   s   t | jdkr| jd S dS )Nr   r   lenr   r)   r   r   r    major     zVersion.majorc                 C      t | jdkr| jd S dS )N   r   r   r   r)   r   r   r    minor  r   zVersion.minorc                 C   r   )N   r   r   r   r)   r   r   r    micro  r   zVersion.microN)r!   r"   r#   recompiler   VERBOSE
IGNORECASEr   rC   rK   rF   rX   r   r   r   r   r   r   rM   rO   rU   rV   rW   r   r   r   r   r   r   r    r     sB    












r   c                 C   sv   | r-|d u rd}|   } | dkrd} n| dkrd} n| dv r!d} n| dv r'd	} | t|fS | s9|r9d	} | t|fS d S )
Nr   alphaabetab)rY   r   r[   r]   )revrr   )rk   rr   )letternumberr   r   r    r     s"   r   z[\._-]c                 C   s$   | durt dd t| D S dS )zR
    Takes a string like abc.1.twelve and turns it into ("abc", 1, "twelve").
    Nc                 s   s(    | ]}|  s| nt|V  qd S r&   )isdigitrk   rr   )rt   rh   r   r   r    rv     s
    
z'_parse_local_version.<locals>.<genexpr>)ro   _local_version_separatorsrd   )r   r   r   r    r     s
   r   c                 C   s   t tttdd t|}|d u r|d u r|d urt}n	|d u r&t}n|}|d u r/t}n|}|d u r8t}	n|}	|d u rAt}
n	t dd |D }
| ||||	|
fS )Nc                 S   s   | dkS )Nr   r   )r   r   r   r    r0     r1   z_cmpkey.<locals>.<lambda>c                 s   s*    | ]}t |tr|d fnt|fV  qdS )r   N)r=   rr   r   rs   r   r   r    rv     s    
z_cmpkey.<locals>.<genexpr>)ro   reversedlist	itertools	dropwhiler   r   )r   r   r   r   r   r   r   r   _post_dev_localr   r   r    r     s(   	r   )5
__future__r   r   r   collectionsr   r   _structuresr   r   Z_typingr   typingr	   r
   r   r   r   r   r   r   r   InfiniteTypesr@   rr   PrePostDevTypeSubLocalType	LocalTypeCmpKeyLegacyCmpKeyboolVersionComparisonMethod__all__
namedtupler   r   
ValueErrorr   objectr%   r   r   r   rc   re   ri   rB   r   r   r   r   r   r   r   r   r   r    <module>   sr   $

'F	  
&