o
    Vh                     @  s   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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lmZ erPd dlmZ d dlmZ G dd deZdS )    )annotations)TYPE_CHECKING)Any)ClassVar)argument)option)canonicalize_name)
Dependency)
MAIN_GROUP)TOMLDocument)InstallerCommand)Argument)Optionc                   @  s   e Zd ZU dZdZeddddgZded< ed	d
dddedddedddedddgZ	ded< dZ
ddgZded< d*dd Zd+d(d)ZdS ),RemoveCommandremovez0Removes a package from the project dependencies.packageszThe packages to remove.T)multiplezClassVar[list[Argument]]	argumentsgroupGz(The group to remove the dependency from.F)flagdevDzKRemove a package from the development dependencies. (shortcut for '-G dev')dry-runNzQOutput the operations but do not execute anything (implicitly enables --verbose).lockz5Do not perform operations (only update the lockfile).zClassVar[list[Option]]optionszyThe <info>remove</info> command removes a package from the current
list of installed packages

<info>poetry remove</info>z#poetry.repositories.pypi_repositoryzpoetry.inspection.infozClassVar[list[str]]loggersreturnintc                 C  sv  |  d}| drd}n| d| j}| jj }|di }|di di }|d u ryt }g }|dg }|di }	|sC|	rK|t	||	f |
dd	 |di  D  |D ]\}
}}|| ||||
O }|
t	krw|sw|d |
= q]nB|dkrd
|v r| |g |d
 d}|d
 s|d
= n(t }d|v r||d v r| |g |d | di |}|d | s|d |= d|v r|d s|d= t||}|rtddt| | jj| | j| jj | j| jj | j| dd | j| j  | jd | j| d  | j| | j }| ds9|dkr9t|t s2J | jj!| |S )Nr   r   r   projecttoolpoetrydependenciesc                 s  s&    | ]\}}|g | d i fV  qdS )r"   N)get).0
group_namegroup_section r'   r/var/www/html/construction_image-detection-poc/venv/lib/python3.10/site-packages/poetry/console/commands/remove.py	<genexpr>N   s
    
z'RemoveCommand.handle.<locals>.<genexpr>zdev-dependenciesz'The following packages were not found: z, r   FTr   r   )"r   r   default_groupr!   filereadr#   setappendr
   extenditems_remove_packages
difference
ValueErrorjoinsortedlockerset_pyproject_data	installer
set_lockerset_packagepackagedry_runverboseio
is_verboseupdateexecute_operations	whitelistrun
isinstancer   write)selfr   r   contentproject_contentpoetry_contentremovedgroup_sectionsproject_dependenciespoetry_dependenciesr%   project_sectionpoetry_section	not_foundstatusr'   r'   r(   handle8   s   





zRemoveCommand.handle	list[str]rN   rO   dict[str, Any]r%   strset[str]c                 C  s   t  }| jj|}|D ]4}t|}| D ]}	t|	j|kr*|	|	 |
| qt|D ]}
t|
|kr?||
= |
| q/q|D ]}|| qC|S )N)r-   r!   r;   dependency_groupr   copyr	   create_from_pep_508namer   addlistremove_dependency)rF   r   rN   rO   r%   rJ   r   r;   normalized_namerequirementexisting_packager'   r'   r(   r1      s$   


zRemoveCommand._remove_packages)r   r   )
r   rS   rN   rS   rO   rT   r%   rU   r   rV   )__name__
__module____qualname__rZ   descriptionr   r   __annotations__r   r   helpr   rR   r1   r'   r'   r'   r(   r      s0   
 

Rr   N)
__future__r   typingr   r   r   cleo.helpersr   r   packaging.utilsr   poetry.core.packages.dependencyr	   %poetry.core.packages.dependency_groupr
   tomlkit.toml_documentr   )poetry.console.commands.installer_commandr   cleo.io.inputs.argumentr   cleo.io.inputs.optionr   r   r'   r'   r'   r(   <module>   s    