o
    �PÔa1  ã                   @   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mZm	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 d d	lmZmZ d d
lmZmZ e e¡Z dZ!dede	eee"f fdd„Z#dee de$de"defdd„Z%dee defdd„Z&dede$de$defdd„Z'dS )é    N)ÚPath)ÚAnyÚ
CollectionÚDictÚTuple)Ú	constants)Úbold)ÚVenvProblemsÚget_venv_summaryÚvenv_health_check)ÚEXIT_CODE_LIST_PROBLEMÚEXIT_CODE_OKÚExitCode)Úsleep)ÚJsonEncoderHandlesPathÚPipxMetadata)ÚVenvÚVenvContainerz0.1Úvenv_dirÚreturnc                 C   s:   t | ƒ}t|ƒ\}}| ¡ rt| dd�||fS |j|dfS )NF)ÚreadÚ )r   r   Úany_r   Úpipx_metadata)r   ÚvenvÚvenv_problemsÚwarning_message© r   ú=/usr/lib/python3/dist-packages/pipx/commands/list_packages.pyÚget_venv_metadata_summary   s
   r   Ú	venv_dirsÚinclude_injectedÚvenv_root_dirc                 C   st   t dt|ƒ› �ƒ t dtttjƒƒ› �ƒ tƒ }| D ]}t||d�\}}| ¡ r.t 	|¡ nt |ƒ | 
|¡ q|S )Nzvenvs are in z"apps are exposed on your $PATH at )r!   )Úprintr   Ústrr   ÚLOCAL_BIN_DIRr	   r
   r   ÚloggerÚwarningÚor_)r    r!   r"   Úall_venv_problemsr   Úpackage_summaryr   r   r   r   Ú	list_text   s   
ÿr+   c           	      C   sœ   g }t i dœ}tƒ }| D ]*}t|ƒ\}}}| |¡ | ¡ r$| |¡ qi |d |j< | ¡ |d |j d< qtt	j
|ddtd�ƒ |D ]}t |¡ qD|S )N)Úpipx_spec_versionÚvenvsr-   Úmetadataé   T)ÚindentÚ	sort_keysÚcls)ÚPIPX_SPEC_VERSIONr	   r   r(   r   ÚappendÚnameÚto_dictr#   ÚjsonÚdumpsr   r&   r'   )	r    Úwarning_messagesÚspec_metadatar)   r   Úvenv_metadatar   Úwarning_strr   r   r   r   Ú	list_json2   s*   þ
ÿ

ÿr=   Úvenv_containerÚjson_formatc                 C   s°   t |  ¡ ƒ}|stdt› �tjd� |  ¡  |rt|ƒ}n|s!tS t	||t
| ƒƒ}|jr1t d¡ |jr9t d¡ |jrAt d¡ |jrIt d¡ | ¡ rVtdtjd� tS tS )zReturns pipx exit code.z%nothing has been installed with pipx )Úfilezž
One or more packages contain out-of-date internal data installed from a
previous pipx version and need to be updated.
    To fix, execute: pipx reinstall-allz`
One or more packages have a missing python interpreter.
    To fix, execute: pipx reinstall-allz¹
One or more packages have a missing internal pipx metadata.
   They were likely installed using a pipx version before 0.15.0.0.
   Please uninstall and install these package(s) to fix.zj
One or more packages are not installed properly.
   Please uninstall and install these package(s) to fix.r   )ÚsortedÚiter_venv_dirsr#   r   ÚsysÚstderrÚverify_shared_libsr=   r   r+   r$   Úbad_venv_namer&   r'   Úinvalid_interpreterÚmissing_metadataÚnot_installedr   r   )r>   r!   r?   r    r)   r   r   r   Úlist_packagesN   s:   
ÿÿÿÿrJ   )(r7   ÚloggingrC   Úpathlibr   Útypingr   r   r   r   Úpipxr   Úpipx.colorsr   Úpipx.commands.commonr	   r
   r   Úpipx.constantsr   r   r   Úpipx.emojisr   Úpipx.pipx_metadata_filer   r   Ú	pipx.venvr   r   Ú	getLoggerÚ__name__r&   r3   r$   r   Úboolr+   r=   rJ   r   r   r   r   Ú<module>   sD    

ÿÿÿ
þÿÿÿþ