a
    sh                     @   sH   d dl Z d dlmZ d dlmZ d dlmZ e eZ	G dd dZ
dS )    N)OrderedDict)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   U/var/www/html/assistant/venv/lib/python3.9/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>       z)RequirementSet.__str__.<locals>.<genexpr>c                 S   s   t | jp
dS N r   namer   r   r   r   <lambda>   r   z(RequirementSet.__str__.<locals>.<lambda>key c                 s   s   | ]}t |jV  qd S r   strr   r   r   r   r   r      r   )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   %   r   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
J | j| d S r   )r   r	   append)r
   r-   r   r   r   add_unnamed_requirement(   s    
z&RequirementSet.add_unnamed_requirementc                 C   s"   |j s
J t|j }|| j|< d S 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v o| j| j S r   )r   r   
constraintr
   r   r0   r   r   r   has_requirement2   s    
zRequirementSet.has_requirementc                 C   s.   t |}|| jv r| j| S td|d S )NzNo project with the name )r   r   KeyErrorr3   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_requirementsB   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   )r2   satisfied_by)r   r-   r   r   r   
<listcomp>M   s   z:RequirementSet.requirements_to_install.<locals>.<listcomp>)r9   r8   r   r   r   requirements_to_installF   s    z&RequirementSet.requirements_to_install)T)r)   
__module____qualname__boolr   r   r#   r,   r   r/   r1   r4   r6   propertyr7   r9   r<   r   r   r   r   r      s   r   )loggingcollectionsr   pip._vendor.packaging.utilsr   Zpip._internal.req.req_installr   	getLoggerr)   loggerr   r   r   r   r   <module>   s
   
