
    iF5                    z   d dl mZ d dlZd dlZd dlZd dlmZmZ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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%m&Z& erd dl'm(Z( d dl)m*Z*  G d de      Z+ee+   Z, ejZ                  e.      Z/ G d de      Z0	 	 	 	 	 	 ddZ1ddZ2y)    )annotationsN)	GeneratorIteratorSequence)Parser)Values)TYPE_CHECKINGcastcanonicalize_name)InvalidVersionVersion)
cmdoptions)IndexGroupCommand)SUCCESS)CommandError)BaseDistributionget_environment)SelectionPreferences)stdlib_pkgs)tabulatewrite_outputPackageFinder)
PipSessionc                  &    e Zd ZU dZded<   ded<   y)_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.
        r   latest_versionstrlatest_filetypeN)__name__
__module____qualname____doc____annotations__     N/root/searxng-venv/lib/python3.12/site-packages/pip/_internal/commands/list.pyr   r      s    	  r'   r   c                       e Zd ZdZdZdZddZej                  d f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 xZS )ListCommandzt
    List installed packages, including editables.

    Packages are listed in a case-insensitive sorted order.
    Tz
      %prog [options]c                j   | j                   j                  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       | j                   j                  ddddd       | j                   j                  t        j                                | j                   j                  dddddd       | j                   j                  dddd       | j                   j                  dd d!d"       | j                   j                  d#dd!d$d%&       | j                   j                  t        j                                t        j
                  t        j                  | j                        }t        j
                  t        j                  | j                        }| j                  j                  d'|       | j                  j                  d'|       | j                  j                  d'| j                          y )(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--formatstorelist_formatcolumns)r4   freezejsonzSelect the output format among: columns (default), freeze, or json. The 'freeze' format cannot be used with the --outdated option.)r-   r1   r.   choicesr/   z--not-requirednot_requiredz>List packages that are not dependencies of installed packages.)r-   r1   r/   z--exclude-editablestore_falseinclude_editablez%Exclude editable package from output.z--include-editablez#Include editable package in output.T)r-   r1   r/   r.   r   )
cmd_opts
add_optionr   	list_pathlist_excludemake_option_groupindex_groupparserpackage_selection_groupinsert_option_group)self
index_optsselection_optss      r(   add_optionszListCommand.add_options6   s      ) 	! 	
 	  ) 	! 	
 	  * 	! 	
 	  / 	! 		
 	  ? 	! 	
 	  !5!5!78  1Q 	! 
	
 	  Q	 	! 	
 	    #8	 	! 	
 	   #6 	! 	
 	  !8!8!:;11*2H2H$++V
#55..KK

 	'':6''>:''4==9r'   c              #     K   |j                   s|j                  sd  y t        |   ||      5  d  d d d        y # 1 sw Y   y xY wwN)outdateduptodatesuperpip_version_check)rD   optionsargs	__class__s      r(   rM   zListCommand.pip_version_check   sD       G$4$4W&w5 		 	 	s   .A?	AAAc                    ddl m} ddlm} |j	                  ||      }t        d|j                        } |j                  ||      S )zK
        Create a package finder appropriate to this list command.
        r   )LinkCollectorr   )rN   F)allow_yankedrelease_control)link_collectorselection_prefs)pip._internal.index.collectorrR   "pip._internal.index.package_finderr   creater   rT   )rD   rN   sessionrR   r   rU   rV   s          r(   _build_package_finderz!ListCommand._build_package_finder   sU     	@D&--gw-G /#33

 $}##)+
 	
r'   c                "   t        j                  |       |j                  r|j                  rt	        d      |j                  r|j
                  dk(  rt	        d      t        j                  |       t        t              }|j                  r"|j                  d |j                  D               t        |j                        j                  |j                  |j                  |j                   |j"                  |      D cg c]  }t%        d|       }}|j&                  r| j)                  ||      }|j                  r| j+                  ||      }n|j                  r| j-                  ||      }| j/                  ||       t0        S c c}w )Nz5Options --outdated and --uptodate cannot be combined.r5   z?List format 'freeze' cannot be used with the --outdated option.c              3  2   K   | ]  }t        |        y wrI   r   ).0ns     r(   	<genexpr>z"ListCommand.run.<locals>.<genexpr>   s     G)!,Gs   )
local_only	user_onlyeditables_onlyinclude_editablesskipr   )r   check_release_control_exclusiverJ   rK   r   r3   check_list_path_optionsetr   excludesupdater   pathiter_installed_distributionslocalr0   editabler:   r
   r8   get_not_requiredget_outdatedget_uptodateoutput_package_listingr   )rD   rN   rO   re   dpackagess         r(   runzListCommand.run   s_   227; 0 0VWW 3 3x ?Q  	))'2;KKGg6F6FGG %W\\2OO"==!,,&//")":": P 	%
 &*	%
 	%
 ,,Xw?H((7;H((7;H##Hg61	%
s   Fc                ~    | j                  ||      D cg c]  }|j                  |j                  kD  r| c}S c c}w rI   iter_packages_latest_infosr   versionrD   rt   rN   dists       r(   rp   zListCommand.get_outdated   sC    
 77'J
""T\\1 
 	
 
   ":c                ~    | j                  ||      D cg c]  }|j                  |j                  k(  r| c}S c c}w rI   rw   rz   s       r(   rq   zListCommand.get_uptodate   sC    
 77'J
""dll2 
 	
 
r|   c                    |D ch c]0  }|j                         xs dD ]  }t        |j                         2 }}}t        |D ch c]  }|j                  |vs| c}      S c c}}w c c}w )Nr&   )iter_dependenciesr   namelistcanonical_name)rD   rt   rN   r{   depdep_keyspkgs          r(   ro   zListCommand.get_not_required   s}    
 !
..06B
  chh'
'
 
 HSS0B0B(0RSSTT
 Ts   5A&A,A,c              #      K    j                        5 } j                  |      	 	 	 	 d fd}t        ||      D ]	  }||  	 d d d        y # 1 sw Y   y xY ww)Nc                   j                  | j                        }	j                  | j                        r%|D cg c]  }|j                  j                  s| }}j                  | j                        }|j                  |      }|y |j                  }|j                  j                  rd}nd}|| _	        || _
        | S c c}w )N)project_namewheelsdist)find_all_candidatesr   should_exclude_prereleasery   is_prereleasemake_candidate_evaluatorsort_best_candidatelinkis_wheelr   r    )
r{   all_candidates	candidate	evaluatorbest_candidateremote_versiontypfinderrN   rD   s
          r(   latest_infoz;ListCommand.iter_packages_latest_infos.<locals>.latest_info   s     "(!;!;D<O<O!P11'4;N;NO *8&%(00>> "&N & #;;!%!4!4 < 	 "+!>!>~!N!)!/!7!7!&&//!C!C&4#'*$)&s   C)r{   r   returnz_DistWithLatestInfo | None)_build_sessionr[   map)rD   rt   rN   rZ   r   r{   r   s   ` `   @r(   rx   z&ListCommand.iter_packages_latest_infos   sw        )  	W//AF)+6 K2 #J= 	  	  	s"   A$0AA	A$A!A$c                   t        |d       }|j                  dk(  r$|r"t        ||      \  }}| j                  ||       y |j                  dk(  rV|D ]P  }	 |j                   d|j
                   }|j                  dk\  rt        d||j                         Ft        |       R y |j                  d	k(  rt        t        ||             y y # t        $ r |j                   d|j                   }Y w xY w)
Nc                    | j                   S rI   )r   )r{   s    r(   <lambda>z4ListCommand.output_package_listing.<locals>.<lambda>  s    T00 r'   )keyr4   r5   z==z===   z%s (%s)r6   )sortedr3   format_for_columnsoutput_package_listing_columnsraw_namery   r   raw_versionverboser   locationformat_for_json)rD   rt   rN   dataheaderr{   
req_strings          r(   rr   z"ListCommand.output_package_listing  s     0
 )+-h@LD&//f=  H,  -I$(MM?"T\\N!CJ ??a' JF ,-   F*7;< + & I$(MM?#d6F6F5G!HJIs   C$C43C4c                    t        |      dkD  r|j                  d|       t        |      \  }}t        |      dkD  r(|j                  ddj                  d |D                     |D ]  }t	        |        y )Nr   r    c              3  &   K   | ]	  }d |z    yw)-Nr&   r^   xs     r(   r`   z=ListCommand.output_package_listing_columns.<locals>.<genexpr><  s     *Bq37*Bs   )leninsertr   joinr   )rD   r   r   pkg_stringssizesvals         r(   r   z*ListCommand.output_package_listing_columns1  sn     t9q=KK6"%d^U t9q=q#((*BE*B"BC 	C	r'   )r   None)rN   r   rO   	list[str]r   zIterator[None])rN   r   rZ   r   r   r   )rN   r   rO   r   r   int)rt   _ProcessedDistsrN   r   r   r   )rt   r   rN   r   r   z*Generator[_DistWithLatestInfo, None, None])rt   r   rN   r   r   r   )r   zlist[list[str]]r   r   r   r   )r!   r"   r#   r$   ignore_require_venvusagerG   
contextlibcontextmanagerrM   r[   ru   rp   rq   ro   rx   rr   r   __classcell__)rP   s   @r(   r*   r*   +   s    ES:j  

(2
	
.)V
'
28
	

'
28
	
U'U28U	U#'#28#	3#J='=28=	=.#-6	r'   r*   c                   ddg}|j                   }|r|j                  ddg       dd}| D cg c]
  } ||       }}t        |      }|r|j                  d       t        d | D              }|r|j                  d       |j                  d	k\  r|j                  d
       |j                  d	k\  r|j                  d       g }	t        |       D ]  \  }
}|j                  |j                  g}|r?|j                  t        |j                               |j                  |j                         |r|j                  ||
   xs d       |r|j                  |j                  xs d       |j                  d	k\  r|j                  |j                  xs d       |j                  d	k\  r|j                  |j                         |	j                  |        |	|fS c c}w )z_
    Convert the package data into something usable
    by output_package_listing_columns.
    Packager   LatestTypec                    	 | j                  d      }t               j                  |      j	                  d      S # t        $ r Y y w xY w)NWHEELBuild)	read_textFileNotFoundErrorr   parsestrget)r{   
wheel_files     r(   wheel_build_tagz+format_for_columns.<locals>.wheel_build_tagO  sI    	0J x  ,0099 ! 		s   ; 	AAr   c              3  4   K   | ]  }|j                     y wrI   )rn   r   s     r(   r`   z%format_for_columns.<locals>.<genexpr>[  s     1q

1s   zEditable project locationr   Location	Installer )r{   r   r   z
str | None)rJ   extendanyappendr   	enumerater   r   r   r   r    editable_project_locationr   	installer)pkgsrN   r   running_outdatedr   p
build_tagshas_build_tagshas_editablesr   iprojrows                r(   r   r   B  s    #F''x(): /33/!$3J3_Ng1D11M12!j!!k"DT? 4 }}d../JJs4../0JJt++,JJz!}*+JJt55;<??aJJt}}*+??aJJt~~&C), <K 4s   Gc                   g }| D ]  }	 t        |j                        }|j                  |d}|j
                  dk\  r"|j                  xs d|d<   |j                  |d<   |j                  r't        |j                        |d<   |j                  |d<   |j                  }|r||d<   |j                  |        t        j                  |      S # t        $ r |j                  }Y w xY w)	N)r   ry   r   r   r   r   r   r    r   )r   ry   r   r   r   r   r   r   rJ   r   r    r   r   r6   dumps)rt   rN   r   r{   ry   infor   s          r(   r   r   ~  s    D 	'$,,'G MM
 ??a#}}2D $D%()<)<%=D!"&*&:&:D"#$($B$B!$0ID,-D%& ::d!  	'&&G	's   CC$#C$)r   r   rN   r   r   z!tuple[list[list[str]], list[str]])rt   r   rN   r   r   r   )3
__future__r   r   r6   loggingcollections.abcr   r   r   email.parserr   optparser   typingr	   r
   pip._vendor.packaging.utilsr   pip._vendor.packaging.versionr   r   pip._internal.clir   pip._internal.cli.index_commandr   pip._internal.cli.status_codesr   pip._internal.exceptionsr   pip._internal.metadatar   r   $pip._internal.models.selection_prefsr   pip._internal.utils.compatr   pip._internal.utils.miscr   r   rX   r   pip._internal.network.sessionr   r   r   	getLoggerr!   loggerr*   r   r   r&   r'   r(   <module>r      s    "    9 9   & 9 A ( = 2 1 D E 2 ;@8.  23O 
		8	$T# Tn9
9$*9&9xr'   