
    wBf9                       U d Z ddlmZ ddlZddlZddlZddlZddlmZ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 d	d
lmZ erddlmZmZmZ ddlmZmZ d	dlmZ  ee      Zd&dZ d'dZ!h dZ"de#d<   h e"dddddddddZ$de#d<   d(dZ%d)dZ& ejN                  dd d!      d*d"       Z(d+d#Z)d+d$Z*d,d%Z+y)-z\CLI implementation for `conda info`.

Display information about current conda installation.
    )annotationsN)SUPPRESS_StoreTrueAction)	getLogger)exists
expanduserisfilejoin)wrap)TYPE_CHECKING   )
deprecated)ArgumentParser	Namespace_SubParsersAction)AnyIterable)PackageRecordc                &   ddl m} ddlm} d}|}d} | j                  	 d%|||d|} ||       |j                  dd	|t        
       |j                  dddt        j                  ddt        d             |j                  dd	d       |j                  ddd	d       |j                  ddd	t               |j                  ddd	d       |j                  dd	t        d        |j                  d!d	d"       |j                  d#$       |S )&Nr   )NULL   )add_parser_jsonz0Display information about current conda install. )helpdescriptionepilogz	--offline
store_true)actiondefaultr   z-az--all	verbosityz24.324.9zUse `--verbose` instead.)addendum)destr   z--basezDisplay base environment path.)r   r   z-ez--envsz"List all known conda environments.z-lz	--licensez-sz--systemzList environment variables.z--rootbase)r   r   r#   z--unsafe-channelsz-Display list of channels with tokens exposed.zconda.cli.main_info.execute)func)info)common.constantsr   helpersr   
add_parseradd_argumentr   r   r   r   set_defaults)sub_parserskwargsr   r   summaryr   r   ps           3lib/python3.12/site-packages/conda/cli/main_info.pyconfigure_parserr1      sk   '(@GKF			
 	A ANN	   NN  /	
	  
 NN-   NN1	   NN	   NN*	   NN	   NN<   NN5N6H    c                 P   ddl m}  g }	 | sut        t        d            rt	        j
                  d      }t        j                  t        d            D ](  }|j                  |      s|j                  d|z         * 	 |S dt        j                  vr|S t        j                  d   }t        t        |d            r7t        j                  t        |d	            D cg c]  }t        |d|       }}|S c c}w # t        $ r!}t        j                  d
|       Y d}~|S d}~ww xY w)zf
    Method used to populate ``site_dirs`` in ``conda info``.

    :returns: List of directories.
    r   on_winz~/.local/libzpython\d\.\dz~/.local/lib/z~/.local/lib/%sAPPDATAPythonPYTHONz'Error accessing user site directory.
%rN)common.compatr5   r   r   recompileoslistdirmatchappendenvironr
   OSErrorlogdebug)r5   	site_dirs	python_repathr6   ies          r0   get_user_siterI   i   s    'IAj01JJ7	JJz/'BC CD t,!(():T)ABC  

*  jj+Gd7H-.  ZZWh(?@ (A.	    A		<a@@As=   AC; (C; C; A	C; C62C; 6C; ;	D%D  D%>   authfilesprioritypreferred_envzset[str]IGNORE_FIELDSnameversionbuildbuild_numberchannelschannelsizefndependsSKIP_FIELDSc                    | j                         j                         D ci c]  \  }}|t        vs|| c}}S c c}}w )z
    Returns a dictionary of key/value pairs from ``prec``.  Keys included in ``IGNORE_FIELDS`` are not returned.

    :param prec: A ``PackageRecord`` object.
    :returns: A dictionary of elements dumped from ``prec``
    )dumpitemsrN   )preckvs      r0   dump_recordr_      s6     "YY[..0KTQA]4JAqDKKKs   <<c           
        ddl m} t        |       }| j                  |d   |d   |d   |d   t	        | j
                         ||d         d}t        t        |j                               t        z
        D ]
  }||   ||<    t                d	j                  |d   |d   |d
         }t        |       t        dt        |      z         |D ]  }t        |dd||           t        d       |d   D ]  }t        d|z          y)z]
    Pretty prints contents of a ``PackageRecord``

    :param prec: A ``PackageRecord``
    r   )human_bytesrO   rP   rQ   rR   rU   )z	file namerO   rP   build stringzbuild numberrS   rU   z{} {} {}rb   -12: zdependencies:rW   z    %sN)utilsra   r_   rV   strrS   sortedsetkeysrX   printformatlen)r\   ra   pkgdkeyheaderdeps          r0   pretty_packagers      s    $
d
CWWFy>GN+t||$CK(	A c#((*o34 S# 
Gqy!I,.8IJF	&M	#F
 +S!C&)*+	/9~ hnr2   r!   z25.3systemc                 	   ddl m}  ddl m} ddlm}m}m}m}m} ddl	m
} ddlm} ddlm}	 ddlm}
m} 	 d	dlm} i } |	|       |j1                         D cg c]%  }|j2                  |j4                  |j6                  g' }}t9         |
|j:                              }|j<                  s|D cg c]  }| ||      rdndz    }}|D cg c]
  } ||       }}t>        j@                  jC                  d      }|stE        d      }tG        |      r|} ||jH                        }|jJ                  |jM                         |jJ                  |k(  d}tO        d?i d|jP                  d|d|d|d|jR                  d|jT                  d|jV                  d|jX                  d|jZ                  d|j\                  d|j^                  d|j`                  d |jH                  d!|d"|jb                  d#|d$|d%|d&|d'|jd                  d(g d)d*jg                  ti        tj        tl        jn                              d+|jp                  d,|jr                  d-| d.|jt                  d/|d0|d1|}|rdd2l;m<}  |       |d3<   n.t?        jz                         |d4<   t?        j|                         |d5<   h d6}|j                  d7 t>        j@                  D               |j                  d8 t>        j@                  D               |j                  d9 t>        j@                  D               |j                  d: t>        j@                  D               |D ci c];  }|t?        j                  |t?        j                  |j                         d;            = }}d< t>        j@                  D        }|j                  |D ci c]  }|d= c}       |j                  tl        j4                  tl        j                  tl        j                  t               |d>       |S # t&        $ r#}t(        j+                  d
|       d}Y d}~d}~wt,        $ r#}t(        j/                  d|       d}Y d}~-d}~ww xY wc c}w c c}w c c}w c c}w c c}w )@z
    Returns a dictionary of contextual information.

    :returns:  Dictionary of conda information to be sent to stdout.
    r   )CONDA_PACKAGE_ROOT)__version__)DEFAULT_SOLVERcontextenv_namesys_rc_pathuser_rc_pathr4   )mask_anaconda_token)_supplement_index_with_system)all_channel_urlsoffline_keepr   z Unable to import conda-build: %sznot installedNzError importing conda-build: %serrorr   z  (offline)NETRCz~/.netrc)rO   
user_agentr   platformconda_versionconda_env_versionconda_build_versionroot_prefixconda_prefixav_data_dirav_metadata_url_baseroot_writable	pkgs_dirs	envs_dirsdefault_prefixactive_prefixactive_prefix_nameconda_shlvlchannelsr|   rc_pathr{   offlineenvspython_version.requests_versionr   conda_locationconfig_files
netrc_filevirtual_pkgssolver)is_admin_on_windowsis_windows_adminUIDGID>   CIO_TEST
LD_PRELOADSSL_CERT_FILECURL_CA_BUNDLEREQUESTS_CA_BUNDLEc              3  `   K   | ]&  }|j                         j                  d       s#| ( yw)CONDANupper
startswith.0r^   s     r0   	<genexpr>z get_info_dict.<locals>.<genexpr>+  s#     Oa1E1Eg1NO   $..c              3  `   K   | ]&  }|j                         j                  d       s#| ( yw)r8   Nr   r   s     r0   r   z get_info_dict.<locals>.<genexpr>,  s#     Pa1E1Eh1OPr   c              3  `   K   | ]&  }|j                         j                  d       s#| ( yw)PATHNr   endswithr   s     r0   r   z get_info_dict.<locals>.<genexpr>-  s#     La1C1CF1KLr   c              3  `   K   | ]&  }|j                         j                  d       s#| ( yw)SUDONr   r   s     r0   r   z get_info_dict.<locals>.<genexpr>.  s#     Na1E1Ef1MNr   z	<not set>c              3  `   K   | ]&  }|j                         j                  d       s#| ( yw)PROXYNr   r   s     r0   r   z get_info_dict.<locals>.<genexpr>4  s#     G1779+=+=g+F!Gr   z<set>)zsys.versionz
sys.prefixzsys.executablerD   env_vars )Er   rv   rw   base.contextrx   ry   rz   r{   r|   r9   r5   
common.urlr}   
core.indexr~   models.channelr   r   conda_buildImportErrorrB   rC   	Exceptionr   valuesrO   rP   rQ   listr   jsonr<   r@   getr   r	   r   r   solver_user_agentdictsubdirr   r   r   signing_metadata_url_baser   r   r   r   shlvlr   r
   maprg   sysversion_infor   r   r   common._os.windowsr   geteuidgetegidupdategetenvlowerprefix
executablerI   )rv   r   rx   ry   rz   r{   r|   r5   r}   r~   r   r   r   errvirtual_pkg_indexr/   r   r   cr   
user_netrcr   r   	info_dictr   env_var_keysevr   
proxy_keyss                                r0   get_info_dictr      s[    &/  '0:?&B !"34:K:R:R:TUQQVVQYY0ULU$W%5%567H<<LTUqA|AMBUU0891#A&9H9(J
+
*#J!'"7"78 //1>>^3F  # ( 0	
 '' )) '' %>> ++ ## ## -- ++ . MM  !" "#$ %&  '* +, -. xxC)9)9 :;/0 !1112 %%34 *56 ))78 9: ";< =I@ <(;(=	$%::<	%::<	%L O2::OOP2::PPL2::LLN2::NN IUBDBIIb"))BHHJ<==H  HRZZGJOO:6RR[67;;**!nn& 	
 M  .		4c:- &		3S9%& V V9L
 7sB   P *Q1/Q6Q;A R <
R	Q.!P??Q.Q))Q.c                b   g }|j                  ddz         | j                  di       }t        |      D ]i  }t        ||         }t	        |      r|d   nd}t	        |      dkD  r|dd nd}|j                  |d	d
|       |D ]  }|j                  d|z           k dj                  |      S )z
    Returns a printable string representing environment variables from the dictionary returned by ``get_info_dict``.

    :param info_dict:  The returned dictionary from ``get_info_dict()``.
    :returns:  String to print.
    z%23s:zenvironment variablesr   r   r   r   Nr   z>25=z                          
)r?   r   rh   r   rm   r
   )r   builderr   rp   value
first_lineother_linesvals           r0   get_env_vars_strr   D  s     GNN7445}}Z,Hh +Xc]#!$UU1X
#&u:>eABirC45 	+CNN8c>*	++ 99Wr2   c                p     ddl m dd fd}dj                  dgd  |       D        d      S )	z
    Returns a printable string of the contents of ``info_dict``.

    :param info_dict:  The output of ``get_info_dict()``.
    :returns:  String to print.
    r   r4   c                @    dj                  t        t        |             S )Nz
                          )r
   r   rg   )liness    r0   flattenz"get_main_info_str.<locals>.flattenc  s    %%c#uo66r2   c               3  h  K   d   rdd   f dd   f n	dd   f d   dk\  r	dd   f dd	   f d
 d         f dd   f dd   f dd   f dd   d    d   d   rdnd f d d d   D              f d   rdnd} dd    d|  d f d!d"   f d#d$   f d% d&         f d' d(         f d) d*         f d+d+   f d,d-   f r
d.d/   f nd0d1    d2d3    f d4d5   f d6d7   f y w)8Nr   zactive environmentzactive env locationr   r   r   zshell levelzuser config filer|   zpopulated config filesr   zconda versionr   zconda-build versionr   zpython versionr   r   rO   r   z
 (default)r   zvirtual packagesc              3  >   K   | ]  }d j                  |        yw)r   N)r
   )r   rn   s     r0   r   z5get_main_info_str.<locals>.builder.<locals>.<genexpr>{  s     GcCHHSMGs   r   r   writablez	read onlyzbase environmentr   z  ()zconda av data dirr   zconda av metadata urlr   zchannel URLsr   zpackage cacher   zenvs directoriesr   r   z
user-agentr   administratorr   zUID:GIDr   :r   z
netrc filer   zoffline moder   r   )r   r   r   r5   s    r0   r   z"get_main_info_str.<locals>.builderf  s    )*'3G)HII()O*DEE'?)CDD]#q( )M":;;!9^#<=='>1J)KLL	/ :;;$i0E&FGG+;!<=="6*+Ih<OPY<ZL`b+cd
 	

 GY~-FGG
 	
 "+?!;:!i&>%?s8*A#NOO"Im$<==&	2H(IJJwy'<=>>	+(> ?@@!79[+A#BCC9Z011Y|455"I.@$ABB5!1 2!Ie4D3EFGGY|455y344s   D/D2r   r   c              3  2   K   | ]  \  }}|d d|   yw)z>23z : Nr   )r   rp   r   s      r0   r   z$get_main_info_str.<locals>.<genexpr>  s!     OzsEs3is5'2Os   )r   zIterable[str]returnrg   )r9   r5   r
   )r   r   r   r5   s   ` @@r0   get_main_info_strr   Y  s:     '7'5R 99bTOWYOTQSTUUr2   c           
         ddl m} ddlm}m}  j
                  r8|j                  r |d|j                  i       yt        |j                          y j                  r\|j                  s%t        dj                  |j                               yt        t        j                  d|j                  i             yd	}|j                  s|j                  r|D ]  }t         |d
        t               }|j                  st!         fd|D              r#|j                  st        t#        |      dz           j$                  r'ddlm}  |       |d<    ||d   |j                           j*                  rO|j                  sBddlm}	m}
 t        dt0        j2                  dd z         t        dt0        j4                  z         t        dt0        j6                  z         t        d|d   z         t9        t;         |	       dz               D ]&  }t        dj=                  | |
d|z                      ( t        dd       |d   }|rt        |d          n
t                |dd D ]  }t        d|z          t                t9        |d   j?                               D ]  \  }}t        | d|         t                |j                  r ||       y) aE  
    Implements ``conda info`` commands.

     * ``conda info``
     * ``conda info --base``
     * ``conda info <package_spec> ...`` (deprecated) (no ``--json``)
     * ``conda info --unsafe-channels``
     * ``conda info --envs`` (deprecated) (no ``--json``)
     * ``conda info --system`` (deprecated) (no ``--json``)
    r   )ry   r   )print_envs_liststdout_jsonr   r   r   r   )r   rt   Tc              3  8   K   | ]  }t        |         y w)N)getattr)r   optargss     r0   r   zexecute.<locals>.<genexpr>  s     I#74#55Is   )list_all_known_prefixesr   )find_commandsfind_executablezsys.version: %s...N(   zsys.prefix: %szsys.executable: %szconda location: %sr   )rQ   zconda-{}: {}zconda-zuser site dirs: r   )endrD   z                %sr   re   ) r   ry   commonr   r   r$   r   r   rk   unsafe_channelsr
   r   dumpsverbosesetattrr   allr   r   core.envs_managerr   rt   r   r   r   rP   r   r   rh   ri   rl   r[   )r   parserry   r   r   optionsoptionr   r   r   r   cmdrD   site_dirrO   r   s   `               r0   executer    sh    '4yy<<(;(;<=  W(()+||$))G,,-.  $**j'*:*:;<=G',, 	(FD&$'	(I 	3IIIll	*T12yy?35	&	&)w||+;<{{||E&#++cr*:;<"SZZ/0&78&3C)DDEc-/J">?@ Sn++CC1PQRS$"-!+.Iil#%abM 7*X567G%i
&;&A&A&CD *eb()*G||Ir2   )r,   r   r   r   )r   z	list[str])r\   r   r   dict[str, Any])r\   r   r   None)r   r  )r   r  r   rg   )r   r   r	  r   r   int),__doc__
__future__r   r   r<   r:   r   argparser   r   loggingr   os.pathr   r   r	   r
   textwrapr   typingr   deprecationsr   r   r   r   r   r   models.recordsr   __name__rB   r1   rI   rN   __annotations__rX   r_   rs   argumentr   r   r   r  r   r2   r0   <module>r     s  
 #  	 	 
 /  4 4    %EE$.GT> Ix H
  	
     	 X LB VVX.} /}@*6VrIr2   