
    4d:                        d dl mZmZmZmZ d dlZd dlZd dlZd dlZd dl	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mZ d d	lmZ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) d dl*m+Z+ d dl,Z-d Z.	 	 	 	 	 	 	 	 d#dZ/	 	 	 	 	 	 d$dZ0de1fdZ2d%dZ3d Z4d Z5d&dZ6da7d Z8	 d&dZ9d  Z:	 d&d!Z;d" Z<dS )'    )absolute_importdivisionprint_functionunicode_literalsN)OrderedDict)
IndexedSet)ChannelPriority)context)	json_dump)join_urlremove_authsplit_anaconda_token)_supplement_index_with_systemcheck_allowlist)PrefixSetupUnlinkLinkTransaction)
PrefixData)diff_for_unlink_link_precs)CondaHttpAuth)Channel)PrefixGraph)PackageRecordc                     t           j        s%t          d| j        j        | j        j                   |                    |                                           S )NzGetting )r
   quietprintchannelnameplatformappendloaded)subdir_dataresult_containers     +lib/python3.11/site-packages/mamba/utils.pyload_channelr$      sK    = Rj+-2K4G4PQQQ"";#5#5#7#7888     TFrepodata.jsonc           
          t          t                    rdgg }|r|                    d           |                    |            |r|                    t          j                   t          |           t          t          j	        |                    }t          j                    }	g }
fd}t          t          ||                    }t          j        t          j                  }t          j        t          |j                             t          j        |          D ]{}|                    d          D ]b\  }}t'          j        |          }t          j        |||||          }|                    |	          }|
                    |||||df           c||
D ]6\  }}|d         r|                                 |	                    |           7|	                    t          j                  }|st7          d          |
S )	Nnoarchlocalc                 $   |                      d          }|dk    rS|                     d          }| d |         t          j                            | |                   z   | |dz   d          z   } r| dz   d                              z   dz   } | S )N@   [,])countfindurllibparsequotejoin)specat_countfirst_atr   s      r#   fixup_channel_specz%get_index.<locals>.fixup_channel_spec@   s    ::c??a<<yy~~HYhY,$$T(^445x!|~~&' 
  	9#: 2 22S8Dr%   Twith_credentials)r   urlr   needs_finalisingr>   zError downloading repodata.)
isinstancestrr   extendr
   channelsr   listr   fromkeysapiDownloadTargetListmapMultiPackageCache	pkgs_dirscreate_cache_dirfirst_writable_pathget_channelsplatform_urlsr   add_binstar_token
SubdirDatadownload_and_check_targetsfinalize_checksadddownloadMAMBA_DOWNLOAD_FAILFASTRuntimeError)channel_urlsprependr   	use_local	use_cacheunknownprefixrepodata_fnall_channelsdlistindexr:   rI   r   channel_platformr=   full_urlsdr>   infois_downloadeds     `                  r#   	get_indexre   $   sI    (C   (h'L %G$$$%%% .G,---L!!! ,\::;;L"$$EE     .==>>L%g&788IY:;;<<<#L11  %,%:%:D%:%Q%Q 	 	!c$6s;;H)8Y B  "<<UCCLL$4"#*,<	 
 
 
 
	(   D"# 	!   		"NN3#>??M :8999Lr%   c	           	      @   t          ||||||          }	|$t          j        t          j        t          j        fv }t          |	          }
|rAt          t          d |	D                                 }|	d         d         d         j        }|}|	D ]\  }}|r&|d         j        |k    r|dz  }|d         j        }|}nd}|rd}n|
}|
dz  }
|	                                s|d         dk    r]t          j
        dk    r_t          j        sSt          d                    |d         |d         ||                     t          d	|                                           |                    |           }|                    ||           |                    |           |	S )
N)rV   rW   r   rX   r\   rY   c                 .    g | ]\  }}|d          j         S )r   )canonical_name).0_entrys      r#   
<listcomp>z!load_channels.<locals>.<listcomp>   s$    TTT(!UeI.=TTTr%   r   r-   r   r   r)   z(Channel: {}, platform: {}, prio: {} : {}zCache path: )re   r
   channel_priorityr	   STRICTFLEXIBLElensetrh   r    	verbosityjsonr   format
cache_pathcreate_reposet_priorityr   )poolrB   reposhas_priorityrW   r   rX   rY   r\   r_   subprio_index
n_channelscurrent_channelchannel_priosubdirrk   prioritysubpriorityrepos                      r#   load_channelsr   s   s      E /"$4
 

 JJM "TTeTTTUUVV
(1+i0?!   	Y./AA!"'	"2"A#HHH 	KK'KQM}} 	5#4#@#@!!',!:AA)$eJ&7;   
 .&"3"3"5"5666!!$''(K000TLr%   rr   c                     | dk    rt           j        j        S | dk    rt           j        j        S | dk    rt           j        j        S t           j        j        S )Nr   r-      )rE   LogLevelWARNINGINFODEBUGTRACE)rr   s    r#   log_level_from_verbosityr      sI    A~~|##	a|  	a|!!|!!r%   c           	      "	   t          j                    }t          j        |j        _        t          j        |_        t          j        r&dt          _        dt          _        | rdt          _        t          j        |j        _        |	                    t          j                   t          j        |j        _        t          j
        |_
        t          j        |_        t          j        |_        t          j        |_        t          j        |_        t          j        |_        t!          t          j                  |j        _        dt&          j        v r`	 t+          t&          j        d                   }||j        _        n3# t0          $ r& t&          j        d         }t1          d| d          w xY wddt3           t          j                            d                              |_        i }t          j        D ]N}t          j        |         j        dvr3 t          j        |                             d          |          ||<   O||_        i }t          j        D ]X}|d	vrRg ||<   t          j        |         D ]:}||                              |                    d                               ;Y||_        fd
t          j         D             |_         t          j!        du rd|j        _!        n$t          j!        durt          j!        |j        _!        t          j"        |j#        _"        t          j$        |j#        _$        t          j%        |j#        _%        t          j&        |_&        t          j'        |_'        t+          tQ          t          j)                            |j        _*        t          j+        |j        _,        t          j-        |j        _.        t          j/        |_/        t          j0        |_0        t          j1        td          j3        u rt           j2        j4        |_1        d S t          j1        td          j5        u rt           j2        j6        |_1        d S t          j1        td          j7        u rt           j2        j8        |_1        d S d S )NTFMAMBA_EXTRACT_THREADSzGInvalid conversion of env variable 'MAMBA_EXTRACT_THREADS' from value ''c                     |                      dd          d         }|r0|                    |          r|d t          |          dz             S |S )N/r-   r   )rsplitendswithrp   )r=   r   tmps      r#   get_base_urlz&init_api_context.<locals>.get_base_url   sY    jja  # 	/||D!! /-s4yy1}--..
r%   r;   )r*   defaults)r   r*   c                 N    g | ]!} |                     d                     "S )Tr;   )r=   )ri   xr   s     r#   rl   z$init_api_context.<locals>.<listcomp>   s>          78QUUDU1122     r%   z<false>N)9rE   Contextr
   rs   output_paramsdry_run
always_yesr   rr   set_verbosityofflinelocal_repodata_ttluse_index_cacherB   r   r   dictproxy_serversremote_fetch_paramsosenvironintthreads_paramsextract_threads
ValueErrorr@   channel_aliasr=   custom_channelsrh   custom_multichannelsr   default_channels
ssl_verifytarget_prefixprefix_paramsroot_prefixconda_prefixrI   	envs_dirsroundremote_connect_timeout_secsconnect_timeout_secsremote_max_retriesmax_retriesremote_backoff_factorretry_backoffadd_pip_as_python_dependencyuse_only_tar_bz2rm   r	   rn   kStrictro   	kFlexibleDISABLED	kDisabled)	use_mamba_experimentalapi_ctxmax_threadsvadditional_custom_channelseladditional_custom_multichannelscr   s	           @r#   init_api_contextr      s   kmmG!(GoGO| !!! 	! GL&-&7G#'+,,,")-GoGO!(!;G%5G +G'G~G04W5J0K0KG-"*,,	bj)@ABBK5@G"22 	 	 	
23A^Z[^^^  	     W*...EEFF G "$%  "2&5=RRR-9\'+///FF. .&r* 9G&(#*  ***24+B/1"5  /3:: L!=!=>>    $CG        <C<T     G U""1:#..		4	'	'181C#.*1*?G'(/(;G%)0)=G&)G)G7:g1228 8G4 /6.HG+070MG-+2+OG(&7G?#999#&#6#>   		!_%=	=	=#&#6#@   		!_%=	=	=#&#6#@    
>	=s   +E= =0F-c           	          | j         dk    r)t          j        |                     |d                    S t          | j         | j        | j        | j        | j        || j                  S )NfileFr;   )	schemeCondaChannel
from_valueplatform_urlauthlocationtokenr   package_filename)r   r   s     r#   to_conda_channelr     sq    ~&  E BB
 
 	
    r%   c                    | d         }t          j        |          }||d<   t          | d         | d                   |d<   t          ||          |d<   |                    d          s| d         |d<   t          di |}|S )Nr=   fnr   r   r   r&   )rs   loadsr   r   getr   )rk   pkg
jsn_stringchannel_urlrc   package_records         r#   to_package_record_from_subjsonr   /  s    ,K:j!!DDJ&uY'7z9JKKDO;,,DK88H +z*X"**T**Nr%   c                 6   di i}d t          | d                                          D             }t          |           t          |          }|D ]D}|                                }|j        |d<   |j        |d<   |j        |d<   ||d         |j        <   E||fS )Npackagesc                     i | ]}||S r&   r&   )ri   recs     r#   
<dictcomp>z*get_installed_packages.<locals>.<dictcomp>?  s'       S  r%   F)pip_interop_enableddepends
constrainsbuild)	r   iter_recordsr   rC   dist_fields_dumpr   r   r   r   )r[   show_channel_urlsresult	installedprecjson_recs         r#   get_installed_packagesr   ;  s    "F &v5IIIVVXX  I "),,,YI / /((**"l!% J&.z47##fr%   c                     t          | d          \  a}t          j        dd          }|                    t          |                     |                                 |t          fS )NT)r   wF)delete)r   installed_pkg_recstempfileNamedTemporaryFilewriter   flush)r[   outputinstalled_json_fs      r#   get_installed_jsonfiler   X  sk    !7RV!W!W!W23uEEE9V,,---///r%   c                    |g }g g }}t          |           }i }|D ]+\  }	}
|
||
d                             |
d         d          <   ,|D ]~\  }	}|D ]W}|j        |k    rJ	 |                    |           |                    |           n# t
          $ r |j        dk    rY P w xY w n Xt          d| dt          j	                   |D ]\  }}}|
                    d	          r|}n"t          t          |                    d
         }||vr#t          d                    ||                    ||         }t          |||          }|D ]}|j        |j        k    r|j        |_        |j        dk    r|                    |           |                    |           t          t'          |          j                  S )Nr   r   Fr;   virtual_systemzNo package record found for !)r   zfile://r   zmissing key {} in channels: {})r   r   r   remover   KeyErrorpackage_typer   sysstderr
startswithr   r   r   rt   r   r   r)   rR   r   graph)prefix_recordsto_link	to_unlinkr   r_   to_link_recordsto_unlink_recordsfinal_precslookup_dictrj   rk   r   i_recr   jsn_skeysdirr   ipkgs                      r#   compute_final_precsr  a  sC    })+R&O^,,KK  5  	)))%
*;e)TT	
 	

  J J3' 	J 	JEx3&&u---%,,U3333   )-=== 	
   7777cjIIII  $ $3<<	"" 	: CC&{1~~66q9Ck!!=DDS+VVWWW3,T3>>& 	) 	)DyCH$$![
 ///s####k+..4555s   *B

B#!B#c                     t          ||| t          j                  \  }}t          ||||| d          }t	          |          }|S )N)r	  specs_to_addforce_reinstallr&   )r   unlink_precs
link_precsremove_specsupdate_specsneutered_specs)r   r
   r  r   r   )r  specs_to_remover[   r	  r  r  
pref_setupconda_transactions           r#   to_txn_precsr    sj      :!/	     L* !$!  J .j99r%   c                     t          |          }t          |                                ||||          }t          | |||          S r   )r   r  r   r  )	r  r  r[   r  r  r   r_   prefix_datar	  s	            r#   to_txnr    s[     V$$K%  "" K 	  r%   c                 h    t           j        s#t           j        sd|  d}t          |           d S d S d S )Nz:
To activate this environment, use

     $ mamba activate zD

To deactivate an active environment, use

     $ mamba deactivate
)r
   r   rs   r   )env_name_or_prefixmessages     r#   print_activater#    sV    =  (%7( ( ( 	 	g   r%   )r&   TNFFNNr'   )NTNFTr'   )Fr   )=
__future__r   r   r   r   rs   r   r   r   urllib.parser3   collectionsr   conda._vendor.boltons.setutilsr   conda.base.constantsr	   conda.base.contextr
   conda.common.serializer   conda.common.urlr   r   r   conda.core.indexr   r   conda.core.linkr   r   conda.core.prefix_datar   conda.core.solver   !conda.gateways.connection.sessionr   conda.models.channelr   r   conda.models.prefix_graphr   conda.models.recordsr   
libmambapyrE   r$   re   r   r   r   r   r   r   r   r   r   r  r  r  r#  r&   r%   r#   <module>r5     s   S R R R R R R R R R R R  				 



      # # # # # # 5 5 5 5 5 5 0 0 0 0 0 0 & & & & & & , , , , , , H H H H H H H H H H K K K K K K K K > > > > > > > > - - - - - - 7 7 7 7 7 7 ; ; ; ; ; ; 8 8 8 8 8 8 1 1 1 1 1 1 . . . . . .    9 9 9 L L L Lf @ @ @ @F" " " " "ZA ZA ZA ZAz  "	 	 	   4  0 0 0 CG76 76 76 76t  B    2    r%   