o
    �PÔa   ã                   @   sB  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	m
Z
 d dlmZ d dlmZmZ d dlmZ d d	lmZ d d
lmZmZ d dlmZmZ e  e¡Zdededee dedededefdd„Z dedee dededededefdd„Z!dedee dedededefdd„Z"dedededee dedefdd„Z#dS ) é    N)ÚPath)ÚListÚSequence)Ú	constants)ÚboldÚred)Úexpose_apps_globally)ÚEXIT_CODE_OKÚExitCode)Úsleep)Úparse_specifier_for_upgrade)Ú	PipxErrorÚ	pipx_wrap)ÚVenvÚVenvContainerÚvenvÚpackage_nameÚpip_argsÚis_main_packageÚforceÚupgrading_allÚreturnc                 C   s(  | j | }|jdu rtd|› d�ƒ‚t|jƒ}|j}| j||||j|j||jd� | j | }|j	› |j› �}	|j}
|jrGt
tj|j||jd� |jr^|j ¡ D ]\}}t
tj|||jd� qO||
kr||rg	 d
S ttd|	› d|› dt| jƒ› d	�ƒƒ d
S ttd|	› d|› d|
› dt| jƒ› d�	ƒƒ dS )z7Returns 1 if package version changed, 0 if same versionNzInternal Error: package z has corrupt pipx metadata.)Úinclude_dependenciesÚinclude_appsr   Úsuffix)r   r   z
                    z is already at latest version z 
                    (location: z)
                    r   z"
                upgraded package z from z to
                z (location: z)
                é   )Úpackage_metadataÚpackage_or_urlr   r   Úpackage_versionÚupgrade_packager   r   r   Úpackager   r   ÚLOCAL_BIN_DIRÚ	app_pathsÚapp_paths_of_dependenciesÚitemsÚprintr   ÚstrÚroot)r   r   r   r   r   r   r   r   Úold_versionÚdisplay_nameÚnew_versionÚ_r"   © r,   ú7/usr/lib/python3/dist-packages/pipx/commands/upgrade.pyÚ_upgrade_package   s€   
	

ÿ
ù

üü
øÿÿþÿÿÿÿþþÿÿr.   Úvenv_dirÚverboseÚinclude_injectedc          	   
   C   s°   |   ¡ stdt| ƒ› d�ƒ‚t| |d�}|js&tdtt| jƒƒ› d�dd�‚| |¡ d}|j	}|t
|||d	||d
�7 }|rV|jD ]}||j	krIqA|t
|||d||d
�7 }qA|S )z1Returns number of packages with changed versions.z8
            Package is not installed. Expected to find z1, but it
            does not exist.
            ©r0   zNot upgrading z˜. It has missing internal pipx metadata.
It was likely installed using a pipx version before 0.15.0.0.
Please uninstall and install this package to fix.F©Úwrap_messager   T)r   r   r   )Úis_dirr   r&   r   r   r   r   ÚnameÚupgrade_packaging_librariesÚmain_package_namer.   )	r/   r   r0   r1   r   r   r   Úversions_updatedr   r,   r,   r-   Ú_upgrade_venv]   sH   
ÿÿü
ú	


ú	r:   c                C   s   t | |||d|d�}tS )úReturns pipx exit code.F©r1   r   r   )r:   r	   )r/   r   r0   r1   r   r+   r,   r,   r-   Úupgrade˜   s   
ú
r=   Úvenv_containerÚskipc          
      C   sÔ   d}d}|   ¡ D ]L}t||d�}|j|v sd|jjjv rqz|t||jjj||d|d�7 }W q tyT }	 zd}t 	d|j› d�¡ t 	|	› d	�¡ W Y d
}	~	qd
}	~	ww |dkr`t
dt› �ƒ |rhtddd�‚tS )r;   Fr   r2   z
--editableTr<   z!Error encountered when upgrading ú:Ú
NzFVersions did not change after running 'pipx upgrade' for each package zX
Some packages encountered errors during upgrade.
    See specific error messages above.r3   )Úiter_venv_dirsr   r6   Úpipx_metadataÚmain_packager   r:   r   ÚloggerÚerrorr%   r   r	   )
r>   r0   r1   r?   r   Ú
venv_errorÚvenvs_upgradedr/   r   Úer,   r,   r-   Úupgrade_all¯   s@   	
ú	€ýÿýrJ   )$ÚloggingÚpathlibr   Útypingr   r   Úpipxr   Úpipx.colorsr   r   Úpipx.commands.commonr   Úpipx.constantsr	   r
   Úpipx.emojisr   Úpipx.package_specifierr   Ú	pipx.utilr   r   Ú	pipx.venvr   r   Ú	getLoggerÚ__name__rE   r&   ÚboolÚintr.   r:   r=   rJ   r,   r,   r,   r-   Ú<module>   sˆ    
ÿþýüûú
ùLÿþýûúù
ø;ÿþýûú
ùÿþüûúù