a
    ¦Q•hym  ã                   @   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Zddlm	Z	m
Z
 ddlmZmZmZ G dd„ deƒZG dd	„ d	e
ejeƒƒZG d
d„ deƒZG dd„ deƒZdd„ ZG dd„ deƒZe d¡Zdd„ Zdd„ ZG dd„ deƒZdS )é    )Úabsolute_importÚdivisionÚprint_functionNé   )Ústring_typesÚwith_metaclass)ÚVersionÚLegacyVersionÚparsec                   @   s   e Zd ZdZdS )ÚInvalidSpecifierzH
    An invalid specifier was found, users should refer to PEP 440.
    N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__© r   r   úc/var/www/sistema_ama/venv/lib/python3.9/site-packages/pkg_resources/_vendor/packaging/specifiers.pyr      s   r   c                   @   s€   e Zd Zejdd„ ƒZejdd„ ƒZejdd„ ƒZejdd„ ƒZej	d	d
„ ƒZ
e
jdd
„ ƒZ
ejddd„ƒZejddd„ƒZdS )ÚBaseSpecifierc                 C   s   dS )zŽ
        Returns the str representation of this Specifier like object. This
        should be representative of the Specifier itself.
        Nr   ©Úselfr   r   r   Ú__str__   s    zBaseSpecifier.__str__c                 C   s   dS )zF
        Returns a hash value for this Specifier like object.
        Nr   r   r   r   r   Ú__hash__   s    zBaseSpecifier.__hash__c                 C   s   dS )zq
        Returns a boolean representing whether or not the two Specifier like
        objects are equal.
        Nr   ©r   Úotherr   r   r   Ú__eq__$   s    zBaseSpecifier.__eq__c                 C   s   dS )zu
        Returns a boolean representing whether or not the two Specifier like
        objects are not equal.
        Nr   r   r   r   r   Ú__ne__+   s    zBaseSpecifier.__ne__c                 C   s   dS )zg
        Returns whether or not pre-releases as a whole are allowed by this
        specifier.
        Nr   r   r   r   r   Úprereleases2   s    zBaseSpecifier.prereleasesc                 C   s   dS )zd
        Sets whether or not pre-releases as a whole are allowed by this
        specifier.
        Nr   ©r   Úvaluer   r   r   r   9   s    Nc                 C   s   dS )zR
        Determines if the given item is contained within this specifier.
        Nr   ©r   Úitemr   r   r   r   Úcontains@   s    zBaseSpecifier.containsc                 C   s   dS )z•
        Takes an iterable of items and filters them so that only items which
        are contained within this specifier are allowed in it.
        Nr   )r   Úiterabler   r   r   r   ÚfilterF   s    zBaseSpecifier.filter)N)N)r   r   r   ÚabcÚabstractmethodr   r   r   r   Úabstractpropertyr   Úsetterr    r"   r   r   r   r   r      s    





r   c                   @   s    e Zd Zi Zd dd„Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
dd„ Zedd„ ƒZedd„ ƒZedd„ ƒZejdd„ ƒZdd„ Zd!dd„Zd"dd„ZdS )#Ú_IndividualSpecifierÚ Nc                 C   sF   | j  |¡}|std |¡ƒ‚| d¡ ¡ | d¡ ¡ f| _|| _d S )NzInvalid specifier: '{0}'ÚoperatorÚversion)Ú_regexÚsearchr   ÚformatÚgroupÚstripÚ_specÚ_prereleases)r   Úspecr   Úmatchr   r   r   Ú__init__R   s    þz_IndividualSpecifier.__init__c                 C   s0   | j d urd | j¡nd}d | jjt| ƒ|¡S )Nú, prereleases={0!r}r(   z<{0}({1!r}{2})>)r1   r-   r   Ú	__class__r   Ústr©r   Úprer   r   r   Ú__repr___   s    ÿýýz_IndividualSpecifier.__repr__c                 C   s   dj | jŽ S )Nz{0}{1})r-   r0   r   r   r   r   r   l   s    z_IndividualSpecifier.__str__c                 C   s
   t | jƒS ©N)Úhashr0   r   r   r   r   r   o   s    z_IndividualSpecifier.__hash__c                 C   sN   t |tƒr2z|  |¡}W qB ty.   t Y S 0 nt || jƒsBtS | j|jkS r;   ©Ú
isinstancer   r6   r   ÚNotImplementedr0   r   r   r   r   r   r   s    
z_IndividualSpecifier.__eq__c                 C   sN   t |tƒr2z|  |¡}W qB ty.   t Y S 0 nt || jƒsBtS | j|jkS r;   r=   r   r   r   r   r   }   s    
z_IndividualSpecifier.__ne__c                 C   s   t | d | j| ¡ƒS )Nz_compare_{0})Úgetattrr-   Ú
_operators)r   Úopr   r   r   Ú_get_operatorˆ   s    z"_IndividualSpecifier._get_operatorc                 C   s   t |ttfƒst|ƒ}|S r;   )r>   r	   r   r
   ©r   r*   r   r   r   Ú_coerce_version‹   s    z$_IndividualSpecifier._coerce_versionc                 C   s
   | j d S )Nr   ©r0   r   r   r   r   r)   �   s    z_IndividualSpecifier.operatorc                 C   s
   | j d S )Nr   rF   r   r   r   r   r*   ”   s    z_IndividualSpecifier.versionc                 C   s   | j S r;   ©r1   r   r   r   r   r   ˜   s    z _IndividualSpecifier.prereleasesc                 C   s
   || _ d S r;   rG   r   r   r   r   r   œ   s    c                 C   s
   |   |¡S r;   ©r    ©r   r   r   r   r   Ú__contains__    s    z!_IndividualSpecifier.__contains__c                 C   s:   |d u r| j }|  |¡}|jr&|s&dS |  | j¡|| jƒS ©NF)r   rE   Úis_prereleaserC   r)   r*   r   r   r   r   r    £   s    

z_IndividualSpecifier.containsc                 c   s„   d}g }d|d ur|ndi}|D ]F}|   |¡}| j|fi |¤Žr |jr\|s\| js\| |¡ q d}|V  q |s€|r€|D ]
}|V  qtd S )NFr   T)rE   r    rL   r   Úappend)r   r!   r   ÚyieldedÚfound_prereleasesÚkwr*   Úparsed_versionr   r   r   r"   ¶   s"    
ÿÿz_IndividualSpecifier.filter)r(   N)N)N)r   r   r   rA   r4   r:   r   r   r   r   rC   rE   Úpropertyr)   r*   r   r&   rJ   r    r"   r   r   r   r   r'   N   s(   





r'   c                   @   sv   e Zd ZdZe de d ejejB ¡Zddddd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 )ÚLegacySpecifieraÛ  
        (?P<operator>(==|!=|<=|>=|<|>))
        \s*
        (?P<version>
            [^,;\s)]* # Since this is a "legacy" specifier, and the version
                      # string can be just about anything, we match everything
                      # except for whitespace, a semi-colon for marker support,
                      # a closing paren since versions can be enclosed in
                      # them, and a comma since it's a version separator.
        )
        ú^\s*ú\s*$ÚequalÚ	not_equalÚless_than_equalÚgreater_than_equalÚ	less_thanÚgreater_than)ú==ú!=ú<=ú>=ú<ú>c                 C   s   t |tƒstt|ƒƒ}|S r;   )r>   r	   r7   rD   r   r   r   rE   ò   s    
zLegacySpecifier._coerce_versionc                 C   s   ||   |¡kS r;   ©rE   ©r   Úprospectiver2   r   r   r   Ú_compare_equal÷   s    zLegacySpecifier._compare_equalc                 C   s   ||   |¡kS r;   rb   rc   r   r   r   Ú_compare_not_equalú   s    z"LegacySpecifier._compare_not_equalc                 C   s   ||   |¡kS r;   rb   rc   r   r   r   Ú_compare_less_than_equalý   s    z(LegacySpecifier._compare_less_than_equalc                 C   s   ||   |¡kS r;   rb   rc   r   r   r   Ú_compare_greater_than_equal   s    z+LegacySpecifier._compare_greater_than_equalc                 C   s   ||   |¡k S r;   rb   rc   r   r   r   Ú_compare_less_than  s    z"LegacySpecifier._compare_less_thanc                 C   s   ||   |¡kS r;   rb   rc   r   r   r   Ú_compare_greater_than  s    z%LegacySpecifier._compare_greater_thanN)r   r   r   Ú
_regex_strÚreÚcompileÚVERBOSEÚ
IGNORECASEr+   rA   rE   re   rf   rg   rh   ri   rj   r   r   r   r   rS   Ö   s&   ÿÿú	rS   c                    s   t  ˆ ¡‡ fdd„ƒ}|S )Nc                    s   t |tƒsdS ˆ | ||ƒS rK   )r>   r   rc   ©Úfnr   r   Úwrapped  s    
z)_require_version_compare.<locals>.wrapped)Ú	functoolsÚwraps)rq   rr   r   rp   r   Ú_require_version_compare
  s    ru   c                	   @   s¸   e Zd ZdZe de d ejejB ¡Zdddddd	d
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d„ Zedd„ ƒZejdd„ ƒZd S )!Ú	Specifiera  
        (?P<operator>(~=|==|!=|<=|>=|<|>|===))
        (?P<version>
            (?:
                # The identity operators allow for an escape hatch that will
                # do an exact string match of the version you wish to install.
                # This will not be parsed by PEP 440 and we cannot determine
                # any semantic meaning from it. This operator is discouraged
                # but included entirely as an escape hatch.
                (?<====)  # Only match for the identity operator
                \s*
                [^\s]*    # We just match everything, except for whitespace
                          # since we are only testing for strict identity.
            )
            |
            (?:
                # The (non)equality operators allow for wild card and local
                # versions to be specified so we have to define these two
                # operators separately to enable that.
                (?<===|!=)            # Only match for equals and not equals

                \s*
                v?
                (?:[0-9]+!)?          # epoch
                [0-9]+(?:\.[0-9]+)*   # release
                (?:                   # pre release
                    [-_\.]?
                    (a|b|c|rc|alpha|beta|pre|preview)
                    [-_\.]?
                    [0-9]*
                )?
                (?:                   # post release
                    (?:-[0-9]+)|(?:[-_\.]?(post|rev|r)[-_\.]?[0-9]*)
                )?

                # You cannot use a wild card and a dev or local version
                # together so group them with a | and make them optional.
                (?:
                    (?:[-_\.]?dev[-_\.]?[0-9]*)?         # dev release
                    (?:\+[a-z0-9]+(?:[-_\.][a-z0-9]+)*)? # local
                    |
                    \.\*  # Wild card syntax of .*
                )?
            )
            |
            (?:
                # The compatible operator requires at least two digits in the
                # release segment.
                (?<=~=)               # Only match for the compatible operator

                \s*
                v?
                (?:[0-9]+!)?          # epoch
                [0-9]+(?:\.[0-9]+)+   # release  (We have a + instead of a *)
                (?:                   # pre release
                    [-_\.]?
                    (a|b|c|rc|alpha|beta|pre|preview)
                    [-_\.]?
                    [0-9]*
                )?
                (?:                                   # post release
                    (?:-[0-9]+)|(?:[-_\.]?(post|rev|r)[-_\.]?[0-9]*)
                )?
                (?:[-_\.]?dev[-_\.]?[0-9]*)?          # dev release
            )
            |
            (?:
                # All other operators only allow a sub set of what the
                # (non)equality operators do. Specifically they do not allow
                # local versions to be specified nor do they allow the prefix
                # matching wild cards.
                (?<!==|!=|~=)         # We have special cases for these
                                      # operators so we want to make sure they
                                      # don't match here.

                \s*
                v?
                (?:[0-9]+!)?          # epoch
                [0-9]+(?:\.[0-9]+)*   # release
                (?:                   # pre release
                    [-_\.]?
                    (a|b|c|rc|alpha|beta|pre|preview)
                    [-_\.]?
                    [0-9]*
                )?
                (?:                                   # post release
                    (?:-[0-9]+)|(?:[-_\.]?(post|rev|r)[-_\.]?[0-9]*)
                )?
                (?:[-_\.]?dev[-_\.]?[0-9]*)?          # dev release
            )
        )
        rT   rU   Z
compatiblerV   rW   rX   rY   rZ   r[   Z	arbitrary)ú~=r\   r]   r^   r_   r`   ra   ú===c                 C   sN   d  tt dd„ t|ƒ¡ƒd d… ¡}|d7 }|  d¡||ƒoL|  d¡||ƒS )NÚ.c                 S   s   |   d¡ o|   d¡ S )NÚpostÚdev)Ú
startswith©Úxr   r   r   Ú<lambda>�  s   ÿz/Specifier._compare_compatible.<locals>.<lambda>éÿÿÿÿú.*r_   r\   )ÚjoinÚlistÚ	itertoolsÚ	takewhileÚ_version_splitrC   )r   rd   r2   Úprefixr   r   r   Ú_compare_compatible‚  s    ýÿúÿÿzSpecifier._compare_compatiblec                 C   sp   |  d¡rPt|jƒ}t|d d… ƒ}tt|ƒƒ}|d t|ƒ… }t||ƒ\}}nt|ƒ}|jsht|jƒ}||kS )Nr�   éþÿÿÿ)Úendswithr   Úpublicr†   r7   ÚlenÚ_pad_versionÚlocalrc   r   r   r   re   �  s    


zSpecifier._compare_equalc                 C   s   |   ||¡ S r;   )re   rc   r   r   r   rf   À  s    zSpecifier._compare_not_equalc                 C   s   |t |ƒkS r;   ©r   rc   r   r   r   rg   Ä  s    z"Specifier._compare_less_than_equalc                 C   s   |t |ƒkS r;   r�   rc   r   r   r   rh   È  s    z%Specifier._compare_greater_than_equalc                 C   s<   t |ƒ}||k sdS |js8|jr8t |jƒt |jƒkr8dS dS ©NFT)r   rL   Úbase_versionrc   r   r   r   ri   Ì  s    zSpecifier._compare_less_thanc                 C   s^   t |ƒ}||ksdS |js8|jr8t |jƒt |jƒkr8dS |jd urZt |jƒt |jƒkrZdS dS r�   )r   Úis_postreleaser‘   rŽ   rc   r   r   r   rj   å  s    
zSpecifier._compare_greater_thanc                 C   s   t |ƒ ¡ t |ƒ ¡ kS r;   )r7   Úlowerrc   r   r   r   Ú_compare_arbitrary  s    zSpecifier._compare_arbitraryc                 C   sR   | j d ur| j S | j\}}|dv rN|dkr@| d¡r@|d d… }t|ƒjrNdS dS )N)r\   r_   r^   rw   rx   r\   r�   r‰   TF)r1   r0   rŠ   r
   rL   )r   r)   r*   r   r   r   r     s    


zSpecifier.prereleasesc                 C   s
   || _ d S r;   rG   r   r   r   r   r     s    N)r   r   r   rk   rl   rm   rn   ro   r+   rA   ru   rˆ   re   rf   rg   rh   ri   rj   r”   rR   r   r&   r   r   r   r   rv     sB   ÿ_ÿø

"





rv   z^([0-9]+)((?:a|b|c|rc)[0-9]+)$c                 C   s@   g }|   d¡D ],}t |¡}|r0| | ¡ ¡ q| |¡ q|S )Nry   )ÚsplitÚ_prefix_regexr,   ÚextendÚgroupsrM   )r*   Úresultr   r3   r   r   r   r†   '  s    
r†   c              
   C   sæ   g g  }}|  tt dd„ | ¡ƒ¡ |  tt dd„ |¡ƒ¡ |  | t|d ƒd … ¡ |  |t|d ƒd … ¡ | ddgtdt|d ƒt|d ƒ ƒ ¡ | ddgtdt|d ƒt|d ƒ ƒ ¡ ttj|Ž ƒttj|Ž ƒfS )Nc                 S   s   |   ¡ S r;   ©Úisdigitr}   r   r   r   r   6  ó    z_pad_version.<locals>.<lambda>c                 S   s   |   ¡ S r;   rš   r}   r   r   r   r   7  rœ   r   r   Ú0)rM   rƒ   r„   r…   rŒ   ÚinsertÚmaxÚchain)ÚleftÚrightZ
left_splitZright_splitr   r   r   r�   2  s     
"þ"þþr�   c                   @   sŒ   e Zd Zd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edd„ ƒZejdd„ ƒZdd„ Zddd„Zd dd„ZdS )!ÚSpecifierSetr(   Nc              	   C   sl   dd„ |  d¡D ƒ}tƒ }|D ]8}z| t|ƒ¡ W q tyT   | t|ƒ¡ Y q0 qt|ƒ| _|| _d S )Nc                 S   s   g | ]}|  ¡ r|  ¡ ‘qS r   )r/   ©Ú.0Úsr   r   r   Ú
<listcomp>R  rœ   z)SpecifierSet.__init__.<locals>.<listcomp>ú,)	r•   ÚsetÚaddrv   r   rS   Ú	frozensetÚ_specsr1   )r   Z
specifiersr   ÚparsedÚ	specifierr   r   r   r4   O  s    
zSpecifierSet.__init__c                 C   s*   | j d urd | j¡nd}d t| ƒ|¡S )Nr5   r(   z<SpecifierSet({0!r}{1})>)r1   r-   r   r7   r8   r   r   r   r:   d  s
    ÿýzSpecifierSet.__repr__c                 C   s   d  tdd„ | jD ƒƒ¡S )Nr¨   c                 s   s   | ]}t |ƒV  qd S r;   )r7   r¤   r   r   r   Ú	<genexpr>n  rœ   z'SpecifierSet.__str__.<locals>.<genexpr>)r‚   Úsortedr¬   r   r   r   r   r   m  s    zSpecifierSet.__str__c                 C   s
   t | jƒS r;   )r<   r¬   r   r   r   r   r   p  s    zSpecifierSet.__hash__c                 C   s˜   t |tƒrt|ƒ}nt |tƒs"tS tƒ }t| j|jB ƒ|_| jd u rX|jd urX|j|_n<| jd urv|jd u rv| j|_n| j|jkrŒ| j|_ntdƒ‚|S )NzFCannot combine SpecifierSets with True and False prerelease overrides.)r>   r   r£   r?   r«   r¬   r1   Ú
ValueError)r   r   r®   r   r   r   Ú__and__s  s     





ÿzSpecifierSet.__and__c                 C   sF   t |tƒrt|ƒ}n&t |tƒr,tt|ƒƒ}nt |tƒs:tS | j|jkS r;   ©r>   r   r£   r'   r7   r?   r¬   r   r   r   r   r   Š  s    



zSpecifierSet.__eq__c                 C   sF   t |tƒrt|ƒ}n&t |tƒr,tt|ƒƒ}nt |tƒs:tS | j|jkS r;   r³   r   r   r   r   r   ”  s    



zSpecifierSet.__ne__c                 C   s
   t | jƒS r;   )rŒ   r¬   r   r   r   r   Ú__len__ž  s    zSpecifierSet.__len__c                 C   s
   t | jƒS r;   )Úiterr¬   r   r   r   r   Ú__iter__¡  s    zSpecifierSet.__iter__c                 C   s.   | j d ur| j S | jsd S tdd„ | jD ƒƒS )Nc                 s   s   | ]}|j V  qd S r;   ©r   r¤   r   r   r   r¯   ³  rœ   z+SpecifierSet.prereleases.<locals>.<genexpr>)r1   r¬   Úanyr   r   r   r   r   ¤  s
    
zSpecifierSet.prereleasesc                 C   s
   || _ d S r;   rG   r   r   r   r   r   µ  s    c                 C   s
   |   |¡S r;   rH   rI   r   r   r   rJ   ¹  s    zSpecifierSet.__contains__c                    sL   t ˆ ttfƒstˆ ƒ‰ ˆd u r$| j‰ˆs2ˆ jr2dS t‡ ‡fdd„| jD ƒƒS )NFc                 3   s   | ]}|j ˆ ˆd �V  qdS )r·   NrH   r¤   ©r   r   r   r   r¯   Ô  s   ÿz(SpecifierSet.contains.<locals>.<genexpr>)r>   r	   r   r
   r   rL   Úallr¬   r   r   r¹   r   r    ¼  s    
þzSpecifierSet.containsc                 C   s°   |d u r| j }| jr6| jD ]}|j|t|ƒd�}q|S g }g }|D ]P}t|ttfƒs^t|ƒ}n|}t|tƒrnqB|jrˆ|sˆ|s’| 	|¡ qB| 	|¡ qB|s¨|r¨|d u r¨|S |S d S )Nr·   )
r   r¬   r"   Úboolr>   r	   r   r
   rL   rM   )r   r!   r   r2   ÚfilteredrO   r   rQ   r   r   r   r"   Ù  s*    



zSpecifierSet.filter)r(   N)N)N)r   r   r   r4   r:   r   r   r²   r   r   r´   r¶   rR   r   r&   rJ   r    r"   r   r   r   r   r£   M  s    
	




r£   )Ú
__future__r   r   r   r#   rs   r„   rl   Z_compatr   r   r*   r   r	   r
   r±   r   ÚABCMetaÚobjectr   r'   rS   ru   rv   rm   r–   r†   r�   r£   r   r   r   r   Ú<module>   s&   9 	4	  
