
    si                       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<  SSK=J>r>J?r?J@r@JArAJBrBJCrCJDrDJErEJFrFJGrG  SSKHJIrI  SSKJJKrK  SSKLJMrMJNrNJOrO  SSKPJQrQJRrR  SSKSJTrT  SSKUJVrV  SSKWJXrX  SS KYJZrZJ[r[  SS!K\J]r]  SS"K^J_r_J`r`Jara  S#S$KbJcrc  S#S%KdJereJfrfJgrgJhrhJiriJjrjJkrkJlrlJmrmJnrnJoroJprp  S#S&KqJrrr  \(       a  SS'KsJtrtJuru  SS(KvJwrw  SS)KxJyry  S#S*KdJzrz  \" \{5      r|S+ r}S, r~S- r " S. S/\5      r " S0 S1\5      r\<" S2S3S4S59\ " S6 S75      5       5       r\<" S2S3S8S59 " S9 S:\5      5       r " S; S<\5      r " S= S>5      r   SA         SBS? jjrS@ rg)CzIPackage 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)
deprecated)
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softlinkr9   hardlinkallow_softlinksr:   )extracted_package_dirtarget_prefixsource_test_files      /lib/python3.13/site-packages/conda/core/link.pydetermine_link_typere   ^   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)rP   ).0trgtprefix_recordrb   transaction_contexts     rd   	<genexpr>&make_unlink_actions.<locals>.<genexpr>m   s'       'D 	,m]DQQ's   -z{}/{}
conda-metaz.jsonc              3  8   #    U  H  oR                   v   M     g 7fri   )target_short_pathrj   axns     rd   rn   ro      s      VBU3!6!6BU   T)reversec              3  ^   >#    U  H"  n[        TTTU[        R                  5      v   M$     g 7fri   )rP   r<   	directory)rj   drl   rb   rm   s     rd   rn   ro      s7      % !A 	q(BTBT	
 	
 !s   *-)tuplefilesr	   ra   AttributeErrorlinksourcenameversionbuildformatrN   r%   sortedr$   )
rm   rb   rl   unlink_path_actionsra   meta_short_pathremove_conda_meta_actions_all_dall_directoriesdirectory_remove_actionss
   ```       rd   make_unlink_actionsr   k   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S PM     nnU=(       d    S H6  m[        T5      m[        U4S j[	        U 5       5       S 5      nUc  M2  TX4'   M8     [        U5      $ s  snf )N c              3  x   >#    U  H/  u  pUR                   R                  TR                  :X  d  M+  Uv   M1     g 7fri   repodata_recordr   )rj   qpkg_infospecs      rd   rn   'match_specs_to_dists.<locals>.<genexpr>   s4      #CKA++00DII= #Cs   *:	:)rangelenrA   next	enumerater{   )packages_info_to_linkspecs_matched_specsidxr   s        @rd   match_specs_to_distsr      s    #(-B)C#DE#DaT#DME#,-B#C
 
 ?!%M   Fs   A6c                  R    \ rS rSr% S\S'   S\S'   S\S'   S\S'   S\S	'   S\S
'   Srg)PrefixSetup   strrb   ztuple[PackageRecord, ...]unlink_precs
link_precsztuple[MatchSpec, ...]remove_specsupdate_specsneutered_specsr   N__name__
__module____qualname____firstlineno____annotations____static_attributes__r   rf   rd   r   r      s&    ++))''''))rf   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]actionsrb   r   Nr   r   rf   rd   r   r      s    
I  rf   r   z25.9z26.3z;PrefixActions will be renamed to PrefixActionGroup in 26.3.)addendumc                      \ 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)PrefixActions   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
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ri   )r   getattrr   )selffields     rd   __iter__PrefixActions.__iter__   s"     D\E$

++ "   +-N)returnz,Generator[Iterable[ActionGroup], None, None])
r   r   r   r   __doc__r   r   r   r   r   r   rf   rd   r   r      s\      54//33--11002244//350513.3,rf   r   zUse PrefixActions instead.c                  p    \ 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g)PrefixActionGroup   r   r   r   r   r   r   r   r   r   r   r   Nr   r   rf   rd   r   r      s8    44//33--11002244//rf   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   rf   rd   r   r      s=    K((%%**&&**----((**rf   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ri   dist_strrj   precs     rd   rn   1UnlinkLinkTransaction.__init__.<locals>.<genexpr>	  s     K:J$mmoo:J   c              3  @   #    U  H  oR                  5       v   M     g 7fri   r   r   s     rd   rn   r   
  s     I.$mmoo.r   FrE   )rb   prefix_setupsprefix_action_groupsvalueslogrZ   r   r   r   _pfe	_prepared	_verifiedr   debugverify_threadsr   r    verify_executorexecute_threadsexecute_executor)r   setupsstps      rd   __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ri   )r   r   rj   r   s     rd   rn   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ri   )rS   rb   is_environmentr   s     rd   rn   r   !  s.      
2 s(()88::2   02)anyr   r   allr   s    rd   nothing_to_do#UnlinkLinkTransaction.nothing_to_do  sY     
<@<N<N<U<U<W
 
 
 
 
))002
 
	
rf   c                    U R                   c  U R                  5         U R                   R                  (       d  U R                   R                  5         g g ri   )r   _get_pfe	_executedexecuter  s    rd   download_and_extract*UnlinkLinkTransaction.download_and_extract&  s7    99MMOyy""II #rf   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   rm   r?   r   r   _preparerb   r   r   r   r   r   r   )r   r   s     rd   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ri   )r   )rj   acts     rd   rn   /UnlinkLinkTransaction.verify.<locals>.<genexpr>]  s      #EC ..#Es   )r   r  r   dry_runRuntimeErrorsafety_checksr   disabledr   r?   _verifyr   r   r3   r   r5   rm   r   rZ   _verify_pre_link_message	itertoolsr   r   r*   )r   
exceptionss     rd   verifyUnlinkLinkTransaction.verifyE  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 )NFrZ   prelink_messagesc              3  R   #    U  H  oR                  5       (       d  M  Uv   M     g 7fri   )is_file)rj   items     rd   rn   AUnlinkLinkTransaction._verify_pre_link_message.<locals>.<genexpr>n  s      "!=!=s   '	'z**/*z0

The following PRELINK MESSAGES are INCLUDED:

Tz  File z:
  )r   r   ra   listglobis_dirprintr   r   	read_textr>   )r   all_link_groupsflag_pre_linkr  prelink_msg_dirall_msg_subdirmsg_files          rd   r  .UnlinkLinkTransaction._verify_pre_link_messageh  s    "CS\\7786ADVV  " "!0!5!5f!=" N %%''NNLM $ .HGHMM?#67&!3!3!5t<=G !/ # L rf   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  _executer{   r   zipr   r   r5   rm   r  s    rd   r	  UnlinkLinkTransaction.execute|  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$ )NrE   )ProgressiveFetchExtractr   c              3  8   #    U  H  oR                   v   M     g 7fri   )r   r   s     rd   rn   1UnlinkLinkTransaction._get_pfe.<locals>.<genexpr>  s      $.IsNN.Irv   )package_cache_datar7  r   r   setr   from_iterabler   )r   r7  pfer   s       rd   r  UnlinkLinkTransaction._get_pfe  s    ?99 ))C 
 ##5b99DI 
 ## $.2.@.@.G.G.I$ J
 6jAADI
rf   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ri   )getr   )rj   r   prefix_datas     rd   rn   1UnlinkLinkTransaction._prepare.<locals>.<genexpr>  s!      U!;!;s   (+c              3  6   #    U  H  o(       d  M  Uv   M     g 7fri   r   )rj   lpds     rd   rn   rC    s     %R5Jcccc5Js   
	c              3  N   #    U  H  n[         R                  " U5      v   M     g 7fri   )rF   get_entry_to_linkr   s     rd   rn   rC    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ri   )r8   )rj   r   pcrecs      rd   rn   rC    s!      &
F d**Fs   c              3  P   >#    U  H  n[        UR                  T5      v   M     g 7fri   )re   ra   )rj   r   rb   s     rd   rn   rC    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   r4   OSErrorr   r   reprr   rS   r{   r  r1   r4  _get_python_infor   appendr   r   rO   create_actionsrQ   r   _make_link_actions_make_entry_point_actions_make_compile_actionsrL   r   extendrI   rR   rM   r   plugin_managerget_pre_transaction_actionsget_post_transaction_actionsr   ))clsrm   rb   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_actionsrB  s)     `                                     @rd   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$ "&&'="d 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ri   )r   )rj   action_groupsaxngroups      rd   rn   AUnlinkLinkTransaction._verify_individual_level.<locals>.<genexpr>~  s*      *
!4) ) !4rH   z"Verification error in action %s
%s)
r   r<  verifiedr  r   r   r   r   r   r[  )prefix_action_groupall_actionserror_resultsru   error_resultformatted_errors         rd   _verify_individual_level.UnlinkLinkTransaction._verify_individual_level|  s    )) *
!4*
 
 C||::<L|"$'')$|*<lK# 		?V$$\2  rf   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 $ ri   )r   lower)ps    rd   <lambda><UnlinkLinkTransaction._verify_prefix_level.<locals>.<lambda>  s    ff!;!!;rf   c              3  |   #    U  H2  nUR                     H  n[        U[        5      (       d  M  Uv   M      M4     g 7fri   )r   
isinstancerI   )rj   grpru   s      rd   rn   =UnlinkLinkTransaction._verify_prefix_level.<locals>.<genexpr>  s5      
+{{#78 C" +s   )<<	link_typer   c              3  &   #    U  H  nUv   M	     g 7fri   r   )rj   rk  s     rd   rn   r    s      31J !+31s   c                "   > TU R                   ;   $ ri   )r|   )rk  paths    rd   r  r    s    4:;K;K3Krf   keyrE   c              3  h   #    U  H(  oR                   R                  R                  5       v   M*     g 7fri   )package_infor   r   rt   s     rd   rn   r    s*      SWC,,<<EEGGSWr   )r   r   r   r  rP   rs   r   r'  rt  rH   target_short_pathshasattrr  r<   ry   r[  r7   r   r   rS   iter_recordsr-   r  r   r   r   r2   itemsr   r0   r{   )+target_prefix_AND_prefix_action_group_tuplerb   r  r   r   lower_on_winr  ru   unlink_pathscreate_lpr_actionsr  link_paths_dictlink_path_actionr  colliding_prefix_recrl  r  s                   @rd   _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ri   )rb   )rj   setupconda_prefixess     rd   rn   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   rj   r  r   s      rd   rn   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      rd   rn   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ri   r   rj   recs     rd   rn   r  "       *Q?P88?Prv   r   c              3  ^   #    U  H#  nUR                   S :X  d  M  UR                  v   M%     g7fr  )r   depends)rj   rT  s     rd   rn   r  &  s)      "3{{g- #FNN"3s   --c              3  8   #    U  H  oR                   v   M     g 7fri   r  r  s     rd   rn   r  0  r  rv   c              3  8   #    U  H  oR                   v   M     g 7fri   r  r   s     rd   rn   r  1  s      )&Hd		&Hrv   c              3  8   #    U  H  oR                   v   M     g 7fri   r  r   s     rd   rn   r  4  s      +&Jd		&Jrv   '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ri   r@   rj   ss     rd   rn   r  F  s     M1LA9Q<<1Lrv   c              3  D   >#    U  H  oR                  T5      v   M     g 7fri   )match)rj   rz   r   s     rd   rn   r  I  s     9jwwt}}js    aF)r   r   root_prefixr{   r   r  r   r/   conda_prefixrS   r  rb   r   r   r  rA   r   disallowed_packagesr+   r   r7   r4   r
   opencloser5   rX  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                     @@rd   _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ri   r   )rj   excs     rd   rn   0UnlinkLinkTransaction._verify.<locals>.<genexpr>_  s      '
U CUs   	)
r{   r   r  r   mapr  r   r`  r  r  )r   r   r   transaction_exceptionsr  r  s         rd   r  UnlinkLinkTransaction._verify^  s    !& '
,FF}U'
 "

 "))
''++!:: '')
C s!!#&
 ''++!668L8R8R8T
C s!!#&	

 rf   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)rN  Nr   rj   groups     rd   rn   1UnlinkLinkTransaction._execute.<locals>.<genexpr>w  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     rd   rn   r  {  s      
0eJJ&4HEE0r  c              3  H   #    U  H  oR                   S :X  d  M  Uv   M     g7f)rR  Nr  r  s     rd   rn   r  ~  s      
0eJJ)4KEE0r  c              3  H   #    U  H  oR                   S :X  d  M  Uv   M     g7f)rQ  Nr  r  s     rd   rn   r    s      #
0eJJ-4OEE0r  c              3  H   #    U  H  oR                   S :X  d  M  Uv   M     g7f)rT  Nr  r  s     rd   rn   r    s      
0eJJ(4JEE0r  c              3  H   #    U  H  oR                   S :X  d  M  Uv   M     g7f)rS  Nr  r  s     rd   rn   r    s      !
0eJJ,4NEE0r  c              3  H   #    U  H  oR                   S :X  d  M  Uv   M     g7f)rO  Nr  r  s     rd   rn   r    s      #
0eJJ.4PEE0r  c              3  H   #    U  H  oR                   S :X  d  M  Uv   M     g7f)rV  Nr  r  s     rd   rn   r    s      '
0eJJ)4KEE0r  c              3  H   #    U  H  oR                   S :X  d  M  Uv   M     g7f)rW  Nr  r  s     rd   rn   r    s      (
0eJJ'4IEE0r  unlink_link_executezExecuting transactionrP  FrU  TrN  z
pre-unlinkpre-linkrR  c              3  L   >#    U  H  nUR                   T:X  d  M  Uv   M     g 7fri   r  )rj   r  register_groups     rd   rn   r    s&      -%6E ::7 %6r  r   rE   z(An error occurred while {} package '{}'.uninstalling
installingzRolling back transactionr   )!r{   r'  r(   r   r"   r?   r   r  r   _execute_actionsr[  r   rb   r   
run_scriptra   _execute_post_link_actionsr   rG   r   r`  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_actionsrw  rx  r  r  r  install_sider}  	is_unlinkrb   r   composite_agagru   individual_actions	compositerv  re  actionrollback_excsreverse_actionsexcsr  s                                 @rd   r3  UnlinkLinkTransaction._executeu  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)Nrq   rN  z,===> UNLINKING PACKAGE: %s <===
  prefix=%s
r~   z6===> LINKING PACKAGE: %s <===
  prefix=%s
  source=%s
r   )rb   r   r   r   r4   r   r   rZ   r   ra   r   r	  	Exceptionr   r  r   r  r   )r}  rb   r   conda_meta_dirr  re  reverse_excss          rd   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)NrN  zpost-unlink	post-linkT)activater   )
rb   r   r   r  r  r   r  r   r  r   )r}  rb   r  r   re  r  s         rd   r  0UnlinkLinkTransaction._execute_post_link_actionsP  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)
NrN  z3===> REVERSING PACKAGE UNLINK: %s <===
  prefix=%s
r~   z1===> REVERSING PACKAGE LINK: %s <===
  prefix=%s
r   rE   z#action.reverse() error in action %rTexc_info)rb   r   r   r   rZ   r   r   r   r{   r   rw   r  r   r[  )	r}  reverse_from_idxrb   r   r  r  axn_idxr  re  s	            rd   r  &UnlinkLinkTransaction._reverse_actionsj  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_recordri  rj  s      rd   version_and_sp>UnlinkLinkTransaction._get_python_info.<locals>.version_and_sp  sR     (( !EFF4]5J5JKN#0#J#J #+'J"($ "77rf   c              3  ^   #    U  H#  nUR                   R                  S :X  d  M  Uv   M%     g7fpythonNr   )rj   r  s     rd   rn   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  )rj   prefix_rec_to_unlinks     rd   rn   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   rS   rA  )rb   rf  r   r*  linking_new_pythonr)  unlinking_pythons          rd   rZ  &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rf   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)rK   create_file_link_actionscreate_directory_actions)rm   r  rb   requested_link_typerequested_specrequired_quadr7  r9  s           rd   r]  (UnlinkLinkTransaction._make_link_actions  s`      	
 +CC]S#1#J#J$
.?$
 

%

 	
rf   c                4    U UUU4n[         R                  " U6 $ ri   )rJ   r\  )rm   r  rb   r:  r;  r   r<  s          rd   r^  /UnlinkLinkTransaction._make_entry_point_actions  s*      	
 ,::MJJrf   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ri   )r   )rj   r  r  s     rd   rn   >UnlinkLinkTransaction._make_compile_actions.<locals>.<genexpr>  s       !
+2{{l/JBB+   #	#r7  )r   rH   r\  r   )rm   r  rb   r:  r;  r   r<  link_action_groups    `      rd   r_  +UnlinkLinkTransaction._make_compile_actions  sX      	
 ! !
+!
 
 %33
.?.G.G
 	
rf   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ri   )url)rj   r   download_urlss     rd   rn   CUnlinkLinkTransaction._make_legacy_action_groups.<locals>.<genexpr>  s       (%9TXX=VDD%9rC  PREFIXUNLINKLINK)r   r  r   r   r  r   r'  r  cache_actionsrI  r`  r   rb   r   r[  )	r   legacy_action_groupsr   r   r  r   ru   r   rJ  s	           @rd   _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 ri   )rQ  r   rO  rI  r4  r   r  _calculate_change_reportr   r   r   r   _change_report_strr*  r   )	r   rP  ru   rJ  r   r   r   change_reportchange_report_strs	            rd   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      $ )$Nr  z## Package Plan ##
z  environment location: z  removed specs:{}c              3  8   #    U  H  n[        U5      v   M     g 7fri   r   r  s     rd   rn   ;UnlinkLinkTransaction._change_report_str.<locals>.<genexpr>:  s     M/L!s1vv/Lrv      r   z  added / updated specs:c              3  8   #    U  H  n[        U5      v   M     g 7fri   r\  r  s     rd   rn   r]  A  s     :fKea3q66Kerv   c                f    [         R                  SL a  g[         R                  c  U [        :X  a  gU $ )NFr  )r   show_channel_urlsr   )r  s    rd   channel_filt>UnlinkLinkTransaction._change_report_str.<locals>.channel_filtE  s/    ((E1((0Q:O5OHrf   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-----------------rp   )r[  namekeyr   r   )dists_extraslinesfmtr   extralinestrip_globals         rd   print_dists=UnlinkLinkTransaction._change_report_str.<locals>.print_distsL  s    E"CLL334LL334+ .4t||CJJ  MDT"  , Lrf   c                B    U R                  S5      (       a  SU SS  -   $ U $ )Nglobal:z0:   
startswithxs    rd   r  :UnlinkLinkTransaction._change_report_str.<locals>.<lambda>[  s%    all96M6MTAabE\$TST$Trf   c                <    U R                  S5      (       a  U SS  $ U $ )Nrp  rq  rr  rt  s    rd   r  rv  \  s     !,,y*A*A12!Hq!Hrf   z,
The following packages will be downloaded:
r   c                (   > T" U R                   5      $ ri   )rf  )ru  convert_namekeys    rd   r  rv  d  s    9Srf   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::rp   r  )channelr   subdirr   r   r[  r   )unlink_prec	link_precchannel_changesubdir_changeversion_changebuild_changebuilder_leftbuilder_rights           rd   	diff_strs;UnlinkLinkTransaction._change_report_str.<locals>.diff_strsr  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<("''-*@@@rf   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     rd   
add_single<UnlinkLinkTransaction._change_report_str.<locals>.add_single  s2    ;"$)#2.4NN;ABrf   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      rd   
add_double<UnlinkLinkTransaction._change_report_str.<locals>.add_double  sP    ;"$)#2.48}r!#CR=3.NNK9UVrf   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  rf  r~  r  r  r  r  r  rl  s
          rd   summarize_doubleBUnlinkLinkTransaction._change_report_str.<locals>.summarize_double  s]    !"5?)<)E&&/&G# ) k388I,>,>#?"@A @rf   z/
The following NEW packages will be INSTALLED:
r  z)
The following packages will be REMOVED:
rp   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   sizerC   r   r|  canonical_namer`  r   	record_idr   r  r   r   r   r   r   r   r   r   )r   rV  rb  rm  disp_lsttotal_download_bytesr   r  rj  schannelr  r  rf  r  r~  r  r  ry  r  rl  s                  @@@@@rd   rU  (UnlinkLinkTransaction._change_report_str1  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!!rf   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 ri   )rf  r;  r=   r   build_numberr|  r   r}  r   rI  r   )r   r   r   rJ  r   r   r   
unlink_maplink_mapunlink_namekeyslink_namekeysrf  r   r   r   r   r   r   common_namekeysr~  r  	unlink_volink_vobuild_number_increasesr   rV  s                             rd   rT  .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   rm   r   N)r2  )"r   r   r   r   r   propertyr  r
  r  r"   r  r  r	  r  classmethodr  staticmethodr  r  r  r  r3  r  r  r  rZ  r]  r^  r_  rQ  rX  rU  rT  r   r   rf   rd   r   r      ss   
B 
 
 2 34  5 D(8   ]
 ]
~  . \ \| h% h%T.q)f % %N  2  B .	&. .` 
 
2 K K  
 
*$<$*W"r ? ?rf   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_PREFIXrL  PKG_NAMEPKG_VERSIONPKG_BUILDNUMPATHr  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   r6   osenvironr\   r  r   readr  r   r   warningswarnr   r   rB   KeyErrorrZ   rD   r   r  devsysplatformr   r  pathsepr
   rA  r;   rcmessagesstdoutstderrr.   warningr5   )r   r   r  
env_prefixr  r  r  is_old_noarchfscript_textre  script_callercomspeccommand_args
shell_pathresponsemmessages                     rd   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   r6   r  r  r  r  r*  r   jsonr  r  r  r5   )r   r  fir  s       rd   r  r    s    (D	$<<drGGI1h'')AaGLLcjjcjjI  	dd  	ds#   C A1B;	C ;
C	C C)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   r  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(   deprecationsr)   r  r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   gateways.diskr4   gateways.disk.deleter5   gateways.disk.readr6   r7   r8   gateways.disk.testr9   r:   gateways.subprocessr;   models.enumsr<   models.versionr=   	reportersr>   r?   resolverA   utilsrB   rC   rD   r:  rF   path_actionsrG   rH   rI   rJ   rK   rL   rM   rN   rO   rP   rQ   rR   rB  rS   collections.abcrT   rU   models.package_inforV   models.recordsrW   rX   r   r   re   r   r   r   r   r   r   r   r   r  r  r   rf   rd   <module>r     s   P " )  	 
  #   2 2   + , @ @ %  S S " 4   , %   $ ( C C 2 # ) /  B B 0    $31.$
+\ "** **  

J
 , , ,B FF%AB	0
 	0 C	0
+: 
+O Oj( SS S 	S
 S 
Slrf   