o
    VÌhû  ã                   @  sf   d dl mZ d dlmZ er,d dlmZ d dlmZ d dlmZ d dlm	Z	 d dl
mZ ddd„ZdS )é    )Úannotations)ÚTYPE_CHECKING)Ú
Collection)ÚIterable)ÚMapping)ÚNormalizedName)ÚPackageÚpackagesúIterable[Package]Úextrasú1Mapping[NormalizedName, Iterable[NormalizedName]]Úextra_namesúCollection[NormalizedName]Úreturnúset[NormalizedName]c                   s‚   |st ƒ S dd„ | D ƒ}t ƒ }‡ fdd„|D ƒ}|r?| ¡ }| |¡}|du s,|j|v r-q| |j¡ |dd„ |jD ƒ7 }|s|S )ap  
    Returns all package names required by the given extras.

    :param packages: A collection of packages, such as from Repository.packages
    :param extras: A mapping of `extras` names to lists of package names, as defined
        in the `extras` section of `poetry.lock`.
    :param extra_names: A list of strings specifying names of extra groups to resolve.
    c                 S  s   i | ]}|j |“qS © ©Úname)Ú.0Úpackager   r   úg/var/www/html/construction_image-detection-poc/venv/lib/python3.10/site-packages/poetry/utils/extras.pyÚ
<dictcomp>    s    z+get_extra_package_names.<locals>.<dictcomp>c                   s"   g | ]}ˆ   |d ¡D ]}|‘q
qS )r   )Úget)r   Ú
extra_nameÚextra_package_name©r   r   r   Ú
<listcomp>%   s    
ýþÿz+get_extra_package_names.<locals>.<listcomp>Nc                 S  s   g | ]}|j ‘qS r   r   )r   Ú
dependencyr   r   r   r   5   s    )ÚsetÚpopr   r   ÚaddÚrequires)r	   r   r   Úpackages_by_nameÚseen_package_namesÚstackÚpackage_namer   r   r   r   Úget_extra_package_names   s    
þ
ör&   N)r	   r
   r   r   r   r   r   r   )Ú
__future__r   Útypingr   Úcollections.abcr   r   r   Úpackaging.utilsr   Úpoetry.core.packages.packager   r&   r   r   r   r   Ú<module>   s    