
    \Zi                       S r SSKJr  SSKrSSKrSSKJrJr  SSKJ	r	  SSK
Jr  SSKJrJrJrJrJrJr  SSKJr  SS	KJr  S
SKJrJr  S
SKJr  S
SKJrJr  S
SKJ 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+J,r,J-r-J.r.J/r/  S
SK0J1r1  S
SK2J3r3J4r4  S
SK5J6r6J7r7J8r8J9r9J:r:  S
SK;J<r<  S
SK=J>r>J?r?J@r@JArAJBrBJCrCJDrDJErE  S
SKFJGrG  S
SKHJIrI  S
SKJJKrKJLrLJMrMJNrN  S
SKOJPrPJQrQ  S
SKRJSrS  S
SKTJUrU  S
SKVJWrWJXrXJYrY  S
SKZJ[r[  S
S K\J]r]J^r^J_r_J`r`JaraJbrb  S!S"KcJdrdJereJfrf  S!S#KgJhrhJiri  S!S$KjJkrk  \(       a  SS%KlJmrm   \n  \" \q5      rr\R                  " S&\R                  5      ruS'rv " S( S)\5      rw " S* S+\w5      rx " S, S-\w5      ry " S. S/\x5      rz " S0 S1\z5      r{ " S2 S3\{5      r| " S4 S5\|5      r} " S6 S7\{5      r~ " S8 S9\y5      r " S: S;\5      r " S< S=\{5      r " S> S?\{5      r " S@ SA\{5      r " SB SC\x5      r " SD SE\z5      r " SF SG\5      r " SH SI\5      r " SJ SK\5      r " SL SM\x5      r " SN SO\x5      r " SP SQ\x5      rg! \o a    \prn GNf = f)RzJAtomic actions that make up a package installation or removal transaction.    )annotationsN)ABCabstractmethod)chain)	getLogger)basenamedirnamegetsizeisdirisfilejoin)TYPE_CHECKING)uuid4   )CONDA_PACKAGE_ROOT
CondaError)dals)CONDA_TEMP_EXTENSIONWINDOWS_LAUNCHER_STUB_PATH)context)on_win)TRACE)dashlist)BIN_DIRECTORYget_leaf_directoriesget_python_noarch_target_pathget_python_short_pathparse_entry_point_defpyc_pathurl_to_pathwin_path_ok)json)has_platformpath_to_url)CondaUpgradeErrorCondaVerificationErrorNotWritableErrorPaddingErrorSafetyError)download)compile_multiple_pyccopycreate_hard_link_or_copycreate_linkcreate_python_entry_point	make_menumkdir_pwrite_as_json_to_file)rm_rf)make_writable)compute_sumislinklexistsread_index_json)backoff_renametouch)History)Channel)LinkType
NoarchTypePathEnum)	MatchSpec)LinkPackageCacheRecordPackageRecord
PathDataV1	PathsDataPrefixRecord   )get_user_environments_txt_fileregister_envunregister_env)_PaddingErrorupdate_prefix)
PrefixData)Iterablez^menu/.*\.json$)transaction_contextpackage_info	hold_pathc                      \ rS rSrSrSr       S             SS jjr\SS j5       r\SS j5       r	\SS j5       r
\SS	 j5       r\S
 5       rS rSrg)Action[   a  Base class for path manipulation actions, including linking, unlinking, and others.

Pre and post-transaction plugins should inherit this class to implement their
own verification, execution, reversing, and cleanup steps. These methods are
guaranteed to be called in the following order:

    1. ``verify``
    2. ``execute``
    3. ``reverse`` (only if ``execute`` raises an exception)
    4. ``cleanup``


:param transaction_context: Mapping between target prefixes and PrefixActionGroup
    instances
:param target_prefix: Target prefix for the action
:param unlink_precs: Package records to be unlinked
:param link_precs: Package records to link
:param remove_specs: Specs to be removed
:param update_specs: Specs to be updated
:param neutered_specs: Specs to be neutered
FNc                X    Xl         X l        X0l        X@l        XPl        X`l        Xpl        g N)rO   target_prefixunlink_precs
link_precsremove_specsupdate_specsneutered_specs)selfrO   rW   rX   rY   rZ   r[   r\   s           7lib/python3.13/site-packages/conda/core/path_actions.py__init__Action.__init__t   s-     $7 *($((,    c                    g)a  Carry out any pre-execution verification.

Should set self._verified = True upon success.

:return: On failure, this function should return (not raise!) an exception
object. At the end of the verification run, all errors will be raised as a
CondaMultiError.
N r]   s    r^   verifyAction.verify       ra   c                    g)z~Execute the action.

Called after ``self.verify()``. If this function raises an exception,
``self.reverse()`` will be called.
Nrc   rd   s    r^   executeAction.execute   rg   ra   c                    g)zZReverse what was done in execute.

Called only if ``self.execute()`` raises an exception.
Nrc   rd   s    r^   reverseAction.reverse   s     	ra   c                    g)z#Carry out any post-execution tasks.Nrc   rd   s    r^   cleanupAction.cleanup   s     	ra   c                    U R                   $ rV   	_verifiedrd   s    r^   verifiedAction.verified   s    ~~ra   c                    S [        U 5      R                  5        5       nSR                  U R                  R                  SR                  U5      5      $ )Nc              3  N   #    U  H  u  pU[         ;  d  M  U S U< 3v   M     g7f)=N)REPR_IGNORE_KWARGS).0keyvalues      r^   	<genexpr>"Action.__repr__.<locals>.<genexpr>   s/      
0
,, se1UI0s   %%z{}({})z, )varsitemsformat	__class____name__r   )r]   argss     r^   __repr__Action.__repr__   sC    
"4j..0

 t~~66		$HHra   )rY   r\   rZ   rW   rO   rX   r[   )NNNNNNN)rO   zdict[str, str] | NonerW   z
str | NonerX   Iterable[PackageRecord] | NonerY   r   rZ   Iterable[MatchSpec] | Noner[   r   r\   r   )returnzException | None)r   None)r   
__module____qualname____firstlineno____doc__rs   r_   r   re   ri   rl   ro   propertyrt   r   __static_attributes__rc   ra   r^   rS   rS   [   s    , I 6:$(7;59373759-2- "- 5	-
 3- 1- 1- 3-$          Ira   rS   c                  .    \ rS rSr\\S 5       5       rSrg)
PathAction   c                    [        5       erV   NotImplementedErrorrd   s    r^   target_full_pathPathAction.target_full_path        "##ra   rc   N)r   r   r   r   r   r   r   r   rc   ra   r^   r   r          $  $ra   r   c                  .    \ rS rSr\\S 5       5       rSrg)MultiPathAction   c                    [        5       erV   r   rd   s    r^   target_full_paths!MultiPathAction.target_full_paths   r   ra   rc   N)r   r   r   r   r   r   r   r   rc   ra   r^   r   r      r   ra   r   c                  :    \ rS rSrS r\S 5       r\S 5       rSrg)PrefixPathAction   c                (    Xl         X l        X0l        g rV   )rO   rW   target_short_path)r]   rO   rW   r   s       r^   r_   PrefixPathAction.__init__   s    #6 *!2ra   c                    U R                   4$ rV   r   rd   s    r^   target_short_paths#PrefixPathAction.target_short_paths   s    &&((ra   c                h    U R                   U R                  p!Ub  Ub  [        U[        U5      5      $ g rV   )rW   r   r   r!   )r]   trgtshrt_pths      r^   r   !PrefixPathAction.target_full_path   s5    ++T-C-Ch 4k(344ra   )rW   r   rO   N)	r   r   r   r   r_   r   r   r   r   rc   ra   r^   r   r      s/    3
 ) )  ra   r   c                  D   ^  \ rS rSrU 4S jrS rS r\S 5       rSr	U =r
$ )CreateInPrefixPathAction   c                J   > [         TU ]  XU5        X l        X0l        X@l        g rV   )superr_   rP   source_prefixsource_short_path)r]   rO   rP   r   r   rW   r   r   s          r^   r_   !CreateInPrefixPathAction.__init__   s(     	,=NO(*!2ra   c                    SU l         g NTrr   rd   s    r^   re   CreateInPrefixPathAction.verify   	    ra   c                    g rV   rc   rd   s    r^   ro    CreateInPrefixPathAction.cleanup       ra   c                z    U R                   U R                  p!U(       a  U(       a  [        U[        U5      5      $ S $ rV   )r   r   r   r!   )r]   prfxr   s      r^   source_full_path)CreateInPrefixPathAction.source_full_path   s0    ++T-C-Ch48XtD+h/0O4Ora   )rs   rP   r   r   )r   r   r   r   r_   re   ro   r   r   r   __classcell__r   s   @r^   r   r      s(    3 P Pra   r   c                  j   ^  \ rS rSr\S 5       r\S 5       r\S 5       rU 4S jrS r	S r
S rS	rU =r$ )
LinkPathAction   c                   ^^^^^^ U4S jmUUUUU4S jm[        U4S jTR                  R                   5       5      $ )Nc                >  > U R                   [        R                  :X  a  [        R                  nSu  p#OfU R
                  (       a)  [        R                  nU R
                  nU R                  nO,U R                  (       a  [        R                  nSu  p#OTnSu  p#XU4$ )N) N)	path_typer?   softlinkr=   r,   prefix_placeholder	file_modeno_link)source_path_data	link_typeprefix_placehoderr   requested_link_types       r^   get_prefix_replaceCLinkPathAction.create_file_link_actions.<locals>.get_prefix_replace   s    ))X->->>$MM	/7,!9!44$MM	$4$G$G!,66	!))$MM	/7,!9/	/7,!::ra   c                L  > TR                   R                  nUc2  TR                  b%  TR                  R                  nUb  UR                  nU[        R
                  :X  a-  TS   nUc  [        ST
 35      e[        U R                  U5      nO8Ub  U[        R                  :X  a  U R                  nO[        [        S5      5      eT" U 5      u  pEnU(       a(  [        TTTR                  U R                  T
UT	UUU 5
      $ [        TTTR                  U R                  T
UUU 5      $ )Ntarget_site_packages_short_pathzgUnable to determine python site-packages dir in target_prefix!
Please make sure python is installed in zv
                The current version of conda is too old to install this package.
                Please update conda.)repodata_recordnoarchpackage_metadatatyper>   pythonr   r   pathgenericr%   r   PrefixReplaceLinkActionextracted_package_dirr   )r   r   sp_dirr   r   placeholderfmoder   rP   r   rW   rO   s          r^   make_file_link_actionFLinkPathAction.create_file_link_actions.<locals>.make_file_link_action  sQ   !1188F~,"?"?"K%66==%#[[F***,-NO>$22?B 
 %B$))6%! 6Z-?-?#?$4$9$9!'(  -??O,P)IE.'  66$))!%'$  &'  66$))!%$	 	ra   c              3  4   >#    U  H  nT" U5      v   M     g 7frV   rc   )rz   spir   s     r^   r}   :LinkPathAction.create_file_link_actions.<locals>.<genexpr>G  s      
2O3!#&&2Os   )tuple
paths_datapaths)clsrO   rP   rW   r   r   r   s    ````@@r^   create_file_link_actions'LinkPathAction.create_file_link_actions   s;    	;"7	 7	r  
2>2I2I2O2O
 
 	
ra   c                ^   ^ ^^^ [        S U 5       5      n[        U UUU4S jU 5       5      $ )Nc              3  8   #    U  H  oR                   v   M     g 7frV   r   )rz   axns     r^   r}   :LinkPathAction.create_directory_actions.<locals>.<genexpr>T  s      0
->c!!->s   c              3  ^   >#    U  H"  nT" TTS S TU[         R                  S 5      v   M$     g 7frV   )r=   	directory)rz   directory_short_pathr   rP   rW   rO   s     r^   r}   r   W  sE      
 )9$ #$""	 	 )9s   *-)r   r   )r   rO   rP   rW   r   file_link_actionsleaf_directoriess   ````   r^   create_directory_actions'LinkPathAction.create_directory_actionsK  s;     0 0
->0
 
  
 )9
 
 	
ra   c           
     @   [         R                  [        ;  a.  [        S[         R                  < S[	        [        5       S35      e[
        n[        [         R                     n[        U5      u  n  n	SU S3n
[        U
[        R                  S9nU " UUUUUU
UU5      $ )Nz2Windows entry point stub not available for subdir z. Supported: .zScripts/z.exe_pathr   )
r   subdirr   r   r   r   r   rD   r?   windows_python_entry_point_exe)r   rO   rP   rW   r   entry_point_defsource_directoryr   command_r   r   s               r^   ,create_python_entry_point_windows_exe_action;LinkPathAction.create_python_entry_point_windows_exe_actione  s     >>!;;%DW^^DV W&'ABC1F  .6w~~F-o>A&wit4%#==
 	
 		
ra   c	                b   > [         T	U ]  UUUUUU5        Xpl        SU l        Xl        S U l        g NF)r   r_   r   _execute_successfulr   prefix_path_data)
r]   rO   rP   r   r   rW   r   r   r   r   s
            r^   r_   LinkPathAction.__init__  sA     	!	
 ##(  0 $ra   c                   U R                   [        R                  :w  at  [        U R                  5      (       dZ  [        [        SU R                  R                  R                   SU R                  R                   SU R                   S35      5      $ U R                  n UR                  nU[        R                   ;   a  S nU R                   [        R                  :X  a	  S U l        GOU R                   [        R$                  :X  a=  [&        R(                  " U R                  U=(       d    [        R$                  S9U l        GO;U R                   [        R*                  :X  a[  UR                  [        R$                  :X  a=  [&        R(                  " U R                  U=(       d    [        R$                  S9U l        GOUR                  [        R,                  :X  Gat   UR.                  nSnU(       az  [1        U R                  5      nX4:w  a`  [3        [        SU R                  R                  R                   SU R                  R                   SU R                   S	U S
U S35      5      $  UR4                  nU(       a  X4:X  a  [6        R8                  (       a  [;        U R                  S5      nU(       ae  XV:w  a`  [3        [        SU R                  R                  R                   SU R                  R                   SU R                   SU SU S35      5      $ [&        R(                  " UUUU=(       d    [        R,                  S9U l        O/UR                  [        R<                  :X  a  Xl        O
[?        5       eSU l         g ! [         a    S n GNf = f! [         a    S n GNf = f! [         a    S n GNCf = f)Nz
            The package for z located at z0
            appears to be corrupted. The path 'zM'
            specified in the package manifest cannot be found.
            )r   r   z%
                    The package for z8
                    appears to be corrupted. The path 'zR'
                    has an incorrect size.
                      reported size: z* bytes
                      actual size: z bytes
                    sha256zR'
                    has a sha256 mismatch.
                    reported sha256: z$
                    actual sha256: z
                    )r  sha256_in_prefixr   T)!r   r=   r   r7   r   r&   r   rP   r   namer   r   r   r   AttributeErrorr?   basic_typesr  r   rD   from_objectsr,   hardlinksize_in_bytesr
   r)   r  r   extra_safety_checksr5   r   r   rs   )r]   r   source_path_typereported_size_in_bytessource_size_in_bytesreported_sha256source_sha256s          r^   re   LinkPathAction.verify  s   >>X///!!9
 9
 *!..>>CCDLQUQbQbQxQxPy z0040F0F/G H   00	$/99 x333#>>X///$(D!^^x000$.$;$;%%*?h.?.?%D!
 NNhmm+ **h.?.??$.$;$;%%*?h.?.?%D!
 ''8+<+<<.)9)G)G& $% %'.t/D/D'E$)A&!%%)%6%6%F%F%K%K$LLY]YjYj  ZA  ZA  YB B88<8N8N7O P&&<%= >$$8#9 :
 
'"2"9"9
 %*B// +D,A,A8 L"'G&!%%)%6%6%F%F%K%K$LLY]YjYj  ZA  ZA  YB B88<8N8N7O P&&5%6 7$$1? 3
 
 %/$;$; &!0*?h.?.?	%D! ''8+R+RR$4!%'']  	$#	$2 " .)-&.( " '"&'s6    N N -N- NNN*)N*-N=<N=c                    [         R                  [        SU R                  U R                  5        [	        U R                  U R                  U R
                  [        R                  S9  SU l        g )Nlinking %s => %sforceT)	logr   r   r   r.   r   r   r  r  rd   s    r^   ri   LinkPathAction.execute  sS    )4+@+@$BWBWX!!!!NN--		
 $( ra   c                    U R                   (       aU  [        R                  [        SU R                  5        [	        U R
                  5      (       d  [        U R
                  SS9  g g g )Nzreversing link creation %sTclean_empty_parents)r  r  r   rW   r   r   r3   rd   s    r^   rl   LinkPathAction.reverse	  sM    ##GGE79K9KL..//d++F 0 $ra   )r  rs   r   r  r   )r   r   r   r   classmethodr   r   r  r_   re   ri   rl   r   r   r   s   @r^   r   r      s^    O
 O
b 
 
2 
 
@%0_B(G Gra   r   c                  :   ^  \ rS rSrU 4S jrU 4S jrS rSrU =r$ )r   i  c           
        > U[         R                  :X  a  [         R                  O[         R                  n[        TU ]  UUUUUUUU
5        Xl        Xl        S U l        g rV   )r=   r,   r  r   r_   r   r   intermediate_path)r]   rO   rP   r   r   rW   r   r   r   r   r   r   s              r^   r_    PrefixReplaceLinkAction.__init__  s[     &/(--%?HMMXEVEV	!		
 #5"!%ra   c                  > [         TU ]  5       nU(       a  U$ [        U R                  5      (       a=  [        R	                  [
        SU R                  5        [        SU R                   35      e[        U R                  S   5        [        U R                  S   [        [        5       5      5      U l        [        R	                  [
        SU R                  U R                  5        [        U R                  U R                  [        R                  5        [!        U R                  5         [        R	                  [
        SU R"                  5        [%        U R                  [&        R(                  =(       d    U R*                  U R,                  U R.                  U R0                  R2                  R4                  S9  [=        U R                  S5      n[>        R@                  " U RB                  U R.                  [D        RF                  U R,                  US9U l!        S	U l$        g ! [6         a5    [9        U R"                  U R,                  [;        U R,                  5      5      ef = f)
Nz6ignoring prefix update for symlink with source path %sz4Ignoring prefix update for symlink with source path temp_dirzcopying %s => %szrewriting prefixes in %s)r   r  )r   r   r   r  T)%r   re   r6   r   r  r   RuntimeErrorr1   rO   r   strr   r'  r.   r=   r,   r4   r   rL   r   target_prefix_overriderW   r   r   rP   r   r   rK   r(   lenr5   rD   r  r  r?   r  rs   )r]   validation_errorr  r   s      r^   re   PrefixReplaceLinkAction.verify.  s    7>+##$''((GGH%% FtG\G\F]^  	((45!%$$Z0#eg,"
 	%t'<'<d>T>T	
 	D))4+A+A8==Qd,,-	GGE5t7L7LM&&..D$2D2D''((88?? 't'='=xH * 7 7!!nn''#66-!
 #  	%%''D++, 	s   ,BH" "?I!c                   U R                   (       d  U R                  5         U R                  =(       d    U R                  n[        R	                  [
        SXR                  5        [        XR                  U R                  5        SU l	        g )Nr  T)
rs   re   r'  r   r  r   r   r.   r   r  )r]   source_paths     r^   ri   PrefixReplaceLinkAction.executee  s[    ~~KKM,,E0E0E);8M8MNK!6!6G#' ra   )r  rs   r   r'  r  r   )	r   r   r   r   r_   re   ri   r   r   r   s   @r^   r   r     s    &:5n( (ra   r   c                  D   ^  \ rS rSr\S 5       rU 4S jrS rS rSr	U =r
$ )MakeMenuActionin  c                x  ^ ^^^ [         R                  =(       d    S Vs/ s H  oUR                  5       PM     nn[         R                  (       af  [         R                  (       a%  U(       aJ  TR                  R                  5       U;   a,  [        U UUU4S jTR                  R                   5       5      $ gs  snf )Nrc   c              3     >#    U  HI  n[        [        R                  UR                  5      5      (       d  M2  T" TTTUR                  5      v   MK     g 7frV   )bool_MENU_REmatchr   )rz   r   r   rP   rW   rO   s     r^   r}   0MakeMenuAction.create_actions.<locals>.<genexpr>x  sC      8Csxx01 P'}chhOO8s
   1AA)r   shortcuts_onlylower	shortcutsr  r   r   r   )r   rO   rP   rW   r   r  shorcuts_lowers   ````   r^   create_actionsMakeMenuAction.create_actionso  s     5<4J4J4Pb4PR4P4**,4PR&&<#4#4#:#:#<#N '2288    Ss   B7c                <   > [         TU ]  UUS S UU5        SU l        g r  )r   r_   r  )r]   rO   rP   rW   r   r   s        r^   r_   MakeMenuAction.__init__  s.     		
 $) ra   c                    [         R                  [        SU R                  5        [        U R                  U R
                  SS9  SU l        g )Nzmaking menu for %sFremoveT)r  r   r   r0   rW   r   r  rd   s    r^   ri   MakeMenuAction.execute  s9    +T-B-BC$$$d&<&<UK#' ra   c                    U R                   (       aE  [        R                  [        SU R                  5        [	        U R
                  U R                  SS9  g g )Nzremoving menu for %sTrE  )r  r  r   r   r0   rW   r   rd   s    r^   rl   MakeMenuAction.reverse  s?    ##GGE143H3HId(($*@*@N $ra   )r  r   r   r   r   r$  r@  r_   ri   rl   r   r   r   s   @r^   r5  r5  n  s+      )(
O Ora   r5  c                  b    \ rS rSr\S 5       rS r\S 5       r\S 5       r	S r
S rS rS	 rS
rg)CompileMultiPycActioni  c                @  ^	^
 UR                   =(       a    UR                   R                  nUbp  UR                  [        R                  :X  aR  [
        R                  " S5      m	US   m
[        U	4S jU 5       5      n[        U
4S jU 5       5      nU " UUUUU5      4$ g)Nz&^site-packages[/\\][^\t\n\r\f\v]+\.py$target_python_versionc              3     >#    U  HF  n[        US 5      (       d  M  TR                  UR                  5      (       d  M8  UR                  v   MH     g7f)r   N)getattrr:  r   r   )rz   r   noarch_py_file_res     r^   r}   7CompileMultiPycAction.create_actions.<locals>.<genexpr>  sF      ,C3 34 & &++C,A,AB &%%,s   AAAc              3  <   >#    U  H  n[        UT5      v   M     g 7frV   )r   )rz   pfpy_vers     r^   r}   rR    s     FXrhr622Xs   rc   )r   r   r   r>   r   recompiler   )r   rO   rP   rW   r   r   r   py_files	pyc_filesrQ  rU  s            @@r^   r@  $CompileMultiPycAction.create_actions  s     ..W<3P3P3W3W&++1B1B"B "

+T U()@AF , H FXFFI' !  ra   c                    Xl         X l        X0l        X@l        XPl        S U l        U R                   Vs/ s H  n[        U[        R                  S9PM     snU l	        SU l
        g s  snf Nr   F)rO   rP   rW   source_short_pathsr   r  rD   r?   pyc_fileprefix_paths_datar  )r]   rO   rP   rW   r]  r   ps          r^   r_   CompileMultiPycAction.__init__  sv     $7 (*"4"4 $ ,,"

 -	 "++ -"
 $) "
s   "A&c                :   ^ ^ S mUU 4S jT R                    5       $ )Nc                :    U b  Uc  g [        U [        U5      5      $ rV   r   r!   prefix
short_paths     r^   join_or_none=CompileMultiPycAction.target_full_paths.<locals>.join_or_none  !    ~!3FK
$;<<ra   c              3  J   >#    U  H  nT" TR                   U5      v   M     g 7frV   rW   rz   r`  rh  r]   s     r^   r}   :CompileMultiPycAction.target_full_paths.<locals>.<genexpr>  #     U=TT//33=T    #)r   r]   rh  s   `@r^   r   'CompileMultiPycAction.target_full_paths      	= VT=T=TUUra   c                :   ^ ^ S mUU 4S jT R                    5       $ )Nc                :    U b  Uc  g [        U [        U5      5      $ rV   rd  re  s     r^   rh  =CompileMultiPycAction.source_full_paths.<locals>.join_or_none  rj  ra   c              3  J   >#    U  H  nT" TR                   U5      v   M     g 7frV   rl  rm  s     r^   r}   :CompileMultiPycAction.source_full_paths.<locals>.<genexpr>  ro  rp  )r]  rq  s   `@r^   source_full_paths'CompileMultiPycAction.source_full_paths  rs  ra   c                    SU l         g r   rr   rd   s    r^   re   CompileMultiPycAction.verify  r   ra   c                    g rV   rc   rd   s    r^   ro   CompileMultiPycAction.cleanup  r   ra   c                R   [         R                  [        SSR                  U R                  5      5        U R                  S   n[        U5      n[        U R                  [        U5      5      n[        UU R                  U R                  U R                  U R                  S   5        SU l
        U R                   H=  n[        U R                  [        UR                  5      5      n [        U5      Ul        M?     g ! [         a    [         R                  [        SU5         Mj  f = f)Nzcompiling %s rN  Tcould not get size for %s)r  r   r   r   rO   r   rW   r!   r+   ry  r  r_  r   r
   r  OSError)r]   rN  python_short_pathpython_full_path	path_datapyc_full_paths         r^   ri   CompileMultiPycAction.execute  s    
 	~sxx0F0F'GH $ 8 89P Q12GH 2 2K@Q4RS""""$$%<=	
 $(  //I !3!3[5QRMK*1-*@	' 0  K:MJKs   (C==%D&%D&c                    U R                   (       aS  [        R                  [        SSR                  U R                  5      5        U R                   H  n[        U5        M     g g )Nzreversing pyc creation %sr  )r  r  r   r   r   r3   )r]   r   s     r^   rl   CompileMultiPycAction.reverse  sO    ##GG2CHHT=S=S4T %)$:$: &' %;	 $ra   )	r  rs   rP   r  r_  r]  rW   r   rO   N)r   r   r   r   r$  r@  r_   r   r   ry  re   ro   ri   rl   r   rc   ra   r^   rL  rL    sZ     >). V V V VK:(ra   rL  c                  8   ^  \ rS rSrSrU 4S jrU 4S jrSrU =r$ )AggregateCompileMultiPycActioni  zBunch up all of our compile actions, so that they all get carried out at once.
This avoids clobbering and is faster when we have several individual packages requiring
compilation.
c                8  > Xl         US   R                  nUS   R                  nUS   R                  n[	        5       n[	        5       nU H9  nUR                  UR                  5        UR                  UR                  5        M;     [        T	U ]%  UUUUU5        g )Nr   )
_individualsrO   rP   rW   setupdater]  r   r   r_   )
r]   individualskwrO   rP   rW   r]  r   
individualr   s
            r^   r_   'AggregateCompileMultiPycAction.__init__  s    ')!n@@"1~22#A44 U U%J%%j&C&CD%%j&C&CD & 		
ra   c                :  > [         TU ]  5         U R                   HP  nUR                   H=  n[	        U R
                  [        UR                  5      5      n [        U5      Ul	        M?     MR     g ! [         a    [        R                  [        SU5         Mn  f = f)Nr  )r   ri   r  r_  r   rW   r!   r   r
   r  r  r  r   )r]   r  r  r  r   s       r^   ri   &AggregateCompileMultiPycAction.execute+  s     ++J'99	 $T%7%7Y__9U VO.5m.DI+ : ,
  OGGE#>NOs   A11%BB)r  )	r   r   r   r   r   r_   ri   r   r   r   s   @r^   r  r    s    

&
O 
Ora   r  c                  D   ^  \ rS rSr\S 5       rU 4S jrS rS rSr	U =r
$ )CreatePythonEntryPointActioni8  c                x  ^ ^^^^^ TR                   =(       a    TR                   R                  nUb  UR                  [        R                  :X  aj  S m[        U UUUU4S jUR                  =(       d    S 5       5      n[        (       a.  U[        UUUU4S jUR                  =(       d    S 5       5      -  nU$ g)Nc                \    [        U 5      u  pn[         SU 3n[        (       a  US-  nXBU4$ )N/z
-script.py)r   r   r   )r   r  modulefuncr   s        r^   this_tripletACreatePythonEntryPointAction.create_actions.<locals>.this_triplet@  s=    (=o(N%'4oQwi$@!6%5%($66ra   c              3  F   >#    U  H  nT" TTT/T" U5      Q76 v   M     g 7frV   rc   )rz   ep_defr   rP   rW   r  rO   s     r^   r}   >CreatePythonEntryPointAction.create_actions.<locals>.<genexpr>G  s9       8F ' ! "&)	 8s   !rc   c              3  V   >#    U  H  n[         R                  TTTTU5      v   M      g 7frV   )r   r  )rz   r  rP   r   rW   rO   s     r^   r}   r  R  s;      	! #< #OO+$%+  #<s   &))r   r   r   r>   r   r   entry_pointsr   )r   rO   rP   rW   r   r   actionsr  s   `````  @r^   r@  +CreatePythonEntryPointAction.create_actions9  s     ..W<3P3P3W3W&++1B1B"B7    %117R7 G v5 	! #)"5"5";";	! 	 	 Nra   c                   > [         TU ]  UUS S UU5        XPl        X`l        [        (       a  [
        R                  nO[
        R                  n[        U R                  US9U l
        SU l        g r\  )r   r_   r  r  r   r?   !windows_python_entry_point_scriptunix_python_entry_pointrD   r   r  r  )	r]   rO   rP   rW   r   r  r  r   r   s	           r^   r_   %CreatePythonEntryPointAction.__init__a  sn     		
 	6 BBI 88I *((!

 $) ra   c                "   [         R                  [        SU R                  5        [        (       a  S nOPU R                  S   n[        U5      n[        [        R                  =(       d    U R                  [        U5      5      n[        U R                  XR                  U R                  5         [        U R                  5      U R                  l        SU l        g ! ["         a(    [         R                  [        SU R                  5         N9f = f)Nzcreating python entry point %srN  r  T)r  r   r   r   rO   r   r   r   r-  rW   r!   r/   r  r  r
   r  r  r  r  )r]   r  rN  r  s       r^   ri   $CreatePythonEntryPointAction.execute  s    79N9NO6#$($<$<=T$U! 56K L#..D$2D2D-. 
 	"!!#3[[$))	
	O29$:O:O2PD!!/ $(   	OGGE68M8MN	Os   0$C /DDc                    U R                   (       a;  [        R                  [        SU R                  5        [	        U R                  5        g g )Nz(reversing python entry point creation %s)r  r  r   r   r3   rd   s    r^   rl   $CreatePythonEntryPointAction.reverse  s:    ##GGA4CXCX $''(	 $ra   )r  r  r  r  rJ  r   s   @r^   r  r  8  s*    % %N)>(*) )ra   r  c                  T   ^  \ rS rSr\  SS j5       r  SU 4S jjrS rS rSr	U =r
$ )CreatePrefixRecordActioni  c           	     V    UR                   nS[        U5       S3nU " UUUUUUU5      4$ )Nzconda-meta/z.json)r   r   )	r   rO   rP   rW   r   requested_specall_link_path_actionsr   r   s	            r^   r@  'CreatePrefixRecordAction.create_actions  sM     !- B B)(3H*I)J%P#!#%

 
	
ra   c                t   > [         TU ]  UUS S UU5        XPl        X`l        [	        U5      U l        SU l        g r  )r   r_   r   r  listr  r  )	r]   rO   rP   rW   r   r   r  r  r   s	           r^   r_   !CreatePrefixRecordAction.__init__  sH     		
 $7 ,%)*?%@"#( ra   c                L  ^	^
 [        U R                  R                  U R                  S9nU R                  R                  nU R                  R                  nS m	S m
[        [        R                  " U	4S jU R                   5       5      5      n[        S[        R                  " U
4S jU R                   5       5      S9nU R                  (       a  [        U R                  [        [
        -  5      (       aR  U R                   Vs/ s H  n[        U5      PM     nn[        [        R                  " U R                  5      S   5      nO[        U R                  5      nU4nOS nS	n[         R"                  " U R                  R$                  U R                  R&                  UUUUUU R                  R(                  UUS
9
U l        [,        R-                  [.        SU R0                  5        [3        U R4                  5      R7                  U R*                  5        SU l        g s  snf )N)sourcer   c                    [        U [        5      (       a  U R                  $ [        U [        5      (       a<  [	        U S5      (       a  U R
                  [        R                  :w  a  U R                  4$ S$ )Nr   rc   )	
isinstancerL  r   r   hasattrr   r=   r   r   link_path_actions    r^   files_from_action;CreatePrefixRecordAction.execute.<locals>.files_from_action  sm    *,ABB'::: ""24LMM#$4kBB+559K9KK	 &779 ra   c                    [        U [        5      (       a  U R                  $ [        U S5      (       a  U R                  c  gU R                  4$ )Nr  rc   )r  rL  r_  r  r  r  s    r^   paths_from_action;CreatePrefixRecordAction.execute.<locals>.paths_from_action  sL    *,ABB'999   02DEE'88@,==??ra   c              3  D   >#    U  H  o(       d  M  T" U5      v   M     g 7frV   rc   )rz   xr  s     r^   r}   3CreatePrefixRecordAction.execute.<locals>.<genexpr>  s#       .HA$!!$$.H   
  rG   c              3  D   >#    U  H  o(       d  M  T" U5      v   M     g 7frV   rc   )rz   r  r  s     r^   r}   r    s#      &.HA$!!$$.Hr  )paths_versionr   r   rc   )r  requested_specsr   fileslinkurlr   package_tarball_full_pathz!creating linked package record %sT)rA   rP   r   r   r  r  r   from_iterabler  rE   r  r  r   r,  r@   mergerF   r  r   r   r  prefix_recordr  r   r   rM   rW   insertr  )r]   r  r   r  r  r   specr  requested_spec_strr  r  s            @@r^   ri    CreatePrefixRecordAction.execute  s   $$::))
 !% 1 1 G G$($5$5$O$O!	
	@   .2.H.H  

 %% &.2.H.H& 

 $--ut|<<9=9L9L"M9L3t99L"M%(9L9L)Ma)P%Q"%()<)<%="#5"7!% O)66--..-+!!!%%"7&?
 	:D<Q<QR4%%&--d.@.@A#' 3 #Ns   H!c                    [         R                  [        SU R                  5        U R                  (       aC  [	        U R
                  5      R                  U R                  R                  R                  5        g g )Nz+reversing linked package record creation %s)
r  r   r   r  rM   rW   rF  rP   r   r  rd   s    r^   rl    CreatePrefixRecordAction.reverse  sZ    @$BWBW	
 ##t))*11!!1166 $ra   )r  r  r  r   r  )r  zMatchSpec | list[MatchSpec]rJ  r   s   @r^   r  r    sA     
 4
 
.) 4).I(V ra   r  c                  J   ^  \ rS rSr\S 5       rU 4S jrS rS rS r	Sr
U =r$ )UpdateHistoryActioni$  c                6    [        SS5      nU " UUUUUU5      4$ )Nz
conda-metahistory)r   )r   rO   rW   rZ   r[   r\   r   s          r^   r@  "UpdateHistoryAction.create_actions%  s5     !y9#!	
 		
ra   c                   > [         TU ]  US S S X#5        X@l        XPl        X`l        U R
                  [        -   U l        g rV   )r   r_   rZ   r[   r\   r   r   rQ   )r]   rO   rW   r   rZ   r[   r\   r   s          r^   r_   UpdateHistoryAction.__init__:  sD     	tT=	
 )(,..1EEra   c                   [         R                  [        SU R                  5        [        U R                  5      (       a   [	        U R                  U R
                  5        [        U R                  5      n[        UR                  5      (       d#  [        U R                  5      R                  5         UR                  5         UR                  U R                  U R                  U R                   5        g )Nzupdating environment history %s)r  r   r   r7   r,   rQ   r;   rW   r   r   rM   set_creation_timer  write_specsrZ   r[   r\   )r]   hs     r^   ri   UpdateHistoryAction.executeL  s    8$:O:OP4(())&&7D&&'aff~~t))*<<>	
	d''):):D<O<OPra   c                L   [        U R                  5      (       aO  [        R                  [        SU R                  U R                  5        [        U R                  U R                  SS9  [        [        U R                  5      R                  =n5      (       a  [        U5        g g Nmoving %s => %sTr  )r7   rQ   r  r   r   r9   r   r;   rW   r   r3   )r]   hpaths     r^   rl   UpdateHistoryAction.reverseX  sq    4>>""GGE,dnnd>S>ST4>>4+@+@M74#5#56;;;%<<%L =ra   c                .    [        U R                  5        g rV   r3   rQ   rd   s    r^   ro   UpdateHistoryAction.cleanup_      dnnra   )rQ   r\   rZ   r[   r   r   r   r   r$  r@  r_   ri   rl   ro   r   r   r   s   @r^   r  r  $  s0    
 
(F$
Q ra   r  c                  B    \ rS rSrS rS rS rS rS r\	S 5       r
Srg	)
!RegisterEnvironmentLocationActionic  c                *    Xl         X l        SU l        g r  rO   rW   r  r]   rO   rW   s      r^   r_   *RegisterEnvironmentLocationAction.__init__d      #6 *#( ra   c                    [        5       n [        USSS9  SU l        g ! [         a    [        R                  SU5         g f = f)NT)mkdir	sudo_safezRUnable to create environments file. Path not writable.
  environment location: %s
)rH   r:   rs   r'   r  warning)r]   user_environments_txt_files     r^   re   (RegisterEnvironmentLocationAction.verifyj  sG    %C%E"	,DDI!DN 	KK/*	s     AAc                    [         R                  [        SU R                  5        [        U R                  5        SU l        g )Nz%registering environment in catalog %sT)r  r   rW   rI   r  rd   s    r^   ri   )RegisterEnvironmentLocationAction.executev  s/    >@R@RST''(#' ra   c                    g rV   rc   rd   s    r^   rl   )RegisterEnvironmentLocationAction.reverse|      ra   c                    g rV   rc   rd   s    r^   ro   )RegisterEnvironmentLocationAction.cleanup  r  ra   c                    [        5       erV   r   rd   s    r^   r   2RegisterEnvironmentLocationAction.target_full_path      !##ra   r  rs   rW   rO   Nr   r   r   r   r_   re   ri   rl   ro   r   r   r   rc   ra   r^   r  r  c  s/    )
( $ $ra   r  c                  .   ^  \ rS rSrU 4S jrS rSrU =r$ )RemoveFromPrefixPathActioni  c                2   > [         TU ]  XU5        X l        g rV   )r   r_   linked_package_datar]   rO   r	  rW   r   r   s        r^   r_   #RemoveFromPrefixPathAction.__init__  s     	,=NO#6 ra   c                    SU l         g r   rr   rd   s    r^   re   !RemoveFromPrefixPathAction.verify  s     ra   )rs   r	  )r   r   r   r   r_   re   r   r   r   s   @r^   r  r    s    7 ra   r  c                  T   ^  \ rS rSr\R
                  4U 4S jjrS rS rS r	Sr
U =r$ )UnlinkPathActioni  c                   > [         TU ]  XX45        U R                  [        -   U l        U R
                  [        -   U l        XPl        g rV   )r   r_   r   r   holding_short_pathr   holding_full_pathr   )r]   rO   r	  rW   r   r   r   s         r^   r_   UnlinkPathAction.__init__  sF     	m	
 #'"8"8;O"O!%!6!69M!M"ra   c                    U R                   [        R                  :w  aP  [        R                  [        SU R
                  U R                  5        [        U R                  U R                  SS9  g g )Nzrenaming %s => %sTr  )
r   r=   r   r  r   r   r  r9   r   r  rd   s    r^   ri   UnlinkPathAction.execute  sX    >>X///GG#&&''	 400$2H2HPTU 0ra   c                   U R                   [        R                  :w  ak  [        U R                  5      (       aP  [
        R                  [        SU R                  U R                  5        [        U R                  U R                  SS9  g g g )Nzreversing rename %s => %sTr  )r   r=   r   r7   r  r  r   r  r   r9   r   rd   s    r^   rl   UnlinkPathAction.reverse  sl    >>X///GD<R<R4S4SGG+''&&	 41143H3HPTU 5T/ra   c                b    [        U R                  5      (       d  [        U R                  SS9  g g )NTr!  )r   r  r3   rd   s    r^   ro   UnlinkPathAction.cleanup  s(    T++,,$((dC -ra   )r  r  r   )r   r   r   r   r=   r  r_   ri   rl   ro   r   r   r   s   @r^   r  r    s+     ###VVD Dra   r  c                  J   ^  \ rS rSr\S 5       rU 4S jrS rS rS r	Sr
U =r$ )RemoveMenuActioni  c                N   ^ ^^^ [        U UUU4S jTR                   5       5      $ )Nc              3     >#    U  H5  n[        [        R                  U5      5      (       d  M(  T" TTTU5      v   M7     g 7frV   )r8  r9  r:  )rz   r   r   r	  rW   rO   s     r^   r}   2RemoveMenuAction.create_actions.<locals>.<genexpr>  s<      
1HNN4() OC#%8-NN1s
   'A A )r   r  )r   rO   r	  rW   s   ````r^   r@  RemoveMenuAction.create_actions  s#     
+11
 
 	
ra   c                &   > [         TU ]  XX45        g rV   r   r_   r
  s        r^   r_   RemoveMenuAction.__init__       	m	
ra   c                    [         R                  [        SU R                  5        [        U R                  U R                  SS9  g )Nzremoving menu for %s TrE  r  r   rW   r0   r   rd   s    r^   ri   RemoveMenuAction.execute  s1    .0B0BC$$$d&<&<TJra   c                    [         R                  [        SU R                  5        [        U R                  U R                  SS9  g )Nzre-creating menu for %s FrE  r%  rd   s    r^   rl   RemoveMenuAction.reverse  s1    143E3EF$$$d&<&<UKra   c                    g rV   rc   rd   s    r^   ro   RemoveMenuAction.cleanup  r  ra   rc   r  r   s   @r^   r  r    s0    
 

KL ra   r  c                  @   ^  \ rS rSrU 4S jrU 4S jrU 4S jrSrU =r$ )RemoveLinkedPackageRecordActioni  c                &   > [         TU ]  XX45        g rV   r!  r
  s        r^   r_   (RemoveLinkedPackageRecordAction.__init__  r#  ra   c                   > [         TU ]  5         [        U R                  5      R	                  U R
                  R                  5        g rV   )r   ri   rM   rW   rF  r	  r  r]   r   s    r^   ri   'RemoveLinkedPackageRecordAction.execute  s2    4%%&--d.F.F.K.KLra   c                ~   > [         TU ]  5         [        U R                  5      R	                  U R
                  5        g rV   )r   rl   rM   rW   _load_single_recordr   r0  s    r^   rl   'RemoveLinkedPackageRecordAction.reverse  s,    4%%&::4;P;PQra   rc   )	r   r   r   r   r_   ri   rl   r   r   r   s   @r^   r,  r,    s    
MR Rra   r,  c                  B    \ rS rSrS rS rS rS rS r\	S 5       r
Srg	)
#UnregisterEnvironmentLocationActioni  c                *    Xl         X l        SU l        g r  r  r  s      r^   r_   ,UnregisterEnvironmentLocationAction.__init__  r  ra   c                    SU l         g r   rr   rd   s    r^   re   *UnregisterEnvironmentLocationAction.verify  r   ra   c                    [         R                  [        SU R                  5        [        U R                  5        SU l        g )Nz'unregistering environment in catalog %sT)r  r   rW   rJ   r  rd   s    r^   ri   +UnregisterEnvironmentLocationAction.execute  s/    @$BTBTUt))*#' ra   c                    g rV   rc   rd   s    r^   rl   +UnregisterEnvironmentLocationAction.reverse  r  ra   c                    g rV   rc   rd   s    r^   ro   +UnregisterEnvironmentLocationAction.cleanup  r  ra   c                    [        5       erV   r   rd   s    r^   r   4UnregisterEnvironmentLocationAction.target_full_path  r  ra   r  Nr  rc   ra   r^   r6  r6    s/    )( $ $ra   r6  c                  l    \ rS rSr   SS jrS rSS jr SS jrSS jrS r	S	 r
\S
 5       rS rSrg)CacheUrlActioni  Nc                |    Xl         X l        X0l        X@l        XPl        X`l        U R                  [        -   U l        g rV   )	r  target_pkgs_dirtarget_package_basenamer  sizemd5r   r   rQ   )r]   r  rF  rG  r  rH  rI  s          r^   r_   CacheUrlAction.__init__  s7     .'>$	..1EEra   c                H    SU R                   ;   a  [        S5      eSU l        g )Nz::zURL cannot contain '::'T)r  
ValueErrorrs   rd   s    r^   re   CacheUrlAction.verify!  s!    488677ra   c                   SSK Jn  U" U R                  5      n[        R                  [        SU R
                  U R                  5        [        U R                  5      (       a  [        U R                  5        [        U R                  5      (       ac  U R
                  R                  S5      (       a$  U R
                  [        U R                  5      :X  a  g [        U R                  U R                  SS9  U R
                  R                  S5      (       a(  [        U R
                  5      nU R                  XCU5        g U R                  X15        g )NrG   PackageCacheDatazcaching url %s => %szfile:/Tr  )package_cache_datarP  rF  r  r   r  r   r7   rQ   r3   
startswithr$   r9   r    _execute_local_execute_channel)r]   progress_update_callbackrP  target_package_cacher2  s        r^   ri   CacheUrlAction.execute&  s     	9/0D0DE-txx9N9NO4>>""$..!4(())xx""8,,[%%> 2 t44dnnDQ88x((%dhh/K3K !!"6Qra   c                J   SSK Jn  [        U5      [        R                  ;   a  [        XR                  5        U" [        U5      5      nUR                  R                  U R                  5      nU(       a<  [        U[        R                  5      (       a  UR                  R                  U5        g g g [        US5      nU R                  4nUR                  XUS9n	U	(       a&  UR                  R                  U	R                   5      nOS n[#        UU R                  [$        R&                  [        R(                  S9  U(       a;  [        U[        R                  5      (       a  UR                  R                  U5        g UR                  R                  U R*                  5        g )NrG   rO  rI  )exclude_caches)r   r  )rQ  rP  r	   r   	pkgs_dirsr-   r   
_urls_dataget_urlrG  r#   known_subdirsadd_urlr5   rF  tarball_file_in_cacher   r.   r=   r,   r  r  )
r]   r2  rV  rU  rP  source_package_cache
origin_urlsource_md5sumrY  pc_entrys
             r^   rS  CacheUrlAction._execute_localC  sT    	9;7#4#44$[2G2GH#3GK4H#I 
 .88@@,,J l:w7L7LMM$//77
C Nz (U;M"224N'==> > H 1<<DD22
 "
 %%"--mm	 l:w7L7LMM$//77
C$//77Ara   c                R   0 nU R                   b  U R                   US'   U R                  (       a  U R                  US'   O U R                  (       a  U R                  US'   [        U R                  U R
                  4SU0UD6  UR                  R                  U R                  5        g )NrH  r  rI  rU  )rH  r  rI  r*   r  r   r[  r^  )r]   rV  rU  kwargss       r^   rT  CacheUrlAction._execute_channel{  s    99 !YYF6N;;#{{F8XX HHF5MHH!!	
 &>	
 		
 	''//9ra   c                    [        U R                  5      (       aP  [        R                  [        SU R                  U R                  5        [        U R                  U R                  SS9  g g r  )r7   rQ   r  r   r   r9   rd   s    r^   rl   CacheUrlAction.reverse  sI    4>>""GGE,dnnd>S>ST4>>4+@+@M #ra   c                .    [        U R                  5        g rV   r  rd   s    r^   ro   CacheUrlAction.cleanup  r  ra   c                B    [        U R                  U R                  5      $ rV   )r   rF  rG  rd   s    r^   r   CacheUrlAction.target_full_path  s    D(($*F*FGGra   c                @    SU R                   < SU R                  < S3$ )NzCacheUrlAction<url=, target_full_path=>)r  r   rd   s    r^   __str__CacheUrlAction.__str__  s$    $TXXL0CDDYDYC\\]^^ra   )rs   rQ   rI  r  rH  rG  rF  r  )NNNrV   )r   r   r   r   r_   re   ri   rS  rT  rl   ro   r   r   rq  r   rc   ra   r^   rD  rD    sX     F"
R< KO6Bp: N
 H H_ra   rD  c                  L    \ rS rSrS rS rSS jrS rS r\	S 5       r
S	 rS
rg)ExtractPackageActioni  c                    Xl         X l        X0l        U R                  [        -   U l        X@l        XPl        X`l        Xpl	        g rV   )
r   rF  target_extracted_dirnamer   r   rQ   record_or_specr  rH  rI  )r]   r   rF  rv  rw  r  rH  rI  s           r^   r_   ExtractPackageAction.__init__  s>     !1.(@%..1EE,	ra   c                    SU l         g r   rr   rd   s    r^   re   ExtractPackageAction.verify  r   ra   Nc           
        SSK Jn  [        R                  [        SU R                  U R
                  5        [        U R
                  5      (       a  [        U R
                  5        [        R                  R                  U R                  U R
                  5         [        U R
                  5      n['        U R(                  [*        5      (       Ga&  U R(                  R-                  S5      nU(       d  [/        S5      e[1        U[        R2                  5      (       a  [5        U5      O
[5        S 5      n[7        U5      nU R8                  =(       d    [;        U R                  S5      n[=        U R                  5      nU R>                  b*  XR>                  :w  a  [A        S	U S
U R>                   35      eU RB                  =(       d    [;        U R                  S5      n	[D        RF                  " WUUUUUU	S9n
O![D        RF                  " U R(                  W5      n
[I        U R
                  SS5      n[K        X5        U" U RL                  5      n[N        RF                  " U
U R                  U R
                  S9nURQ                  U5        g ! [        [        R                  [        4 a3    [!        SU R                   S35        ["        R$                  " S5         GN(f = f)NrG   rO  zextracting %s => %sz.ERROR: Encountered corrupt package tarball at zS. Conda has left it in place. Please report this to the maintainers of the package.r  zURL cannot be empty.r  zComputed size (z ) does not match expected value rI  )r  channelfnr  rH  rI  infozrepodata_record.json)r  r   ))rQ  rP  r  r   r   r   r7   r3   r   plugin_managerextract_packager8   r  r"   JSONDecodeErrorFileNotFoundErrorprintsysexitr  rw  r@   get_raw_valuerL  r#   r]  r<   r   r  r5   r
   rH  r+  rI  rC   r  r   r2   rF  rB   r  )r]   rU  rP  raw_index_jsonr  r|  r}  r  rH  rI  r   repodata_record_pathrV  package_cache_records                 r^   ri   ExtractPackageAction.execute  ss    	9($*?*?AVAV	
 4(())$''( 	..!!!!	


	,T-B-BCN d))955%%33E:C !788  W%:%:;; T] 
 #B[[PK0E0Ex$PF4001Dyy$):"%dV+KDII;W  ((Gk$*?*?GC+88O ,88##^O  $!!6+A 
 	2D/0D0DE1>>&*&;&;"&"7"7 

 	##$89i --/@A 	 @AVAV@W X" "
 HHQK	s   J AKKc                .   [        U R                  5        [        U R                  5      (       af  [        R	                  [
        SU R                  U R                  5        [        U R                  5        [        U R                  U R                  5        g g )Nr  )r3   r   r7   rQ   r  r   r9   rd   s    r^   rl   ExtractPackageAction.reverse  sc    d##$4>>""GGE,dnnd>S>ST$''(4>>4+@+@A #ra   c                .    [        U R                  5        g rV   r  rd   s    r^   ro   ExtractPackageAction.cleanup  r  ra   c                B    [        U R                  U R                  5      $ rV   )r   rF  rv  rd   s    r^   r   %ExtractPackageAction.target_full_path  s    D(($*G*GHHra   c                @    SU R                   < SU R                  < S3$ )Nz&ExtractPackageAction<source_full_path=ro  rp  )r   r   rd   s    r^   rq  ExtractPackageAction.__str__
  s(    78M8M7PPcdhdydyc||}~~ra   )	rs   rQ   rI  rw  r  rH  r   rv  rF  rV   )r   r   r   r   r_   re   ri   rl   ro   r   r   rq  r   rc   ra   r^   rt  rt    s:    &H:TB I Ira   rt  )r   
__future__r   rV  r  abcr   r   	itertoolsr   loggingr   os.pathr   r	   r
   r   r   r   typingr   uuidr   r   r   r   
auxlib.ishr   base.constantsr   r   base.contextr   common.compatr   common.constantsr   	common.ior   common.pathr   r   r   r   r   r   r    r!   common.serializer"   
common.urlr#   r$   
exceptionsr%   r&   r'   r(   r)   gateways.connection.downloadr*   gateways.disk.creater+   r,   r-   r.   r/   r0   r1   r2   gateways.disk.deleter3   gateways.disk.permissionsr4   gateways.disk.readr5   r6   r7   r8   gateways.disk.updater9   r:   r  r;   models.channelr<   models.enumsr=   r>   r?   models.match_specr@   models.recordsrA   rB   rC   rD   rE   rF   envs_managerrH   rI   rJ   portabilityrK   rL   prefix_datarM   collections.abcrN   r  	NameErrorIOErrorr   r  rW  
IGNORECASEr9  ry   rS   r   r   r   r   r   r   r5  rL  r  r  r  r  r  r  r  r  r,  r6  rD  rt  rc   ra   r^   <module>r     s1   Q " 	 
 #   C C    -  M " " $  	 	 	 $ 2  4	 	 	 ) 5 N N 8  $ 9 9 )  W V 5 #(  ::("--8 UIS UIp$ $$f $z 0P/ P>UG- UGp[(n [(|'O- 'OTw(O w(t#O%: #OLb)#; b)JD7 DN<2 <~!$
 !$R
!1 
&D1 &DR1 8R&6 R"$* $@I_Z I_Xp: p[*    s   +H< <II