
    H.dA9                        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
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 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        | d|j        d          }i }|D ]J}t          j                    }|j        r|j        j        |_        |j        r|j        |_        |||j        <   K|                    |           |	                                 |S )N	installed )
apiReponameExtraPkgInfonoarchvalueurlrepo_urladd_extra_pkg_infoset_installed)poolinstalled_json_finstalled_pkg_recsrepoadditional_infosrecinfos          +lib/python3.11/site-packages/mamba/utils.pyload_conda_installedr.      s    8D+'7'<bAAD! * *!!: 	+**DK7 	$GDM%)"",---K    c                     t           j        s%t          d| j        j        | j        j                   |                    |                                           S )NzGetting )r
   quietprintchannelr   platformappendloaded)subdir_dataresult_containers     r-   load_channelr9   .   sK    = Rj+-2K4G4PQQQ"";#5#5#7#7888r/    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 ]z}|                    d          D ]a\  }}t'          j        |          }t          j        |||||          }|
                    ||||df           |	                    |           b{|	                    t          j                  }|st3          d          |
S )Nr    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_atr4   s      r-   fixup_channel_specz%get_index.<locals>.fixup_channel_specP   s    ::c??a<<yy~~HYhY,$$T(^445x!|~~&' 
  	9#: 2 22S8Dr/   Twith_credentials)r4   r"   r3   zError downloading repodata.)
isinstancestrr5   extendr
   channelsr   listr   fromkeysr   DownloadTargetListmapMultiPackageCache	pkgs_dirscreate_cache_dirfirst_writable_pathget_channelsplatform_urlsr   add_binstar_token
SubdirDataadddownloadMAMBA_DOWNLOAD_FAILFASTRuntimeError)channel_urlsprependr4   	use_local	use_cacheunknownprefixrepodata_fnall_channelsdlistindexrM   rY   r3   channel_platformr"   full_urlsdis_downloadeds     `                r-   	get_indexrr   4   s    (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 LL"237SST   IIbMMMM
	 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)rd   re   r4   rf   rj   rg   c                 .    g | ]\  }}|d          j         S )r3   )canonical_name).0_entrys      r-   
<listcomp>z!load_channels.<locals>.<listcomp>   s$    TTT(!UeI.=TTTr/   r   r@   r3   r4   r    z(Channel: {}, platform: {}, prio: {} : {}zCache path: )rr   r
   channel_priorityr	   STRICTFLEXIBLElensetru   r6   	verbosityjsonr2   format
cache_pathcreate_reposet_priorityr5   )r&   rS   reposhas_priorityre   r4   rf   rg   rj   rm   subprio_index
n_channelscurrent_channelchannel_priosubdirrx   prioritysubpriorityr)   s                      r-   load_channelsr   v   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/   r   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@      )r   LogLevelWARNINGINFODEBUGTRACE)r   s    r-   log_level_from_verbosityr      sI    A~~|##	a|  	a|!!|!!r/   c           	         t          j                    }t          j        |_        t          j        |_        t          j        r&dt          _        dt          _        | rdt          _        t          j        |_        |                    t          j                   t          j        |_        t          j	        |_	        t          j
        |_
        t          j        |_        t          j        |_        t          j        |_        t          j        |_        t          t          j                  |_        dt"          j        v r[	 t'          t"          j        d                   }||_        n3# t*          $ r& t"          j        d         }t+          d| d          w xY wddt-           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|_        nt          j        durt          j        |_        t          j        |_        t          j         |_         t          j!        |_!        t          j"        |_"        t          j#        |_#        t'          tI          t          j%                            |_&        t          j'        |_(        t          j)        |_*        t          j+        |_+        t          j,        |_,        t          j-        t\          j/        u rt           j.        j0        |_-        d S t          j-        t\          j1        u rt           j.        j2        |_-        d S t          j-        t\          j3        u rt           j.        j4        |_-        d S d S )NTFMAMBA_EXTRACT_THREADSzGInvalid conversion of env variable 'MAMBA_EXTRACT_THREADS' from value ''c                     |                      dd          d         }|r1|                    |          r|                     dd          d         S |S )N/r@   r   )rsplitendswith)r"   r   tmps      r-   get_base_urlz&init_api_context.<locals>.get_base_url   sT    jja  # 	-||D!! -zz#q))!,,
r/   rN   )r=   defaults)r   r=   c                 N    g | ]!} |                     d                     "S )TrN   )r"   )rv   xr   s     r-   ry   z$init_api_context.<locals>.<listcomp>  s>          78QUUDU1122     r/   z<false>N)5r   Contextr
   r   dry_run
always_yesr1   r   set_verbosityofflinelocal_repodata_ttluse_index_cacherS   r   r4   dictproxy_serversosenvironintextract_threads
ValueErrorrQ   channel_aliasr"   custom_channelsru   custom_multichannelsr5   default_channels
ssl_verifytarget_prefixroot_prefixconda_prefixrY   	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_bz2rz   r	   r{   kStrictr|   	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<GLoGO| !!! 	! GL)G'+,,,MGMoGO!(!;G%5G +G'G~G !677G"*,,	bj)@ABBK&1G## 	 	 	
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""&		4	'	'$/#1G!-G"/G)G)G#&uW-P'Q'Q#R#RG !4G#9G+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fileFrN   )	schemeCondaChannel
from_valueplatform_urlauthlocationtokenr   package_filename)r3   r4   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"   fnr3   r4   r   r:   )r   loadsr   r   getr   )rx   pkg
jsn_stringchannel_urlr,   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:   )rv   r+   s     r-   
<dictcomp>z*get_installed_packages.<locals>.<dictcomp>?  s'       S  r/   F)pip_interop_enableddepends
constrainsbuild)	r   iter_recordsr   rT   dist_fields_dumpr   r   r   r   )ri   show_channel_urlsresultr   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   r(   tempfileNamedTemporaryFilewriter   flush)ri   outputr'   s      r-   get_installed_jsonfiler   X  sk    !7RV!W!W!W23uEEE9V,,---///r/   c                 h   |g }g g }}t          |           }i }|D ]+\  }	}
|
||
d                             |
d         d          <   ,|D ]n\  }	}|D ]W}|j        |k    rJ	 |                    |           |                    |           n# t
          $ r |j        dk    rY P w xY w nXt          d           o|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 )
Nr3   r4   FrN   virtual_systemzNo package record found!zfile://r   zmissing key {} in channels: {})r   r   r   remover5   KeyErrorpackage_typer2   
startswithr   r   r   r   r   r   r    r`   r   graph)prefix_recordsto_link	to_unlinkr(   rm   to_link_recordsto_unlink_recordsfinal_precslookup_dictrw   rx   r   i_recr   jsn_skeysdirr+   ipkgs                      r-   compute_final_precsr  a  s-    })+R&O^,,KK  5  	)))%
*;e)TT	
 	

  . .3' 	. 	.Ex3&&u---%,,U3333   )-=== 	
   ,---  $ $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_removeri   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  ri   r  r  r(   rm   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
   r1   r   r2   )env_name_or_prefixmessages     r-   print_activater#    sV    =  (%7( ( ( 	 	g   r/   )r:   TNFFNNr;   )NTNFTr;   )Fr   )=
__future__r   r   r   r   r   r   r   urllib.parserF   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   
libmambapyr   r.   r9   rr   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 @ @ @ @F" " " " "WA WA WA WAt  "	 	 	   4  0 0 0 CG76 76 76 76t  B    2    r/   