
    \Zi                    h   S r SSKJr  SSKJrJr  SSKrSSKrSSKrSSK	r	SSK
Jr  SSK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  SSKJr  SSKJrJr  SSKJrJrJ r   SSK!J"r"  SSK#J$r$  SSK%J&r&J'r'J(r(  SSK)J*r*  SSK+J,r,J-r-  SSK.J/r/J0r0J1r1J2r2  SSK3J4r4J5r5J6r6J7r7J8r8  SSK9J:r:  SSK;J<r<J=r=J>r>J?r?J@r@JArAJBrBJCrCJDrDJErE  SSKFJGrG  SSKHJIrI  SSKJJKrKJLrLJMrM  SSKNJOrOJPrP  SSKQJRrR  SSKSJTrT  SSKUJVrV  SSKWJXrXJYrY  SS KZJ[r[  SS!K\J]r]J^r^J_r_  S"S#K`Jara  S"S$KbJcrcJdrdJereJfrfJgrgJhrhJiriJjrjJkrkJlrlJmrmJnrn  S"S%KoJprp  \(       a  SS&KqJrrrJsrs  SS'KtJuru  SS(KvJwrw  S"S)KbJxrx  \" \y5      rzS* r{S+ r|S9S, jr} " S- S.\5      r~ " S/ S0\5      r\ " S1 S25      5       r " S3 S4\5      r " S5 S65      r   S:         S;S7 jjrS8 rg)<zIPackage installation implemented as a series of link/unlink transactions.    )annotations)	dataclassfieldsN)defaultdict)chain)	getLogger)basenamedirnameisdirjoin)Pathindent)format_exception_only)TYPE_CHECKING
NamedTuple   )
CondaErrorCondaMultiErrorconda_signal_handler)first)dals)DEFAULTS_CHANNEL_NAMEPREFIX_MAGIC_FILESafetyChecks)context)ensure_text_typeon_win)DummyExecutorThreadLimitedThreadPoolExecutordashlisttime_recorder)BIN_DIRECTORYexplode_directoriesget_all_directoriesget_major_minor_version#get_python_site_packages_short_path)signal_handler)
CondaSystemExitDisallowedPackageErrorEnvironmentNotWritableErrorKnownPackageClobberError	LinkErrorRemoveErrorSharedLinkPathClobberErrorSpecNotFoundInPackageCacheUnknownPackageClobberErrormaybe_raise)mkdir_p)rm_rf)isfilelexistsread_package_info)hardlink_supportedsoftlink_supported)subprocess_call)LinkType)VersionOrder)
confirm_ynget_spinner	MatchSpec)get_comspechuman_byteswrap_subprocess_call   )PackageCacheData)AggregateCompileMultiPycActionCompileMultiPycActionCreatePrefixRecordActionCreatePythonEntryPointActionLinkPathActionMakeMenuAction!RegisterEnvironmentLocationActionRemoveLinkedPackageRecordActionRemoveMenuActionUnlinkPathAction#UnregisterEnvironmentLocationActionUpdateHistoryAction)
PrefixData)	GeneratorIterable)PackageInfo)PackageRecord)Actionc                z   [        U SS5      n[        R                  (       a  [        R                  $ [        R
                  (       a  [        R                  $ [        X!5      (       a  [        R                  $ [        R                  (       a   [        X!5      (       a  [        R                  $ [        R                  $ )Ninfoz
index.json)r   r   always_copyr;   copyalways_softlinksoftlinkr8   hardlinkallow_softlinksr9   )extracted_package_dirtarget_prefixsource_test_files      /lib/python3.13/site-packages/conda/core/link.pydetermine_link_typerd   ]   s}    16<H}}   *::   #56F#V#V   ==    c                  ^ ^^ [        UUU 4S jTR                   5       5      n [        TR                  5      nSR                  SUS-   5      n[        T TTU5      4n[        S U 5       5      n[        [        U5      SS9n[        UUU 4S	 jU 5       5      n	/ UQU	QUQ7$ ! [         a\     [        TR
                  R                  5      n N! [         a,    TR                   STR                   STR                   3n  Nf = ff = f)
Nc              3  @   >#    U  H  n[        TTTU5      v   M     g 7fN)rO   ).0trgtprefix_recordra   transaction_contexts     rc   	<genexpr>&make_unlink_actions.<locals>.<genexpr>l   s'       'D 	,m]DQQ's   -z{}/{}
conda-metaz.jsonc              3  8   #    U  H  oR                   v   M     g 7frh   )target_short_pathri   axns     rc   rm   rn      s      VBU3!6!6BU   T)reversec              3  ^   >#    U  H"  n[        TTTU[        R                  5      v   M$     g 7frh   )rO   r;   	directory)ri   drk   ra   rl   s     rc   rm   rn      s7      % !A 	q(BTBT	
 	
 !s   *-)tuplefilesr	   r`   AttributeErrorlinksourcenameversionbuildformatrM   r%   sortedr$   )
rl   ra   rk   unlink_path_actionsr`   meta_short_pathremove_conda_meta_actions_all_dall_directoriesdirectory_remove_actionss
   ```       rc   make_unlink_actionsr   j   s7     !''  
	 ()L)L M nn\3H73RSO'	
! ! VBU VVF08$GO$ % !	%  		! 
#	 ;  	$,]-?-?-F-F$G! 	 !%%&a(=(='>a@S@S?TU "	s)   B$ $
D
/C2DD
DD
c                  ^ [        [        U 5      5       Vs/ s H  n/ PM     nnU=(       d    S HE  m[        T5      m[        U4S j[	        U 5       5       S5      nUc  M2  X4   R                  T5        MG     [        U5      $ s  snf )z1
Find which specs belong to each package to link
 c              3  x   >#    U  H/  u  pUR                   R                  TR                  :X  d  M+  Uv   M1     g 7frh   repodata_recordr   )ri   qpkg_infospecs      rc   rm   'match_specs_to_dists.<locals>.<genexpr>   s4      #CKA++00DII= #Cs   *:	:N)rangelenr@   next	enumerateappendrz   )packages_info_to_linkspecs_matched_specsidxr   s        @rc   match_specs_to_distsr      s     "'s+@'A!BC!BAR!BMC#,-B#C
 
 ?%%d+   Ds   Bc                  R    \ rS rSr% S\S'   S\S'   S\S'   S\S'   S\S	'   S\S
'   Srg)PrefixSetup   strra   ztuple[PackageRecord, ...]unlink_precs
link_precsztuple[MatchSpec, ...]remove_specsupdate_specsneutered_specsr   N__name__
__module____qualname____firstlineno____annotations____static_attributes__r   re   rc   r   r      s&    ++))''''))re   r   c                  >    \ rS rSr% S\S'   S\S'   S\S'   S\S'   S	rg
)ActionGroup   r   typezPackageInfo | Nonepkg_datazIterable[Action]actionsra   r   Nr   r   re   rc   r   r      s    
I  re   r   c                      \ rS rSr% SrS\S'   S\S'   S\S'   S\S'   S\S'   S\S	'   S\S
'   S\S'   S\S'   SrS\S'   SrS\S'   SS jrSr	g)PrefixActionGroup   ad  A container for groups of actions carried out during an UnlinkLinkTransaction.

:param remove_menu_action_groups: Actions which remove menu items
:param unlink_action_groups: Actions which unlink files
:param unregister_action_groups: Actions which unregister environment locations
:param link_action_groups: Actions which link files
:param register_action_groups: Actions which register environment locations
:param compile_action_groups: Actions which compile pyc files
:param make_menu_action_groups: Actions which create menu items
:param entry_point_action_groups: Actions which create python entry points
:param prefix_record_groups: Actions which create package json files in ``conda-meta/``
:param initial_action_groups: User-defined actions which run before all other actions
:param final_action_groups: User-defined actions which run after all other actions
zIterable[ActionGroup]remove_menu_action_groupsunlink_action_groupsunregister_action_groupslink_action_groupsregister_action_groupscompile_action_groupsmake_menu_action_groupsentry_point_action_groupsprefix_record_groupsr   initial_action_groupsfinal_action_groupsc              #  ^   #    [        U 5       H  n[        XR                  5      v   M     g 7frh   )r   getattrr   )selffields     rc   __iter__PrefixActionGroup.__iter__   s"     D\E$

++ "   +-N)returnz,Generator[Iterable[ActionGroup], None, None])
r   r   r   r   __doc__r   r   r   r   r   r   re   rc   r   r      s\      54//33--11002244//350513.3,re   r   c                  z    \ rS rSr% S\S'   S\S'   S\S'   S\S'   S\S	'   S\S
'   S\S'   S\S'   S\S'   S\S'   Srg)ChangeReport   r   prefixzIterable[MatchSpec]specs_to_removespecs_to_addzIterable[PackageRecord]removed_precs	new_precsupdated_precsdowngraded_precssuperseded_precsfetch_precsrevised_precsr   Nr   r   re   rc   r   r      s=    K((%%**&&**----((**re   r   c                  N   \ rS rSrS r\S 5       rS rS r\	" S5      S 5       r
S rS	 rS
 r\S 5       r\S 5       r\S 5       r\S 5       rS rS r\S 5       r\S 5       r\SS j5       r\  SS j5       r\S 5       r\S 5       r\S 5       rS rS rS r\S 5       r Sr!g) UnlinkLinkTransaction   c           
        U Vs0 s H  o"R                   U_M     snU l        0 U l        U R                  R                  5        He  n[        R                  SUR                   SR                  S UR                   5       5      SR                  S UR                   5       5      5        Mg     S U l	        SU l
        SU l        [        R                  (       d  [        R                  S:X  a
  [        5       O[!        [        R                  5      U l        [        R                  (       d  [        R$                  S:X  a  [        5       U l        g [!        [        R$                  5      U l        g s  snf )Nzhinitializing UnlinkLinkTransaction with
  target_prefix: %s
  unlink_precs:
    %s
  link_precs:
    %s
z
    c              3  @   #    U  H  oR                  5       v   M     g 7frh   dist_strri   precs     rc   rm   1UnlinkLinkTransaction.__init__.<locals>.<genexpr>   s     K:J$mmoo:J   c              3  @   #    U  H  oR                  5       v   M     g 7frh   r   r   s     rc   rm   r      s     I.$mmoo.r   FrD   )ra   prefix_setupsprefix_action_groupsvalueslogrY   r   r   r   _pfe	_prepared	_verifiedr   debugverify_threadsr   r    verify_executorexecute_threadsexecute_executor)r   setupsstps      rc   __init__UnlinkLinkTransaction.__init__   s   @FG//4G$&!%%,,.CHH !!K#:J:JKKI#..II
 / 	 }} 6 6! ; O01G1GH 	 }} 7 71 < O 	 11H1HI 	5 Hs   E+c                    [        S U R                  R                  5        5       5      (       + =(       a*    [        S U R                  R                  5        5       5      $ )Nc              3  ^   #    U  H#  oR                   =(       d    UR                  v   M%     g 7frh   )r   r   ri   r   s     rc   rm   6UnlinkLinkTransaction.nothing_to_do.<locals>.<genexpr>  s$      
<WS//<Wr   c              3  h   #    U  H(  n[        UR                  5      R                  5       v   M*     g 7frh   )rR   ra   is_environmentr   s     rc   rm   r     s.      
2 s(()88::2   02)anyr   r   allr   s    rc   nothing_to_do#UnlinkLinkTransaction.nothing_to_do  sY     
<@<N<N<U<U<W
 
 
 
 
))002
 
	
re   c                    U R                   c  U R                  5         U R                   R                  (       d  U R                   R                  5         g g rh   )r   _get_pfe	_executedexecuter   s    rc   download_and_extract*UnlinkLinkTransaction.download_and_extract  s7    99MMOyy""II #re   c                \   U R                   c  U R                  5         U R                   R                  (       d  U R                   R                  5         U R                  (       a  g 0 U l        [        S5         U R                  R                  5        Hw  nU R                  U R
                  UR                  UR                  UR                  UR                  UR                  UR                  5      U R                   UR                  '   My     S S S 5        SU l        g ! , (       d  f       N= f)NzPreparing transactionT)r   r  r  r  r   rl   r>   r   r   _preparera   r   r   r   r   r   r   )r   r   s     rc   prepareUnlinkLinkTransaction.prepare  s    99MMOyy""II>>#% 01))002?C}},,%%$$NN$$$$&&@))#*;*;< 3 2  21s   7BD
D+unlink_link_prepare_and_verifyc                   U R                   (       d  U R                  5         [        R                  (       a  [	        S5      e[        R
                  [        R                  :X  a  SU l        g [        S5         U R                  U R                  U R                  5      nU(       a/   [        [        U5      [        5        ["        R%                  U5        S S S 5         U R'                  [(        R*                  " S U R                  R-                  5        5       6 5        SU l        g !   [        U R                   S   5        e = f! , (       d  f       Nv= f! [.         a    [        U R                   S   5        e f = f)Nz.Cannot execute .verify() with dry-run enabled.TzVerifying transactiontemp_dirc              3  :   #    U  H  nUR                   v   M     g 7frh   )r   )ri   acts     rc   rm   /UnlinkLinkTransaction.verify.<locals>.<genexpr>M  s      #EC ..#Es   )r   r	  r   dry_runRuntimeErrorsafety_checksr   disabledr   r>   _verifyr   r   r2   r   r4   rl   r   rY   _verify_pre_link_message	itertoolsr   r   r)   )r   
exceptionss     rc   verifyUnlinkLinkTransaction.verify5  s"   ~~LLN??OPP  L$9$99!DN01d&8&8$:S:STJ
 ;WE $ 2	))#'#<#<#C#C#E !$22:>? 21$  	$**:67	s1   7.E&D&?EAE &EE
E$E9c                   SnU H  n[        UR                  R                  5      S-  S-  n[        S UR	                  S5       5       5      nUR                  5       (       d  M`  U(       d  Mi  [        S5        SnU HI  n[        SUR                   S	35        [        [        UR                  5       S
5      5        [        5         MK     M     U(       a  [        5         g g )NFrY   prelink_messagesc              3  R   #    U  H  oR                  5       (       d  M  Uv   M     g 7frh   )is_file)ri   items     rc   rm   AUnlinkLinkTransaction._verify_pre_link_message.<locals>.<genexpr>^  s      "!=!=s   '	'z**/*z0

The following PRELINK MESSAGES are INCLUDED:

Tz  File z:
  )r   r   r`   listglobis_dirprintr   r   	read_textr=   )r   all_link_groupsflag_pre_linkr  prelink_msg_dirall_msg_subdirmsg_files          rc   r  .UnlinkLinkTransaction._verify_pre_link_messageX  s    "CS\\7786ADVV  " "!0!5!5f!=" N %%''NNLM $ .HGHMM?#67&!3!3!5t<=G !/ # L re   c                z   U R                   (       d  U R                  5         [        R                  (       a  [	        S5      e U R                  [        [        [        [        U R                  R                  5       6 6 6 5      5        [        U R                  S   5        g ! [        U R                  S   5        f = f)Nz+Cannot run .execute() with dry-run enabled.r  )r   r  r   r  r  _executerz   r   zipr   r   r4   rl   r   s    rc   r  UnlinkLinkTransaction.executel  s    ~~KKM??LMM	8 MMeUC)B)B)I)I)K$LMNO $**:67E$**:67s   AB   B:c                &   SSK Jn  U R                  b  U R                  nU$ U R                  (       d  U" S5      =U l        nU$ [	        [
        R                  " S U R                  R                  5        5       5      5      nU" U5      =U l        nU$ )NrD   )ProgressiveFetchExtractr   c              3  8   #    U  H  oR                   v   M     g 7frh   )r   r   s     rc   rm   1UnlinkLinkTransaction._get_pfe.<locals>.<genexpr>  s      $.IsNN.Iru   )package_cache_datar2  r   r   setr   from_iterabler   )r   r2  pfer   s       rc   r  UnlinkLinkTransaction._get_pfe|  s    ?99 ))C 
 ##5b99DI 
 ## $.2.@.@.G.G.I$ J
 6jAADI
re   c                l  ^^( [        T5      (       d   [        T5        [        T5      m(U(4S jU 5       n	[        S U	 5       5      n	[        S U 5       5      n
[        U
5      (       d  [        S5      e[        S [        XJ5       5       5      n[        U4S jU 5       5      nU R                  TU	U5      u  pXS	'   XS
'   [        TS5      US'   / n/ nU	 H^  nUR                  [        SU[!        UTU5      T5      5        UR                  [        SU["        R$                  " UUT5      T5      5        M`     U(       a  ['        UT5      4n[        SS UT5      /nOSn[)        X5      n/ n/ n/ n/ n/ n[        XU5       GH3  u  nnn[        SUU R+                  UUTUU5      T5      nUR                  U5        [        SUU R-                  UUTUUU5      T5      nUR                  U5        [        SUU R/                  UUTUUU5      T5      nUR                  U5        [        SU[0        R$                  " UUTU5      T5      n UR                  U 5        / UR2                  QUR2                  QUR2                  QU R2                  Q7n!UR5                  [6        R$                  " UUTUUU!5      5        GM6     [        SS UT5      /n"[8        R$                  " UTUUU5      n#[;        UT5      4n$[        SS U$U#-   T5      /n%[<        R>                  RA                  UTUUUUU5      n&[<        R>                  RC                  UTUUUUU5      n'[E        UUUUU%UUUU"[        SS U&T5      /[        SS U'T5      /S9$ ! [         a2  n[        R	                  [        U5      5        [        ST S35      eS nAff = f)Nz#Unable to create prefix directory 'z.'.
Check that you have sufficient permissions.c              3  Z   >#    U  H   nTR                  UR                  5      v   M"     g 7frh   )getr   )ri   r   prefix_datas     rc   rm   1UnlinkLinkTransaction._prepare.<locals>.<genexpr>  s!      U!;!;s   (+c              3  6   #    U  H  o(       d  M  Uv   M     g 7frh   r   )ri   lpds     rc   rm   r>    s     %R5Jcccc5Js   
	c              3  N   #    U  H  n[         R                  " U5      v   M     g 7frh   )rE   get_entry_to_linkr   s     rc   rm   r>    s"      '
AK..t44   #%z&Some records cannot be found in cache.c              3  <   #    U  H  u  p[        X5      v   M     g 7frh   )r7   )ri   r   pcrecs      rc   rm   r>    s!      &
F d**Fs   c              3  P   >#    U  H  n[        UR                  T5      v   M     g 7frh   )rd   r`   )ri   r   ra   s     rc   rm   r>    s(      
1   > >NN1s   #&target_python_versiontarget_site_packages_short_pathz	.condatmpr  unlinkremove_menus
unregisterr   r}   entry_pointcompile
make_menusrecordregisterinitialfinal)r   r   )#r   r3   OSErrorr   r   reprr   rR   rz   r   r0   r/  _get_python_infor   r   r   r   rN   create_actionsrP   r   _make_link_actions_make_entry_point_actions_make_compile_actionsrK   r   extendrH   rQ   rL   r   plugin_managerget_pre_transaction_actionsget_post_transaction_actionsr   ))clsrl   ra   r   r   r   r   r   eprefix_recs_to_unlinkpkg_cache_recs_to_linkr   
link_typespython_versionpython_site_packagesr   r   
prefix_recaxnsr   matchspecs_for_link_distsr   r   r   r   record_axnsr   ltr   link_agentry_point_ag
compile_agmake_menu_agall_link_path_actionsr   history_actionsregister_actionsr   pre_transaction_actionspost_transaction_actionsr=  s)     `                                     @rc   r  UnlinkLinkTransaction._prepare  s    ]##& !/ U U !&%R5J%R R!& '
AK'
 "
 )**,-UVV % &
":F&
 !

  
1
 

 03/C/C!!0
,
 8F34AU=>*.}k*JJ'$&!!/J '''(;]JW!	 &,,"$33+Z "	 0*  34GWD L$mD($ (*$$8!%
!  $&! ""$#&!/H$
Hb% "&&'="e G %%g.(--'!& N &,,^<$))'!& J "((4&--'=" L $**<8%%##%  ''% %%	%! (77'!)	w$
L !,HdK WX .<<
 ..A=Q
 D"2_"Dm"
 #*"8"8"T"T#
 $+#9#9#V#V$
  !% $"!#% It-DmT# GT+C]S!
 	
  		$q'" 9- I  s   M7 7
N3-N..N3c                D   [         R                  " S U  5       5      n/ nU Hz  nUR                  (       a  M  UR                  5       nU(       d  M/  SR	                  [        [        U5      U5      5      n[        R                  SX55        UR                  U5        M|     U$ )Nc              3  N   #    U  H  nU  H  nUR                   v   M     M     g 7frh   )r   )ri   action_groupsaxngroups      rc   rm   AUnlinkLinkTransaction._verify_individual_level.<locals>.<genexpr>n  s*      *
!4) ) !4rC   z"Verification error in action %s
%s)
r   r7  verifiedr  r   r   r   r   r   r   )prefix_action_groupall_actionserror_resultsrt   error_resultformatted_errors         rc   _verify_individual_level.UnlinkLinkTransaction._verify_individual_levell  s    )) *
!4*
 
 C||::<L|"$'')$|*<lK# 		?V$$\2  re   c                   ^ U u  pUR                   nUR                  nS nU VVs1 s H@  nUR                    H,  n[        U[        5      (       d  M  U" UR
                  5      iM.     MB     nnnS U 5       n	/ n
[        [        5      nU	 GH  nUR                   GHw  n[        U[        5      (       a  UR                  nO>[        US5      (       a  UR                  [        R                  :w  a  UR
                  4OSnU GH  mU" T5      mUT   R                  U5        TU;  d  M(  [!        [#        UT5      5      (       d  MD  [%        S ['        U5      R)                  5        5       U4S jS9nU(       aS  U
R                  [+        TUR,                  R.                  R1                  5       UR1                  5       [2        5      5        M  U
R                  [5        TUR,                  R.                  R1                  5       [2        5      5        GM     GMz     GM     UR7                  5        HG  u  mn[9        U5      S:  d  M  U
R                  [;        T[=        S	 U 5       5      [2        5      5        MI     U
$ s  snnf )
Nc                <    [         (       a  U R                  5       $ U $ rh   )r   lower)ps    rc   <lambda><UnlinkLinkTransaction._verify_prefix_level.<locals>.<lambda>  s    ff!;!!;re   c              3  |   #    U  H2  nUR                     H  n[        U[        5      (       d  M  Uv   M      M4     g 7frh   )r   
isinstancerH   )ri   grprt   s      rc   rm   =UnlinkLinkTransaction._verify_prefix_level.<locals>.<genexpr>  s5      
+{{#78 C" +s   )<<	link_typer   c              3  &   #    U  H  nUv   M	     g 7frh   r   )ri   re  s     rc   rm   r    s      31J !+31s   c                "   > TU R                   ;   $ rh   )r{   )re  paths    rc   r  r    s    4:;K;K3Kre   keyrD   c              3  h   #    U  H(  oR                   R                  R                  5       v   M*     g 7frh   )package_infor   r   rs   s     rc   rm   r    s*      SWC,,<<EEGGSWr   )r   r   r   r  rO   rr   r   r"  rn  rG   target_short_pathshasattrr  r;   rx   r   r6   r   r   rR   iter_recordsr,   r  r   r   r   r1   itemsr   r/   rz   )+target_prefix_AND_prefix_action_group_tuplera   r{  r   r   lower_on_winr  rt   unlink_pathscreate_lpr_actionsr}  link_paths_dictlink_path_actionr  colliding_prefix_recrf  r  s                   @rc   _verify_prefix_level*UnlinkLinkTransaction._verify_prefix_level  s_    .Y*2GG2GG; ,
+{{#/0 0L../" 0+ 	 

+
 %d+%C$'$=$= .0EFF)9)L)L&  ''7EE+559K9KK *;;=  	 ' /D'-D#D)005</GDPT<U4V4V/42<$13"".,.31 !L0, 0)00 8$($'$4$4$D$D$M$M$O$8$A$A$C$+	!" *00 :$($'$4$4$D$D$M$M$O$+!"1 / %> &X *//1JD$4y1}$$. SW    2 S
s   )I:I:c              #  <  ^^#    [        [        R                  SS5      [        R                  4m[        U4S jU R	                  5        5       5      n[        S U 5       5      n[        S U 5       S5      u  p4U(       a  Uc  [        S5      v   Uca  [        R                  n[        U5      n[        S UR                  5        5       5      nS	nS	n	[        S
 UR                  5        5       S	5      n
OUR                  n[        U5      n[        S UR                  5        5       5      n[        S UR                  =(       d    S	 5       5      n[        S UR                  =(       d    S	 5       5      n	UR                  n
XP;   aB  U
 H<  n[        U5      R                   nX;  d  M  X;  d  X;   d  M+  [        SU S35      v   M>     [        S [        R"                   5       5      nU R	                  5        H?  nUR                   H,  m[        U4S jU 5       5      (       d  M  [%        T5      v   M.     MA     U R	                  5        H  n[        UR                  [&        5      n[)        U5      nS n [+        [-        U5      5      n[/        US5      R1                  5         U(       d  [3        [-        U5      5        Mv  U(       d  [3        U5        M  M     g ! [4         a4    USL a  [3        [-        U5      5        [7        UR                  5      v    M  f = f7f)Nenvs_conda_c              3  L   >#    U  H  nUR                   T;   d  M  Uv   M     g 7frh   )ra   )ri   setupconda_prefixess     rc   rm   BUnlinkLinkTransaction._verify_transaction_level.<locals>.<genexpr>  s(      
/""n4 E/   $	$c              3  h   #    U  H(  nUR                     H  nUR                  S :H  v   M     M*     g7fcondaN)r   r   ri   r  r   s      rc   rm   r    s3      
%** II * !%r   c              3  t   #    U  H.  nUR                     H  nUR                  S :X  d  M  X!4v   M     M0     g7fr  )r   r   r  s      rc   rm   r    s:      )E!,,D99' , )s   $88NNzTThis operation will remove conda without replacing it with
another version of conda.c              3  8   #    U  H  oR                   v   M     g 7frh   r   ri   recs     rc   rm   r         *Q?P88?Pru   r   c              3  ^   #    U  H#  nUR                   S :X  d  M  UR                  v   M%     g7fr  )r   depends)ri   rO  s     rc   rm   r    s)      "3{{g- #FNN"3s   --c              3  8   #    U  H  oR                   v   M     g 7frh   r  r  s     rc   rm   r     r  ru   c              3  8   #    U  H  oR                   v   M     g 7frh   r  r   s     rc   rm   r  !  s      )&Hd		&Hru   c              3  8   #    U  H  oR                   v   M     g 7frh   r  r   s     rc   rm   r  $  s      +&Jd		&Jru   'zT' is a dependency of conda and cannot be removed from
conda's operating environment.c              3  8   #    U  H  n[        U5      v   M     g 7frh   r?   ri   ss     rc   rm   r  6  s     M1LA9Q<<1Lru   c              3  D   >#    U  H  oR                  T5      v   M     g 7frh   )match)ri   ry   r   s     rc   rm   r  9  s     9jwwt}}js    aF)r   r   root_prefixrz   r   r   r   r.   conda_prefixrR   r  ra   r   r   r  r@   r   disallowed_packagesr*   r   r6   r3   r
   opencloser4   rS  r+   )r   conda_setupsconda_unlinked
conda_precconda_final_setupconda_final_prefixpdpkg_names_already_lnkdpkg_names_being_lnkdpkg_names_being_unlnkdconda_linked_dependsconda_dependencydep_name
disallowedprefix_setup	test_pathtest_path_existeddir_existedr  r   s                     @@rc   _verify_transaction_level/UnlinkLinkTransaction._verify_transaction_level  s     $$fi8
  
&--/
 
  
%
 
 )-) )
%
 /7 , 
 $!(!5!5./B%**Qr?P*Q%Q"#% %'"#'"$//"3
 $  "3!@!@./B%**Qr?P*Q%Q"#( )&7&B&B&Hb&H) $  &+ +&7&D&D&J&J+ &" $.#5#5 .$8 $%56;;7:9%H: &9 9  %9 M1L1LMM
)002L$//9j999066 0 3 *002L\779JKI '	 2K%%gi&89Y$**, #'),-*)$ + 3  N%''),-1,2L2LMMNs>   F L(L4A/L'AL7.K%6L:LLLLc                   [        S [        R                  U5       5       5      nU(       a  U$ / nU R                  R	                  [        R
                  UR                  5       5       H  nU(       d  M  UR                  U5        M     U R                  R	                  [        R                  UR                  5       5       H  nU(       d  M  UR                  U5        M     U$ )Nc              3  8   #    U  H  nU(       d  M  Uv   M     g 7frh   r   )ri   excs     rc   rm   0UnlinkLinkTransaction._verify.<locals>.<genexpr>O  s      '
U CUs   	)
rz   r   r  r   mapr  r   rZ  r  r  )r   r   r   transaction_exceptionsr  r  s         rc   r  UnlinkLinkTransaction._verifyN  s    !& '
,FF}U'
 "

 "))
''++!:: '')
C s!!#&
 ''++!668L8R8R8T
C s!!#&	

 re   c                F  ^ [        S U 5       5      n[        S U 5       5      n[        S U 5       5      n[        S U 5       5      n[        S U 5       5      n[        S U 5       5      n[        S U 5       5      n[        S U 5       5      n	[        S	 U 5       5      n
[        [        5         [	        S
5         / n[        S5         U R                  R                  [        R                  U	5       H  nU(       d  M  UR                  U5        M     USS4USS44 GHq  u  nmnU(       d  U H  n[        R                  U5        M     U HT  nUR                  S:H  nUR                  nUR                  n[        U(       a  UOUR                  UU(       a  SOSU5        MV     U R                  R                  [        R                  U5       H  nU(       d  M  UR                  U5        M     U(       a  U H  n[        R                  U5        M     U H2  n[        R!                  U5      nU(       d  M!  UR                  U5        M4     / nU(       ap  U VVs/ s H  nUR"                    H  nUPM     M     nnnU(       a0  [%        U6 nUR                  ['        SS U/UR                  5      5        UR)                  U5        U R                  R                  [        R                  U5       H  nU(       d  M  UR                  U5        M     [        U4S jU 5       5      nU H2  n[        R                  U5      nU(       d  M!  UR                  U5        M4     U(       a    O-U(       d  GMS  U H  n[        R                  U5        M     GMt     U R                  R                  [        R                  U
5       H  nU(       d  M  UR                  U5        M     S S S 5        U(       Ga&  US   nUR*                  S   nS UR                  S:H  nnUR                  nU(       a<  [,        R/                  SR1                  U(       a  SOSUR3                  5       5      5        / n[4        R6                  (       aW  [        S5         [9        [        U5      5      nU H)  n[        R;                  U5      nUR)                  U5        M+     S S S 5        [=        / [?        U[<        5      (       a  UR*                  S   UR*                  SS  4OU4QUQ75      eU H&  nUR"                   H  nURA                  5         M     M(      S S S 5        S S S 5        g s  snnf ! , (       d  f       GN= f! , (       d  f       N= f! , (       d  f       N@= f! , (       d  f       g = f)Nc              3  H   #    U  H  oR                   S :X  d  M  Uv   M     g7f)rI  Nr   ri   groups     rc   rm   1UnlinkLinkTransaction._execute.<locals>.<genexpr>g  s      
0eJJ(4JEE0   "	"c              3  H   #    U  H  oR                   S :X  d  M  Uv   M     g7f)r}   Nr  r  s     rc   rm   r  k  s      
0eJJ&4HEE0r  c              3  H   #    U  H  oR                   S :X  d  M  Uv   M     g7f)rM  Nr  r  s     rc   rm   r  n  s      
0eJJ)4KEE0r  c              3  H   #    U  H  oR                   S :X  d  M  Uv   M     g7f)rL  Nr  r  s     rc   rm   r  q  s      #
0eJJ-4OEE0r  c              3  H   #    U  H  oR                   S :X  d  M  Uv   M     g7f)rO  Nr  r  s     rc   rm   r  t  s      
0eJJ(4JEE0r  c              3  H   #    U  H  oR                   S :X  d  M  Uv   M     g7f)rN  Nr  r  s     rc   rm   r  w  s      !
0eJJ,4NEE0r  c              3  H   #    U  H  oR                   S :X  d  M  Uv   M     g7f)rJ  Nr  r  s     rc   rm   r  z  s      #
0eJJ.4PEE0r  c              3  H   #    U  H  oR                   S :X  d  M  Uv   M     g7f)rQ  Nr  r  s     rc   rm   r  }  s      '
0eJJ)4KEE0r  c              3  H   #    U  H  oR                   S :X  d  M  Uv   M     g7f)rR  Nr  r  s     rc   rm   r    s      (
0eJJ'4IEE0r  unlink_link_executezExecuting transactionrK  FrP  TrI  z
pre-unlinkpre-linkrM  c              3  L   >#    U  H  nUR                   T:X  d  M  Uv   M     g 7frh   r  )ri   r  register_groups     rc   rm   r    s&      -%6E ::7 %6r  r   rD   z(An error occurred while {} package '{}'.uninstalling
installingzRolling back transactionr   )!rz   r"  r(   r   r"   r>   r   r  r   _execute_actionsr   r   ra   r   
run_scriptr`   _execute_post_link_actionsr   rF   r   rZ  errorsr   errorr   r   r   rollback_enabledreversed_reverse_actionsr   r  cleanup)r   all_action_groupsunlink_actionslink_actionscompile_actionsentry_point_actionsrecord_actionsmake_menu_actionsremove_menu_actionsrq  rr  r  r  r  install_siderw  	is_unlinkra   r   composite_agagrt   individual_actions	compositerp  r_  actionrollback_excsreverse_actionsexcsr  s                                 @rc   r.  UnlinkLinkTransaction._executee  sJ    
0
 
  
0
 
  
0
 
 # #
0#
 
  
0
 
 ! !
0!
 
 # #
0#
 
 #' '
0'
 #
 $( (
0(
 $
  01=AV3WJ450044)::+C s"))#. $\59!:t4<7E>< ( )<H1BB8L )< %*$,MMX$=	(0(>(>'00"-6MD<V<V ,5L:)		 %*  $4488->>  3&--c2	  $(;H1BB8L )< %*3NNxX3&--c2 %* $&L#
 +:.*9BRZZcCZC/ + . .(F!3)I )// +$-$(%.K$-$;$;	!" %++N;#4488->>  3&--c2	  (- -%6- ($
 %53DDXN3&--c2 %5 "#| ):H1BB8L ):k<r  0044)::,C s"))#.G 6T qM88A;%)8==H+D	((IIBII.7N\ MMO !#++$%?@*259J3K*L(7H#8#I#I(#SD)006 )8 A &  *!_== XXa[!((12,7"#	 '	 	 !2H"*"2"2( #3 !2a 4X11v.s 65z A@ 4X3W11s   3V?V3UCU AU=#U  U A=UA	U#U6AUU$B&V
AU0A8VVU
U-(V0
U>:V
V	V
V c                \   U R                   nU R                  n[        US5      n[        U5      (       d  [	        U5         U R
                  S:X  a&  [        R                  SUR                  5       U5        O@U R
                  S:X  a0  [        R                  SUR                  5       UUR                  5        U R                   H  nUR                  5         M     g ! [         aF  nSn[        R                  (       a  [        R!                  U 5      n[#        UU /UQ75      s S nA$ S nAff = f)Nrp   rI  z,===> UNLINKING PACKAGE: %s <===
  prefix=%s
r}   z6===> LINKING PACKAGE: %s <===
  prefix=%s
  source=%s
r   )ra   r   r   r   r3   r   r   rY   r   r`   r   r  	Exceptionr   r  r   r  r   )rw  ra   r   conda_meta_dirr  r_  reverse_excss          rc   r  &UnlinkLinkTransaction._execute_actions  s    ..  m\:^$$N#	}}(DMMO! &(OMMO!..	 #**  + 	L''4EEhO" " 	s   BC 
D+%;D& D+&D+c                4   U R                   nU R                  S:H  nU R                  nU(       a   [        UUU(       a  SOSSS9  g g ! [         aF  nSn[
        R                  (       a  [        R                  U 5      n[        UU /UQ75      s S nA$ S nAff = f)NrI  zpost-unlink	post-linkT)activater   )
ra   r   r   r  r  r   r  r   r  r   )rw  ra   r  r   r_  r  s         rc   r  0UnlinkLinkTransaction._execute_post_link_actions@  s     ..MMX-	  !%.MK!	   !++#8#I#I(#SL&  & s   A 
B;BBBc                D   U R                   nU R                  nU R                  S:X  a&  [        R	                  SUR                  5       U5        O5U R                  S:X  a%  [        R	                  SUR                  5       U5        / nUS:  a  U R                  nOU R                  S US-    n[        [        [        U5      5      5       H  u  pg UR                  5         M     U$ ! [         a1  n[        R                  SUSS	9  UR                  U5         S nAMR  S nAff = f)
NrI  z3===> REVERSING PACKAGE UNLINK: %s <===
  prefix=%s
r}   z1===> REVERSING PACKAGE LINK: %s <===
  prefix=%s
r   rD   z#action.reverse() error in action %rTexc_info)ra   r   r   r   rY   r   r   r  rz   r   rv   r  r   r   )	rw  reverse_from_idxra   r   r  r  axn_idxr  r_  s	            rc   r  &UnlinkLinkTransaction._reverse_actionsZ  s    ..   ==H$HHG ]]f$HHE 
a&..O&../E1AA1EFO'i.H(IJOG%   K   %		?RV	W!!!$$%s   C$$
D.&DDc                t   S
S jn[        S U 5       S5      nU(       a,  UR                  n[        R                  SU 35        U" U5      $ [	        U 5      R                  SS5      nU(       a6  [        S U 5       S5      nUc   [        R                  SU 35        U" U5      $ [        R                  S5        g	)ze
Return the python version and location of the site-packages directory at the end of the transaction
c                    U R                   (       d  [        S5      e[        U R                   5      nU R                  nUc  [	        U5      nX4$ )Nz"Python record version is required.)r   
ValueErrorr&   python_site_packages_pathr'   )python_recordrc  rd  s      rc   version_and_sp>UnlinkLinkTransaction._get_python_info.<locals>.version_and_sp  sR     (( !EFF4]5J5JKN#0#J#J #+'J"($ "77re   c              3  ^   #    U  H#  nUR                   R                  S :X  d  M  Uv   M%     g7fpythonNr   )ri   r  s     rc   rm   9UnlinkLinkTransaction._get_python_info.<locals>.<genexpr>  s-      $9L//44@ $9s   -	-Nz%found in current transaction python: r(  c              3  J   #    U  H  nUR                   S :X  d  M  Uv   M     g7fr'  r  )ri   prefix_rec_to_unlinks     rc   rm   r)    s)      0E,+00H< )(0Es   #	#z!found in current prefix, python: z!no python version found in prefixr  r   ztuple[str | None, str | None])r   r   r   r   rR   r<  )ra   r`  r   r$  linking_new_pythonr#  unlinking_pythons          rc   rU  &UnlinkLinkTransaction._get_python_info|  s    		8 "$9
 
 .>>MII=m_MN!-00"=155hE#0E
    '		=m_MN%m44		56re   c                n    U UUU4n[         R                  " U6 n[         R                  " USU06n/ UQUQ7$ )Nfile_link_actions)rJ   create_file_link_actionscreate_directory_actions)rl   r  ra   requested_link_typerequested_specrequired_quadr1  r3  s           rc   rW  (UnlinkLinkTransaction._make_link_actions  s`      	
 +CC]S#1#J#J$
.?$
 

%

 	
re   c                4    U UUU4n[         R                  " U6 $ rh   )rI   rV  )rl   r  ra   r4  r5  r   r6  s          rc   rX  /UnlinkLinkTransaction._make_entry_point_actions  s*      	
 ,::MJJre   c                z   ^ U TUU4n[        U4S jU 5       5      n[        R                  " USUR                  06$ )Nc              3  J   >#    U  H  oR                   T:X  d  M  Uv   M     g 7frh   )r   )ri   r  r  s     rc   rm   >UnlinkLinkTransaction._make_compile_actions.<locals>.<genexpr>  s       !
+2{{l/JBB+   #	#r1  )r   rG   rV  r   )rl   r  ra   r4  r5  r   r6  link_action_groups    `      rc   rY  +UnlinkLinkTransaction._make_compile_actions  sX      	
 ! !
+!
 
 %33
.?.G.G
 	
re   c                  ^ / nU R                   c  U R                  5         [        U R                  R	                  5       5       GH  u  nu  p4[        [        5      nUS:X  a|  U R                   R                  5         U R                   R                   Vs1 s H  ofR                  iM     snmUS   R                  U4S jU R                   R                   5       5        UR                  US'   UR                   H  nUS   R                  U5        M     UR                   H  nUS   R                  U5        M     UR                  U5        GM     U$ s  snf )Nr   FETCHc              3  J   >#    U  H  oR                   T;   d  M  Uv   M     g 7frh   )url)ri   r   download_urlss     rc   rm   CUnlinkLinkTransaction._make_legacy_action_groups.<locals>.<genexpr>  s       (%9TXX=VDD%9r=  PREFIXUNLINKLINK)r   r  r   r   r  r   r"  r	  cache_actionsrC  rZ  r   ra   r   r   )	r   legacy_action_groupsr   r   r  r   rt   r   rD  s	           @rc   _make_legacy_action_groups0UnlinkLinkTransaction._make_legacy_action_groups  s(     "99MMO"+D,>,>,D,D,F"GA!$'GAv		!!#48II4K4K L4KS4K L '' (%)YY%9%9(  !& 3 3GH**!((. +(( &&t,	 ) !''0% #H( $#! !Ms   Ec           	        U R                  5       nU R                  R                   Vs1 s H  o"R                  iM     nn[	        XR
                  R                  5       5       Hk  u  nu  pVU R                  UUR                  UR                  UUR                  UR                  5      nU R                  U5      n[        [        U5      5        Mm     U$ s  snf rh   )rK  r   rI  rC  r/  r   r  _calculate_change_reportr   r   r   r   _change_report_strr%  r   )	r   rJ  rt   rD  r   r   r   change_reportchange_report_strs	            rc   print_transaction_summary/UnlinkLinkTransaction.print_transaction_summary  s    #>>@,0II,C,CD,CS,CD&) "4"4":":"<'
"G]f !99      M !% 7 7 F"#456'
 $#! Es   Cc           
     <  ^^^^^ SS/mTR                  SUR                   35        TR                  S5        UR                  (       aS  TR                  SR                  [	        [        S UR                   5       5      SS95      5        TR                  S5        UR                  (       aG  TR                  S[	        [        S	 UR                   5       5      SS9 35        TR                  S5        S
 nU4S jnS mS mUR                  (       a  TR                  S5        / nSn[        UR                  U4S jS9 Hg  nUR                  nS[        U5      -  nXW-  nU" [        UR                  R                  5      5      n	U	(       a  USU	-   -  nUR                  Xh45        Mi     TR                  U" U5      5        TR                  S5        TR                  SS[        U5      -  -   5        S mU4S jn
U4S jmUUU4S jnUR                  (       av  TR                  S5        [        UR                  TS9 HM  nUR                  U   nU
" T" U5      UR                  5        SSR!                  UR"                  5       35        MO     UR$                  (       as  TR                  S5        [        UR$                  TS9 HJ  nUR$                  U   nTR                  SUR&                   SUR(                   SUR*                   35        ML     UR,                  (       a$  TR                  S5        U" UR,                  T5        UR.                  (       a$  TR                  S 5        U" UR.                  T5        UR0                  (       a$  TR                  S!5        U" UR0                  T5        UR2                  (       a$  TR                  S"5        U" UR2                  T5        TR                  S5        TR                  S5        S#R!                  T5      $ )$Nry  z## Package Plan ##
z  environment location: z  removed specs:{}c              3  8   #    U  H  n[        U5      v   M     g 7frh   r   r  s     rc   rm   ;UnlinkLinkTransaction._change_report_str.<locals>.<genexpr>*  s     M/L!s1vv/Lru      r   z  added / updated specs:c              3  8   #    U  H  n[        U5      v   M     g 7frh   rV  r  s     rc   rm   rW  1  s     :fKea3q66Keru   c                f    [         R                  SL a  g[         R                  c  U [        :X  a  gU $ )NFry  )r   show_channel_urlsr   )r  s    rc   channel_filt>UnlinkLinkTransaction._change_report_str.<locals>.channel_filt5  s/    ((E1((0Q:O5OHre   c                  > / nSnUR                  US-  5        UR                  US-  5        U  HR  u  p4UT" UR                  5      S-   UR                  -   UR                  4-  nU(       a  XT-  nUR                  U5        MT     U$ )Nz    %-27s|%17s)packager   )z---------------------------z-----------------ro   )r   namekeyr   r   )dists_extraslinesfmtr   extralinestrip_globals         rc   print_dists=UnlinkLinkTransaction._change_report_str.<locals>.print_dists<  s    E"CLL334LL334+ .4t||CJJ  MDT"  , Lre   c                B    U R                  S5      (       a  SU SS  -   $ U $ )Nglobal:z0:   
startswithxs    rc   r  :UnlinkLinkTransaction._change_report_str.<locals>.<lambda>K  s%    all96M6MTAabE\$TST$Tre   c                <    U R                  S5      (       a  U SS  $ U $ )Nrj  rk  rl  rn  s    rc   r  rp  L  s     !,,y*A*A12!Hq!Hre   z,
The following packages will be downloaded:
r   c                (   > T" U R                   5      $ rh   )r`  )ro  convert_namekeys    rc   r  rp  T  s    9Sre   r  z%15sr!  z@    ------------------------------------------------------------z+                                           zTotal: %14sc                T   U R                   R                  UR                   R                  :g  nU R                  UR                  :g  nU R                  UR                  :g  nU R                  UR                  :g  n/ n/ nU(       d  U(       ax  U R                   R                  b%  UR                  U R                   R                  5        UR                   R                  b%  UR                  UR                   R                  5        U(       a<  UR                  SU R                  -   5        UR                  SUR                  -   5        U(       d  U(       aP  U(       d  U(       aB  UR                  SU R                  -   S-   5        UR                  SUR                  -   S-   5        U(       d  U(       aV  UR                  U R                  S-   U R                  -   5        UR                  UR                  S-   UR                  -   5        SR                  U5      SR                  U5      4$ )N/z::ro   ry  )channelr   subdirr   r   r   r   )unlink_prec	link_precchannel_changesubdir_changeversion_changebuild_changebuilder_leftbuilder_rights           rc   	diff_strs;UnlinkLinkTransaction._change_report_str.<locals>.diff_strsb  s   (00559J9J9O9OON'..)2B2BBM(00I4E4EEN&,,	?LLM&&++7 ''(;(;(@(@A$$))5!(():):)?)?@##C+*<*<$<=$$S9+;+;%;<-n##D;+;+;$;c$AB$$TINN%:S%@A##K$7$7#$=@Q@Q$QR$$Y%6%6%<y%NO77<("''-*@@@re   c                h   > [        U 5      S:  a  U S S S-   n TR                  SU <S SU< 35        g )N      ~r!  18 r   r   )display_keydisp_strbuilders     rc   
add_single<UnlinkLinkTransaction._change_report_str.<locals>.add_single|  s2    ;"$)#2.4NN;ABre   c                   > [        U 5      S:  a  U S S S-   n [        U5      S:  a  US S S-   nTR                  SU <S SU<S	 S
U< 35        g )Nr  r  r  &   %   r!  r  r  z>38z --> r  )r  left_str	right_strr  s      rc   
add_double<UnlinkLinkTransaction._change_report_str.<locals>.add_double  sP    ;"$)#2.48}r!#CR=3.NNK9UVre   c           
        > [        XS9 HA  nX   u  p4T" X45      u  pVT" T	" U5      UU SSR                  UR                  5       35        MC     g )Nr  r  )r   r   metadata)
change_report_precsr  r`  rx  ry  r  r  r  r  rf  s
          rc   summarize_doubleBUnlinkLinkTransaction._change_report_str.<locals>.summarize_double  s]    !"5?)<)E&&/&G# ) k388I,>,>#?"@A @re   z/
The following NEW packages will be INSTALLED:
r  z)
The following packages will be REMOVED:
ro   z)
The following packages will be UPDATED:
zI
The following packages will be SUPERSEDED by a higher-priority channel:
z,
The following packages will be DOWNGRADED:
z)
The following packages will be REVISED:

)r   r   r   r   r!   r   r   r   sizerB   r   rv  canonical_namerZ  r   	record_idr   r  r   r   r   r   r   r   r   r   )r   rP  r\  rg  disp_lsttotal_download_bytesr   r  rd  schannelr  r  r`  ry  rx  r  r  rs  r  rf  s                  @@@@@rc   rO  (UnlinkLinkTransaction._change_report_str!  s   -.1-2F2F1GHIr((NN$++M}/L/LMMVW NN2%%NN*8F:f=KeKe:f4fop+q*rs NN2		 UH$$NNKLH#$ ))/S yyT!22$,$'DLL,G,G(HITH_,E. NN;x01NN-.NN8mkBV6W&WWX	A4	C
	W	 ""NNNO!-"9"9O)33G<	 ) **,-Qsxx	8J8J/K.LM P &&NNHI!-"="=?S+99'B))*!K,?,?+@+BSBSATU T &&NNHI]88/J))NN2 ];;_M))NNKL];;_M&&NNHI]88/Jrryy!!re   c                   U Vs0 s H  ofR                   U_M     nnU Vs0 s H  ofR                   U_M     nn[        U5      [        U5      pX-
   Vs0 s H  nXU   _M
     nnX-
   Vs0 s H  oX   _M	     nn0 n0 n0 n0 nX-  nU H  nX{   X   nn[        UR                  5      n[        UR                  5      nUR                  UR                  :  nUU:X  a  U(       d  UU:  a  UU4X'   Mi  UR
                  R                  UR
                  R                  :X  aS  UR                  UR                  :X  a9  UU:X  a  M  UU:X  a#  UR                  UR                  :w  a	  UU4UU'   M  UU4X'   M  UU4UU'   M     U Vs1 s H  ofR                  U;   d  M  UiM     nn[        U UUUUUUUUU5
      nU$ s  snf s  snf s  snf s  snf s  snf rh   )r`  r6  r<   r   build_numberrv  r   rw  r   rC  r   )r   r   r   rD  r   r   r   
unlink_maplink_mapunlink_namekeyslink_namekeysr`  r   r   r   r   r   r   common_namekeysrx  ry  	unlink_volink_vobuild_number_increasesr   rP  s                             rc   rN  .UnlinkLinkTransaction._calculate_change_report  s     6BB\TllD(\
B3=>:4LL$&:>),Z#h- ,;
; ((; 	 

 8E7V
7V7X&&7V 	 
 '9&G%/%8(:KK$[%8%89I"9#4#45G%.%;%;k>V>V%V")#(>'IBU*5y)A&!!&&+*=*=*B*BB$$(:(::+ i'IOO{?P?P,P.99-EM'*1<i0H$--8),D )+ '. )3P
hh-6Ot
P$
 y C>

N Qs"   F7F<G+GGG)r   r   r   r   r   r   rl   r   N)r,  )"r   r   r   r   r   propertyr   r  r	  r"   r  r  r  r  classmethodr  staticmethodr  r  r  r  r.  r  r  r  rU  rW  rX  rY  rK  rR  rO  rN  r   r   re   rc   r   r      ss   
B 
 
 2 34  5 D(8   ]
 ]
~  . \ \| h% h%T.q)f % %N  2  B .	&. .` 
 
2 K K  
 
*$<$*W"r ? ?re   r   c           	        [        U [        SR                  UR                  U[        (       a  SOS5      5      n[        U5      (       d  g[        R                  R                  5       nUS:X  a  Sn [        U5       n[        UR                  5       5      n	SSS5        [        (       a  SW	;   d  S	W	;   a  SnXS'   U(       d0  [        R                   " [#        S5      UR%                  5       -  5        Sn[        (       aI   ['        5       nU(       a0  [-        [.        R0                  U [.        R2                  SSU45      u  pOsUSSU/nOlS[4        R6                  ;   a  SOSnU(       a0  [-        [.        R0                  U [.        R2                  SSU45      u  pOS[4        R6                  ;   a  SOSnUSU/n[.        R0                  US'   U=(       d    U US'   UR                  US'   UR8                  US'   UR:                  US'   [        R<                  R                  [?        U5      URA                  SS5      45      US'   [        R                  SUR%                  5       US   SR                  U5      5         [C        X[?        U5      SS9nURD                  S:w  a  [G        U 5      nUS ;   aq  S!UR%                  5       ;   a  U S"U 3nOJ[#        S#5      UUR%                  5       UU=(       d    S$URH                  URJ                  URD                  4-  n[M        U5      e[        RO                  S%UUR%                  5       5         Ub9  S&[        R                  ;  a  [Q        U5        g[        RO                  S'U 35        gg[G        U 5         Ub9  S&[        R                  ;  a  [Q        U5        g[        RO                  S'U 35        gg! , (       d  f       GN;= f! [         a  n
[        R                  U
SS
9   Sn
A
GNISn
A
ff = f! [(         a(    [        R+                  SUUR%                  5       5         gf = f! Ub9  S&[        R                  ;  a  [Q        U5        f [        RO                  S'U 35        f f = f)(zY
Call the post-link (or pre-unlink) script, returning True on success,
False on failure.
z	.{}-{}.{}batshTr  FNz(%PREFIX%\python.exe %SOURCE_DIR%\link.pyz&$PREFIX/bin/python $SOURCE_DIR/link.pyr  
SOURCE_DIRa  
            Package %s uses a pre-link script. Pre-link scripts are potentially dangerous.
            This is because pre-link scripts have the ability to change the package contents in the
            package cache, and therefore modify the underlying files for already-created conda
            environments.  Future versions of conda may deprecate and ignore pre-link scripts.
            z/failed to run %s for %s due to COMSPEC KeyErrorz@CALLz/dz/cbsdbash.z-xROOT_PREFIXrF  PKG_NAMEPKG_VERSIONPKG_BUILDNUMPATHry  z$for %s at %s, executing script: $ %sr  )envr  raise_on_errorr   )r  r  opensslz failed for: aJ  
                    %s script failed for package %s
                    location of failed script: %s
                    ==> script messages <==
                    %s
                    ==> script output <==
                    stdout: %s
                    stderr: %s
                    return code: %s
                    z<None>zI%s script failed for package %s
consider notifying the package maintainerCONDA_TEST_SAVE_TEMPSz.CONDA_TEST_SAVE_TEMPS :: retaining run_script ))r   r#   r   r   r   r5   osenvironr[   r  r   readr  r   r   warningswarnr   r   rA   KeyErrorrY   rC   r   r  devsysplatformr   r  pathsepr
   r<  r:   rcmessagesstdoutstderrr-   warningr4   )r   r   r  
env_prefixr  r  r  is_old_noarchfscript_textr_  script_callercomspeccommand_args
shell_pathresponsemmessages                     rc   r  r    s    499fvve4HD
 $<<
**//
C	(dq.qvvx8  G;V9[H $ #LMM --/"
 Mv	!mG *>##$+'M< $T46L"cll2T
*>##d+'M< "'#,,!6FJ&d3L ,,C(&CMiiC
OC++C**//74=#''&"2E"FGCKII.H	3"e
 ;;! A22/ "(dV<G"	 X   G(  ((@MMO	 
 $&bjj8m$D]OT	 % V$&bjj8m$D]OT	 %i   	(IIa$I'	(*  	HHA
 	r $&bjj8m$D]OT	 %sU   2O =O!O 
P	 9CP> P> 
OO 
P'PP	/P;:P;>>Q<c                   [        U S5      n [        U5      (       a  [        U5       nUR                  5       n[	        US5      (       a  UR                  S5      n[        U[        R                  (       a  [        R                  O[        R                  S9  UsS S S 5        [        U5        $ [        U5        g ! , (       d  f       N= f! [        U5        f = f)Nz.messages.txtdecodezutf-8)file)r   r5   r  r  r  r  r%  r   jsonr  r  r  r4   )r   r  fir  s       rc   r  r    s    (D	$<<drGGI1h'')AaGLLcjjcjjI  	dd  	ds#   C A1B;	C ;
C	C C)r   ztuple[list[MatchSpec], ...])r  NF)
r   r   r  r   r  r   r  boolr   r  )r   
__future__r   dataclassesr   r   r  r  r  r  collectionsr   r   loggingr   os.pathr	   r
   r   r   pathlibr   textwrapr   	tracebackr   typingr   r   ry  r   r   r   auxlib.collectionr   
auxlib.ishr   base.constantsr   r   r   base.contextr   common.compatr   r   	common.ior   r    r!   r"   common.pathr#   r$   r%   r&   r'   common.signalsr(   r  r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   gateways.diskr3   gateways.disk.deleter4   gateways.disk.readr5   r6   r7   gateways.disk.testr8   r9   gateways.subprocessr:   models.enumsr;   models.versionr<   	reportersr=   r>   resolver@   utilsrA   rB   rC   r5  rE   path_actionsrF   rG   rH   rI   rJ   rK   rL   rM   rN   rO   rP   rQ   r=  rR   collections.abcrS   rT   models.package_inforU   models.recordsrV   rW   r   r   rd   r   r   r   r   r   r   r   r  r  r   re   rc   <module>r      s~   P " )  	 
  #   2 2   + , @ @ %  S S " 4   ,   $ ( C C 2 # ) /  B B 0    $31.$
+\ (** **  , , ,B
+: 
+O Oj( SS S 	S
 S 
Slre   