
    <Bh!                       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@JArAJBrBJCrCJDrDJErEJFrF  SSKGJHrH  SSKIJJrJ  SSKKJLrLJMrMJNrN  SSKOJPrPJQrQ  SSKRJSrS  SSKTJUrU  SSKVJWrW  SS KXJYrYJZrZ  SS!K[J\r\  SS"K]J^r^J_r_J`r`  S#S$KaJbrb  S#S%KcJdrdJereJfrfJgrgJhrhJiriJjrjJkrkJlrlJmrmJnrnJoro  S#S&KpJqrqJrrr  \(       a  SS'KsJtrtJuru  SS(KvJwrw  SS)KxJyry  S#S*KcJzrz  \" \{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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python_record_for_prefix)	GeneratorIterable)PackageInfo)PackageRecord)Actionc                z   [        U SS5      n[        R                  (       a  [        R                  $ [        R
                  (       a  [        R                  $ [        X!5      (       a  [        R                  $ [        R                  (       a   [        X!5      (       a  [        R                  $ [        R                  $ )Ninfoz
index.json)r   r   always_copyr;   copyalways_softlinksoftlinkr8   hardlinkallow_softlinksr9   )extracted_package_dirtarget_prefixsource_test_files      /lib/python3.13/site-packages/conda/core/link.pydetermine_link_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)rO   ).0trgtprefix_recordrb   transaction_contexts     rd   	<genexpr>&make_unlink_actions.<locals>.<genexpr>o   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   )rO   r;   	directory)rj   drl   rb   rm   s     rd   rn   ro      s7      % !A 	q(BTBT	
 	
 !s   *-)tuplefilesr	   ra   AttributeErrorlinksourcenameversionbuildformatrM   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   m   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 H5  m[        T5      m[        U4S j[	        U 5      5       S 5      nUc  M1  TX4'   M7     [        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lenr@   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   A4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        Hc  n[        R                  SUR                   SR                  S UR                  5       5      SR                  S UR                  5       5      5        Me     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   FrD   )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   )rR   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   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       Nu= f! [,         a    [        U R                  S   5        e f = f)NTz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safety_checksr   disabledr   r>   _verifyr   r   r2   r   r4   rm   r   rZ   _verify_pre_link_message	itertoolsr   r   r*   )r   
exceptionss     rd   verifyUnlinkLinkTransaction.verifyG  s   ~~LLN??""  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   ..D:D6D:A E D77D::
E$E/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  Mh  [        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>o  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_messagei  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                h   U R                   (       d  U R                  5         [        R                  (       a   e U R	                  [        [        [        [        U R                  R                  5       6 6 6 5      5        [        U R                  S   5        g ! [        U R                  S   5        f = f)Nr  )r   r  r   r  _executer{   r   zipr   r   r4   rm   r  s    rd   r	  UnlinkLinkTransaction.execute}  s    ~~KKM??""	8 MMeUC)B)B)I)I)K$LMNO $**:67E$**:67s   AB B1c                $   SSK Jn  U R                  b  U R                  nU$ U R                  (       d  U" S5      =U l        nU$ [	        [
        R                  " S U R                  R                  5       5       5      5      nU" U5      =U l        nU$ )NrD   )ProgressiveFetchExtractr   c              3  8   #    U  H  oR                   v   M     g 7fri   )r   r   s     rd   rn   1UnlinkLinkTransaction._get_pfe.<locals>.<genexpr>  s      $.IsNN.Irv   )package_cache_datar6  r   r   setr   from_iterabler   )r   r6  pfer   s       rd   r  UnlinkLinkTransaction._get_pfe  s    ?99 ))C 
 ##5b99DI 
 ## $.2.@.@.G.G.I$ J
 6jAADI
rf   c                P  ^^( [        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   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[.        R"                  " UUTU5      T5      n UR                  U 5        / UR0                  QUR0                  QUR0                  QU R0                  Q7n!UR3                  [4        R"                  " UUTUUU!5      5        GM6     [        SS UT5      /n"[6        R"                  " UTUUU5      n#[9        UT5      4n$[        SS U$U#-   T5      /n%[:        R<                  R?                  UTUUUUU5      n&[:        R<                  RA                  UTUUUUU5      n'[C        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   rB    s     %R5Jcccc5Js   
	c              3  N   #    U  H  n[         R                  " U5      v   M     g 7fri   )rE   get_entry_to_linkr   s     rd   rn   rB    s"      '
AK..t44   #%c              3  <   #    U  H  u  p[        X5      v   M     g 7fri   )r7   )rj   r   pcrecs      rd   rn   rB    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   rB    s(      
1   > >NN1s   #&target_python_versiontarget_site_packages_short_pathz	.condatmpr  unlinkremove_menus
unregisterr   r~   entry_pointcompile
make_menusrecordregisterinitialfinal)r   r   )"r   r3   OSErrorr   r   reprr   rR   r{   r  r3  _get_python_infor   appendr   r   rN   create_actionsrP   r   _make_link_actions_make_entry_point_actions_make_compile_actionsrK   r   extendrH   rQ   rL   r   plugin_managerget_pre_transaction_actionsget_post_transaction_actionsr   ))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_actionsrA  s)     `                                     @rd   r  UnlinkLinkTransaction._prepare  s    ]##& !/ U U !&%R5J%R R!& '
AK'
 "
 )**** % &
":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   M) )
N%3-N  N%c                B   [         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) ) !4rG   z"Verification error in action %s
%s)
r   r;  verifiedr  r   r   r   r   r   rZ  )prefix_action_groupall_actionserror_resultsru   error_resultformatted_errors         rd   _verify_individual_level.UnlinkLinkTransaction._verify_individual_levelz  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Hv  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My     GM     UR7                  5        HF  u  mn[9        U5      S:  d  M  U
R                  [;        T[=        S	 U5       5      [2        5      5        MH     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   
isinstancerH   )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   rj  s     rd   rn   r    s      31J !+31s   c                "   > TU R                   ;   $ ri   )r|   )rj  paths    rd   r  r    s    4:;K;K3Krf   keyrD   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  rO   rs   r   r&  rs  rG   target_short_pathshasattrr  r;   ry   rZ  r6   r   r   rR   iter_recordsr-   r  r   r   r   r1   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_recrk  r  s                   @rd   _verify_prefix_level*UnlinkLinkTransaction._verify_prefix_level  sZ    .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"".,.	 !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   )I6I6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c_  [        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-     M@     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   rS  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  .  r  rv   c              3  8   #    U  H  oR                   v   M     g 7fri   r  r   s     rd   rn   r  /  s      )&Hd		&Hrv   c              3  8   #    U  H  oR                   v   M     g 7fri   r  r   s     rd   rn   r  2  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  D  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  G  s     9jwwt}}js    aF)r   r   root_prefixr{   r   r  r   r/   conda_prefixrR   r  rb   r   r   r  r@   r   disallowed_packagesr+   r   r6   r3   r
   opencloser4   rW  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) $  &+ +&7&D&D&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,A-LAL-.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                0  ^ [        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Ho  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(       ao  UR#                  U5        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                  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MQ  U H  n[        R                  U5        M     GMr     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)rM  Nr   rj   groups     rd   rn   1UnlinkLinkTransaction._execute.<locals>.<genexpr>u  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  y  s      
0eJJ&4HEE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)4KEE0r  c              3  H   #    U  H  oR                   S :X  d  M  Uv   M     g7f)rP  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)rS  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)rR  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)rN  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)rU  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)rV  Nr  r  s     rd   rn   r    s      (
0eJJ'4IEE0r  unlink_link_executezExecuting transactionrO  FrT  TrM  z
pre-unlinkpre-linkrQ  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   rD   z(An error occurred while {} package '{}'.uninstalling
installingzRolling back transactionr   )!r{   r&  r(   r   r"   r>   r   r  r   _execute_actionsrZ  r   rb   r   
run_scriptra   _execute_post_link_actionsr_  r   rF   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_actionsrv  rw  r  r  r  install_sider|  	is_unlinkrb   r   composite_agagru   individual_actions	compositeru  rd  actionrollback_excsreverse_actionsexcsr  s                                 @rd   r2  UnlinkLinkTransaction._executes  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#$++N; +:.*9BRZZcCZC/ + . .(F!3)I )// +$-$(%.K$-$;$;	!"  $4488->>  3&--c2	  (- -%6- ($
 %53DDXN3&--c2 %5 "#| ):H1BB8L ):g<n  0044)::,C s"))#.C 6P 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 !2] 4X11t.q 65v A@{ 4X3W11s   *V6U63U;CUAU43U' UA,U7AU#U+AUUB&U6?AU%A8U6<VU
U"U6%
U3/U66
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   rM  z,===> UNLINKING PACKAGE: %s <===
  prefix=%s
r~   z6===> LINKING PACKAGE: %s <===
  prefix=%s
  source=%s
r   )rb   r   r   r   r3   r   r   rZ   r   ra   r   r	  	Exceptionr   r  r   r   r   )r|  rb   r   conda_meta_dirr  rd  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)NrM  zpost-unlink	post-linkT)activater   )
rb   r   r   r  r  r   r  r   r   r   )r|  rb   r  r   rd  r  s         rd   r  0UnlinkLinkTransaction._execute_post_link_actionsL  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)
NrM  z3===> REVERSING PACKAGE UNLINK: %s <===
  prefix=%s
r~   z1===> REVERSING PACKAGE LINK: %s <===
  prefix=%s
r   rD   z#action.reverse() error in action %rTexc_info)rb   r   r   r   rZ   r   r   r  r{   r   rw   r  r   rZ  )	r|  reverse_from_idxrb   r   r  r  axn_idxr  rd  s	            rd   r   &UnlinkLinkTransaction._reverse_actionsf  s    ..   ==H$HHG ]]f$HHE 
a&..O&../E1AA1EFO'i.H(IJOG%   K   %		?RV	W!!!$$%s   C$$
D.&DDc                P   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      nU(       a5  [        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   e[        U R                   5      nU R                  nUc  [        U5      nX4$ ri   )r   r&   python_site_packages_pathr'   )python_recordrh  ri  s      rd   version_and_sp>UnlinkLinkTransaction._get_python_info.<locals>.version_and_sp  sL     ((((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: 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   )rb   re  r   r(  linking_new_pythonr'  unlinking_pythons          rd   rY  &UnlinkLinkTransaction._get_python_info  s    	8 "$9
 
 .>>MII=m_MN!-000?#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)rJ   create_file_link_actionscreate_directory_actions)rm   r  rb   requested_link_typerequested_specrequired_quadr5  r7  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   )rI   r[  )rm   r  rb   r8  r9  r   r:  s          rd   r]  /UnlinkLinkTransaction._make_entry_point_actions  s*      	
 ,::MJJrf   c                x   ^ 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+   #	#r5  )r   rG   r[  r   )rm   r  rb   r8  r9  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  az  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%9rA  PREFIXUNLINKLINK)r   r  r   r   r  r   r&  r  cache_actionsrG  r_  r   rb   r   rZ  )	r   legacy_action_groupsr   r   r  r   ru   r   rH  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   )rO  r   rM  rG  r3  r   r  _calculate_change_reportr   r   r   r   _change_report_strr)  r   )	r   rN  ru   rH  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           
     8  ^^^^^ SS/mTR                  SUR                   35        TR                  S5        UR                  (       aR  TR                  SR                  [	        [        S UR                  5       5      SS95      5        TR                  S5        UR                  (       aF  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>5  s     M/L!s1vv/Lrv      r   z  added / updated specs:c              3  8   #    U  H  n[        U5      v   M     g 7fri   rZ  r  s     rd   rn   r[  <  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_filt@  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   )rZ  namekeyr   r   )dists_extraslinesfmtr   extralinestrip_globals         rd   print_dists=UnlinkLinkTransaction._change_report_str.<locals>.print_distsG  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>V  s%    all96M6MTAabE\$TST$Trf   c                <    U R                  S5      (       a  U SS  $ U $ )Nrn  ro  rp  rr  s    rd   r  rt  W  s     !,,y*A*A12!Hq!Hrf   z,
The following packages will be downloaded:
r   c                (   > T" U R                   5      $ ri   )rd  )rs  convert_namekeys    rd   r  rt  _  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   rZ  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_strsm  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   rZ  )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  rd  r|  r}  r  r  r  r  rj  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:

)rZ  r   r   r   r!   r   r   r   sizerB   r   rz  canonical_namer_  r   	record_idr   r  r   r   r   r   r   r   r   r   )r   rT  r`  rk  disp_lsttotal_download_bytesr   r  rh  schannelr  r  rd  r}  r|  r  r  rw  r  rj  s                  @@@@@rd   rS  (UnlinkLinkTransaction._change_report_str,  s   -.1-2F2F1GHIr((NN$++M}/L/LMMVW NN2%%NN*8F:f=KeKe:f4fop+q*rs NN2		 UH$$NNKLH#$ ))/S yyT!22$,$'DLL,G,G(HITH_,E. NN;x01NN-.NN8mkBV6W&WWX	A4	C
	W	 ""NNNO!-"9"9O)33G<	 ) **,-Qsxx	8J8J/K.LM P &&NNHI!-"="=?S+99'B))*!K,?,?+@+BSBSATU T &&NNHI]88/J))NN2 ];;_M))NNKL];;_M&&NNHI]88/Jrryy!!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   )rd  r:  r<   r   build_numberrz  r   r{  r   rG  r   )r   r   r   rH  r   r   r   
unlink_maplink_mapunlink_namekeyslink_namekeysrd  r   r   r   r   r   r   common_namekeysr|  r}  	unlink_volink_vobuild_number_increasesr   rT  s                             rd   rR  .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"   F2F7F<'G=GG)r   r   r   r   r   r   rm   r   N)r0  )"r   r   r   r   r   propertyr  r
  r  r"   r  r  r	  r  classmethodr  staticmethodr  r  r  r  r2  r  r  r   rY  r\  r]  r^  rO  rV  rS  rR  r   r   rf   rd   r   r      ss   
B 
 
 2 34 5B(8  \
 \
|  . \ \| h% h%T.o)b % %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_PREFIXrJ  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   r5   osenvironr\   r  r   readr  r   r   warningswarnr   r   rA   KeyErrorrZ   rC   r   r  devsysplatformr   r  pathsepr
   r@  r:   rcmessagesstdoutstderrr.   warningr4   )r   r   r  
env_prefixr  r  r  is_old_noarchfscript_textrd  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   r5   r  r  r  r  r)  r   jsonr  r  r  r4   )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   gateways.diskr3   gateways.disk.deleter4   gateways.disk.readr5   r6   r7   gateways.disk.testr8   r9   gateways.subprocessr:   models.enumsr;   models.versionr<   	reportersr=   r>   resolver@   utilsrA   rB   rC   r9  rE   path_actionsrF   rG   rH   rI   rJ   rK   rL   rM   rN   rO   rP   rQ   rA  rR   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
+: 
+H H\( SS S 	S
 S 
Slrf   