3
gd                 @   s   d dl mZmZmZmZmZ d dlmZ d dlm	Z	m
Z
 d dlmZmZ d dlmZmZ d dlmZ d dlmZ eed ee f Zeeef Zeee ed	d
dZG dd dZG dd dZededddZG dd dZdS )    )	FrozenSetIterableOptionalTupleUnion)SpecifierSet)NormalizedNamecanonicalize_name)LegacyVersionVersion)Linklinks_equivalent)InstallRequirement)Hashes	Candidate)projectextrasreturnc             C   s,   |s| S t dd |D }dj| dj|S )Nc             s   s   | ]}t |V  qd S )N)r	   ).0e r   f/var/www/tester-filtro-web/env/lib/python3.6/site-packages/pip/_internal/resolution/resolvelib/base.py	<genexpr>   s    zformat_name.<locals>.<genexpr>z{}[{}],)sortedformatjoin)r   r   Zcanonical_extrasr   r   r   format_name   s    r   c               @   sx   e Zd Zeeee ddddZed dddZ	ee
d dd	d
ZedddZe
d dddZdedddZdS )
ConstraintN)	specifierhasheslinksr   c             C   s   || _ || _|| _d S )N)r   r    r!   )selfr   r    r!   r   r   r   __init__   s    zConstraint.__init__)r   c             C   s   t t t t S )N)r   r   r   	frozenset)clsr   r   r   empty   s    zConstraint.empty)ireqr   c             C   s.   |j rt|j gnt }t|j|jdd|S )NF)trust_internet)linkr$   r   r   r    )r%   r'   r!   r   r   r   	from_ireq"   s    zConstraint.from_ireqc             C   s   t | jpt | jpt | jS )N)boolr   r    r!   )r"   r   r   r   __bool__'   s    zConstraint.__bool__)otherr   c             C   sR   t |tstS | j|j@ }| j|jdd@ }| j}|jrF|j|jg}t|||S )NF)r(   )	
isinstancer   NotImplementedr   r    r!   r)   unionr   )r"   r-   r   r    r!   r   r   r   __and__*   s    
zConstraint.__and__r   )	candidater   c                s6   | j r$t fdd| j D  r$dS | jj jddS )Nc             3   s   | ]}t | V  qd S )N)_match_link)r   r)   )r2   r   r   r   6   s    z-Constraint.is_satisfied_by.<locals>.<genexpr>FT)prereleases)r!   allr   containsversion)r"   r2   r   )r2   r   is_satisfied_by4   s     zConstraint.is_satisfied_by)__name__
__module____qualname__r   r   r   r   r#   classmethodr&   r   r*   r+   r,   r1   r8   r   r   r   r   r      s   

r   c               @   s\   e Zd ZeedddZeedddZdeddd	Z	e
dd
dZedddZdS )Requirement)r   c             C   s   t ddS )zThe "project name" of a requirement.

        This is different from ``name`` if this requirement contains extras,
        in which case ``name`` would contain the ``[...]`` part, while this
        refers to the name of the project.
        zSubclass should overrideN)NotImplementedError)r"   r   r   r   project_name?   s    zRequirement.project_namec             C   s   t ddS )zThe name identifying this requirement in the resolver.

        This is different from ``project_name`` if this requirement contains
        extras, where ``project_name`` would not contain the ``[...]`` part.
        zSubclass should overrideN)r>   )r"   r   r   r   nameI   s    zRequirement.namer   )r2   r   c             C   s   dS )NFr   )r"   r2   r   r   r   r8   R   s    zRequirement.is_satisfied_byc             C   s   t dd S )NzSubclass should override)r>   )r"   r   r   r   get_candidate_lookupU   s    z Requirement.get_candidate_lookupc             C   s   t dd S )NzSubclass should override)r>   )r"   r   r   r   format_for_errorX   s    zRequirement.format_for_errorN)r9   r:   r;   propertyr   r?   strr@   r+   r8   CandidateLookuprA   rB   r   r   r   r   r=   >   s   	r=   )r)   r2   r   c             C   s   |j rt| |j S dS )NF)source_linkr   )r)   r2   r   r   r   r3   \   s    r3   c               @   s   e Z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
eee  dddZee dddZedddZdS )r   )r   c             C   s   t ddS )zThe "project name" of the candidate.

        This is different from ``name`` if this candidate contains extras,
        in which case ``name`` would contain the ``[...]`` part, while this
        refers to the name of the project.
        zOverride in subclassN)r>   )r"   r   r   r   r?   c   s    zCandidate.project_namec             C   s   t ddS )zThe name identifying this candidate in the resolver.

        This is different from ``project_name`` if this candidate contains
        extras, where ``project_name`` would not contain the ``[...]`` part.
        zOverride in subclassN)r>   )r"   r   r   r   r@   m   s    zCandidate.namec             C   s   t dd S )NzOverride in subclass)r>   )r"   r   r   r   r7   v   s    zCandidate.versionc             C   s   t dd S )NzOverride in subclass)r>   )r"   r   r   r   is_installedz   s    zCandidate.is_installedc             C   s   t dd S )NzOverride in subclass)r>   )r"   r   r   r   is_editable~   s    zCandidate.is_editablec             C   s   t dd S )NzOverride in subclass)r>   )r"   r   r   r   rF      s    zCandidate.source_link)with_requiresr   c             C   s   t dd S )NzOverride in subclass)r>   )r"   rI   r   r   r   iter_dependencies   s    zCandidate.iter_dependenciesc             C   s   t dd S )NzOverride in subclass)r>   )r"   r   r   r   get_install_requirement   s    z!Candidate.get_install_requirementc             C   s   t dd S )NzSubclass should override)r>   )r"   r   r   r   rB      s    zCandidate.format_for_errorN)r9   r:   r;   rC   r   r?   rD   r@   CandidateVersionr7   r+   rG   rH   r   r   rF   r   r=   rJ   r   rK   rB   r   r   r   r   r   b   s   	N)typingr   r   r   r   r   Z pip._vendor.packaging.specifiersr   pip._vendor.packaging.utilsr   r	   Zpip._vendor.packaging.versionr
   r   pip._internal.models.linkr   r   pip._internal.req.req_installr   pip._internal.utils.hashesr   rE   rL   rD   r   r   r=   r+   r3   r   r   r   r   r   <module>   s   (