
    <Bh+                       S r SSKJr  SSKrSSKrSSKJrJr  SSKJ	r	  SSK
Jr  \	(       a  SSKJrJrJr  SS	KJr  \R"                  " \5      rSS
 jrS rS r      S SS jjr       S SS jjrSS jrSS jrg)zXCLI implementation for `conda list`.

Lists all packages installed into an environment.
    )annotationsN)isdirisfile)TYPE_CHECKING   )__version__)ArgumentParser	Namespace_SubParsersAction)Anyc           	        SSK Jn  SSKJn  SSKJnJnJnJn  SnUn	U" S5      n
U R                  "  S6UU	U
S.UD6nU" U5        U" U5        U" U5        UR                  S	US
S[        U5       S3S9  UR                  SSSSS9  UR                  SSSSS9  UR                  SSSSS9  UR                  SSSS9  UR                  SSSS9  UR                  SSSS9  UR                  S S!SS"S9  UR                  S#S$SS%S9  UR                  S&S'S(S)S*S+9  UR                  S,S'S(S-S.S+9  UR                  S/S0S1S2S39  UR                  S4S59  U$ )7Nr   )dals)CONDA_LIST_FIELDS   )add_parser_jsonadd_parser_prefixadd_parser_show_channel_urlscomma_separated_strippedz/List installed packages in a conda environment.aQ  
        Examples:

        List all packages in the current environment::

            conda list

        List all packages in reverse order::

            conda list --reverse

        List all packages installed into the environment 'myenv'::

            conda list -n myenv

        List all packages that begin with the letters "py", using regex::

            conda list ^py

        Save packages for future use::

            conda list --export > package-list.txt

        Reinstall packages from an export file::

            conda create -n myenv --file package-list.txt

        )helpdescriptionepilogz--fieldslist_fieldsz7Comma-separated list of fields to print. Valid values: .)typedestr   z	--reverse
store_trueFz)List installed packages in reverse order.)actiondefaultr   z-cz--canonicalz(Output canonical names of packages only.)r   r   z-fz--full-namez]Only search for full names, i.e., ^<regex>$. --full-name NAME is identical to regex '^NAME$'.z
--explicitzbList explicitly all installed conda packages with URL (output may be used by conda create --file).z--md5z&Add MD5 hashsum when using --explicit.z--sha256z)Add SHA256 hashsum when using --explicit.z-ez--exportzOutput explicit, machine-readable requirement strings instead of human-readable lists of packages. This output may be used by conda create --file.z-rz--revisionszList the revision history.z--no-pipstore_falseTpipz+Do not include pip-only installed packages.)r   r   r   r   z--authremove_authzfIn explicit mode, leave authentication details in package URLs. They are removed by default otherwise.regexstore?z4List only packages matching this regular expression.)r   nargsr   zconda.cli.main_list.execute)func)list)
auxlib.ishr   base.constantsr   helpersr   r   r   r   
add_parseradd_argumentsortedset_defaults)sub_parserskwargsr   r   r   r   r   r   summaryr   r   ps               3lib/python3.13/site-packages/conda/cli/main_list.pyconfigure_parserr4      s   !2  @GK	F> 				
 	A aA #NN% 12316	   NN8	   NN7	   NN;	   NN7   NN5  
 NN8  
 NN	   NN)	   NN:   NN1   NNC	   NN5N6H    c                p    [        S5        [        S5        [        SU  35        [        S[         35        g )Nz7# This file may be used to create an environment using:z0# $ conda create --name <env> --file <this file>z# platform: z# created-by: conda )printr   )subdirs    r3   print_export_headerr9      s3    	
CD	
<=	L
!"	 
./r5   c              #     #    U(       a%  [         R                  " U[         R                  5      OS n[        U S S9 H,  nU(       a  UR	                  UR
                  5      c  M(  Uv   M.     g 7f)Nc                6    U R                   R                  5       $ N)namelowerxs    r3   <lambda>get_packages.<locals>.<lambda>   s    affllnr5   key)recompileIr-   searchr=   )	installedr"   pat
prefix_recs       r3   get_packagesrL      sN     %*"**UBDD
!CY,DE
3::joo.6 Fs   A+A-c           	     ,   SSK JnJnJn	  SSKJn
  SSKJn  SSKJ	n  SSK
Jn  SnU" U S	S
9nU(       a  UR                  5         [        UR                  5       S S9nU=(       d    U
R                  nU=(       d    U
R                   n[#        U5      R%                  U5      =n(       a!  U" S[        U5       S['        U5       S35      e/ nUVs/ s H  nUU   PM
     nnXh:X  a  [)        U5      S:X  a  / SQnOUVs/ s H  n[)        U5      PM     nnU(       a  [+        UU5      OU GH  nUS:X  aB  UR-                  U
R.                  (       a  UR1                  5       OUR3                  5       5        ML  US:X  aC  UR-                  SR5                  UR6                  UR8                  UR:                  45      5        M  / n[=        U5       H  u  nnUS:X  a,  [#        UR?                  S5      =(       d    S5      nU" U5      nOpUS:X  a0  UR?                  S5      nU(       d	  Uc  UU	:w  a  [A        U5      nO=SnO:[A        UR?                  US 5      =(       d    S5      RC                  5       nUS:X  a  SnUR-                  U5        [)        U5      =nUU   :  d  M  UUU'   M     UR-                  U5        GM     U(       a  [E        U5      nUS:X  a  SR5                  UVs/ s H	  nSU S3PM     sn5      nSU  S3S S!U 3[G        U5      -  /n US==   S-  ss'   SR5                  UVs/ s H	  nSU S3PM     sn5      nU RI                  UV!s/ s H  n!U[G        U!5      -  PM     sn!5        UU 4$ ['        U5      n UU 4$ s  snf s  snf s  snf s  snf s  sn!f )"Nr   )r   DEFAULT_CONDA_LIST_FIELDSDEFAULTS_CHANNEL_NAMEcontext
PrefixData)CondaValueErrorr   )disp_featuresr   T)interoperabilityc                    U R                   $ r<   )r=   r?   s    r3   rA   list_packages.<locals>.<lambda>   s    r5   rC   zInvalid fields passed: z. Valid options are r      )      r[   r   	canonicalexport=features channel_name Nonehumanz  z%-sz# packages in environment at :#z# )%r)   r   rN   rO   base.contextrQ   core.prefix_datarS   
exceptionsrT   commonrU   loadr-   iter_recordsshow_channel_urlsr   set
differencer'   lenrL   appendjsondist_fields_dumpdist_strjoinr=   versionbuild	enumerategetstrstripreversedtupleextend)"prefixr"   formatreversern   reload_recordsfieldsr   rN   rO   rQ   rS   rT   rU   exitcodeprefix_datarI   invalid_fieldspackagesfieldtitleswidthstitleprecrowidxr_   valuera   value_lengthwidthtemplate_lineresultpackages"                                     r3   list_packagesr      sk    
 '-,%HVd;K{//17GHI)FW-F-F*w**FV//0ABB~B%f^&<%= >!!%&7!8 9<
 	
 H4:;F5&FF;*s6{a/? *01&#e*&127Y.YF[ OO+2<<%%'T]]_ XOOCHHdiitzz%JKL #F+JC
"txx
39r:%h/.(#xx7%(0$(==-EEDHHUD17R8>>@F?EJJu #E
*fSk9*s) ,, 	E GH H%		f"EfURwa=f"EF+F815 5=0

 	q	Q			f"EfURwa=f"EFXNX'}uW~5XNO V hVq < 2R #F #FNs   M=:NN&NNc           
        SSK Jn  SSKJn	  [	        U 5      (       d  SSKJn
  U
" U 5      eU(       d  US:X  a  [        UR                  5        [        U UUUUUS9u  pUR                  (       a
  U	" U5        U$ [        SR                  UVs/ s H  n[        U5      R                  5       PM     sn5      5        U$ s  snf )	Nr   rP   r   stdout_jsonEnvironmentLocationNotFoundr]   )r   r   rn   r   
)rh   rQ   rk   r   r   rj   r   r9   r8   r   rs   r7   rv   r{   rstrip)r   r"   r   r   piplistrs   rn   r   rQ   r   r   r   outputlines                 r3   print_packagesr   
  s     '#==<)&11X/$+H ||F
 O 	dii?T))+?@AO @s   #B;c                   SSK Jn  SSKJn  SSKJn  SSKJn  U(       a  U(       a  [        S5      e[        U 5      (       d  SSK
Jn  U" U 5      e[        UR                  5        [        S5        U" U 5      R                  5        H  n	U	R!                  S	5      n
U
(       a  U
R#                  U5      (       a  [        S
R%                  U	S   5      5        MP  U(       a#  UR'                  UR)                  U
5      S   5      n
U(       d  U(       a7  U(       a  SOSnU	R!                  U5      n[        X(       a  SU 3OS-   5        M  [        U
5        M     g )Nr   )UNKNOWN_CHANNELrP   )urlrR   z0Only one of add_md5 and add_sha256 can be chosenr   z	@EXPLICITr   z# no URL for: {}fnr   md5sha256rg   rb   )r)   r   rh   rQ   rk   r   ri   rS   
ValueErrorr   rj   r   r9   r8   r7   iter_records_sortedrz   
startswithr   r!   split_anaconda_token)r   add_md5r!   
add_sha256r   rQ   
common_urlrS   r   prefix_recordr   hash_key
hash_values                r3   print_explicitr   1  s    0&*-:KLL==<)&11'	+#F+??A&cnn_55$++M$,?@A(()H)H)Ma)PQCj 'uXH&**84J#Z1ZL)R@A#J Br5   c           
        SSK Jn  SSKJn  SSKJn  SSKJn  UR                  5       nUR                  5         [        UR                  5      nU R                  (       a  U R                  (       a  SSKJn  U" S5      eU R                   n	U R"                  (       a  S	U	 S
3n	U R$                  (       at  U" U5      n
['        U
R(                  5      (       a:  UR*                  (       d  U
R-                  5         gU" U
R/                  5       5         gSSKJn  U" U
R(                  5      eU R2                  (       a,  [5        XpR                  U R6                  U R                  5        gU R8                  (       a  SnOU R:                  (       a  SnOSnUR*                  (       a  Sn[=        UU	UU R>                  U R@                  UR*                  URB                  S9$ )Nr   rP   rR   )Historyr   r   )ArgumentErrorz@Only one of --md5 and --sha256 can be specified at the same time^$)PathNotFoundErrorr   r\   r]   rd   )r   r   rs   rn   )"rh   rQ   ri   rS   historyr   rk   r   from_contextassert_environmentr{   prefix_pathr   r   rj   r   r"   	full_name	revisionsr   pathrs   	print_log
object_logr   explicitr   r!   r\   r]   r   r   r    rn   )argsparserrQ   rS   r   r   r   r   r   r"   hr   r   s                r3   executer   N  sU   &-!#))+K""$(()FxxDKK.N
 	
 JJE~~UG1~~FO!&&>><<  ALLN+
  7#AFF++ }}vxx)9)94;;G~~	||\\!33 r5   )r/   r   returnr	   )Nrd   FNTN)r   z,tuple[int, list[str] | list[dict[str, Any]]])Nrd   FFFNN)r   int)FTF)r   r
   r   r	   r   r   )__doc__
__future__r   loggingrE   os.pathr   r   typingr   rb   r   argparser	   r
   r   r   	getLogger__name__logr4   r9   rL   r   r   r   r   r`   r5   r3   <module>r      s   
 #  	 !   EE!DN0 Y 2Y| 	$ 	$N:8r5   