o
    �PÔa¯  ã                   @   s®   d dl Z d dlZ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 d dlmZ d dlmZ d dlmZmZmZmZ e e¡Ze jd	d
� ¡ ZG dd„ dƒZeƒ ZdS )é    N)ÚPath)ÚListÚOptional)Ú	constants)Úanimate)ÚWINDOWS)ÚDEFAULT_PYTHON)Úget_site_packagesÚget_venv_pathsÚrun_subprocessÚsubprocess_post_checké   )Údaysc                   @   s†   e Zd Zddd„Zedefdd„ƒZddeddfd	d
„Zedefdd„ƒZ	edefdd„ƒZ
dddœdeee  deddfdd„ZdS )Ú_SharedLibsÚreturnNc                 C   sD   t j| _t| jƒ\| _| _| jtsdnd | _d | _d| _	d| _
d S )NÚpipzpip.exeF)r   ÚPIPX_SHARED_LIBSÚrootr
   Úbin_pathÚpython_pathr   Úpip_pathÚ_site_packagesÚhas_been_updated_this_runÚhas_been_logged_this_run©Úself© r   ú2/usr/lib/python3/dist-packages/pipx/shared_libs.pyÚ__init__   s   
z_SharedLibs.__init__c                 C   s   | j d u rt| jƒ| _ | j S ©N)r   r	   r   r   r   r   r   Úsite_packages#   s   
z_SharedLibs.site_packagesFÚverbosec                 C   sf   | j s1td| ƒ� ttddd| jgƒ}W d   ƒ n1 sw   Y  t|ƒ | jdg|d� d S d S )Nzcreating shared librariesú-mÚvenvz--clearz--force-reinstall©Úpip_argsr!   )Úis_validr   r   r   r   r   Úupgrade)r   r!   Úcreate_processr   r   r   Úcreate*   s   ÿÿ÷z_SharedLibs.createc                 C   s   | j  ¡ o	| j ¡ S r   )r   Úis_filer   r   r   r   r   r&   6   s   z_SharedLibs.is_validc                 C   s`   | j rdS | j ¡ sdS t ¡ }|| j ¡ j }| js,t d|d›dt	d›d�¡ d| _|t	kS )NFTz4Time since last upgrade of shared libs, in seconds: z.0fz.. Upgrade will be run by pipx if greater than Ú.)
r   r   r*   ÚtimeÚstatÚst_mtimer   ÚloggerÚinfoÚSHARED_LIBS_MAX_AGE_SEC)r   ÚnowÚtime_since_last_update_secr   r   r   Úneeds_upgrade:   s   

ÿÿz_SharedLibs.needs_upgrader$   r%   c                   s  | j s| j|d� d S | jrt d| j› �¡ d S |d u rg }t d| j› �¡ dg‰ ‡ fdd„|D ƒ}|s;| d¡ z9td| ƒ� t| j	d	d
ddg|¢d‘d
‘d‘d‘ƒ}W d   ƒ n1 saw   Y  t
|ƒ d| _| j ¡  W d S  ty…   tjddd� Y d S w )N)r!   zAlready upgraded libraries in zUpgrading shared libraries in z
--editablec                    s   g | ]}|ˆ vr|‘qS r   r   )Ú.0Úarg©Úignored_argsr   r   Ú
<listcomp>^   s    z'_SharedLibs.upgrade.<locals>.<listcomp>z-qzupgrading shared librariesr"   r   z--disable-pip-version-checkÚinstallz	--upgradeÚ
setuptoolsÚwheelTz"Failed to upgrade shared libraries)Úexc_info)r&   r)   r   r/   r0   r   Úappendr   r   r   r   r   ÚtouchÚ	ExceptionÚerror)r   r%   r!   Ú	_pip_argsÚupgrade_processr   r7   r   r'   L   sP   
ûúùø	÷
öÿÿÿz_SharedLibs.upgrade)r   N)F)Ú__name__Ú
__module__Ú__qualname__r   Úpropertyr   r    Úboolr)   r&   r4   r   r   Ústrr'   r   r   r   r   r      s"    

ÿ
ÿÿþr   )ÚdatetimeÚloggingr,   Úpathlibr   Útypingr   r   Úpipxr   Úpipx.animater   Úpipx.constantsr   Úpipx.interpreterr   Ú	pipx.utilr	   r
   r   r   Ú	getLoggerrD   r/   Ú	timedeltaÚtotal_secondsr1   r   Úshared_libsr   r   r   r   Ú<module>   s    

b