a
    e0h-                     @   s2  d dl mZ d dlZd dl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mZmZmZ d dlmZ d dlmZ erd 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+ e,e-Z.G dd de	Z/dd Z0dd Z1dS )    )absolute_importN)six)
cmdoptions)IndexGroupCommand)SUCCESS)CommandError)LinkCollector)PackageFinder)SelectionPreferences)stdlib_pkgs)dist_is_editableget_installed_distributionstabulatewrite_output)get_installer)MYPY_CHECK_RUNNING)Values)IteratorListSetTuple)Distribution)
PipSession)parsec                   @   s`   e Zd ZdZdZdZdd Zdd Zdd	 Zd
d Z	dd Z
dd Zdd Zdd Zdd ZdS )ListCommandzt
    List installed packages, including editables.

    Packages are listed in a case-insensitive sorted order.
    Tz
      %prog [options]c                 C   s*  | j jdddddd | j jddddd	d | j jd
ddddd | j jdddddd | j jdddddd | j t  | j jddddd | j jddddddd | j jddddd  | j jd!d"d#d$d  | j jd%dd#d&d'd( | j t  ttj| j}| jd)| | jd)| j  d S )*Nz-oz
--outdated
store_trueFzList outdated packages)actiondefaulthelpz-uz
--uptodatezList uptodate packagesz-ez
--editablezList editable projects.z-lz--localzSIf in a virtualenv that has global access, do not list globally-installed packages.z--useruserz,Only output packages installed in user-site.)destr   r   r   z--prezYInclude pre-release and development versions. By default, pip only finds stable versions.z--formatstorelist_formatcolumns)r#   freezejsonzBSelect the output format among: columns (default), freeze, or json)r   r    r   choicesr   z--not-requirednot_requiredz>List packages that are not dependencies of installed packages.)r   r    r   z--exclude-editablestore_falseinclude_editablez%Exclude editable package from output.z--include-editablez%Include editable package from output.T)r   r    r   r   r   )	cmd_opts
add_optionr   	list_pathlist_excludemake_option_groupindex_groupparserinsert_option_group)self
index_opts r4   I/var/www/auris/lib/python3.9/site-packages/pip/_internal/commands/list.pyadd_options1   s    
zListCommand.add_optionsc                 C   s*   t j||d}td|jd}tj||dS )zK
        Create a package finder appropriate to this list command.
        )optionsF)allow_yankedallow_all_prereleases)link_collectorselection_prefs)r   creater
   prer	   )r2   r7   sessionr:   r;   r4   r4   r5   _build_package_finder   s    z!ListCommand._build_package_finderc                 C   s   |j r|jrtdt| tt}|jr8||j t	|j
|j|j|j|j|d}|jrh| ||}|j r|| ||}n|jr| ||}| || tS )Nz5Options --outdated and --uptodate cannot be combined.)
local_only	user_onlyeditables_onlyinclude_editablespathsskip)outdatedZuptodater   r   check_list_path_optionsetr   excludesupdater   localr   editabler)   pathr'   get_not_requiredget_outdatedget_uptodateoutput_package_listingr   )r2   r7   argsrE   packagesr4   r4   r5   run   s0    
zListCommand.runc                 C   s   dd |  ||D S )Nc                 S   s,   g | ]$}t t|jt t|jkr|qS r4   r   strlatest_versionparsed_version.0distr4   r4   r5   
<listcomp>   s   z,ListCommand.get_outdated.<locals>.<listcomp>iter_packages_latest_infosr2   rS   r7   r4   r4   r5   rO      s    
zListCommand.get_outdatedc                 C   s   dd |  ||D S )Nc                 S   s,   g | ]$}t t|jt t|jkr|qS r4   rU   rY   r4   r4   r5   r\      s   z,ListCommand.get_uptodate.<locals>.<listcomp>r]   r_   r4   r4   r5   rP      s    
zListCommand.get_uptodatec                    s>   t   |D ]} dd | D  q
t fdd|D S )Nc                 s   s   | ]}|j V  qd S Nkey)rZ   requirementr4   r4   r5   	<genexpr>       z/ListCommand.get_not_required.<locals>.<genexpr>c                    s   h | ]}|j  vr|qS r4   ra   )rZ   pkgZdep_keysr4   r5   	<setcomp>   re   z/ListCommand.get_not_required.<locals>.<setcomp>)rH   rJ   requireslist)r2   rS   r7   r[   r4   rg   r5   rN      s    zListCommand.get_not_requiredc                 #   sf   |  H}| |  fdd}t||D ]}|d ur0|V  q0W d    n1 sX0    Y  d S )Nc                    sl     | j}js dd |D } j| jd}||}|d u rDd S |j}|jjrXd}nd}|| _	|| _
| S )Nc                 S   s   g | ]}|j js|qS r4   )versionis_prerelease)rZ   	candidater4   r4   r5   r\      s   zOListCommand.iter_packages_latest_infos.<locals>.latest_info.<locals>.<listcomp>)project_namewheelsdist)find_all_candidatesrb   r=   make_candidate_evaluatorrn   sort_best_candidaterk   linkis_wheelrW   latest_filetype)r[   Zall_candidatesZ	evaluatorbest_candidateremote_versiontypfinderr7   r4   r5   latest_info   s     
z;ListCommand.iter_packages_latest_infos.<locals>.latest_info)_build_sessionr?   map)r2   rS   r7   r>   r|   r[   r4   rz   r5   r^      s    z&ListCommand.iter_packages_latest_infosc                 C   s   t |dd d}|jdkr:|r:t||\}}| || n^|jdkr|D ]4}|jdkrltd|j|j|j qHtd|j|j qHn|jd	krtt	|| d S )
Nc                 S   s
   | j  S r`   )rn   lower)r[   r4   r4   r5   <lambda>   re   z4ListCommand.output_package_listing.<locals>.<lambda>ra   r#   r$      z%s==%s (%s)z%s==%sr%   )
sortedr"   format_for_columnsoutput_package_listing_columnsverboser   rn   rk   locationformat_for_json)r2   rS   r7   dataheaderr[   r4   r4   r5   rQ      s     


z"ListCommand.output_package_listingc                 C   sb   t |dkr|d| t|\}}t |dkrL|ddtdd | |D ]}t| qPd S )Nr   r    c                 S   s   d|  S )N-r4   )xr4   r4   r5   r     re   z<ListCommand.output_package_listing_columns.<locals>.<lambda>)leninsertr   joinr~   r   )r2   r   r   Zpkg_stringssizesvalr4   r4   r5   r     s    z*ListCommand.output_package_listing_columnsN)__name__
__module____qualname____doc__ignore_require_venvusager6   r?   rT   rO   rP   rN   r^   rQ   r   r4   r4   r4   r5   r   &   s   N$"r   c                 C   s   |j }|rg d}nddg}g }|jdks<tdd | D rF|d |jdkrZ|d | D ]l}|j|jg}|r||j ||j |jdkst|r||j	 |jdkr|t
| || q^||fS )	z_
    Convert the package data into something usable
    by output_package_listing_columns.
    )PackageVersionZLatestTyper   r   r   c                 s   s   | ]}t |V  qd S r`   )r   )rZ   r   r4   r4   r5   rd   !  re   z%format_for_columns.<locals>.<genexpr>ZLocationZ	Installer)rF   r   anyappendrn   rk   rW   rv   r   r   r   )pkgsr7   Zrunning_outdatedr   r   Zprojrowr4   r4   r5   r     s(    




r   c                 C   sv   g }| D ]b}|j t|jd}|jdkr@|j|d< t||d< |jr`t|j|d< |j	|d< |
| qt|S )N)namerk   r   r   	installerrW   rv   )rn   r   	text_typerk   r   r   r   rF   rW   rv   r   r%   dumps)rS   r7   r   r[   infor4   r4   r5   r   9  s    



r   )2
__future__r   r%   loggingpip._vendorr   Zpip._internal.clir   pip._internal.cli.req_commandr   pip._internal.cli.status_codesr   pip._internal.exceptionsr   pip._internal.index.collectorr   "pip._internal.index.package_finderr	   $pip._internal.models.selection_prefsr
   pip._internal.utils.compatr   pip._internal.utils.miscr   r   r   r   pip._internal.utils.packagingr   pip._internal.utils.typingr   optparser   typingr   r   r   r   Zpip._vendor.pkg_resourcesr   pip._internal.network.sessionr   Zpip._vendor.packaging.versionr   	getLoggerr   loggerr   r   r   r4   r4   r4   r5   <module>   s2   
 n&