U
    cUh*                     @   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   Y/opt/bot/vods_filmes/script/venv/lib/python3.8/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 r   strr   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 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 r   r    r   r   r   r   r   &   s     z*RequirementSet.__repr__.<locals>.<genexpr>)Z	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 r   )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 r   )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 r   )r   r
   
constraintr   r   r2   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
   KeyErrorr5   r   r   r   get_requirement;   s    

zRequirementSet.get_requirementc                 C   s   | j t| j  S r   )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   )r4   satisfied_by)r   r.   r   r   r   
<listcomp>N   s    z:RequirementSet.requirements_to_install.<locals>.<listcomp>)r;   r:   r   r   r   requirements_to_installG   s    z&RequirementSet.requirements_to_install)T)r*   
__module____qualname__boolr   r!   r%   r-   r   r1   r3   r6   r8   propertyr   r;   r>   r   r   r   r   r      s   r   )loggingcollectionsr   typingr   r   pip._vendor.packaging.utilsr   pip._internal.req.req_installr   	getLoggerr*   loggerr   r   r   r   r   <module>   s   
