
    <BhNC                       % S r SSKJr  SSK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JrJrJr  SSKJr  SSKJrJr  S	S
KJr  \(       a"  SSKJrJrJr  SSKJr  SSKJr  S	SKJr  S	SKJ r   \
" \!5      r"S/S jr#S0S jr$1 Skr%S\&S'   1 \%kSiSiSiSiSiSiSiSiSir'S\&S'   S1S jr(S2S  jr)S3S! jr*S4S" jr+S5S# jr,S4S$ jr-\S%   r. " S& S'5      r/\" S(S)S*S+9S6S, j5       r0S7S- jr1S8S. jr2g)9z\CLI implementation for `conda info`.

Display information about current conda installation.
    )annotationsN)SUPPRESS_StoreTrueAction)	getLogger)exists
expanduserisfilejoin)wrap)TYPE_CHECKINGLiteral   )
deprecated)ArgumentParser	Namespace_SubParsersAction)Iterable)Any)Context)PackageRecordc           
         SSK Jn  SSKJn  SnUnSnU R                  "  S$UUUS.UD6nU" U5        UR                  SS	U[        S
9  UR                  SSS	SS9  UR                  SS	SS9  UR                  SSS	SS9  UR                  SS[        R                  " SS[        5      [        S9  UR                  SSS	SS9  UR                  S[        R                  " SS[        SS9[        SS9  UR                  S S	S!S9  UR                  S"S#9  U$ )%Nr   )NULL   )add_parser_jsonz0Display information about current conda install. )helpdescriptionepilogz	--offline
store_true)actiondefaultr   z-az--allzShow all information.)r    r   z--basezDisplay base environment path.z-ez--envsz"List all known conda environments.z-lz	--license25.926.3z-sz--systemzList environment variables.z--rootzUse `--base` instead.addendumbase)r    r   destz--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.13/site-packages/conda/cli/main_info.pyconfigure_parserr4       s{   '(@GKF			
 	A ANN	   NN$	   NN-  
 NN1	   NN  1AB	   NN*	   NN  ,	
   
 NN<   NN5N6H    c                    SSK Jn   / n U (       d  [        [        S5      5      (       ah  [        R
                  " S5      n[        R                  " [        S5      5       H/  nUR                  U5      (       d  M  UR                  SU 35        M1     U$ S[        R                  ;  a  U$ [        R                  S   n[        [        US5      5      (       a:  [        R                  " [        US5      5      Vs/ s H  n[        USU5      PM     nnU$ s  snf ! [         a!  n[        R                  S	U5         S
nAU$ S
nAff = f)zZ
Method used to populate ``site_dirs`` in ``conda info``.

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

*  jj+Gd7H-..  ZZWh(?@@ (A.@     A		<a@@As=   A,D :D D *AD 8DD D 
E"D>>E>   authfilesprioritypreferred_envzset[str]IGNORE_FIELDSnameversionbuildbuild_numberchannelschannelsizefndependsSKIP_FIELDSc                    U R                  5       R                  5       VVs0 s H  u  pU[        ;  d  M  X_M     snn$ s  snnf )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itemsrQ   )preckvs      r3   dump_recordrb      s:     "YY[..0K0TQA]4JDAD0KKKs   ??c           
         SSK Jn  [        U 5      nU R                  US   US   US   US   [	        U R
                  5      U" US   5      S.n[        [        UR                  5       5      [        -
  5       H	  nX$   X4'   M     [        5         S	R                  US   US   US
   5      n[        U5        [        S[        U5      -  5        U H  n[        U<S SX4   < 35        M     [        S5        US    H  n[        SU 35        M     g)zQ
Pretty prints contents of a ``PackageRecord``

:param prec: A ``PackageRecord``
r   )human_bytesrR   rS   rT   rU   rX   )z	file namerR   rS   build stringzbuild numberrV   rX   z{} {} {}re   -12: zdependencies:rZ   z    N)utilsrd   rb   rY   strrV   sortedsetkeysr[   printformatlen)r_   rd   pkgdkeyheaderdeps          r3   pretty_packagerv      s     $
d
CWWFy>GN+t||$CK(	A c#((*o34 5 
Gqy!I,.8IJF	&M	#F
S!&)* 	/9~SEl r5   c                 Z	   SSK Jn   SSK Jn  SSKJnJn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
Jn   S	SKJn  0 nU	" U5        UR1                  5       Vs/ s H%  oR2                  UR4                  UR6                  /PM'     nn[9        U
" UR:                  5      5      nUR<                  (       d#  UVs/ s H  nUU" U5      (       a  SOS-   PM     nnUVs/ s H  nU" U5      PM     nn[>        R@                  RC                  S5      nU(       d  [E        S5      n[G        U5      (       a  UnU" URH                  5      nURJ                  URM                  5       URJ                  U:H  S.n[O        S?0 SURP                  _SU_SU_SU_SURR                  _SURT                  _SURV                  _SURX                  _SURZ                  _SUR\                  _SUR^                  _SUR`                  _S URH                  _S!U_S"URb                  _S#U_S$U_S%U_S&U_S'URd                  _S(/ _S)S*Rg                  [i        [j        [l        Rn                  5      5      _S+URp                  _S,URr                  _S-U _S.URt                  _S/U_S0U_S1U_6nU(       a  SS2K;J<n  U" 5       US3'   O0[>        Rz                  " 5       US4'   [>        R|                  " 5       US5'   1 S6knUR                  S7 [>        R@                  5       5        UR                  S8 [>        R@                  5       5        UR                  S9 [>        R@                  5       5        UR                  S: [>        R@                  5       5        UVs0 s H>  nU[>        R                  " U[>        R                  " UR                  5       S;5      5      _M@     nnS< [>        R@                  5       nUR                  UVs0 s H  nUS=_M     sn5        UR                  [l        R4                  [l        R                  [l        R                  [        5       US>.5        U$ ! [&         a#  n[(        R+                  S
U5        Sn SnAGN%SnAf[,         a#  n[(        R/                  SU5        Sn SnAGNPSnAff = fs  snf s  snf s  snf s  snf s  snf )@zs
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_pathr7   )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)rR   
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  p   #    U  H,  oR                  5       R                  S 5      (       d  M(  Uv   M.     g7f)CONDANupper
startswith.0ra   s     r3   	<genexpr> get_info_dict.<locals>.<genexpr>*  s#     O:a1E1Eg1N:   '6	6c              3  p   #    U  H,  oR                  5       R                  S 5      (       d  M(  Uv   M.     g7f)r;   Nr   r   s     r3   r   r   +  s#     P:a1E1Eh1O:r   c              3  p   #    U  H,  oR                  5       R                  S 5      (       d  M(  Uv   M.     g7f)PATHNr   endswithr   s     r3   r   r   ,  s#     L:a1C1CF1K:r   c              3  p   #    U  H,  oR                  5       R                  S 5      (       d  M(  Uv   M.     g7f)SUDONr   r   s     r3   r   r   -  s#     N:a1E1Ef1M:r   z	<not set>c              3  p   #    U  H,  oR                  5       R                  S 5      (       d  M(  Uv   M.     g7f)PROXYNr   r   s     r3   r   r   3  s#     GZ779+=+=g+F!!Zr   z<set>)zsys.versionz
sys.prefixzsys.executablerG   env_vars )Er   rx   ry   base.contextrz   r{   r|   r}   r~   r<   r8   
common.urlr   
core.indexr   models.channelr   r   conda_buildImportErrorrE   rF   	Exceptionr   valuesrR   rS   rT   listr   jsonr?   rC   getr   r	   r   r   solver_user_agentdictsubdirr   r   r   signing_metadata_url_baser   r   r   r   shlvlr   r
   maprj   sysversion_infor   r   r   common._os.windowsr   geteuidgetegidupdategetenvlowerprefix
executablerL   )rx   r   rz   r{   r|   r}   r~   r8   r   r   r   r   r   errvirtual_pkg_indexr2   r   r   cr   
user_netrcr   r   	info_dictr   env_var_keysevr   
proxy_keyss                                r3   get_info_dictr      si    &/  '0:?&B !"34:K:R:R:TU:TQVVQYY0:TLU$W%5%567H<<LTUHqA|AMBHU0891#A&H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HT"BIIb"))BHHJ<==   HRZZGJOO:6:RR[:67;;**!nn& 	
 M  .		4c:- &		3S9%& V V9L
 7sB   P9 ,R4RR/AR#R(9
RQ!!R.RRc                x   / nUR                  SS-  5        U R                  S0 5      n[        U5       Hs  n[        X#   5      n[	        U5      (       a  US   OSn[	        U5      S:  a  USS OSnUR                  U<S	 S
U< 35        U H  nUR                  SU-   5        M     Mu     SR                  U5      $ )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                          
)rB   r   rk   r   rp   r
   )r   builderr   rs   value
first_lineother_linesvals           r3   get_env_vars_strr   C  s     GNN7445}}Z,HhX]#!$UU1X
#&u:>eABirC45CNN8c>*    99Wr5   c                p   ^ ^^ SSK Jm  SS jmUU U4S jnU" 5       VVs0 s H  u  p#X#_M	     snn$ s  snnf )zI
Returns the data that can be used to display information for conda info
r   r7   c                @    SR                  [        [        U 5      5      $ )Nz
                          )r
   r   rj   )liness    r3   flatten&get_main_info_display.<locals>.flatten^  s    %%c#uo66r5   c               3    >#    TS   (       a  STS   4v   STS   4v   O	STS   4v   TS   S:  a	  STS   4v   STS	   4v   S
T" TS   5      4v   STS   4v   STS   4v   STS   4v   STS   S    TS   S   (       a  SOS 34v   ST" S TS   5       5      4v   TS   (       a  SOSn STS    SU  S 34v   S!TS"   4v   S#TS$   4v   S%T" TS&   5      4v   S'T" TS(   5      4v   S)T" TS*   5      4v   S+TS+   4v   S,TS-   4v   T(       a
  S.TS/   4v   OS0TS1    S2TS3    34v   S4TS5   4v   S6TS7   4v   g 7f)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   rR   r!   z
 (default)r   zvirtual packagesc              3  D   #    U  H  nS R                  U5      v   M     g7f)r   N)r
   )r   rq   s     r3   r   9get_main_info_display.<locals>.builder.<locals>.<genexpr>v  s     G-FcCHHSMM-Fs    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   r8   s    r3   r   &get_main_info_display.<locals>.buildera  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   EE)r   zIterable[str]returnrj   )r<   r8   )r   r   rs   r   r   r8   s   `   @@r3   get_main_info_displayr   X  s3     '7'5R *13:3CJ333s   2c                n    [        U 5      nSR                  S/S UR                  5       5       QSP75      $ )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   r   c              3  6   #    U  H  u  pUS  SU 3v   M     g7f)z>23z : Nr   )r   rs   r   s      r3   r   $get_main_info_str.<locals>.<genexpr>  s!     M8L*##c#eW%8Ls   )r   r
   r^   )r   display_infos     r3   get_main_info_strr     s>     )3L99	RM8J8J8LMRrR r5   )r&   r   r   systemdetailjson_allc                  `    \ rS rSrSrS rSS jrSS jrSS jrSS jr	S r
SS	 jrSS
 jrSrg)InfoRendereri  z?
Provides a ``render`` method for rendering ``InfoComponents``
c                ~    SSK Jn  Xl        [        5       U l        U" 5       U R                  S'   S S SSS S S.U l        g )Nr   )list_all_known_prefixesr   detail_view	envs_list)r&   r   r  r   r   r  )core.envs_managerr  _contextr   
_info_dict_component_style_map)selfr{   r  s      r3   __init__InfoRenderer.__init__  s@    ?'/"9";#%
!r5   c                    SSK Jn  U HN  nU R                  R                  U5      n[	        U SU S3S5      nU(       d  M8  U" 5       nU(       d  MH  U" XdS9  MP     g)z
Iterates through the registered components, obtains the data to render via a
``_<component>_component`` method and then renders it.
r   )render_
_componentN)style)	reportersr  r  r   getattr)r  
componentsr  	componentr  	data_funcdatas          r3   r  InfoRenderer.render  sX    
 	'#I--11)<E)J&?FI;Dtt) $r5   c                    U R                   R                  (       a  SU R                   R                  0$ U R                   R                   S3$ )Nr   r   )r
  r   r   r  s    r3   _base_componentInfoRenderer._base_component  s<    ==!4==#<#<==mm//033r5   c                    U R                   R                  (       a  SU R                   R                  0$ SR                  U R                   R                  5      nU S3$ )Nr   r   )r
  r   r   r
   )r  channels_strs     r3   _channels_component InfoRenderer._channels_component  sI    == 6 67799T]]%;%;<L"^2&&r5   c                ,    [        U R                  5      $ N)r   r  r  s    r3   _detail_componentInfoRenderer._detail_component  s    $T__55r5   c                X    U R                   R                  (       d  U R                  S   $ g )Nr   )r
  r   r  r  s    r3   _envs_componentInfoRenderer._envs_component  s#    }}!!??6** "r5   c           
     
   SSK J nJn  S[        R                  S S  S3S[        R                   3S[        R
                   3SR                  U R                  S	   5      /n[        [        U" 5       S
-   5      5       H,  nUR                  SR                  XB" SU-   5      5      5        M.     U R                  S   nU(       a  UR                  SUS    35        OUR                  S5        USS   H  nUR                  SU 35        M     UR                  S5        [        U R                  S   R                  5       5       H  u  pxUR                  U SU 35        M     UR                  S5        SR                  U5      $ )Nr   )find_commandsfind_executablezsys.version: (   z...zsys.prefix: zsys.executable: zconda location: {}r   )rT   zconda-{}: {}zconda-rG   zuser site dirs: r   zuser site dirs:z                r   r   rh   r   )r,  r-  r   rS   r   r   ro   r  rk   rl   rB   r^   r
   )	r  r,  r-  outputcmdrG   site_dirrR   r   s	            r3   _system_componentInfoRenderer._system_component  s]   A CKK,-S13::,'s~~./ ''8H(IJ	
 #mo
:;<CMM.//_XPS^5TUV = OOK0	MM,Yq\N;<MM+,!!"HMM,XJ78 & 	b!$//*"="C"C"EFKDMMTF"UG,- G 	byy  r5   c                    U R                   $ r%  )r  r  s    r3   _json_all_component InfoRenderer._json_all_component  s    r5   )r  r
  r  N)r  Iterable[InfoComponents])r   z
str | dict)r   dict[str, str])r   rj   r   dict[str, Any])__name__
__module____qualname____firstlineno____doc__r  r  r  r"  r&  r)  r2  r5  __static_attributes__r   r5   r3   r  r    s/    
*&4'6+!>r5   r  r"   r#   z7Use `conda.cli.main_info.iter_info_components` instead.r$   c                *    [        [        X5      5      $ r%  )rl   iter_info_componentsargsr{   s     r3   get_info_componentsrE    s     #D233r5   c              #    #    U R                   (       a  Sv   U R                  (       a  Sv   U R                  (       d"  U R                  (       dH  U R                  (       d7  UR
                  (       d&  U R                   (       d  U R                  (       d  Sv   U R                  (       d  U R                  (       a  UR
                  (       d  Sv   U R                  (       d  U R                  (       a  UR
                  (       d  Sv   UR
                  (       a)  U R                   (       d  U R                  (       d  Sv   gggg7f)z
Determine which components to display.

:param args: The parsed command line arguments.
:param context: The conda context.
:returns: An iterable of components to display.
r&   r   r  r   r   r  N)r&   unsafe_channelsallr   r   r   rC  s     r3   rB  rB    s      yy 
$))DKK		$$		TXXw||txx||DIId.B.B /CI|s   D>E c                ^    SSK Jn  [        X5      n[        U5      nUR	                  U5        g)z
Implements ``conda info`` command.

 * ``conda info``
 * ``conda info --base``
 * ``conda info <package_spec> ...``
 * ``conda info --unsafe-channels``
 * ``conda info --envs``
 * ``conda info --system``
r   )r{   r   )r   r{   rB  r  r  )rD  parserr{   r  renderers        r3   executerL  &  s*     '%d4JG$HOOJr5   )r/   r   r   r   )r   z	list[str])r_   r   r   r:  )r_   r   r   Noner9  )r   r:  r   rj   )r   r:  r   r8  )rD  r   r{   r   r   zset[InfoComponents])rD  r   r{   r   r   r7  )rD  r   rJ  r   r   int)3r?  
__future__r   r?   r=   r   argparser   r   loggingr   os.pathr   r   r	   r
   textwrapr   typingr   r   deprecationsr   r   r   r   collections.abcr   r   r   r   models.recordsr   r;  rE   r4   rL   rQ   __annotations__r[   rb   rv   r   r   r   r   InfoComponentsr  rE  rB  rL  r   r5   r3   <module>rZ     s=  
 # 	 	 
 /  4 4  ) %EE(&.FR> Ix H
  	
     	 X LB}@*24j ST[ [| 

F
4
4@r5   