3
gx                 @   s  d dl Z d dl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
mZmZmZmZmZmZ ddlmZ ddlmZmZmZ eeef Zeeeef ZededZeeegef ZG dd	 d	eZG d
d de jdZ G dd de Z!G dd de!Z"edeegef edeegef dddZ#G dd de!Z$ej%dZ&ee
e dddZ'eedddZ(e
e e
e ee
e e
e f dddZ)G d d! d!e Z*dS )"    N)CallableDictIterableIteratorListOptionalPatternSetTupleTypeVarUnion   )canonicalize_version)LegacyVersionVersionparseVersionTypeVar)boundc               @   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   ^/var/www/tester-filtro-web/env/lib/python3.6/site-packages/pip/_vendor/packaging/specifiers.pyr   !   s   r   c               @   s   e Zd ZejedddZejedddZeje	e
dddZeje	e
dd	d
Zejee
 dddZeje
ddddZejdeee
 e
dddZejdee ee
 ee dddZdS )BaseSpecifier)returnc             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__)otherr   c             C   s   dS )zq
        Returns a boolean representing whether or not the two Specifier like
        objects are equal.
        Nr   )r   r    r   r   r   __eq__5   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   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   prereleasesC   s    zBaseSpecifier.prereleasesN)valuer   c             C   s   dS )zd
        Sets whether or not pre-releases as a whole are allowed by this
        specifier.
        Nr   )r   r$   r   r   r   r#   J   s    )itemr#   r   c             C   s   dS )zR
        Determines if the given item is contained within this specifier.
        Nr   )r   r%   r#   r   r   r   containsQ   s    zBaseSpecifier.contains)iterabler#   r   c             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   r'   r#   r   r   r   filterW   s    zBaseSpecifier.filter)N)N)r   r   r   abcabstractmethodstrr   intr   objectboolr!   r"   abstractpropertyr   r#   setterr&   r   r   r(   r   r   r   r   r   '   s"   r   )	metaclassc               @   sZ  e Zd ZU i Zeeef ee d+eee	 ddddZ
edddZedd	d
Zeeeef dddZedddZee	dddZee	dddZeedddZeedddZeedddZeedddZeee	 dddZeje	dd d!dZee	d"d#d$Zd,eee	 e	d%d&d'Zd-e e! ee	 e e! d(d)d*Z"dS )._IndividualSpecifier N)specr#   r   c             C   sH   | j j|}|s td| d|jdj |jdj f| _|| _d S )NzInvalid specifier: ''operatorversion)_regexsearchr   groupstrip_spec_prereleases)r   r4   r#   matchr   r   r   __init__f   s    z_IndividualSpecifier.__init__)r   c             C   s0   | j d k	rd| jnd}dj| jjt| |S )Nz, prereleases=r3   z<{}({!r}{})>)r=   r#   format	__class__r   r+   )r   prer   r   r   __repr__s   s    z_IndividualSpecifier.__repr__c             C   s   dj | j S )Nz{}{})r@   r<   )r   r   r   r   r   |   s    z_IndividualSpecifier.__str__c             C   s   | j d t| j d fS )Nr   r   )r<   r   )r   r   r   r   _canonical_spec   s    z$_IndividualSpecifier._canonical_specc             C   s
   t | jS )N)hashrD   )r   r   r   r   r      s    z_IndividualSpecifier.__hash__)r    r   c             C   sP   t |tr4y| jt|}W qD tk
r0   tS X nt || jsDtS | j|jkS )N)
isinstancer+   rA   r   NotImplementedrD   )r   r    r   r   r   r!      s    
z_IndividualSpecifier.__eq__c             C   sP   t |tr4y| jt|}W qD tk
r0   tS X nt || jsDtS | j|jkS )N)rF   r+   rA   r   rG   r<   )r   r    r   r   r   r"      s    
z_IndividualSpecifier.__ne__)opr   c             C   s   t | d| j|  }|S )NZ	_compare_)getattr
_operators)r   rH   operator_callabler   r   r   _get_operator   s    z"_IndividualSpecifier._get_operator)r7   r   c             C   s   t |ttfst|}|S )N)rF   r   r   r   )r   r7   r   r   r   _coerce_version   s    z$_IndividualSpecifier._coerce_versionc             C   s
   | j d S )Nr   )r<   )r   r   r   r   r6      s    z_IndividualSpecifier.operatorc             C   s
   | j d S )Nr   )r<   )r   r   r   r   r7      s    z_IndividualSpecifier.versionc             C   s   | j S )N)r=   )r   r   r   r   r#      s    z _IndividualSpecifier.prereleases)r$   r   c             C   s
   || _ d S )N)r=   )r   r$   r   r   r   r#      s    )r%   r   c             C   s
   | j |S )N)r&   )r   r%   r   r   r   __contains__   s    z!_IndividualSpecifier.__contains__)r%   r#   r   c             C   s@   |d kr| j }| j|}|jr(| r(dS | j| j}||| jS )NF)r#   rM   is_prereleaserL   r6   r7   )r   r%   r#   Znormalized_itemrK   r   r   r   r&      s    
z_IndividualSpecifier.contains)r'   r#   r   c             c   s   d}g }d|d k	r|ndi}xL|D ]D}| j |}| j|f|r"|jr\|pL| j r\|j| q"d}|V  q"W | r|rx|D ]
}|V  qzW d S )NFr#   T)rM   r&   rO   r#   append)r   r'   r#   yieldedfound_prereleaseskwr7   parsed_versionr   r   r   r(      s    




z_IndividualSpecifier.filter)r3   N)N)N)#r   r   r   rJ   r   r+   r   r8   r   r.   r?   rC   r   propertyr
   rD   r,   r   r-   r!   r"   CallableOperatorrL   UnparsedVersionParsedVersionrM   r6   r7   r#   r0   rN   r&   r   r   r(   r   r   r   r   r2   a   s2   
	
r2   c                   s   e Zd ZdZejde d ejejB Zdddddd	d
Z	d e
ee dd fddZeedddZee
edddZee
edddZee
edddZee
edddZee
edddZee
edddZ  Z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.
        )
        z^\s*z\s*$equal	not_equalless_than_equalgreater_than_equal	less_thangreater_than)z==z!=z<=z>=<>r3   N)r4   r#   r   c                s   t  j|| tjdt d S )NzZCreating a LegacyVersion has been deprecated and will be removed in the next major release)superr?   warningswarnDeprecationWarning)r   r4   r#   )rA   r   r   r?     s    zLegacySpecifier.__init__)r7   r   c             C   s   t |tstt|}|S )N)rF   r   r+   )r   r7   r   r   r   rM     s    
zLegacySpecifier._coerce_version)prospectiver4   r   c             C   s   || j |kS )N)rM   )r   rf   r4   r   r   r   _compare_equal  s    zLegacySpecifier._compare_equalc             C   s   || j |kS )N)rM   )r   rf   r4   r   r   r   _compare_not_equal  s    z"LegacySpecifier._compare_not_equalc             C   s   || j |kS )N)rM   )r   rf   r4   r   r   r   _compare_less_than_equal"  s    z(LegacySpecifier._compare_less_than_equalc             C   s   || j |kS )N)rM   )r   rf   r4   r   r   r   _compare_greater_than_equal%  s    z+LegacySpecifier._compare_greater_than_equalc             C   s   || j |k S )N)rM   )r   rf   r4   r   r   r   _compare_less_than*  s    z"LegacySpecifier._compare_less_thanc             C   s   || j |kS )N)rM   )r   rf   r4   r   r   r   _compare_greater_than-  s    z%LegacySpecifier._compare_greater_than)r3   N)r   r   r   
_regex_strrecompileVERBOSE
IGNORECASEr8   rJ   r+   r   r.   r?   rW   r   rM   rg   rh   ri   rj   rk   rl   __classcell__r   r   )rA   r   rY      s"   	rY   	Specifier)fnr   c                s&   t j dtttd fdd}|S )Nrs   )r   rf   r4   r   c                s   t |tsdS  | ||S )NF)rF   r   )r   rf   r4   )rt   r   r   wrapped4  s    
z)_require_version_compare.<locals>.wrapped)	functoolswrapsrX   r+   r.   )rt   ru   r   )rt   r   _require_version_compare1  s    rx   c            	   @   s  e Zd ZdZejde d ejejB Zdddddd	d
ddZ	e
eeedddZe
eeedddZe
eeedddZe
eeedddZe
eeedddZe
eeedddZe
eeedddZeeedddZeedd d!Zejed"d#d$d!Zd"S )%rs   a  
        (?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
            )
        )
        z^\s*z\s*$Z
compatiblerZ   r[   r\   r]   r^   r_   Z	arbitrary)z~=z==z!=z<=z>=r`   ra   z===)rf   r4   r   c             C   sJ   dj ttjtt|d d }|d7 }| jd||oH| jd||S )N.r   z.*z>=z==)joinlist	itertools	takewhile_is_not_suffix_version_splitrL   )r   rf   r4   prefixr   r   r   _compare_compatible  s
    zSpecifier._compare_compatiblec       	      C   sz   |j drVt|j}t|d d }tt|}|d t| }t||\}}||kS t|}|jsnt|j}||kS d S )Nz.*   )endswithr   publicr   r+   len_pad_versionlocal)	r   rf   r4   Z
split_specZsplit_prospectiveZshortened_prospectiveZpadded_specZpadded_prospectiveZspec_versionr   r   r   rg     s    


zSpecifier._compare_equalc             C   s   | j || S )N)rg   )r   rf   r4   r   r   r   rh     s    zSpecifier._compare_not_equalc             C   s   t |jt |kS )N)r   r   )r   rf   r4   r   r   r   ri     s    z"Specifier._compare_less_than_equalc             C   s   t |jt |kS )N)r   r   )r   rf   r4   r   r   r   rj     s    z%Specifier._compare_greater_than_equal)rf   spec_strr   c             C   s>   t |}||k sdS |j r:|jr:t |jt |jkr:dS dS )NFT)r   rO   base_version)r   rf   r   r4   r   r   r   rk     s    zSpecifier._compare_less_thanc             C   s`   t |}||ksdS |j r:|jr:t |jt |jkr:dS |jd k	r\t |jt |jkr\dS dS )NFT)r   is_postreleaser   r   )r   rf   r   r4   r   r   r   rl     s    
zSpecifier._compare_greater_thanc             C   s   t |j t |j kS )N)r+   lower)r   rf   r4   r   r   r   _compare_arbitrary7  s    zSpecifier._compare_arbitrary)r   c             C   sR   | j d k	r| j S | j\}}|d
krN|dkr@|jdr@|d d }t|jrNdS d	S )N==>=<=~====z.*r   TF)r   r   r   r   r   r   )r=   r<   r   r   rO   )r   r6   r7   r   r   r   r#   :  s    


zSpecifier.prereleasesN)r$   r   c             C   s
   || _ d S )N)r=   )r   r$   r   r   r   r#   S  s    )r   r   r   rm   rn   ro   rp   rq   r8   rJ   rx   rX   r+   r.   r   rg   rh   ri   rj   rk   rl   r   r   rU   r#   r0   r   r   r   r   rs   =  s<   ]'z^([0-9]+)((?:a|b|c|rc)[0-9]+)$)r7   r   c             C   sD   g }x:| j dD ],}tj|}|r2|j|j  q|j| qW |S )Nry   )split_prefix_regexr9   extendgroupsrP   )r7   resultr%   r>   r   r   r   r   [  s    
r   )segmentr   c                s   t  fdddD  S )	Nc             3   s   | ]} j |V  qd S )N)
startswith).0r   )r   r   r   	<genexpr>h  s    z!_is_not_suffix.<locals>.<genexpr>devabrcpost)r   r   r   r   r   )any)r   r   )r   r   r   f  s    r   )leftrightr   c          	   C   s   g g  }}|j ttjdd |  |j ttjdd | |j | t|d d   |j |t|d d   |jddgtdt|d t|d    |jddgtdt|d t|d    ttj| ttj| fS )Nc             S   s   | j  S )N)isdigit)xr   r   r   <lambda>p  s    z_pad_version.<locals>.<lambda>c             S   s   | j  S )N)r   )r   r   r   r   r   q  s    r   r   0)rP   r|   r}   r~   r   insertmaxchain)r   r   Z
left_splitZright_splitr   r   r   r   l  s    
,,r   c               @   s  e Zd Zd%eee ddddZedddZedd	d
Ze	dddZ
ed ef d dddZeedddZeedddZe	dddZee dddZeee dddZejeddddZeedddZd&eee edd d!Zd'ee ee ee d"d#d$ZdS )(SpecifierSetr3   N)
specifiersr#   r   c             C   sr   dd |j dD }t }xB|D ]:}y|jt| W q  tk
rX   |jt| Y q X q W t|| _|| _d S )Nc             S   s   g | ]}|j  r|j  qS r   )r;   )r   sr   r   r   
<listcomp>  s    z)SpecifierSet.__init__.<locals>.<listcomp>,)	r   setaddrs   r   rY   	frozenset_specsr=   )r   r   r#   Zsplit_specifiersparsed	specifierr   r   r   r?     s    

zSpecifierSet.__init__)r   c             C   s*   | j d k	rd| jnd}djt| |S )Nz, prereleases=r3   z<SpecifierSet({!r}{})>)r=   r#   r@   r+   )r   rB   r   r   r   rC     s    zSpecifierSet.__repr__c             C   s   dj tdd | jD S )Nr   c             s   s   | ]}t |V  qd S )N)r+   )r   r   r   r   r   r     s    z'SpecifierSet.__str__.<locals>.<genexpr>)r{   sortedr   )r   r   r   r   r     s    zSpecifierSet.__str__c             C   s
   t | jS )N)rE   r   )r   r   r   r   r     s    zSpecifierSet.__hash__)r    r   c             C   s   t |trt|}nt |ts"tS t }t| j|jB |_| jd krX|jd k	rX|j|_n<| jd k	rv|jd krv| j|_n| j|jkr| j|_ntd|S )NzFCannot combine SpecifierSets with True and False prerelease overrides.)rF   r+   r   rG   r   r   r=   
ValueError)r   r    r   r   r   r   __and__  s    





zSpecifierSet.__and__c             C   s6   t |ttfrtt|}nt |ts*tS | j|jkS )N)rF   r+   r2   r   rG   r   )r   r    r   r   r   r!     s
    
zSpecifierSet.__eq__c             C   s6   t |ttfrtt|}nt |ts*tS | j|jkS )N)rF   r+   r2   r   rG   r   )r   r    r   r   r   r"     s
    
zSpecifierSet.__ne__c             C   s
   t | jS )N)r   r   )r   r   r   r   __len__  s    zSpecifierSet.__len__c             C   s
   t | jS )N)iterr   )r   r   r   r   __iter__  s    zSpecifierSet.__iter__c             C   s.   | j d k	r| j S | jsd S tdd | jD S )Nc             s   s   | ]}|j V  qd S )N)r#   )r   r   r   r   r   r     s    z+SpecifierSet.prereleases.<locals>.<genexpr>)r=   r   r   )r   r   r   r   r#     s
    
zSpecifierSet.prereleases)r$   r   c             C   s
   || _ d S )N)r=   )r   r$   r   r   r   r#     s    )r%   r   c             C   s
   | j |S )N)r&   )r   r%   r   r   r   rN     s    zSpecifierSet.__contains__)r%   r#   r   c                sN   t  ttfst  d kr$| j r4 jr4dS t fdd| jD S )NFc             3   s   | ]}|j  d V  qdS ))r#   N)r&   )r   r   )r%   r#   r   r   r     s    z(SpecifierSet.contains.<locals>.<genexpr>)rF   r   r   r   r#   rO   allr   )r   r%   r#   r   )r%   r#   r   r&     s    zSpecifierSet.contains)r'   r#   r   c             C   s   |d kr| j }| jr:x | jD ]}|j|t|d}qW |S g }g }xZ|D ]R}t|ttfsdt|}n|}t|trtqH|jr| r|s|j	| qH|j	| qHW | r|r|d kr|S |S d S )N)r#   )
r#   r   r(   r.   rF   r   r   r   rO   rP   )r   r'   r#   r4   filteredrR   r%   rT   r   r   r   r(   	  s*    


zSpecifierSet.filter)r3   N)N)N)r   r   r   r+   r   r.   r?   rC   r   r,   r   r   r   r-   r!   r"   r   r   r2   r   rU   r#   r0   rW   rN   r&   r   r   r(   r   r   r   r   r   ~  s&   
	
r   )+r)   rv   r}   rn   rc   typingr   r   r   r   r   r   r   r	   r
   r   r   utilsr   r7   r   r   r   rX   r+   rW   r   r.   rV   r   r   ABCMetar   r2   rY   rx   rs   ro   r   r   r   r   r   r   r   r   r   <module>   s4   4: =
  
*