o
    Ö­jµ6  ã                   @   sú   d Z ddlZddlZddlZg d¢ZG dd„ dƒZeƒ ZG dd„ dƒZeƒ Ze dg d	¢¡Z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„ Zdd„ ZdZG dd„ deƒZdd„ Ze d ¡Zd!d"„ Zd#d$„ ZdS )%zÅUtility to compare pep440 compatible version strings.

The LooseVersion and StrictVersion classes that distutils provides don't
work; they don't recognize anything like alpha/beta/rc/dev versions.
é    N)ÚparseÚVersionÚLegacyVersionÚInvalidVersionÚVERSION_PATTERNc                   @   óT   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S )ÚInfinityc                 C   ó   dS )Nr   © ©Úselfr
   r
   úO/var/www/html/CropPilot/venv/lib/python3.10/site-packages/scipy/_lib/_pep440.pyÚ__repr__.   ó   zInfinity.__repr__c                 C   ó   t t| ƒƒS ©N©ÚhashÚreprr   r
   r
   r   Ú__hash__1   ó   zInfinity.__hash__c                 C   r	   ©NFr
   ©r   Úotherr
   r
   r   Ú__lt__4   r   zInfinity.__lt__c                 C   r	   r   r
   r   r
   r
   r   Ú__le__7   r   zInfinity.__le__c                 C   ó   t || jƒS r   ©Ú
isinstanceÚ	__class__r   r
   r
   r   Ú__eq__:   r   zInfinity.__eq__c                 C   ó   t || jƒ S r   r   r   r
   r
   r   Ú__ne__=   ó   zInfinity.__ne__c                 C   r	   ©NTr
   r   r
   r
   r   Ú__gt__@   r   zInfinity.__gt__c                 C   r	   r$   r
   r   r
   r
   r   Ú__ge__C   r   zInfinity.__ge__c                 C   ó   t S r   )ÚNegativeInfinityr   r
   r
   r   Ú__neg__F   r   zInfinity.__neg__N©Ú__name__Ú
__module__Ú__qualname__r   r   r   r   r    r"   r%   r&   r)   r
   r
   r
   r   r   -   ó    r   c                   @   r   )r(   c                 C   r	   )Nz	-Infinityr
   r   r
   r
   r   r   N   r   zNegativeInfinity.__repr__c                 C   r   r   r   r   r
   r
   r   r   Q   r   zNegativeInfinity.__hash__c                 C   r	   r$   r
   r   r
   r
   r   r   T   r   zNegativeInfinity.__lt__c                 C   r	   r$   r
   r   r
   r
   r   r   W   r   zNegativeInfinity.__le__c                 C   r   r   r   r   r
   r
   r   r    Z   r   zNegativeInfinity.__eq__c                 C   r!   r   r   r   r
   r
   r   r"   ]   r#   zNegativeInfinity.__ne__c                 C   r	   r   r
   r   r
   r
   r   r%   `   r   zNegativeInfinity.__gt__c                 C   r	   r   r
   r   r
   r
   r   r&   c   r   zNegativeInfinity.__ge__c                 C   r'   r   )r   r   r
   r
   r   r)   f   r   zNegativeInfinity.__neg__Nr*   r
   r
   r
   r   r(   M   r.   r(   Ú_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   )Úversionr
   r
   r   r   u   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)r+   r,   r-   Ú__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 r   )r   Ú_keyr   r
   r
   r   r   ‰   s   
z_BaseVersion.__hash__c                 C   ó   |   |dd„ ¡S )Nc                 S   s   | |k S r   r
   ©ÚsÚor
   r
   r   Ú<lambda>�   ó    z%_BaseVersion.__lt__.<locals>.<lambda>©Ú_comparer   r
   r
   r   r   Œ   ó   z_BaseVersion.__lt__c                 C   r:   )Nc                 S   s   | |kS r   r
   r;   r
   r
   r   r>   �   r?   z%_BaseVersion.__le__.<locals>.<lambda>r@   r   r
   r
   r   r   �   rB   z_BaseVersion.__le__c                 C   r:   )Nc                 S   s   | |kS r   r
   r;   r
   r
   r   r>   “   r?   z%_BaseVersion.__eq__.<locals>.<lambda>r@   r   r
   r
   r   r    ’   rB   z_BaseVersion.__eq__c                 C   r:   )Nc                 S   s   | |kS r   r
   r;   r
   r
   r   r>   –   r?   z%_BaseVersion.__ge__.<locals>.<lambda>r@   r   r
   r
   r   r&   •   rB   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   r%   ˜   rB   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   r"   ›   rB   z_BaseVersion.__ne__c                 C   s   t |tƒstS || j|jƒS r   )r   r8   ÚNotImplementedr9   )r   r   Úmethodr
   r
   r   rA   ž   s   
z_BaseVersion._compareN)r+   r,   r-   r   r   r   r    r&   r%   r"   rA   r
   r
   r
   r   r8   ‡   s    r8   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dS )r   c                 C   s   t |ƒ| _t| jƒ| _d S r   )ÚstrÚ_versionÚ_legacy_cmpkeyr9   )r   r6   r
   r
   r   Ú__init__§   s   
zLegacyVersion.__init__c                 C   ó   | j S r   ©rF   r   r
   r
   r   Ú__str__«   s   zLegacyVersion.__str__c                 C   ó   dt t| ƒƒ› d�S )Nz<LegacyVersion(ú)>©r   rE   r   r
   r
   r   r   ®   ó   zLegacyVersion.__repr__c                 C   rI   r   rJ   r   r
   r
   r   Úpublic±   ó   zLegacyVersion.publicc                 C   rI   r   rJ   r   r
   r
   r   Úbase_versionµ   rQ   zLegacyVersion.base_versionc                 C   s   d S r   r
   r   r
   r
   r   r5   ¹   ó   zLegacyVersion.localc                 C   r	   r   r
   r   r
   r
   r   Úis_prerelease½   rS   zLegacyVersion.is_prereleasec                 C   r	   r   r
   r   r
   r
   r   Úis_postreleaseÁ   rS   zLegacyVersion.is_postreleaseN)r+   r,   r-   rH   rK   r   ÚpropertyrP   rR   r5   rT   rU   r
   r
   r
   r   r   ¥   s    



r   z(\d+ | [a-z]+ | \.| -)Úczfinal-ú@)r3   Úpreviewú-Úrcr2   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)r<   Úpartr
   r
   r   Ú_parse_version_partsÏ   s   €
rh   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 )Néÿÿÿÿr`   ra   z*final-Ú00000000)rh   ÚlowerÚ
startswithÚpopÚappendÚtuple)r6   r0   Úpartsrg   r
   r
   r   rG   à   s   
ÿÿrG   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dS )r   z^\s*z\s*$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: 'ú'r0   r   c                 s   ó   � | ]}t |ƒV  qd S r   )Úint©Ú.0Úir
   r
   r   Ú	<genexpr>-  ó   € z#Version.__init__.<locals>.<genexpr>r1   r\   Úpre_lÚpre_nÚpost_lÚpost_n1Úpost_n2Údev_lÚdev_nr5   ©r0   r1   r3   r4   r2   r5   )Ú_regexÚsearchr   r/   Úgrouprs   ro   rc   Ú_parse_letter_versionÚ_parse_local_versionrF   Ú_cmpkeyr0   r1   r3   r4   r2   r5   r9   )r   r6   Úmatchr
   r
   r   rH   $  s8   þþþñ
úzVersion.__init__c                 C   rL   )Nz	<Version(rM   rN   r   r
   r
   r   r   G  rO   zVersion.__repr__c                 C   sî   g }| j jdkr| | j j› d�¡ | d dd„ | j jD ƒ¡¡ | j jd ur6| d dd„ | j jD ƒ¡¡ | j jd urH| d| j jd	 › �¡ | j jd urZ| d
| j jd	 › �¡ | j jd urr| d 	d dd„ | j jD ƒ¡¡¡ d |¡S )Nr   ú!r\   c                 s   rr   r   ©rE   ©ru   Úxr
   r
   r   rw   R  rx   z"Version.__str__.<locals>.<genexpr>Ú c                 s   rr   r   r‰   rŠ   r
   r
   r   rw   V  rx   z.postr]   z.devz+{}c                 s   rr   r   r‰   rŠ   r
   r
   r   rw   c  rx   )
rF   r0   rn   Újoinr1   r3   r4   r2   r5   Úformat©r   rp   r
   r
   r   rK   J  s   ÿ
zVersion.__str__c                 C   s   t | ƒ dd¡d S )Nú+r]   r   ©rE   rc   r   r
   r
   r   rP   h  ó   zVersion.publicc                 C   sL   g }| j jdkr| | j j› d�¡ | d dd„ | j jD ƒ¡¡ d |¡S )Nr   rˆ   r\   c                 s   rr   r   r‰   rŠ   r
   r
   r   rw   u  rx   z'Version.base_version.<locals>.<genexpr>rŒ   )rF   r0   rn   r�   r1   r�   r
   r
   r   rR   l  s
   
zVersion.base_versionc                 C   s$   t | ƒ}d|v r| dd¡d S d S )Nr�   r]   r‘   )r   Úversion_stringr
   r
   r   r5   y  s   ÿzVersion.localc                 C   s   t | jjp| jjƒS r   )ÚboolrF   r2   r3   r   r
   r
   r   rT     r’   zVersion.is_prereleasec                 C   s   t | jjƒS r   )r”   rF   r4   r   r
   r
   r   rU   ƒ  s   zVersion.is_postreleaseN)r+   r,   r-   ÚreÚcompiler   ÚVERBOSEÚ
IGNORECASEr�   rH   r   rK   rV   rP   rR   r5   rT   rU   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)rW   r3   rY   r[   )ÚrevÚrr4   )rk   rs   )Ú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   rs   )ru   rg   r
   r
   r   rw   ¯  s
   € ÿ
ÿz'_parse_local_version.<locals>.<genexpr>)ro   Ú_local_version_seperatorsrc   )r5   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}|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)r   rs   r   rt   r
   r
   r   rw   â  s
   € ÿ
ÿz_cmpkey.<locals>.<genexpr>)ro   ÚreversedÚlistÚ	itertoolsÚ	dropwhiler   r€   r
   r
   r   r†   µ  s,   þÿÿ	þr†   )r7   Úcollectionsr¥   r•   Ú__all__r   r(   Ú
namedtupler/   r   Ú
ValueErrorr   r8   r   r–   r—   rb   rd   rh   rG   r   r   r„   r¢   r…   r†   r
   r
   r
   r   Ú<module>   s<     þ!ÿ
ÿ k
