o
    ŀg
@                  	   @  s  d dl mZ d dlZd dlmZ d dlZd dlZd dlmZm	Z	m
Z
mZ d dl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d>ddZG dd de Z!G dd dZ"G dd de"Z#e$dej%Z&ddddddZ'd?d d!Z(d@d#d$Z)d%Z*G d&d' d'e"Z+dAd,d-Z,e$d.Z-dBd1d2Z.dCd<d=Z/dS )D    )annotationsN)Iterator)CallableSupportsIntTupleUnion)parseVersionLegacyVersionInvalidVersionVERSION_PATTERNc                   @  f   e Zd ZdddZdddZdddZdddZdddZdddZdddZ	dddZ
dddZdS ) InfinityTypereturnstrc                 C     dS )NInfinity selfr   r   P/var/www/html/myenv/lib/python3.10/site-packages/pandas/util/version/__init__.py__repr__      zInfinityType.__repr__intc                 C     t t| S Nhashreprr   r   r   r   __hash__      zInfinityType.__hash__otherobjectboolc                 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 |t| S r   
isinstancetyper%   r   r   r   __eq__&      zInfinityType.__eq__c                 C     t |t|  S r   r)   r%   r   r   r   __ne__)      zInfinityType.__ne__c                 C  r   NTr   r%   r   r   r   __gt__,   r   zInfinityType.__gt__c                 C  r   r1   r   r%   r   r   r   __ge__/   r   zInfinityType.__ge__r   NegativeInfinityTypec                 C     t S r   )NegativeInfinityr   r   r   r   __neg__2   r   zInfinityType.__neg__Nr   r   r   r   r!   r"   r   r#   )r   r"   r   r4   __name__
__module____qualname__r   r   r&   r'   r,   r/   r2   r3   r7   r   r   r   r   r          







r   c                   @  r   ) r4   r   r   c                 C  r   )Nz	-Infinityr   r   r   r   r   r   :   r   zNegativeInfinityType.__repr__r   c                 C  r   r   r   r   r   r   r   r   =   r    zNegativeInfinityType.__hash__r!   r"   r#   c                 C  r   r1   r   r%   r   r   r   r&   @   r   zNegativeInfinityType.__lt__c                 C  r   r1   r   r%   r   r   r   r'   C   r   zNegativeInfinityType.__le__c                 C  r(   r   r)   r%   r   r   r   r,   F   r-   zNegativeInfinityType.__eq__c                 C  r.   r   r)   r%   r   r   r   r/   I   r0   zNegativeInfinityType.__ne__c                 C  r   r$   r   r%   r   r   r   r2   L   r   zNegativeInfinityType.__gt__c                 C  r   r$   r   r%   r   r   r   r3   O   r   zNegativeInfinityType.__ge__r   r   c                 C  r5   r   )r   r   r   r   r   r7   R   r   zNegativeInfinityType.__neg__Nr8   r9   r:   )r   r"   r   r   r;   r   r   r   r   r4   9   r?   r4   ._Version)epochreleasedevprepostlocalversionr   r   LegacyVersion | Versionc                 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
   )rG   r   r   r   r   t   s
   
r   c                   @  s   e Zd ZdZdS )r   z
    An invalid version was found, users should refer to PEP 440.

    Examples
    --------
    >>> pd.util.version.Version('1.')
    Traceback (most recent call last):
    InvalidVersion: Invalid version: '1.'
    N)r<   r=   r>   __doc__r   r   r   r   r      s    r   c                   @  s\   e Zd ZU ded< dddZdd	d
ZdddZdddZdddZdddZ	dddZ
dS )_BaseVersionzCmpKey | LegacyCmpKey_keyr   r   c                 C  s
   t | jS r   )r   rK   r   r   r   r   r      s   
z_BaseVersion.__hash__r!   r#   c                 C  s   t |tstS | j|jk S r   r*   rJ   NotImplementedrK   r%   r   r   r   r&         
z_BaseVersion.__lt__c                 C  s   t |tstS | j|jkS r   rL   r%   r   r   r   r'      rN   z_BaseVersion.__le__r"   c                 C  s   t |tstS | j|jkS r   rL   r%   r   r   r   r,      rN   z_BaseVersion.__eq__c                 C  s   t |tstS | j|jkS r   rL   r%   r   r   r   r3      rN   z_BaseVersion.__ge__c                 C  s   t |tstS | j|jkS r   rL   r%   r   r   r   r2      rN   z_BaseVersion.__gt__c                 C  s   t |tstS | j|jkS r   rL   r%   r   r   r   r/      rN   z_BaseVersion.__ne__Nr9   )r!   rJ   r   r#   r:   )r<   r=   r>   __annotations__r   r&   r'   r,   r3   r2   r/   r   r   r   r   rJ      s   
 





rJ   c                   @  s   e Zd Zd$ddZd%ddZd%d	d
Zed%ddZed%ddZed&ddZ	ed'ddZ
ed'ddZed'ddZed'ddZed'ddZed(ddZed(dd Zed(d!d"Zd#S ))r
   rG   r   r   Nonec                 C  s&   t || _t| j| _tdt d S )Nz[Creating a LegacyVersion has been deprecated and will be removed in the next major release.)r   _version_legacy_cmpkeyrK   warningswarnDeprecationWarning)r   rG   r   r   r   __init__   s   
zLegacyVersion.__init__c                 C     | j S r   rQ   r   r   r   r   __str__   s   zLegacyVersion.__str__c                 C     d|  dS )Nz<LegacyVersion('')>r   r   r   r   r   r      r    zLegacyVersion.__repr__c                 C  rW   r   rX   r   r   r   r   public      zLegacyVersion.publicc                 C  rW   r   rX   r   r   r   r   base_version   r]   zLegacyVersion.base_versionr   c                 C  r   )Nr   r   r   r   r   rA         zLegacyVersion.epochc                 C     d S r   r   r   r   r   r   rB      r`   zLegacyVersion.releasec                 C  ra   r   r   r   r   r   r   rD      r`   zLegacyVersion.prec                 C  ra   r   r   r   r   r   r   rE      r`   zLegacyVersion.postc                 C  ra   r   r   r   r   r   r   rC      r`   zLegacyVersion.devc                 C  ra   r   r   r   r   r   r   rF      r`   zLegacyVersion.localr#   c                 C  r   r$   r   r   r   r   r   is_prerelease   r`   zLegacyVersion.is_prereleasec                 C  r   r$   r   r   r   r   r   is_postrelease   r`   zLegacyVersion.is_postreleasec                 C  r   r$   r   r   r   r   r   is_devrelease   r`   zLegacyVersion.is_devreleaseNrG   r   r   rP   r8   r9   )r   rP   r   r#   )r<   r=   r>   rV   rY   r   propertyr\   r^   rA   rB   rD   rE   rC   rF   rb   rc   rd   r   r   r   r   r
      s4    



r
   z(\d+ | [a-z]+ | \.| -)czfinal-@)rD   preview-rcrC   sIterator[str]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.   
0123456789   **final)_legacy_version_component_resplit_legacy_version_replacement_mapgetzfill)rm   partmapped_partr   r   r   _parse_version_parts  s   
r|   LegacyCmpKeyc                 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 )Nr_   rs   rt   z*final-00000000)r|   lower
startswithpopappendtuple)rG   rA   partsrz   r   r   r   rR     s   
rR   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d0ddZ	d1d	d
Z
d1ddZed2ddZed3ddZed4ddZed5ddZed5ddZed6ddZed1ddZed1d d!Zed7d#d$Zed7d%d&Zed7d'd(Zed2d)d*Zed2d+d,Zed2d-d.Zd/S )8r	   z^\s*z\s*$rG   r   r   rP   c              
   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: ''rA   r   c                 s  s    | ]}t |V  qd S r   )r   .0ir   r   r   	<genexpr>\  s    z#Version.__init__.<locals>.<genexpr>rB   ro   pre_lpre_npost_lpost_n1post_n2dev_ldev_nrF   )rA   rB   rD   rE   rC   rF   )_regexsearchr   r@   groupr   r   rv   _parse_letter_version_parse_local_versionrQ   _cmpkeyrA   rB   rD   rE   rC   rF   rK   )r   rG   matchr   r   r   rV   S  s*   
zVersion.__init__c                 C  rZ   )Nz
<Version('r[   r   r   r   r   r   r   o  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     g | ]}t |qS r   r   r   xr   r   r   
<listcomp>z      z#Version.__str__.<locals>.<listcomp> c                 S  r   r   r   r   r   r   r   r   ~  r   z.postz.dev+)rA   r   joinrB   rD   rE   rC   rF   r   r   r   r   r   rY   r  s   





zVersion.__str__r   c                 C     | j j}|S r   )rQ   rA   )r   _epochr   r   r   rA        zVersion.epochtuple[int, ...]c                 C  r   r   )rQ   rB   )r   _releaser   r   r   rB     r   zVersion.releasetuple[str, int] | Nonec                 C  r   r   )rQ   rD   )r   _prer   r   r   rD     r   zVersion.pre
int | Nonec                 C     | j jr
| j jd S d S Nrp   )rQ   rE   r   r   r   r   rE        zVersion.postc                 C  r   r   )rQ   rC   r   r   r   r   rC     r   zVersion.dev
str | Nonec                 C  s$   | j jrddd | j jD S d S )Nro   c                 S  r   r   r   r   r   r   r   r     r   z!Version.local.<locals>.<listcomp>)rQ   rF   r   r   r   r   r   rF     s   zVersion.localc                 C  s   t | ddd S )Nr   rp   r   )r   rv   r   r   r   r   r\        zVersion.publicc                 C  sF   g }| j dkr|| j  d |ddd | jD  d|S )Nr   r   ro   c                 S  r   r   r   r   r   r   r   r     r   z(Version.base_version.<locals>.<listcomp>r   )rA   r   r   rB   r   r   r   r   r^     s
   

zVersion.base_versionr#   c                 C  s   | j d up	| jd uS r   )rC   rD   r   r   r   r   rb     r   zVersion.is_prereleasec                 C  
   | j d uS r   )rE   r   r   r   r   rc        
zVersion.is_postreleasec                 C  r   r   )rC   r   r   r   r   rd     r   zVersion.is_devreleasec                 C  s   t | jdkr| jd S dS )Nrp   r   lenrB   r   r   r   r   major     zVersion.majorc                 C     t | jdkr| jd S dS )N   rp   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.microNre   r8   r9   )r   r   )r   r   )r   r   )r   r   rf   )r<   r=   r>   recompiler   VERBOSE
IGNORECASEr   rV   r   rY   rg   rA   rB   rD   rE   rC   rF   r\   r^   rb   rc   rd   r   r   r   r   r   r   r   r	   P  sB    


r	   letternumberstr | bytes | SupportsIntr   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)rh   rD   rj   rl   )revrrE   )r   r   )r   r   r   r   r   r     s"   r   z[\._-]rF   LocalType | Nonec                 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   r   )r   rz   r   r   r   r     s
    
z'_parse_local_version.<locals>.<genexpr>)r   _local_version_separatorsrv   )rF   r   r   r   r     s
   r   rA   r   rB   r   rD   rE   rC   tuple[SubLocalType] | NoneCmpKeyc                 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   <lambda>  s    z_cmpkey.<locals>.<lambda>c                 s  s*    | ]}t |tr|d fnt|fV  qdS )r   N)r*   r   r6   r   r   r   r   r   ?  s    
z_cmpkey.<locals>.<genexpr>)r   reversedlist	itertools	dropwhiler6   r   )rA   rB   rD   rE   rC   rF   r   r   _post_dev_localr   r   r   r     s(   	r   )rG   r   r   rH   )rm   r   r   rn   )rG   r   r   r}   )r   r   r   r   r   r   )rF   r   r   r   )rA   r   rB   r   rD   r   rE   r   rC   r   rF   r   r   r   )0
__future__r   collectionscollections.abcr   r   r   typingr   r   r   r   rS   __all__r   r   r4   r6   InfiniteTypesr   r   r   PrePostDevTypeSubLocalType	LocalTyper   r}   r#   VersionComparisonMethod
namedtupler@   r   
ValueErrorr   rJ   r
   r   r   ru   rw   r|   rR   r   r	   r   r   r   r   r   r   r   r   <module>   sv   


.>
	
  

#
