B
    od*                 @   sX   d dl Z d dlmZ d dlmZmZ d dlmZ d dlm	Z	 e 
eZG dd dZdS )    N)OrderedDict)DictList)canonicalize_name)InstallRequirementc               @   s   e Zd ZdeddddZedddZedd	d
ZeddddZ	ed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 dddZdS )RequirementSetTN)check_supported_wheelsreturnc             C   s   t  | _|| _g | _dS )zCreate a RequirementSet.N)r   requirementsr   unnamed_requirements)selfr    r   K/var/www/html/venv/lib/python3.7/site-packages/pip/_internal/req/req_set.py__init__   s    zRequirementSet.__init__)r	   c             C   s4   t dd | j D dd d}ddd |D S )Nc             s   s   | ]}|j s|V  qd S )N)
comes_from).0reqr   r   r   	<genexpr>   s    z)RequirementSet.__str__.<locals>.<genexpr>c             S   s   t | jp
dS )N )r   name)r   r   r   r   <lambda>       z(RequirementSet.__str__.<locals>.<lambda>)key c             s   s   | ]}t |jV  qd S )N)strr   )r   r   r   r   r   r      s    )sortedr
   valuesjoin)r   r
   r   r   r   __str__   s    zRequirementSet.__str__c             C   sB   t | j dd d}d}|j| jjt|ddd |D dS )	Nc             S   s   t | jp
dS )Nr   )r   r   )r   r   r   r   r      r   z)RequirementSet.__repr__.<locals>.<lambda>)r   z4<{classname} object; {count} requirement(s): {reqs}>z, c             s   s   | ]}t |jV  qd S )N)r   r   )r   r   r   r   r   r   &   s    z*RequirementSet.__repr__.<locals>.<genexpr>)	classnamecountreqs)r   r
   r   format	__class____name__lenr   )r   r
   format_stringr   r   r   __repr__   s    zRequirementSet.__repr__)install_reqr	   c             C   s   |j r
t| j| d S )N)r   AssertionErrorr   append)r   r(   r   r   r   add_unnamed_requirement)   s    
z&RequirementSet.add_unnamed_requirementc             C   s"   |j s
tt|j }|| j|< d S )N)r   r)   r   r
   )r   r(   project_namer   r   r   add_named_requirement-   s    

z$RequirementSet.add_named_requirement)r   r	   c             C   s    t |}|| jko| j| j S )N)r   r
   
constraint)r   r   r,   r   r   r   has_requirement3   s    
zRequirementSet.has_requirementc             C   s.   t |}|| jkr| j| S td|d S )NzNo project with the name )r   r
   KeyError)r   r   r,   r   r   r   get_requirement;   s    

zRequirementSet.get_requirementc             C   s   | j t| j  S )N)r   listr
   r   )r   r   r   r   all_requirementsC   s    zRequirementSet.all_requirementsc             C   s   dd | j D S )zReturn the list of requirements that need to be installed.

        TODO remove this property together with the legacy resolver, since the new
             resolver only returns requirements that need to be installed.
        c             S   s   g | ]}|j s|js|qS r   )r.   satisfied_by)r   r(   r   r   r   
<listcomp>O   s   z:RequirementSet.requirements_to_install.<locals>.<listcomp>)r3   )r   r   r   r   requirements_to_installG   s    z&RequirementSet.requirements_to_install)T)r$   
__module____qualname__boolr   r   r   r'   r   r+   r-   r/   r1   propertyr   r3   r6   r   r   r   r   r      s   r   )loggingcollectionsr   typingr   r   Zpip._vendor.packaging.utilsr   Zpip._internal.req.req_installr   	getLoggerr$   loggerr   r   r   r   r   <module>   s   
