
    Jxh0              	          d dl Z d dlZd dlmZ d dlmZmZmZmZm	Z	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 d d	l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" d dl#m$Z$m%Z% erd dl&m'Z'  G d de          Z(e	e(         Z)d dl*m+Z+  ej,        e-          Z. G d de          Z/dddede
eee0                  ee0         f         fdZ1dddede0fdZ2dS )    N)Values)TYPE_CHECKING	GeneratorListOptionalSequenceTuplecastcanonicalize_name)
cmdoptions)IndexGroupCommand)SUCCESS)CommandError)LinkCollector)PackageFinder)BaseDistributionget_environment)SelectionPreferences)
PipSession)stdlib_pkgs)tabulatewrite_output)DistributionVersionc                   (    e Zd ZU dZeed<   eed<   dS )_DistWithLatestInfozGive the distribution object a couple of extra fields.

        These will be populated during ``get_outdated()``. This is dirty but
        makes the rest of the code much cleaner.
        latest_versionlatest_filetypeN)__name__
__module____qualname____doc__r   __annotations__str     N/var/www/html/what/lib/python3.11/site-packages/pip/_internal/commands/list.pyr   r      s6         	 	 ,+++r&   r   )parsec                       e Zd ZdZdZdZddZdedede	fd	Z
ded
ee         defdZdddeddfdZdddeddfdZdddeddfdZdddeded         fdZdddeddfdZdeee                  dee         ddfdZdS )ListCommandzt
    List installed packages, including editables.

    Packages are listed in a case-insensitive sorted order.
    Tz
      %prog [options]returnNc                    | j                             ddddd           | j                             ddddd	           | j                             d
dddd           | j                             ddddd           | j                             ddddd           | j                             t          j                               | j                             dddd           | j                             dddddd           | j                             dddd            | j                             d!d"d#d$            | j                             d%dd#d&d'(           | j                             t          j                               t          j        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/   r0   z--prezYInclude pre-release and development versions. By default, pip only finds stable versions.z--formatstorelist_formatcolumns)r5   freezejsonzBSelect the output format among: columns (default), freeze, or json)r.   r2   r/   choicesr0   z--not-requirednot_requiredz>List packages that are not dependencies of installed packages.)r.   r2   r0   z--exclude-editablestore_falseinclude_editablez%Exclude editable package from output.z--include-editablez%Include editable package from output.T)r.   r2   r0   r/   r   )	cmd_opts
add_optionr   	list_pathlist_excludemake_option_groupindex_groupparserinsert_option_group)self
index_optss     r'   add_optionszListCommand.add_options4   sm     ) 	! 	
 	
 	
 	  ) 	! 	
 	
 	
 	  * 	! 	
 	
 	
 	  / 	! 		
 		
 		
 	  ? 	! 	
 	
 	
 	  !5!7!7888  2 	! 	
 	
 	
 	  1U 	! 	
 	
 	
 	  Q	 	! 	
 	
 	
 	    #8	 	! 	
 	
 	
 	   #8 	! 	
 	
 	
 	  !8!:!:;;;1*2H$+VV
'':666''4=99999r&   optionssessionc                     t          j        ||          }t          d|j                  }t	          j        ||          S )zK
        Create a package finder appropriate to this list command.
        )rG   F)allow_yankedallow_all_prereleases)link_collectorselection_prefs)r   creater   prer   )rD   rG   rH   rL   rM   s        r'   _build_package_finderz!ListCommand._build_package_finder   sY     '-gwGGG /")+
 
 

 #)+
 
 
 	
r&   argsc                    |j         r|j        rt          d          |j         r|j        dk    rt          d          t	          j        |           t          t                    }|j        r$|	                    d |j        D                        d t          |j                                      |j        |j        |j        |j        |          D             }|j        r|                     ||          }|j         r|                     ||          }n|j        r|                     ||          }|                     ||           t,          S )Nz5Options --outdated and --uptodate cannot be combined.r6   z@List format 'freeze' can not be used with the --outdated option.c              3   4   K   | ]}t          |          V  d S Nr   ).0ns     r'   	<genexpr>z"ListCommand.run.<locals>.<genexpr>   s+      GG)!,,GGGGGGr&   c                 .    g | ]}t          d |          S )r   )r
   )rU   ds     r'   
<listcomp>z#ListCommand.run.<locals>.<listcomp>   s3     	'
 	'
 	'
 &**	'
 	'
 	'
r&   )
local_only	user_onlyeditables_onlyinclude_editablesskip)outdateduptodater   r4   r   check_list_path_optionsetr   excludesupdater   pathiter_installed_distributionslocalr1   editabler;   r9   get_not_requiredget_outdatedget_uptodateoutput_package_listingr   )rD   rG   rQ   r_   packagess        r'   runzListCommand.run   s|    	X 0 	XVWWW 	 3x ? ?R   	)'222; 	HKKGGg6FGGGGGG	'
 	'
$W\22OO"=!,&/")": P  	'
 	'
 	'
  	@,,Xw??H 	<((7;;HH 	<((7;;H##Hg666r&   rn   _ProcessedDistsc                 B    d |                      ||          D             S )Nc                     g | ]H}t          t          |j                            t          t          |j                            k    F|IS r%   r(   r$   r   versionrU   dists     r'   rZ   z,ListCommand.get_outdated.<locals>.<listcomp>   sR     
 
 
S,--..s4<7H7H1I1III IIIr&   iter_packages_latest_infosrD   rn   rG   s      r'   rk   zListCommand.get_outdated   3    
 
77'JJ
 
 
 	
r&   c                 B    d |                      ||          D             S )Nc                     g | ]H}t          t          |j                            t          t          |j                            k    F|IS r%   rs   ru   s     r'   rZ   z,ListCommand.get_uptodate.<locals>.<listcomp>   sR     
 
 
S,--..%DL8I8I2J2JJJ JJJr&   rw   ry   s      r'   rl   zListCommand.get_uptodate   rz   r&   c                 R    d |D             t          fd|D                       S )Nc                 h    h | ]/}|                                 pd D ]}t          |j                  0S )r%   )iter_dependenciesr   name)rU   rv   deps      r'   	<setcomp>z/ListCommand.get_not_required.<locals>.<setcomp>   sZ     
 
 
..006B
 
  ch''
 
 
 
r&   c                 &    h | ]}|j         v|S r%   canonical_name)rU   pkgdep_keyss     r'   r   z/ListCommand.get_not_required.<locals>.<setcomp>   s&    SSSS0B(0R0RS0R0R0Rr&   )list)rD   rn   rG   r   s      @r'   rj   zListCommand.get_not_required   sF    
 
 
 
 
 SSSSHSSSTTTr&   )r   NNc              #      K   |                                5 }|                     |          dddt          d         ffd}t          ||          D ]}||V  		 d d d            d S # 1 swxY w Y   d S )Nrv   r   r+   c                                         | j                  }j        sd |D             }                    | j                  }|                    |          }|d S |j        }|j        j        rd}nd}|| _        || _	        | S )Nc                 *    g | ]}|j         j        |S r%   )rt   is_prerelease)rU   	candidates     r'   rZ   zOListCommand.iter_packages_latest_infos.<locals>.latest_info.<locals>.<listcomp>   s4     & & &%(0>&!& & &r&   )project_namewheelsdist)
find_all_candidatesr   rO   make_candidate_evaluatorsort_best_candidatert   linkis_wheelr   r   )rv   all_candidates	evaluatorbest_candidateremote_versiontypfinderrG   s         r'   latest_infoz;ListCommand.iter_packages_latest_infos.<locals>.latest_info   s     "(!;!;D<O!P!P{ & &)7& & &N #;;!%!4 <  	 "+!>!>~!N!N!)4!/!7!&/ "!CC!C&4#'*$r&   )_build_sessionrP   r   map)rD   rn   rG   rH   r   rv   r   s     `   @r'   rx   z&ListCommand.iter_packages_latest_infos   s         )) !	W//AAF+/0      8 K22  #JJJ?!	 !	 !	 !	 !	 !	 !	 !	 !	 !	 !	 !	 !	 !	 !	 !	 !	 !	s   AA..A25A2c                    t          |d           }|j        dk    r-|r+t          ||          \  }}|                     ||           d S |j        dk    rO|D ]J}|j        dk    r"t          d|j        |j        |j                   /t          d|j        |j                   Kd S |j        dk    rt          t          ||                     d S d S )	Nc                     | j         S rT   r   )rv   s    r'   <lambda>z4ListCommand.output_package_listing.<locals>.<lambda>  s	    T0 r&   )keyr5   r6      z%s==%s (%s)z%s==%sr7   )
sortedr4   format_for_columnsoutput_package_listing_columnsverboser   raw_namert   locationformat_for_json)rD   rn   rG   dataheaderrv   s         r'   rm   z"ListCommand.output_package_listing  s    00
 
 
 )+++-h@@LD&//f===== H,,  H H?a'' %t}dlDM    !4=$,GGGGH H  F**7;;<<<<< +*r&   r   r   c           	      :   t          |          dk    r|                    d|           t          |          \  }}t          |          dk    r8|                    dd                    t	          d |                               |D ]}t          |           d S )Nr   r    c                     d| z  S )N-r%   )xs    r'   r   z<ListCommand.output_package_listing_columns.<locals>.<lambda>+  s
    q r&   )leninsertr   joinr   r   )rD   r   r   pkg_stringssizesvals         r'   r   z*ListCommand.output_package_listing_columns   s     t99q==KK6"""%d^^U t99q==q#((3/@/@%+H+H"I"IJJJ 	 	C	 	r&   )r+   N)r   r    r!   r"   ignore_require_venvusagerF   r   r   r   rP   r   r$   intro   rk   rl   rj   r   rx   rm   r   r%   r&   r'   r*   r*   )   s         ES: S: S: S:j

(2
	
 
 
 
&'6 'c 's ' ' ' 'R
)
4:
	
 
 
 

)
4:
	
 
 
 
U)U4:U	U U U U$)$4:$	4	5$ $ $ $L=)=4:=	= = = =*cO-1#Y	     r&   r*   pkgsrp   rG   r+   c                    ddg}|j         }|r|                    ddg           t          d | D                       }|r|                    d           |j        dk    r|                    d           |j        dk    r|                    d	           g }| D ]}|j        t          |j                  g}|rA|                    t          |j                             |                    |j	                   |r|                    |j
        pd
           |j        dk    r|                    |j        pd
           |j        dk    r|                    |j                   |                    |           ||fS )z_
    Convert the package data into something usable
    by output_package_listing_columns.
    PackageVersionLatestTypec              3   $   K   | ]}|j         V  d S rT   )ri   )rU   r   s     r'   rW   z%format_for_columns.<locals>.<genexpr>>  s$      11q
111111r&   zEditable project locationr   Location	Installer )r`   extendanyappendr   r   r$   rt   r   r   editable_project_locationr   	installer)r   rG   r   running_outdatedhas_editablesr   projrows           r'   r   r   1  s    #F' *x()))11D11111M 31222!j!!!!k"""D   }c$,//0 	-JJs4.//000JJt+,,, 	=JJt5;<<<?aJJt}*+++?aJJt~&&&C<r&   rn   c                 H   g }| D ]}|j         t          |j                  d}|j        dk    r|j        pd|d<   |j        |d<   |j        r!t          |j                  |d<   |j        |d<   |j	        }|r||d<   |
                    |           t          j        |          S )	N)r   rt   r   r   r   r   r   r   r   )r   r$   rt   r   r   r   r`   r   r   r   r   r7   dumps)rn   rG   r   rv   infor   s         r'   r   r   ^  s    D  M4<((
 
 ?a#}2D $D 	;%()<%=%=D!"&*&:D"#$($B!$ 	J0ID,-D:dr&   )3r7   loggingoptparser   typingr   r   r   r   r   r	   r
   pip._vendor.packaging.utilsr   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.metadatar   r   $pip._internal.models.selection_prefsr   pip._internal.network.sessionr   pip._internal.utils.compatr   pip._internal.utils.miscr   r   pip._internal.metadata.baser   r   rp   pip._vendor.packaging.versionr(   	getLoggerr   loggerr*   r$   r   r   r%   r&   r'   <module>r      sf           R R R R R R R R R R R R R R R R R R 9 9 9 9 9 9 ( ( ( ( ( ( ; ; ; ; ; ; 2 2 2 2 2 2 1 1 1 1 1 1 7 7 7 7 7 7 < < < < < < D D D D D D D D E E E E E E 4 4 4 4 4 4 2 2 2 2 2 2 ; ; ; ; ; ; ; ; 4??????    .    23O 0 / / / / /		8	$	$E E E E E# E E EP*
*&,*
4S	?DI%&* * * *Z/ & S      r&   