
    wBf                    >   d Z ddlmZ ddlZddlZddlZddlZddlmZ ddlm	Z	 ddl
mZ ddlmZmZmZmZ ddlmZ dd	lmZ dd
lmZ ddlmZmZ ddlmZmZ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' ddl(m)Z) ddl*m+Z+m,Z, ddl-m.Z.m/Z/m0Z0m1Z1m2Z2 ddl3m4Z4m5Z5m6Z6m7Z7 ddl8m9Z9 ddl:m;Z;m<Z<m=Z=m>Z>m?Z?m@Z@mAZAmBZBmCZC ddlDmEZE ddlFmGZG ddlHmIZImJZJmKZK ddlLmMZMmNZNmOZO ddlPmQZQ ddlRmSZS ddlTmUZU ddlVmWZW dd lXmYZYmZZZm[Z[ d!d"l\m]Z] d!d#l^m_Z_m`Z`maZambZbmcZcmdZdmeZemfZfmgZgmhZhmiZimjZjmkZk d!d$llmmZmmnZn erdd%lmoZo dd&lpmqZq dd'lrmsZs d!d(l^mtZt  eeu      Zvd) Zwd* Zxd+ Zy G d, d-e      Zz G d. d/e      Z{ G d0 d1e      Z| G d2 d3e      Z} G d4 d5      Z~	 	 	 d8	 	 	 	 	 	 	 	 	 d9d6Zd7 Zy):zIPackage installation implemented as a series of link/unlink transactions.    )annotationsN)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)
confirm_yn)ensure_text_typeon_win)DummyExecutorSpinnerThreadLimitedThreadPoolExecutordashlisttime_recorder)explode_directoriesget_all_directoriesget_major_minor_version#get_python_site_packages_short_path)signal_handler)	CondaSystemExitDisallowedPackageErrorEnvironmentNotWritableErrorKnownPackageClobberError	LinkErrorRemoveErrorSharedLinkPathClobberErrorUnknownPackageClobberErrormaybe_raise)mkdir_p)rm_rf)isfilelexistsread_package_info)hardlink_supportedis_conda_environmentsoftlink_supported)subprocess_call)LinkType)VersionOrder	MatchSpec)get_comspechuman_byteswrap_subprocess_call   )PackageCacheData)AggregateCompileMultiPycActionCompileMultiPycActionCreateNonadminActionCreatePrefixRecordActionCreatePythonEntryPointActionLinkPathActionMakeMenuAction!RegisterEnvironmentLocationActionRemoveLinkedPackageRecordActionRemoveMenuActionUnlinkPathAction#UnregisterEnvironmentLocationActionUpdateHistoryAction)
PrefixDataget_python_version_for_prefix)Iterable)PackageInfo)PackageRecord)_Actionc                L   t        | dd      }t        j                  rt        j                  S t        j
                  rt        j                  S t        ||      rt        j                  S t        j                  rt        ||      rt        j                  S t        j                  S )Ninfoz
index.json)r
   r   always_copyr:   copyalways_softlinksoftlinkr6   hardlinkallow_softlinksr8   )extracted_package_dirtarget_prefixsource_test_files      /lib/python3.12/site-packages/conda/core/link.pydetermine_link_typerb   ]   s{    16<H}}   *M:   #56F#V   ==    c                    t         fdj                  D              }	 t        j                        }dj                  d|dz         }t         |      f}t        d |D              }t        t        |      d      }t         fd	|D              }	g ||	|S # t        $ r[ 	 t        j
                  j                        }n7# t        $ r+ j                   dj                   dj                   }Y nw xY wY w xY w)
Nc              3  :   K   | ]  }t        |        y wN)rM   ).0trgtprefix_recordr_   transaction_contexts     ra   	<genexpr>z&make_unlink_actions.<locals>.<genexpr>l   s%        	,m]DQ s   -z{}/{}
conda-metaz.jsonc              3  4   K   | ]  }|j                     y wrf   )target_short_pathrg   axns     ra   rk   z&make_unlink_actions.<locals>.<genexpr>   s      V3!6!6 V   T)reversec              3  X   K   | ]!  }t        |t        j                         # y wrf   )rM   r:   	directory)rg   dri   r_   rj   s     ra   rk   z&make_unlink_actions.<locals>.<genexpr>   s1      %  	q(BTBT	
%s   '*)tuplefilesr   r^   AttributeErrorlinksourcenameversionbuildformatrK   r$   sortedr#   )
rj   r_   ri   unlink_path_actionsr^   meta_short_pathremove_conda_meta_actions_all_dall_directoriesdirectory_remove_actionss
   ```       ra   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 "	s5   B% %	D	/CD	1D D	DD	D	c                    t        t        |             D cg c]  }d  }}|xs dD ]3  t              t        fdt	        |       D        d       }|/||<   5 t        |      S c c}w )N c              3  n   K   | ],  \  }}|j                   j                  j                  k(  r| . y wrf   repodata_recordr|   )rg   qpkg_infospecs      ra   rk   z'match_specs_to_dists.<locals>.<genexpr>   s5      Ax++00DII= s   25)rangelenr=   next	enumeraterw   )packages_info_to_linkspecs_matched_specsidxr   s        @ra   match_specs_to_distsr      s    #(-B)C#DEaTEME &#,-B#C
 
 ?!%M#&  Fs   	A*c                  J    e Zd ZU ded<   ded<   ded<   ded<   ded<   ded	<   y
)PrefixSetupstrr_   ztuple[PackageRecord, ...]unlink_precs
link_precsztuple[MatchSpec, ...]remove_specsupdate_specsneutered_specsN__name__
__module____qualname____annotations__r   rc   ra   r   r      s&    ++))''''))rc   r   c                  6    e Zd ZU ded<   ded<   ded<   ded<   y)	ActionGroupr   typezPackageInfo | Nonepkg_datazIterable[_Action]actionsr_   Nr   r   rc   ra   r   r      s    
I  rc   r   c                  h    e Zd ZU ded<   ded<   ded<   ded<   ded<   ded<   ded<   ded	<   ded
<   y)PrefixActionGroupz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_groupsNr   r   rc   ra   r   r      s8    44//33--11002244//rc   r   c                  h    e Zd ZU ded<   ded<   ded<   ded<   ded<   ded	<   ded
<   ded<   ded<   y)ChangeReportr   prefixzIterable[MatchSpec]specs_to_removespecs_to_addzIterable[PackageRecord]removed_precs	new_precsupdated_precsdowngraded_precssuperseded_precsfetch_precsNr   r   rc   ra   r   r      s7    K((%%**&&**----((rc   r   c                  <   e Zd Zd Zed        Zd Zd Z ed      d        Z	d Z
d Zd	 Zed
        Zed        Zed        Zed        Zd Zd Zed        Zed        Zedd       Zed        Zed        Zed        Zed        Zd Zd Zd Zed        Zy)UnlinkLinkTransactionc           
        |D ci c]  }|j                   | c}| _        i | _        | j                  j                         D ]d  }t        j                  d|j                   dj                  d |j                  D              dj                  d |j                  D                     f d | _	        d| _
        d| _        t        j                  st        j                  dk(  r
t               nt!        t        j                        | _        t        j                  st        j$                  dk(  rt               | _        y t!        t        j$                        | _        y c c}w )Nzhinitializing UnlinkLinkTransaction with
  target_prefix: %s
  unlink_precs:
    %s
  link_precs:
    %s
z
    c              3  <   K   | ]  }|j                           y wrf   dist_strrg   precs     ra   rk   z1UnlinkLinkTransaction.__init__.<locals>.<genexpr>   s     K$dmmoK   c              3  <   K   | ]  }|j                           y wrf   r   r   s     ra   rk   z1UnlinkLinkTransaction.__init__.<locals>.<genexpr>   s     I$dmmoIr   FrA   )r_   prefix_setupsprefix_action_groupsvalueslogrW   r
   r   r   _pfe	_prepared	_verifiedr   debugverify_threadsr   r    verify_executorexecute_threadsexecute_executor)selfsetupsstps      ra   __init__zUnlinkLinkTransaction.__init__   s   @FGc//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                    t        d | j                  j                         D               xr* t        d | j                  j                         D              S )Nc              3  P   K   | ]  }|j                   xs |j                     y wrf   )r   r   rg   r   s     ra   rk   z6UnlinkLinkTransaction.nothing_to_do.<locals>.<genexpr>   s'      
58S//
s   $&c              3  F   K   | ]  }t        |j                          y wrf   )r7   r_   r   s     ra   rk   z6UnlinkLinkTransaction.nothing_to_do.<locals>.<genexpr>   s#      
 !!2!23
   !)anyr   r   allr   s    ra   nothing_to_doz#UnlinkLinkTransaction.nothing_to_do   sY     
<@<N<N<U<U<W
 
 
 
 
))002
 
	
rc   c                    | j                   | j                          | j                   j                  s| j                   j                          y y rf   )r   _get_pfe	_executedexecuter   s    ra   download_and_extractz*UnlinkLinkTransaction.download_and_extract   s7    99MMOyy""II #rc   c                   | j                   | j                          | j                   j                  s| j                   j                          | j                  ry i | _        t        dt        j                   xr t        j                   t        j                        5  | j                  j                         D ]~  }| j                  | j
                  |j                  |j                  |j                   |j"                  |j$                  |j&                        }t)        | | j*                  |j                  <    	 d d d        d| _        y # 1 sw Y   d| _        y xY w)NzPreparing transactionT)r   r   r   r   r   rj   r   r   verbosequietjsonr   r   _preparer_   r   r   r   r   r   r   r   )r   r   grpss      ra   preparezUnlinkLinkTransaction.prepare  s   99MMOyy""II>>#% #5$5LL
 	X
 ))002 
X}},,%%$$NN$$$$&& @QRV?W))#*;*;<
X	X" #	X" s   BEEunlink_link_prepare_and_verifyc                   | j                   s| j                          t        j                  rJ t        j                  t
        j                  k(  rd| _        y t        dt        j                   xr t        j                   t        j                        5  | j                  | j                  | j                        }|r/	 t        t!        |      t               t&        j)                  |       d d d        	 | j+                  t-        j.                  d | j                  j1                         D                d| _        y #  t#        | j$                  d           xY w# 1 sw Y   pxY w# t2        $ r t#        | j$                  d           w xY w)NTzVerifying transactiontemp_dirc              3  4   K   | ]  }|j                     y wrf   )r   )rg   acts     ra   rk   z/UnlinkLinkTransaction.verify.<locals>.<genexpr>;  s       ..rr   )r   r   r   dry_runsafety_checksr   disabledr   r   r   r   r   _verifyr   r   r0   r   r2   rj   r   rW   _verify_pre_link_message	itertoolsr   r   r(   )r   
exceptionss     ra   verifyzUnlinkLinkTransaction.verify   sD   ~~LLN??""  L$9$99!DN#5$5LL
 	%
 d&8&8$:S:STJ
 ;WE $	%	))#'#<#<#C#C#E !$22:>?	% 	%,  	$**:67	s1   )E?D>E6A E( >EEE%(#Fc                   d}|D ]  }t        |j                  j                        dz  dz  }t        d |j	                  d      D              }|j                         sZ|s]t        d       d}|D ]H  }t        d|j                   d	       t        t        |j                         d
             t                J  |rt                y y )NFrW   prelink_messagesc              3  B   K   | ]  }|j                         s|  y wrf   )is_file)rg   items     ra   rk   zAUnlinkLinkTransaction._verify_pre_link_message.<locals>.<genexpr>L  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          ra   r   z.UnlinkLinkTransaction._verify_pre_link_messageF  s    " 	CS\\7786ADVV  " "!0!5!5f!=" N %%'NLM $ . HGHMM?#67&!3!3!5t<=G	 L rc   c                T   | j                   s| j                          t        j                  rJ 	 | j	                  t        t        t        t        | j                  j                                         t        | j                  d          y # t        | j                  d          w xY w)Nr   )r   r   r   r   _executerw   r   zipr   r   r2   rj   r   s    ra   r   zUnlinkLinkTransaction.executeZ  s    ~~KKM??""	8 MMeUC)B)B)I)I)K$LMNO $**:67E$**:67s   AB B'c                   ddl m} | j                  | j                  }|S | j                  s |d      x| _        }|S t	        t        j                  d | j                  j                         D                    } ||      x| _        }|S )NrA   )ProgressiveFetchExtractr   c              3  4   K   | ]  }|j                     y wrf   )r   r   s     ra   rk   z1UnlinkLinkTransaction._get_pfe.<locals>.<genexpr>q  s      $'*CNN$rr   )package_cache_datar  r   r   setr   from_iterabler   )r   r  pfer   s       ra   r   zUnlinkLinkTransaction._get_pfeh  s    ?99 ))C 
 ##5b99DI 
 ## $.2.@.@.G.G.I$ J
 6jAADI
rc   c                x  & t              s	 t               t              &&fd|D        }	t        d |	D              }	t        d |D              }
t        |
      sJ t        d t        ||
      D              }t        fd|D              }| j                  |	|      }||d<   t        |      }||d<   t        d	      |d
<   g }g }|	D ]\  }|j                  t        d|t!        ||                   |j                  t        d|t#        j$                  ||                   ^ |rt'        |      f}t        dd |      g}nd}t)        ||      }g }g }g }g }g }t        |||      D ]0  \  }}}t        d|| j+                  ||||            }|j                  |       t        d|| j-                  |||||            }|j                  |       t        d|| j/                  |||||            }|j                  |       t        d|t1        j$                  |||            } |j                  |        g |j2                  |j2                  |j2                  | j2                  }!|j5                  t7        j$                  |||||!             3 t        dd |      g}"t9        j$                  ||||      }#t;        |      f}$t        dd |$|#z         g}%t=        |||||%||||"	      S # t        $ r1}t        j	                  t        |             t        dz        d }~ww xY w)NzSUnable to create prefix directory '%s'.
Check that you have sufficient permissions.c              3  T   K   | ]  }j                  |j                         ! y wrf   )getr|   )rg   r   prefix_datas     ra   rk   z1UnlinkLinkTransaction._prepare.<locals>.<genexpr>  s      U!; Us   %(c              3  &   K   | ]	  }|s|  y wrf   r   )rg   lpds     ra   rk   z1UnlinkLinkTransaction._prepare.<locals>.<genexpr>  s     %Rccc%Rs   c              3  F   K   | ]  }t        j                  |        y wrf   )rB   get_entry_to_linkr   s     ra   rk   z1UnlinkLinkTransaction._prepare.<locals>.<genexpr>  s!      '
9=..t4'
r   c              3  :   K   | ]  \  }}t        ||        y wrf   )r5   )rg   r   pcrecs      ra   rk   z1UnlinkLinkTransaction._prepare.<locals>.<genexpr>  s#      &
e dE*&
s   c              3  J   K   | ]  }t        |j                          y wrf   )rb   r^   )rg   r   r_   s     ra   rk   z1UnlinkLinkTransaction._prepare.<locals>.<genexpr>  s&      
   > >N
s    #target_python_versiontarget_site_packages_short_pathz	.condatmpr   unlinkremove_menus
unregisterr   rz   entry_pointcompile
make_menusrecordregister)r	   r1   OSErrorr   r   reprr   rP   rw   r   r  _get_python_versionr&   r
   appendr   r   rL   create_actionsrN   r   _make_link_actions_make_entry_point_actions_make_compile_actionsrI   r   extendrF   rO   rJ   r   )'clsrj   r_   r   r   r   r   r   eprefix_recs_to_unlinkpkg_cache_recs_to_linkr   
link_typespython_versionspr   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   r  s'     `                                   @ra   r   zUnlinkLinkTransaction._preparex  sQ    ]#& !/ U U !&%R5J%R R!& '
AK'
 "
 )*** % &
":/EF&
 !

  
1
 

 0002G
 8F340@AC=>*.}k*JJ'$&!!/ 	J '''(;]JW!	 &,,"$33+Z "		*  34GWD L$mD($ (*$$8!<%
!  $&! ""$"%!:/H#
 D	Hb$ "&&'="d G %%g.(--'!& N &,,^<$))'!& J "((4&--'=" L $**<8%%##%  ''% %%	%! (77'!)	wD	L !,HdK WX .<<
 ..A=Q
 D"2_"Dm"

 !% $"!#% 

 
	
S  		$q'" &' s   K? ?	L9,L44L9c                (   t        j                  d | D              }g }|D ]n  }|j                  r|j                         }|s#dj	                  t        t        |      |            }t        j                  d||       |j                  |       p |S )Nc              3  B   K   | ]  }|D ]  }|j                      y wrf   )r   )rg   action_groupsaxngroups      ra   rk   zAUnlinkLinkTransaction._verify_individual_level.<locals>.<genexpr>>  s3      *
)*
  *
*
s    z"Verification error in action %s
%s)
r   r  verifiedr   r
   r   r   r   r   r0  )prefix_action_groupall_actionserror_resultsrq   error_resultformatted_errors         ra   _verify_individual_levelz.UnlinkLinkTransaction._verify_individual_level<  s    )) *
!4*
 
  		3C||::<L"$'')$|*<lK# 		?oV$$\2		3 rc   c                   | \  }}|j                   }|j                  }d }|D ch c]5  }|j                  D ]$  }t        |t              r ||j
                        & 7 }}}d |D        }	g }
t        t              }|	D ]~  }|j                  D ]k  }t        |t              r|j                  }nIt        |t              r2t        |d      r|j                  t        j                  k7  r|j
                  fnd}|D ]   |      |   j!                  |       |vs$t#        t%        |            s:t'        d t)        |      j+                         D        fd      }|rR|
j!                  t-        |j.                  j0                  j3                         |j3                         t4                     |
j!                  t7        |j.                  j0                  j3                         t4                      n  |j9                         D ]D  \  }t;        |      dkD  s|
j!                  t=        t?        d	 |D              t4                     F |
S c c}}w )
Nc                2    t         r| j                         S | S rf   )r   lower)ps    ra   <lambda>z<UnlinkLinkTransaction._verify_prefix_level.<locals>.<lambda>g  s    f ! rc   c              3  b   K   | ]'  }|j                   D ]  }t        |t              r|  ) y wrf   )r   
isinstancerF   )rg   grprq   s      ra   rk   z=UnlinkLinkTransaction._verify_prefix_level.<locals>.<genexpr>p  s<      
{{
 #78 

s   -/	link_typer   c              3      K   | ]  }|  y wrf   r   )rg   r=  s     ra   rk   z=UnlinkLinkTransaction._verify_prefix_level.<locals>.<genexpr>  s      $. !+s   c                     | j                   v S rf   )rx   )r=  paths    ra   rY  z<UnlinkLinkTransaction._verify_prefix_level.<locals>.<lambda>  s    4:;K;K3K rc   keyrA   c              3  d   K   | ](  }|j                   j                  j                          * y wrf   )package_infor   r   rp   s     ra   rk   z=UnlinkLinkTransaction._verify_prefix_level.<locals>.<genexpr>  s*      LOC,,<<EEG   .0) r   r   r   r[  rM   ro   r   r  rF  rD   target_short_pathsrE   hasattrr]  r:   ru   r0  r4   r
   r   rP   iter_recordsr+   rd  r   r   r   r/   itemsr   r.   rw   )+target_prefix_AND_prefix_action_group_tupler_   rO  r   r   lower_on_winr\  rq   unlink_pathscreate_lpr_actionsrQ  link_paths_dictlink_path_actionrf  colliding_prefix_recr>  r`  s                   @ra   _verify_prefix_levelz*UnlinkLinkTransaction._verify_prefix_levelT  sz    .Y**2GG2GG; ,
{{
 #/0 ../
/
 

+
 %d+% +	C$'$=$= * .0EF)9)L)L& 02FG  ''7E+559K9KK *;;=  	 ' / D'-D#D)005</GDPT<U4V/42<$13"".,.	 !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*+	\ *//1 
	JD$4y1}$$. SW   
	 W
s   :Ic              #    K   t        t        j                  dd      t        j                  ft        fd| j	                         D              }t        d |D              }t        d |D        d      \  }}|r|t        d       |at        j                  }t        |      }t        d |j                         D              }d	}d	}	t        d
 |j                         D        d	      }
n|j                  }t        |      }t        d |j                         D              }t        d |j                  xs d	D              }t        d |j                  xs d	D              }	|j                  }
|| v r:|
D ]5  }t        |      j                   }||vs||vs||	v s&t        d|z         7 t        d t        j"                  D              }| j	                         D ]5  }|j                  D ]$  t        fd|D              st%               & 7 | j	                         D ]}  }t        |j                  t&              }t)        |      }d }	 t+        t-        |            }t/        |d      j1                          |st3        t-        |             p|rst3        |        y # t4        $ r2 |du rt3        t-        |             t7        |j                         Y w xY ww)Nenvs_conda_c              3  >   K   | ]  }|j                   v r|  y wrf   )r_   )rg   setupconda_prefixess     ra   rk   zBUnlinkLinkTransaction._verify_transaction_level.<locals>.<genexpr>  s'      
""n4 
s   c              3  \   K   | ]$  }|j                   D ]  }|j                  d k(    & ywcondaN)r   r|   rg   rv  r   s      ra   rk   zBUnlinkLinkTransaction._verify_transaction_level.<locals>.<genexpr>  s<      
**
  II 
 
s   *,c              3  d   K   | ](  }|j                   D ]  }|j                  d k(  r||f  * ywry  )r   r|   r{  s      ra   rk   zBUnlinkLinkTransaction._verify_transaction_level.<locals>.<genexpr>  sC      !,, 99' ure  )NNzTThis operation will remove conda without replacing it with
another version of conda.c              3  4   K   | ]  }|j                     y wrf   r|   rg   recs     ra   rk   zBUnlinkLinkTransaction._verify_transaction_level.<locals>.<genexpr>       *Q388*Qrr   r   c              3  R   K   | ]  }|j                   d k(  r|j                   ! ywry  )r|   depends)rg   r+  s     ra   rk   zBUnlinkLinkTransaction._verify_transaction_level.<locals>.<genexpr>  s(      {{g- NN   %'c              3  4   K   | ]  }|j                     y wrf   r~  r  s     ra   rk   zBUnlinkLinkTransaction._verify_transaction_level.<locals>.<genexpr>  r  rr   c              3  4   K   | ]  }|j                     y wrf   r~  r   s     ra   rk   zBUnlinkLinkTransaction._verify_transaction_level.<locals>.<genexpr>  s      )"		)rr   c              3  4   K   | ]  }|j                     y wrf   r~  r   s     ra   rk   zBUnlinkLinkTransaction._verify_transaction_level.<locals>.<genexpr>  s      +"		+rr   zW'%s' is a dependency of conda and cannot be removed from
conda's operating environment.c              3  2   K   | ]  }t        |        y wrf   r<   rg   ss     ra   rk   zBUnlinkLinkTransaction._verify_transaction_level.<locals>.<genexpr>  s     MA9Q<M   c              3  @   K   | ]  }|j                          y wrf   )match)rg   rv   r   s     ra   rk   zBUnlinkLinkTransaction._verify_transaction_level.<locals>.<genexpr>  s     9qwwt}9   aF)r
   r   root_prefixrw   r   r   r   r-   conda_prefixrP   rh  r_   r   r   r  r=   r|   disallowed_packagesr)   r   r4   r1   r   opencloser2   r-  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_existedrw  r   s                     @@ra   _verify_transaction_levelz/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) $  &+ +&7&D&D&J+ &" $.#5#5 .$8 	 $%56;;#77$::#99%9;CD 	 M1L1LMM
)002 	7L$// 79j990667	7 *002 	%L\779JKI '	 2K%%gi&89Y$**, #'),-*)$	%  N%''),-1,2L2LMMNsD   FK&K&A(K&AK&.J( K&K&(8K# K&"K##K&c                   t        d t        j                  |      D              }|r|S g }| j                  j	                  t        j
                  |j                               D ]  }|s|j                  |        | j                  j	                  t        j                  |j                               D ]  }|s|j                  |        |S )Nc              3  $   K   | ]  }|r| 
 y wrf   r   )rg   excs     ra   rk   z0UnlinkLinkTransaction._verify.<locals>.<genexpr>!  s      '
 '
s   )
rw   r   r  r   maprT  r   r5  rq  ri  )r   r   r   transaction_exceptionsr   r  s         ra   r   zUnlinkLinkTransaction._verify   s    !& '
,FF}U'
 "

 "))
''++!:: '')
 	'C !!#&	' ''++!668L8R8R8T
 	'C !!#&		'
 rc   c                	   t        d |D              }t        d |D              }t        d |D              }t        d |D              }t        d |D              }t        d |D              }t        d |D              }t        t              5  t	        d      5  g }	t        d	t        j                   xr t        j                   t        j                        5  |d
df|ddffD ]  \  }
}|s|D ]  }t        j                  |        |
D ]I  }|j                  dk(  }|j                  }|j                  }t        |r|n|j                   ||rdnd|       K | j"                  j%                  t        j                  |
      D ]  }|s|	j'                  |        |r|D ]  }t        j                  |        |
D ]+  }t        j)                  |      }|s|	j'                  |       - g }|re|j+                  |       |D cg c]  }|j,                  D ]  }|  }}}|r0t/        | }|j'                  t1        dd |g|j                               | j"                  j%                  t        j                  |      D ]  }|s|	j'                  |        t        fd|D              }|D ]+  }t        j                  |      }|s|	j'                  |       - |	r n#|s|D ]  }t        j                  |         d d d        |	rC|	d   }|j2                  d   }d |j                  dk(  }}|j                  }|r7t4        j7                  dj9                  |rdnd|j;                                      g }t        j<                  rt        dt        j                   xr t        j                   t        j                        5  t?        t        |            }|D ](  }t        jA                  |      }|j+                  |       * 	 d d d        tC        g tE        |tB              r|j2                  d   |j2                  dd  fn|f|      |D ]#  }|j,                  D ]  }|jG                           % 	 d d d        d d d        y c c}}w # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   1xY w# 1 sw Y   y xY w)Nc              3  @   K   | ]  }|j                   d k(  s|  yw)r%  Nr   rg   groups     ra   rk   z1UnlinkLinkTransaction._execute.<locals>.<genexpr>9  s       
EJJ(4JE
   c              3  @   K   | ]  }|j                   d k(  s|  yw)rz   Nr  r  s     ra   rk   z1UnlinkLinkTransaction._execute.<locals>.<genexpr>=  s       
EJJ&4HE
r  c              3  @   K   | ]  }|j                   d k(  s|  yw)r)  Nr  r  s     ra   rk   z1UnlinkLinkTransaction._execute.<locals>.<genexpr>@  s       
EJJ)4KE
r  c              3  @   K   | ]  }|j                   d k(  s|  yw)r(  Nr  r  s     ra   rk   z1UnlinkLinkTransaction._execute.<locals>.<genexpr>C  s       #
EJJ-4OE#
r  c              3  @   K   | ]  }|j                   d k(  s|  yw)r+  Nr  r  s     ra   rk   z1UnlinkLinkTransaction._execute.<locals>.<genexpr>F  s       
EJJ(4JE
r  c              3  @   K   | ]  }|j                   d k(  s|  yw)r*  Nr  r  s     ra   rk   z1UnlinkLinkTransaction._execute.<locals>.<genexpr>I  s       !
EJJ,4NE!
r  c              3  @   K   | ]  }|j                   d k(  s|  yw)r&  Nr  r  s     ra   rk   z1UnlinkLinkTransaction._execute.<locals>.<genexpr>L  s       #
EJJ.4PE#
r  unlink_link_executezExecuting transactionr'  Fr,  Tr%  z
pre-unlinkpre-linkr)  c              3  @   K   | ]  }|j                   k(  r|  y wrf   r  )rg   r  register_groups     ra   rk   z1UnlinkLinkTransaction._execute.<locals>.<genexpr>  s%      -! ::7 -r  r   rA   z(An error occurred while {} package '{}'.uninstalling
installingzRolling back transactionr   )$rw   r  r'   r   r"   r   r   r   r   r   r   _execute_actionsr   r_   r   
run_scriptr^   r   r  r0  _execute_post_link_actionsr5  r   rC   r   errorsr   errorr   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_actionsr   r  install_siderL  	is_unlinkr_   r   r  composite_agagrq   individual_actions	compositerH  r7  actionrollback_excsreverse_actionsexcsr  s                               @ra   r  zUnlinkLinkTransaction._execute7  sK    
0
 
  
0
 
  
0
 
 # #
0#
 
  
0
 
 ! !
0!
 
 # #
0#
 
 01 G	)=AV3W G	)J'OO#9GMM(9 ZM $\59!:t4< TM7E>< ( )< MH1BB8LM %* 	$,MMX$=	(0(>(>'00"-6MD<V<V ,5L:)			  $4488->>  3 &--c2	3 $(; MH1BB8LM %* 33NNxX&--c23 $&L#$++N; +:.$&RZZ.>AC..* . .(F!3)I )// +$-$(%.K$-$;$;	!"  $4488->>  3 &--c2	3 (- -%6- ($
 %5 33DDXN&--c23 "# ): MH1BB8LMgTMZMv qM88A;%)8==H+D	((IIBII.7N\ MMO !#++ 2#OO+AGMM0A 7
 +359J3K*L(7 7H#8#I#I(#SD)00677 &  *!_= XXa[!((12,7"#	 '	 	 !2 )H"*"2"2 )())KG	) G	) G	)l.iZM ZM\7 7aG	) G	) G	) G	)s   R5A R)B.R
AR-RR
A$RARR#RCR)AR	A/R)9R5
RRR)R&"R))R2	.R55R>c                >   | j                   }| j                  }t        |d      }t        |      st	        |       	 | j
                  dk(  r&t        j                  d|j                         |       n?| j
                  dk(  r0t        j                  d|j                         ||j                         | j                  D ]  }|j                           y # t        $ rA}d}t        j                  rt        j!                  |       }t#        || g|      cY d }~S d }~ww xY w)Nrm   r%  z,===> UNLINKING PACKAGE: %s <===
  prefix=%s
rz   z6===> LINKING PACKAGE: %s <===
  prefix=%s
  source=%s
r   )r_   r   r
   r	   r1   r   r   rW   r   r^   r   r   	Exceptionr   r  r   r  r   )rL  r_   r   conda_meta_dirr  r7  reverse_excss          ra   r  z&UnlinkLinkTransaction._execute_actions  s    ..  m\:^$N#	}}(DMMO! &(OMMO!..	 #** ! ! 	L''4EEhO" " 	s   BC 	D6DDDc                   | j                   }| j                  dk(  }| j                  }|r	 t        |||rdndd       y y # t        $ rA}d}t
        j                  rt        j                  |       }t        || g|      cY d }~S d }~ww xY w)Nr%  zpost-unlink	post-linkT)activater   )
r_   r   r   r  r  r   r  r   r  r   )rL  r_   r  r   r7  r  s         ra   r  z0UnlinkLinkTransaction._execute_post_link_actions  s     ..MMX-	  !%.MK!	   !++#8#I#I(#SL&  & s   A   	B
	6B?B
B
c                >   | j                   }| j                  }| j                  dk(  r&t        j	                  d|j                         |       n4| j                  dk(  r%t        j	                  d|j                         |       g }|dk  r| j                  }n| j                  d |dz    }t        t        t        |                  D ]  \  }}	 |j                           |S # t        $ r3}t        j                  d|d	       |j                  |       Y d }~Rd }~ww xY w)
Nr%  z3===> REVERSING PACKAGE UNLINK: %s <===
  prefix=%s
rz   z1===> REVERSING PACKAGE LINK: %s <===
  prefix=%s
r   rA   z#action.reverse() error in action %rTexc_info)r_   r   r   r   rW   r   r   r  rw   r   rs   r  r   r0  )	rL  reverse_from_idxr_   r   r   r  axn_idxr  r7  s	            ra   r  z&UnlinkLinkTransaction._reverse_actions  s    ..   ==H$HHG ]]f$HHE 
a&..O&../E1AA1EFO'i.H(IJ 	%OGV% 	%   %		?RV	W!!!$$%s   C  	D))DDc                F   t        d |D        d       }|r;|j                  j                  }|sJ t        j	                  d|       t        |      S t        |       }|r/d |D        }t        |d       }|t        j	                  d|       |S t        j	                  d       y )Nc              3  R   K   | ]  }|j                   j                  d k(  r| ! ywpythonNr   )rg   rd  s     ra   rk   z<UnlinkLinkTransaction._get_python_version.<locals>.<genexpr>B  s,       //44@ r  z.found in current transaction python version %sc              3  >   K   | ]  }|j                   d k(  r|  ywr  r~  )rg   lnkd_pkg_datas     ra   rk   z<UnlinkLinkTransaction._get_python_version.<locals>.<genexpr>S  s&      ! %%1 s   z)found in current prefix python version %sz!no python version found in prefix)r   r   r}   r   r   r%   rQ   )r_   pcrecs_to_unlinkr   linking_new_pythonfull_versionlinked_python_versionfind_pythonunlinking_this_pythons           ra   r/  z)UnlinkLinkTransaction._get_python_version=  s     "$9
 
 -==EEL<IIFU*<88 !>m L %5K
 %)d$;!$,		?AV -, 			56rc   c                    | |||f}t        j                  | }t        j                  |d|i}t        j                  | }g |||S )Nfile_link_actions)rH   create_file_link_actionscreate_directory_actionsrE   r1  )	rj   rd  r_   requested_link_typerequested_specrequired_quadr  r  create_nonadmin_actionss	            ra   r2  z(UnlinkLinkTransaction._make_link_actionsd  s}      	
 +CC]S#1#J#J$
.?$
  #7"E"E}"U
%

 %
 	
rc   c                2    | |||f}t        j                  | S rf   )rG   r1  )rj   rd  r_   r  r  r   r  s          ra   r3  z/UnlinkLinkTransaction._make_entry_point_actions  s*      	
 ,::MJJrc   c                v    | ||f}t        fd|D              }t        j                  |d|j                  iS )Nc              3  B   K   | ]  }|j                   k(  s|  y wrf   )r   )rg   r  rd  s     ra   rk   z>UnlinkLinkTransaction._make_compile_actions.<locals>.<genexpr>  s!      !
r{{l/JB!
s   r  )r   rD   r1  r   )rj   rd  r_   r  r  r   r  link_action_groups    `      ra   r4  z+UnlinkLinkTransaction._make_compile_actions  sX      	
 ! !
+!
 
 %33
.?.G.G
 	
rc   c                   g }| j                   | j                          t        | j                  j	                               D ]   \  }\  }}t        t              }|dk(  ry| j                   j                          | j                   j                  D ch c]  }|j                   c}|d   j                  fd| j                   j                  D               |j                  |d<   |j                  D ]  }|d   j                  |        |j                  D ]  }|d   j                  |        |j                  |        |S c c}w )Nr   FETCHc              3  @   K   | ]  }|j                   v s|  y wrf   )url)rg   r   download_urlss     ra   rk   zCUnlinkLinkTransaction._make_legacy_action_groups.<locals>.<genexpr>  s!      (!TXX=VD(s   PREFIXUNLINKLINK)r   r   r   r   ri  r   r  r   cache_actionsr   r5  r   r_   r   r0  )	r   legacy_action_groupsr   r   rv  r   rq   r   r  s	           @ra   _make_legacy_action_groupsz0UnlinkLinkTransaction._make_legacy_action_groups  s4     "99MMO"+D,>,>,D,D,F"G 	1A!$'GAv		!!#48II4K4K LS L '' (%)YY%9%9(  !& 3 3GH** /!((./(( - &&t,	- !''0%	1( $#! !Ms   E	c           	        | j                         }| j                  j                  D ch c]  }|j                   }}t	        || j
                  j                               D ]k  \  }\  }}| j                  ||j                  |j                  ||j                  |j                        }| j                  |      }t        t        |             m |S c c}w rf   )r  r   r  r   r  r   ri  _calculate_change_reportr   r   r   r   _change_report_strr  r   )	r   r  rq   r  r   r   r   change_reportchange_report_strs	            ra   print_transaction_summaryz/UnlinkLinkTransaction.print_transaction_summary  s    #>>@,0II,C,CDSDD&) $"4"4":":"<'
 	7"G]fc !99      M !% 7 7 F"#456	7 $#! Es   Cc           
     X	   ddgj                  d|j                  z         j                  d       |j                  rJj                  dt        t	        d |j                  D              d      z         j                  d       |j
                  rJj                  dt        t	        d	 |j
                  D              d      z         j                  d       d
 }fd}d d |j                  r݉j                  d       g }d}t	        |j                  fd      D ]c  }|j                  }dt        |      z  }||z  } |t        |j                  j                              }	|	r|d|	z   z  }|j                  ||f       e j                   ||             j                  d       j                  ddt        |      z  z          d }
fd}fd}|j                  rwj                  d       t	        |j                        D ]L  }|j                  |   } | |      |j                          ddj                  |j                                 N |j"                  rtj                  d       t	        |j"                        D ]I  }|j"                  |   }j                  d|j$                   d|j&                   d|j(                          K |j*                  ryj                  d       t	        |j*                        D ]N  }|j*                  |   \  }} |
||      \  }} | |      || ddj                  |j                                 P |j,                  ryj                  d       t	        |j,                        D ]N  }|j,                  |   \  }} |
||      \  }} | |      || ddj                  |j                                 P |j.                  ryj                  d        t	        |j.                        D ]N  }|j.                  |   \  }} |
||      \  }} | |      || ddj                  |j                                 P j                  d       j                  d       d!j                        S )"NrM  z## Package Plan ##
z  environment location: %sz  removed specs:%sc              3  2   K   | ]  }t        |        y wrf   r   r  s     ra   rk   z;UnlinkLinkTransaction._change_report_str.<locals>.<genexpr>  s     Ia3q6Ir     r   z  added / updated specs:%sc              3  2   K   | ]  }t        |        y wrf   r  r  s     ra   rk   z;UnlinkLinkTransaction._change_report_str.<locals>.<genexpr>  s     !MQ#a&!Mr  c                `    t         j                  du ryt         j                  
| t        k(  ry| S )NFrM  )r   show_channel_urlsr   )r  s    ra   channel_filtz>UnlinkLinkTransaction._change_report_str.<locals>.channel_filt  s/    ((E1((0Q:O5OHrc   c                   g }d}|j                  |dz         |j                  |dz         | D ]N  \  }}| |j                        dz   |j                  z   |j                  fz  }|r||z  }|j                  |       P |S )Nz    %-27s|%17s)packager~   )z---------------------------z-----------------rl   )r0  namekeyr}   r~   )dists_extraslinesfmtr   extralinestrip_globals         ra   print_distsz=UnlinkLinkTransaction._change_report_str.<locals>.print_dists  s    E"CLL334LL334+ #e .4t||CJJ  EMDT"# Lrc   c                8    | j                  d      rd| dd  z   S | S )Nglobal:z0:   
startswithxs    ra   rY  z:UnlinkLinkTransaction._change_report_str.<locals>.<lambda>  s     all96MTAabE\ ST rc   c                2    | j                  d      r| dd  S | S )Nr!  r"  r#  r%  s    ra   rY  z:UnlinkLinkTransaction._change_report_str.<locals>.<lambda>  s    !,,y*A12 q rc   z,
The following packages will be downloaded:
r   c                (     | j                         S rf   )r  )r&  convert_namekeys    ra   rY  z:UnlinkLinkTransaction._change_report_str.<locals>.<lambda>  s    9S rc   ra  z%15sr  z@    ------------------------------------------------------------z+                                           zTotal: %14sc                   | j                   j                  |j                   j                  k7  }| j                  |j                  k7  }| j                  |j                  k7  }| j                  |j                  k7  }g }g }|s|rv| j                   j                  %|j                  | j                   j                         |j                   j                  %|j                  |j                   j                         |r<|j                  d| j                  z          |j                  d|j                  z          |s|rF|s|rB|j                  d| j                  z   dz          |j                  d|j                  z   dz          |s|rV|j                  | j                  dz   | j                  z          |j                  |j                  dz   |j                  z          dj                  |      dj                  |      fS )N/z::rl   rM  )channelr|   subdirr}   r~   r0  r
   )unlink_prec	link_precchannel_changesubdir_changeversion_changebuild_changebuilder_leftbuilder_rights           ra   	diff_strsz;UnlinkLinkTransaction._change_report_str.<locals>.diff_strs  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<("''-*@@@rc   c                b    t        |       dkD  r| d d dz   } j                  d| dd|       y )N      ~r  18 r   r0  )display_keydisp_strbuilders     ra   
add_singlez<UnlinkLinkTransaction._change_report_str.<locals>.add_single5  s2    ;"$)#2.4NN;ABrc   c                    t        |       dkD  r| d d dz   } t        |      dkD  r|d d dz   }j                  d| dd|d	d
|       y )Nr8  r9  r:  &   %   r  r;  r<  z>38z --> r=  )r>  left_str	right_strr@  s      ra   
add_doublez<UnlinkLinkTransaction._change_report_str.<locals>.add_double:  sP    ;"$)#2.48}r!#CR=3.NNK9UVrc   z/
The following NEW packages will be INSTALLED:
r<  z)
The following packages will be REMOVED:
rl   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:

)r0  r   r   r!   r   r   r   sizer?   r   r,  canonical_namer5  r   	record_idr
   metadatar   r|   r}   r~   r   r   r   )r   r  r  r  disp_lsttotal_download_bytesr   rI  r  schannelr6  rA  rG  r  r/  r.  rE  rF  r@  r)  r  s                     @@@ra   r
  z(UnlinkLinkTransaction._change_report_str  s   -.3m6J6JJKr((NN$I=+H+HIIRS NN2%%NN,6!M-2L2L!MMVWXY NN2		 UH$$NNKLH#$ ))/S 	/ yyT!22$,$'DLL,G,G(HITH_,Eu.	/ 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 &&NNHI!-"="=?S +99'B))*!K,?,?+@+BSBSATU &&NNHI!-"="=?S )6)D)DW)M&Y&/Y&G#) ) k388I,>,>#?"@A ))NN2 "-"@"@oV )6)G)G)P&Y&/Y&G#) ) k388I,>,>#?"@A ))NNKL!-"@"@oV )6)G)G)P&Y&/Y&G#) ) k388I,>,>#?"@A 	rryy!!rc   c                "   |D ci c]  }|j                   | }}|D ci c]  }|j                   | }}t        |      t        |      }
}	|	|
z
  D ci c]  }|||   
 }}|
|	z
  D ci c]  }|||   
 }}i }i }i }|
|	z  }|D ]  }||   ||   }}t        |j                        }t        |j                        }|j                  |j                  kD  }||k(  r|s||kD  r||f||<   d|j
                  j                  |j
                  j                  k(  r'|j                  |j                  k(  r||k(  r||f||<   ||f||<    |D ch c]  }|j                  |v s| }}t        | ||||||||	      }|S c c}w c c}w c c}w c c}w c c}w rf   )
r  r  r;   r}   build_numberr,  r|   r-  r   r   )r   r   r   r  r   r   r   
unlink_maplink_mapunlink_namekeyslink_namekeysr  r   r   r   r   r   common_namekeysr.  r/  	unlink_volink_vobuild_number_increasesr   r  s                            ra   r	  z.UnlinkLinkTransaction._calculate_change_reporty  s
    6BBTdllD(B
B3=>4DLL$&>>),Z#h- ,m;
 Z((
 

 8E7V
+2GXg&&
	 
 '/9& 	EG%/%8(7:KK$[%8%89I"9#4#45G%.%;%;k>V>V%V")#(>'IBU*5y)Ag&!!&&+*=*=*B*BB$$(:(::+ -8),D )-8),D )#	E& )3Pdhh-6OtPP$

 i C>

@ Qs"   E8E=F(F	FFN)) r   r   r   r   propertyr   r   r   r"   r   r   r   r   classmethodr   staticmethodrT  rq  r  r   r  r  r  r  r/  r2  r3  r4  r  r  r
  r	  r   rc   ra   r   r      sk   
B 
 
 < 34# 5#J(8  A
 A
F  . ^ ^@ h% h%T.`)D % %N  2  B $ $L 
 
6 K K  
 
*$<$*]"~ 7 7rc   r   c           	        t        | t        rdnddj                  |j                  |t        rdnd            }t	        |      syt
        j                  j                         }|dk(  rvd}	 t        |      5 }t        |j                               }	d	d	d	       t        rd
	v sd	v rd}| |d<   |s/t        j                  t!        d      |j#                         z         d	}t        rE	 t%               }|r1t+        t,        j.                  | t,        j0                  dd|f      \  }}nk|dd|g}nddt2        j4                  v rdnd}|r1t+        t,        j.                  | t,        j0                  dd|f      \  }}ndt2        j4                  v rdnd}|d|g}t,        j.                  |d<   |xs | |d<   |j                  |d<   |j6                  |d<   |j8                  |d<   t
        j:                  j                  t=        |      |j?                  dd      f      |d<   t        j                  d|j#                         |d   dj                  |             	 tA        ||t=        |      d       }|jB                  d!k7  rtE        |       }|d"v rtd#|j#                         v r| d$| }tK        |      t!        d%      ||j#                         ||xs d&|jF                  |jH                  |jB                  fz  }tK        |      t        j                  d'||j#                                	 |7d(t
        j                  vrtM        |       yt        jO                  d)|        yytE        |        	 |7d(t
        j                  vrtM        |       yt        jO                  d)|        yy# 1 sw Y   xY w# t        $ r"}
t        j                  |
d       Y d	}
~
)d	}
~
ww xY w# t&        $ r( t        j)                  d||j#                                Y yw xY w# |7d(t
        j                  vrtM        |       w t        jO                  d)|        w w xY w)*ze
    Call the post-link (or pre-unlink) script, returning True on success,
    False on failure.
    Scriptsbinz	.{}-{}.{}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_PREFIXr  PKG_NAMEPKG_VERSIONPKG_BUILDNUMPATHrM  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|   r3   osenvironrY   r  r   readr  r   r   warningswarnr   r   r>   KeyErrorrW   r@   r   r  devsysplatformr}   rQ  pathsepr   r  r9   rcmessagesstdoutstderrr,   r2   warning)r   r   r  
env_prefixr  r`  rl  is_old_noarchfscript_textr7  script_callercomspeccommand_args
shell_pathresponsemmessages                     ra   r  r    s    	499fve4HD
 $<
**//
C	(d 9q.qvvx89 G;V9[H $ #LMM --/"
 M	!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"ce
 ;;! A22/ "(dV<G,  (() #	 X   G(  ((@MMO	 
 $&bjj8m$D]OT	 % V$&bjj8m$D]OT	 %i9 9  	(IIa$I''	(*  	HHA
 	r $&bjj8m$D]OT	 %sU   +N+ 6NN+ '
O CP P N(#N+ +	O4OO.P
	P
;Qc                   t        | d      }	 t        |      rt        |      5 }|j                         }t	        |d      r|j                  d      }t        |t        j                  rt        j                  nt        j                         |cd d d        t        |       S t        |       y # 1 sw Y   xY w# t        |       w xY w)Nz.messages.txtdecodezutf-8)file)r
   r3   r  rr  rg  r  r  r   r   rw  r}  r|  r2   )r   r`  fir  s       ra   r{  r{  J  s    (D	$<d rGGI1h')AaGLLcjjcjjI  	dd  	ds#   B; A*B/	B; /B84B; ;C)r  NF)
r   r   r  r   r  r   r  boolreturnr  )__doc__
__future__r   r   rp  rw  rs  collectionsr   r   loggingr   os.pathr   r   r	   r
   pathlibr   textwrapr   	tracebackr   typingr   r   rM  r   r   r   auxlib.collectionr   
auxlib.ishr   base.constantsr   r   r   base.contextr   
cli.commonr   common.compatr   r   	common.ior   r   r    r!   r"   common.pathr#   r$   r%   r&   common.signalsr'   r   r(   r)   r*   r+   r,   r-   r.   r/   r0   gateways.diskr1   gateways.disk.deleter2   gateways.disk.readr3   r4   r5   gateways.disk.testr6   r7   r8   gateways.subprocessr9   models.enumsr:   models.versionr;   resolver=   utilsr>   r?   r@   r  rB   path_actionsrC   rD   rE   rF   rG   rH   rI   rJ   rK   rL   rM   rN   rO   r  rP   rQ   rR   models.package_inforS   models.recordsrT   rU   r   r   rb   r   r   r   r   r   r   r   r  r{  r   rc   ra   <module>r     ss   P "  	 
  #   2 2   + , @ @ %  S S " # 4   ,
 
 
 $ ( C C 
 2 # )  B B 0    C1.%
+\ "** ** 	0
 	0	): 	)` `L' SS S 	S
 S 
Slrc   