o
    UhY4                     @   s   d 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	 g dZ
G dd dZe ZG dd dZe 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ed
g dZG dd deZG dd dZdZG dd deZdede	ee ef deeeef  fddZ!e"dZ#dedee fddZ$dedeed	f deeeef  deeeef  d eeeef  deee  defd!d"Z%dS )#a  Extract reference documentation from the pypa/packaging source tree.

In the process of copying, some unused methods / classes were removed.
These include:

- parse()
- anything involving LegacyVersion

This software is made available under the terms of *either* of the licenses
found in LICENSE.APACHE or LICENSE.BSD. Contributions to this software is made
under the terms of *both* these licenses.

Vendored from:
- https://github.com/pypa/packaging/
- commit ba07d8287b4554754ac7178d177033ea3f75d489 (09/09/2021)
    N)CallableOptionalSupportsIntTupleUnion)VersionInvalidVersionVERSION_PATTERNc                   @   s   e Zd ZdefddZdefddZdedefddZ	dedefd	d
Z
dedefddZdedefddZdedefddZdedefddZdeddfddZdS )InfinityTypereturnc                 C      dS )NInfinity selfr   r   L/var/www/vscode/kcb/lib/python3.10/site-packages/seaborn/external/version.py__repr__#      zInfinityType.__repr__c                 C      t t| S Nhashreprr   r   r   r   __hash__&      zInfinityType.__hash__otherc                 C   r   NFr   r   r   r   r   r   __lt__)   r   zInfinityType.__lt__c                 C   r   r   r   r   r   r   r   __le__,   r   zInfinityType.__le__c                 C      t || jS r   
isinstance	__class__r   r   r   r   __eq__/   r   zInfinityType.__eq__c                 C      t || j S r   r!   r   r   r   r   __ne__2      zInfinityType.__ne__c                 C   r   NTr   r   r   r   r   __gt__5   r   zInfinityType.__gt__c                 C   r   r(   r   r   r   r   r   __ge__8   r   zInfinityType.__ge__r   NegativeInfinityTypec                 C      t S r   )NegativeInfinityr   r   r   r   __neg__;   r   zInfinityType.__neg__N)__name__
__module____qualname__strr   intr   objectboolr   r   r$   r&   r)   r*   r.   r   r   r   r   r
   "       r
   c                   @   s   e Zd ZdefddZdefddZdedefddZ	dedefd	d
Z
dedefddZdedefddZdedefddZdedefddZdedefddZdS )r+   r   c                 C   r   )Nz	-Infinityr   r   r   r   r   r   C   r   zNegativeInfinityType.__repr__c                 C   r   r   r   r   r   r   r   r   F   r   zNegativeInfinityType.__hash__r   c                 C   r   r(   r   r   r   r   r   r   I   r   zNegativeInfinityType.__lt__c                 C   r   r(   r   r   r   r   r   r   L   r   zNegativeInfinityType.__le__c                 C   r    r   r!   r   r   r   r   r$   O   r   zNegativeInfinityType.__eq__c                 C   r%   r   r!   r   r   r   r   r&   R   r'   zNegativeInfinityType.__ne__c                 C   r   r   r   r   r   r   r   r)   U   r   zNegativeInfinityType.__gt__c                 C   r   r   r   r   r   r   r   r*   X   r   zNegativeInfinityType.__ge__r   c                 C   r,   r   )r   r   r   r   r   r.   [   r   zNegativeInfinityType.__neg__N)r/   r0   r1   r2   r   r3   r   r4   r5   r   r   r$   r&   r)   r*   r
   r.   r   r   r   r   r+   B   r6   r+   ._Version)epochreleasedevprepostlocalc                   @   s   e Zd ZdZdS )r   zF
    An invalid version was found, users should refer to PEP 440.
    N)r/   r0   r1   __doc__r   r   r   r   r      s    r   c                   @   s   e Zd ZU eeef ed< defddZdd de	fddZ
dd de	fdd	Zdede	fd
dZdd de	fddZdd de	fddZdede	fddZdS )_BaseVersion_keyr   c                 C   s
   t | jS r   )r   r@   r   r   r   r   r      s   
z_BaseVersion.__hash__r   c                 C   s   t |tstS | j|jk S r   r"   r?   NotImplementedr@   r   r   r   r   r         
z_BaseVersion.__lt__c                 C   s   t |tstS | j|jkS r   rA   r   r   r   r   r      rC   z_BaseVersion.__le__c                 C   s   t |tstS | j|jkS r   rA   r   r   r   r   r$      rC   z_BaseVersion.__eq__c                 C   s   t |tstS | j|jkS r   rA   r   r   r   r   r*      rC   z_BaseVersion.__ge__c                 C   s   t |tstS | j|jkS r   rA   r   r   r   r   r)      rC   z_BaseVersion.__gt__c                 C   s   t |tstS | j|jkS r   rA   r   r   r   r   r&      rC   z_BaseVersion.__ne__N)r/   r0   r1   r   CmpKeyLegacyCmpKey__annotations__r3   r   r5   r   r   r4   r$   r*   r)   r&   r   r   r   r   r?      s   
 r?   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                   @   sr  e Zd Zede d ejejB Zde	ddfddZ
de	fdd	Zde	fd
dZedefddZedeedf fddZedeee	ef  fddZedee fddZedee fddZedee	 fddZede	fddZede	fddZedefddZedefdd Zedefd!d"Zedefd#d$Zedefd%d&Zedefd'd(ZdS ))r   z^\s*z\s*$versionr   Nc              
   C   s   | j |}|std| dt|drt|dndtdd |ddD t|d	|d
t|d|dpD|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: ''r8   r   c                 s       | ]}t |V  qd S r   )r3   .0ir   r   r   	<genexpr>       z#Version.__init__.<locals>.<genexpr>r9   .pre_lpre_npost_lpost_n1post_n2dev_ldev_nr=   )r8   r9   r;   r<   r:   r=   )_regexsearchr   r7   groupr3   tuplesplit_parse_letter_version_parse_local_version_version_cmpkeyr8   r9   r;   r<   r:   r=   r@   )r   rG   matchr   r   r   __init__   s*   
zVersion.__init__c                 C   s   d|  dS )Nz
<Version('z')>r   r   r   r   r   r      r   zVersion.__repr__c                 C   s   g }| j dkr|| j  d |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   !rO   c                 s   rI   r   r2   rK   xr   r   r   rM     rN   z"Version.__str__.<locals>.<genexpr> c                 s   rI   r   rc   rd   r   r   r   rM     rN   z.postz.dev+)r8   appendjoinr9   r;   r<   r:   r=   r   partsr   r   r   __str__   s   





zVersion.__str__c                 C      | j j}|S r   )r^   r8   )r   _epochr   r   r   r8        zVersion.epoch.c                 C   rm   r   )r^   r9   )r   _releaser   r   r   r9     ro   zVersion.releasec                 C   rm   r   )r^   r;   )r   _prer   r   r   r;      ro   zVersion.prec                 C      | j jr
| j jd S d S N   )r^   r<   r   r   r   r   r<   %     zVersion.postc                 C   rr   rs   )r^   r:   r   r   r   r   r:   )  ru   zVersion.devc                 C   s$   | j jrddd | j jD S d S )NrO   c                 s   rI   r   rc   rd   r   r   r   rM   0  rN   z Version.local.<locals>.<genexpr>)r^   r=   ri   r   r   r   r   r=   -  s   zVersion.localc                 C   s   t | ddd S )Nrg   rt   r   )r2   r[   r   r   r   r   public4     zVersion.publicc                 C   sF   g }| j dkr|| j  d |ddd | jD  d|S )Nr   rb   rO   c                 s   rI   r   rc   rd   r   r   r   rM   A  rN   z'Version.base_version.<locals>.<genexpr>rf   )r8   rh   ri   r9   rj   r   r   r   base_version8  s
   

zVersion.base_versionc                 C   s   | j d up	| jd uS r   )r:   r;   r   r   r   r   is_prereleaseE  rw   zVersion.is_prereleasec                 C   
   | j d uS r   )r<   r   r   r   r   is_postreleaseI     
zVersion.is_postreleasec                 C   rz   r   )r:   r   r   r   r   is_devreleaseM  r|   zVersion.is_devreleasec                 C   s   t | jdkr| jd S dS )Nrt   r   lenr9   r   r   r   r   majorQ     zVersion.majorc                 C      t | jdkr| jd S dS )N   rt   r   r~   r   r   r   r   minorU  r   zVersion.minorc                 C   r   )N   r   r   r~   r   r   r   r   microY  r   zVersion.micro) r/   r0   r1   recompiler	   VERBOSE
IGNORECASErW   r2   ra   r   rl   propertyr3   r8   r   r9   r   r;   r<   r:   r=   rv   rx   r5   ry   r{   r}   r   r   r   r   r   r   r   r      sB    r   letternumberr   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)cr;   previewrc)revrr<   )lowerr3   )r   r   r   r   r   r\   ^  s"   r\   z[\._-]r=   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   )isdigitr   r3   )rK   partr   r   r   rM     s
    
z'_parse_local_version.<locals>.<genexpr>)rZ   _local_version_separatorsr[   )r=   r   r   r   r]     s
   r]   r8   r9   r;   r<   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   )re   r   r   r   <lambda>  s    z_cmpkey.<locals>.<lambda>c                 s   s*    | ]}t |tr|d fnt|fV  qdS )rf   N)r"   r3   r-   rJ   r   r   r   rM     s    
z_cmpkey.<locals>.<genexpr>)rZ   reversedlist	itertools	dropwhiler-   r   )r8   r9   r;   r<   r:   r=   rp   rq   _post_dev_localr   r   r   r_     s(   	r_   )&r>   collectionsr   r   typingr   r   r   r   r   __all__r
   r   r+   r-   InfiniteTypesr2   r3   PrePostDevTypeSubLocalType	LocalTyperD   rE   r5   VersionComparisonMethod
namedtupler7   
ValueErrorr   r?   r	   r   bytesr\   r   r   r]   r_   r   r   r   r   <module>   s    

0  	

$

