o
    iy1                     @   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 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Zdd ZedZdd  Zd!d" ZG d#d$ d$eZdS )%    )absolute_importdivisionprint_functionN   )Infinity)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   T/home/ubuntu/.local/lib/python3.10/site-packages/ddtrace/vendor/packaging/version.pyr      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                   @   sL   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S )_BaseVersionc                 C   s
   t | jS N)hash_keyselfr   r   r   __hash__,   s   
z_BaseVersion.__hash__c                 C      |  |dd S )Nc                 S   s   | |k S r   r   sor   r   r   <lambda>0       z%_BaseVersion.__lt__.<locals>.<lambda>_comparer   otherr   r   r   __lt__/      z_BaseVersion.__lt__c                 C   r!   )Nc                 S   s   | |kS r   r   r"   r   r   r   r%   3   r&   z%_BaseVersion.__le__.<locals>.<lambda>r'   r)   r   r   r   __le__2   r,   z_BaseVersion.__le__c                 C   r!   )Nc                 S   s   | |kS r   r   r"   r   r   r   r%   6   r&   z%_BaseVersion.__eq__.<locals>.<lambda>r'   r)   r   r   r   __eq__5   r,   z_BaseVersion.__eq__c                 C   r!   )Nc                 S   s   | |kS r   r   r"   r   r   r   r%   9   r&   z%_BaseVersion.__ge__.<locals>.<lambda>r'   r)   r   r   r   __ge__8   r,   z_BaseVersion.__ge__c                 C   r!   )Nc                 S   s   | |kS r   r   r"   r   r   r   r%   <   r&   z%_BaseVersion.__gt__.<locals>.<lambda>r'   r)   r   r   r   __gt__;   r,   z_BaseVersion.__gt__c                 C   r!   )Nc                 S   s   | |kS r   r   r"   r   r   r   r%   ?   r&   z%_BaseVersion.__ne__.<locals>.<lambda>r'   r)   r   r   r   __ne__>   r,   z_BaseVersion.__ne__c                 C   s   t |tstS || j|jS r   )
isinstancer   NotImplementedr   )r   r*   methodr   r   r   r(   A   s   
z_BaseVersion._compareN)r   r   r   r    r+   r-   r.   r/   r0   r1   r(   r   r   r   r   r   *   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__J   s   
zLegacyVersion.__init__c                 C      | j S r   r6   r   r   r   r   __str__N   s   zLegacyVersion.__str__c                 C      d tt| S )Nz<LegacyVersion({0})>formatreprr5   r   r   r   r   __repr__Q      zLegacyVersion.__repr__c                 C   r9   r   r:   r   r   r   r   publicT      zLegacyVersion.publicc                 C   r9   r   r:   r   r   r   r   base_versionX   rC   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   `   rG   zLegacyVersion.releasec                 C   rH   r   r   r   r   r   r   r   d   rG   zLegacyVersion.prec                 C   rH   r   r   r   r   r   r   r   h   rG   zLegacyVersion.postc                 C   rH   r   r   r   r   r   r   r   l   rG   zLegacyVersion.devc                 C   rH   r   r   r   r   r   r   r   p   rG   zLegacyVersion.localc                 C   rE   NFr   r   r   r   r   is_prereleaset   rG   zLegacyVersion.is_prereleasec                 C   rE   rI   r   r   r   r   r   is_postreleasex   rG   zLegacyVersion.is_postreleasec                 C   rE   rI   r   r   r   r   r   is_devrelease|   rG   zLegacyVersion.is_devreleaseN)r   r   r   r8   r;   r@   propertyrB   rD   r   r   r   r   r   r   rJ   rK   rL   r   r   r   r   r	   H   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   
r^   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 )NrF   rV   rW   z*final-00000000)r^   lower
startswithpopappendtuple)r   r   partsr]   r   r   r   r7      s   
r7   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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   rS   pre_lpre_npost_lpost_n1post_n2dev_ldev_nr   r   r   r   r   r   r   )_regexsearchr
   r>   r   grouprg   rd   rY   _parse_letter_version_parse_local_versionr6   _cmpkeyr   r   r   r   r   r   r   )r   r   matchr   r   r   r8      s8   
zVersion.__init__c                 C   r<   )Nz<Version({0})>r=   r   r   r   r   r@     rA   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}!rS   c                 s   rf   r   r5   ri   xr   r   r   rk     rl   z"Version.__str__.<locals>.<genexpr> c                 s   rf   r   r}   r~   r   r   r   rk     rl   z.post{0}z.dev{0}z+{0})	r   rc   r>   joinr   r   r   r   r   r   re   r   r   r   r;     s   





zVersion.__str__c                 C      | j jS r   )r6   r   r   r   r   r   r   !     zVersion.epochc                 C   r   r   )r6   r   r   r   r   r   r   %  r   zVersion.releasec                 C   r   r   )r6   r   r   r   r   r   r   )  r   zVersion.prec                 C      | j jr
| j jd S d S Nr   )r6   r   r   r   r   r   r   -     zVersion.postc                 C   r   r   )r6   r   r   r   r   r   r   1  r   zVersion.devc                 C   s$   | j jrddd | j jD S d S )NrS   c                 s   rf   r   r}   r~   r   r   r   rk   8  rl   z Version.local.<locals>.<genexpr>)r6   r   r   r   r   r   r   r   5  s   zVersion.localc                 C   s   t | ddd S )N+r   r   )r5   rY   r   r   r   r   rB   <     zVersion.publicc                 C   sF   g }| j dkr|d| j  |ddd | jD  d|S )Nr   r|   rS   c                 s   rf   r   r}   r~   r   r   r   rk   I  rl   z'Version.base_version.<locals>.<genexpr>r   )r   rc   r>   r   r   r   r   r   r   rD   @  s
   

zVersion.base_versionc                 C   s   | j d up	| jd uS r   )r   r   r   r   r   r   rJ   M  r   zVersion.is_prereleasec                 C   
   | j d uS r   )r   r   r   r   r   rK   Q     
zVersion.is_postreleasec                 C   r   r   )r   r   r   r   r   rL   U  r   zVersion.is_devreleaseN)r   r   r   recompiler   VERBOSE
IGNORECASEru   r8   r@   r;   rM   r   r   r   r   r   r   rB   rD   rJ   rK   rL   r   r   r   r   r      s<    

#









r   c                 C   sz   | 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|r;d	} | t|fS d S d S )
Nr   alphaabetab)rN   r   rP   rR   )revrr   )r`   rg   )letternumberr   r   r   rx   Z  s"   rx   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   )isdigitr`   rg   )ri   r]   r   r   r   rk     s
    
z'_parse_local_version.<locals>.<genexpr>)rd   _local_version_separatorsrY   )r   r   r   r   ry   |  s
   ry   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}|d u r-t }|d u r3t}|d u r;t }n	t dd |D }| |||||fS )Nc                 S   s   | dkS )Nr   r   )r   r   r   r   r%     r&   z_cmpkey.<locals>.<lambda>c                 s   s,    | ]}t |tr|d fnt |fV  qdS )r   N)r2   rg   r   rh   r   r   r   rk     s
    
z_cmpkey.<locals>.<genexpr>)rd   reversedlist	itertools	dropwhiler   rt   r   r   r   rz     s,   	rz   c                       s    e Zd Ze fddZ  ZS )_TrimmedReleasec                    s6   t  j}dd t|D }t|dd}|d|d  S )z
        Release segment without any trailing zeros.

        >>> _TrimmedRelease('1.0.0').release
        (1,)
        >>> _TrimmedRelease('0.0').release
        (0,)
        c                 s   s    | ]	\}}|r|V  qd S r   r   )ri   indexvalr   r   r   rk     s    z*_TrimmedRelease.release.<locals>.<genexpr>r   )defaultNr   )superr   	enumeratemax)r   relnonzeroslast_nonzero	__class__r   r   r     s   
z_TrimmedRelease.release)r   r   r   rM   r   __classcell__r   r   r   r   r     s    r   )
__future__r   r   r   collectionsr   r   _structuresr   __all__
namedtupler   r   
ValueErrorr
   objectr   r	   r   r   rX   rZ   r^   r7   r   r   rx   r   ry   rz   r   r   r   r   r   <module>   s:   9
  
5