o
    �PÔa·  ã                   @   sd  d dl Z d dlmZ d dlmZ d dlmZmZmZ d dl	m
Z
mZmZ d dlmZmZmZmZ d dlmZmZmZ d dlmZ d d	lmZmZ d d
lmZmZ d dlmZ e   e!¡Z"					d'dede#de#deee#  de$de$de#defdd„Z%dedededee fdd„Z&dededee fdd„Z'd eded!e$defd"d#„Z(d$eded!e$defd%d&„Z)dS )(é    N)ÚPath)Úwhich)ÚListÚOptionalÚSet)Ú
add_suffixÚcan_symlinkÚ!get_exposed_app_paths_for_package)ÚEXIT_CODE_OKÚEXIT_CODE_UNINSTALL_ERRORÚ$EXIT_CODE_UNINSTALL_VENV_NONEXISTENTÚExitCode)ÚhazardÚsleepÚstars)ÚPackageInfo)ÚrmdirÚsafe_unlink)ÚVenvÚVenvContainer)ÚVenvMetadataÚ TFÚvenv_metadataÚpackage_nameÚpackage_or_urlÚpip_argsÚinclude_appsÚinclude_dependenciesÚsuffixÚreturnc                 C   s4   |d u rg }t |||||| j| j| j| j| j|d�S )N)Úpackager   r   r   r   ÚappsÚ	app_pathsÚapps_of_dependenciesÚapp_paths_of_dependenciesÚpackage_versionr   )r   r!   r"   r#   r$   r%   )r   r   r   r   r   r   r   © r&   ú9/usr/lib/python3/dist-packages/pipx/commands/uninstall.pyÚ_venv_metadata_to_package_info   s   	õr(   ÚvenvÚpackage_infoÚlocal_bin_dirc                    sF   |j ‰ g }|jr||j7 }|jr||j7 }t| j|‡ fdd„|D ƒƒS )Nc                    s   g | ]}t |ˆ ƒ‘qS r&   )r   )Ú.0Úapp©r   r&   r'   Ú
<listcomp>?   s    z2_get_package_bin_dir_app_paths.<locals>.<listcomp>)r   r   r!   r   r#   r	   Úbin_path)r)   r*   r+   r!   r&   r.   r'   Ú_get_package_bin_dir_app_paths5   s   

ÿr1   c                 C   s�   t ƒ }| jjjd ur| j ¡ D ]
}|t| ||ƒO }q|S | j ¡ r9|  	| j
jt ƒ ¡}t|| j
jƒ}t| ||ƒ}|S t|ƒs@t ƒ S t| j|ƒ}|S )N)ÚsetÚpipx_metadataÚmain_packager    Úpackage_metadataÚvaluesr1   Úpython_pathÚis_fileÚget_venv_metadata_for_packageÚrootÚnamer(   r   r	   r0   )r)   r+   Úbin_dir_app_pathsr*   r   Úmain_package_infor&   r&   r'   Ú_get_venv_bin_dir_app_pathsC   s,   ÿ 
ãÿÿùÿr>   Úvenv_dirÚverbosec              	   C   sÆ   |   ¡ s"td| j› dt› �ƒ t| jƒ}|r tt› d|› d�ƒ tS t| |d�}t||ƒ}|D ]"}zt	|ƒ W n t
yH   t d|› �¡ Y q/w t d|› �¡ q/t| ƒ td|j› d	t› �ƒ tS )
zrUninstall entire venv_dir, including main package and all injected
    packages.

    Returns pipx exit code.
    zNothing to uninstall for ú z	  Note: 'z1' still exists on your system and is on your PATH)r@   z"tried to remove but couldn't find zremoved file zuninstalled z! )ÚexistsÚprintr;   r   r   r   r   r   r>   r   ÚFileNotFoundErrorÚloggerÚinfor   r   r
   )r?   r+   r@   r-   r)   r<   Úbin_dir_app_pathr&   r&   r'   Ú	uninstallk   s(   
ÿ
ÿrH   Úvenv_containerc                 C   s6   d}|   ¡ D ]}t|||ƒ}||dkM }q|rtS tS )zReturns pipx exit code.Tr   )Úiter_venv_dirsrH   r
   r   )rI   r+   r@   Úall_successr?   Ú
return_valr&   r&   r'   Úuninstall_all‹   s
   rM   )r   NTFr   )*ÚloggingÚpathlibr   Úshutilr   Útypingr   r   r   Úpipx.commands.commonr   r   r	   Úpipx.constantsr
   r   r   r   Úpipx.emojisr   r   r   Úpipx.pipx_metadata_filer   Ú	pipx.utilr   r   Ú	pipx.venvr   r   Úpipx.venv_inspectr   Ú	getLoggerÚ__name__rE   ÚstrÚboolr(   r1   r>   rH   rM   r&   r&   r&   r'   Ú<module>   sl    
ùÿþý
üûúù
øÿÿÿ
þ( ÿÿÿþ