U
    c)                     @   s   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mZmZ d dlmZ d dlmZ eeZG dd deZdd Z dd Z!dd Z"dS )    )absolute_importN)six)zip_longest)
cmdoptions)IndexGroupCommand)CommandError)PackageFinder)SelectionPreferences)make_link_collector)dist_is_editableget_installed_distributionswrite_output)get_installer)parsec                       sd   e Zd ZdZdZ f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  ZS )ListCommandzt
    List installed packages, including editables.

    Packages are listed in a case-insensitive sorted order.
    z
      %prog [options]c                    s  t t| j|| | j}|jdddddd |jddddd	d |jd
ddddd |jdddddd | jjdddddd |t  |jddddd |jddddddd |jddddd  |jd!d"d#d$d  |jd%dd#d&d'd( ttj| j	}| j	
d)| | j	
d)| 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   )superr   __init__cmd_opts
add_optionr   	list_pathmake_option_groupindex_groupparserinsert_option_group)selfargskwr"   Z
index_opts	__class__ Y/var/www/html/TransitoApp/venv/lib/python3.8/site-packages/pip/_internal/commands/list.pyr!   (   s        
 zListCommand.__init__c                 C   s(   t ||d}td|jd}tj||dS )zK
        Create a package finder appropriate to this list command.
        )optionsF)Zallow_yankedZallow_all_prereleases)link_collectorselection_prefs)r
   r	   prer   create)r)   r0   sessionr1   r2   r.   r.   r/   _build_package_finderx   s    z!ListCommand._build_package_finderc                 C   s   |j r|jrtdt| t|j|j|j|j	|j
d}|jrL| ||}|j r`| ||}n|jrr| ||}| || d S )Nz5Options --outdated and --uptodate cannot be combined.)
local_only	user_onlyeditables_onlyinclude_editablespaths)outdatedZuptodater   r   check_list_path_optionr   localr   editabler   pathr   get_not_requiredget_outdatedget_uptodateoutput_package_listing)r)   r0   r*   packagesr.   r.   r/   run   s&    
zListCommand.runc                 C   s   dd |  ||D S )Nc                 S   s,   g | ]$}t t|jt t|jkr|qS r.   r   strlatest_versionparsed_version.0distr.   r.   r/   
<listcomp>   s   z,ListCommand.get_outdated.<locals>.<listcomp>iter_packages_latest_infosr)   rE   r0   r.   r.   r/   rB      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 r.   rG   rK   r.   r.   r/   rN      s   z,ListCommand.get_uptodate.<locals>.<listcomp>rO   rQ   r.   r.   r/   rC      s    
zListCommand.get_uptodatec                    s:   t   |D ]} dd | D  q
 fdd|D S )Nc                 s   s   | ]}|j V  qd S Nkey)rL   requirementr.   r.   r/   	<genexpr>   s     z/ListCommand.get_not_required.<locals>.<genexpr>c                    s   h | ]}|j  kr|qS r.   rS   )rL   pkgZdep_keysr.   r/   	<setcomp>   s     
 z/ListCommand.get_not_required.<locals>.<setcomp>)setupdaterequires)r)   rE   r0   rM   r.   rX   r/   rA      s    zListCommand.get_not_requiredc              	   c   s   |  |}| ||}|D ]t}d}||j}|jsDdd |D }|j|jd}||}	|	d krfq|	j}
|	j	j
rzd}nd}|
|_||_|V  qW 5 Q R X d S )Nunknownc                 S   s   g | ]}|j js|qS r.   )versionis_prerelease)rL   	candidater.   r.   r/   rN      s    z:ListCommand.iter_packages_latest_infos.<locals>.<listcomp>)project_namewheelsdist)Z_build_sessionr6   Zfind_all_candidatesrT   r3   Zmake_candidate_evaluatorra   Zsort_best_candidater^   linkZis_wheelrI   latest_filetype)r)   rE   r0   r5   finderrM   typZall_candidatesZ	evaluatorZbest_candidateZremote_versionr.   r.   r/   rP      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 rR   )ra   lower)rM   r.   r.   r/   <lambda>       z4ListCommand.output_package_listing.<locals>.<lambda>rS   r   r      z%s==%s (%s)z%s==%sr   )
sortedr   format_for_columnsoutput_package_listing_columnsverboser   ra   r^   locationformat_for_json)r)   rE   r0   dataheaderrM   r.   r.   r/   rD      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   rk    c                 S   s   d|  S )N-r.   )xr.   r.   r/   ri      rj   z<ListCommand.output_package_listing_columns.<locals>.<lambda>)leninserttabulatejoinmapr   )r)   rr   rs   Zpkg_stringssizesvalr.   r.   r/   rn      s    z*ListCommand.output_package_listing_columns)__name__
__module____qualname____doc__usager!   r6   rF   rB   rC   rA   rP   rD   rn   __classcell__r.   r.   r,   r/   r      s   Pr   c                 C   s   t | dkstdgtdd | D  }| D ]}dd t||D }q,g }| D ](}ddd t||D }|| qN||fS )Nr   c                 s   s   | ]}t |V  qd S rR   )rw   rL   rv   r.   r.   r/   rV      s     ztabulate.<locals>.<genexpr>c                 S   s"   g | ]\}}t |tt|qS r.   )maxrw   rH   rL   scr.   r.   r/   rN      s     ztabulate.<locals>.<listcomp>rt   c                 S   s*   g | ]"\}}|d k	r"t ||ndqS )N )rH   ljustr   r.   r.   r/   rN     s   )rw   AssertionErrorr   r   rz   append)valsr|   rowresultZdisplayr.   r.   r/   ry      s    
ry   c                 C   s   |j }|rddddg}nddg}g }|jdks@tdd | D rJ|d |jdkr^|d	 | D ]l}|j|jg}|r||j ||j |jdkst|r||j	 |jdkr|t
| || qb||fS )
z_
    Convert the package data into something usable
    by output_package_listing_columns.
    ZPackageVersionZLatestZTyperk   c                 s   s   | ]}t |V  qd S rR   )r   r   r.   r.   r/   rV     s     z%format_for_columns.<locals>.<genexpr>ZLocationZ	Installer)r<   ro   anyr   ra   r^   rI   re   r   rp   r   )pkgsr0   Zrunning_outdatedrs   rr   Zprojr   r.   r.   r/   rm     s(    



rm   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)namer^   rk   rp   	installerrI   re   )ra   r   	text_typer^   ro   rp   r   r<   rI   re   r   r   dumps)rE   r0   rr   rM   infor.   r.   r/   rq   -  s    



rq   )#
__future__r   r   loggingZpip._vendorr   Zpip._vendor.six.movesr   Zpip._internal.clir   Zpip._internal.cli.req_commandr   pip._internal.exceptionsr   Z"pip._internal.index.package_finderr   Z$pip._internal.models.selection_prefsr	   Z!pip._internal.self_outdated_checkr
   pip._internal.utils.miscr   r   r   Zpip._internal.utils.packagingr   Zpip._vendor.packaging.versionr   	getLoggerr~   loggerr   ry   rm   rq   r.   r.   r.   r/   <module>   s&   
 Y%