
    <Bh4                       % S r SSKJr  SSK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Jr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  S	S
KJrJr  S	SKJr  S	SKJrJ r J!r!  S	SK"J#r#J$r$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/J0r0  S	SK1J2r2J3r3J4r4J5r5  \(       a  SSK6J7r7J8r8  \	" \95      r:\2" 5       \4" 5       \5" S5      \5" S5      \5" S5      S.r; " S S\Rx                  S9r=S r>\0" SSSS9S  5       r?\0" SS5      S! 5       r@\0R                  " SSS"\)S#S9  C)\0R                  " SSS$\,S%S9  \0R                  " SSS&\+S'S9  \0R                  " SSS(\.S)S9      S>S* jrB " S+ S,\=5      rC " S- S.\=5      rD " S/ S0\=5      rE " S1 S2\=5      rF " S3 S4\=5      rG " S5 S6\=5      rH " S7 S8\=5      rI\C\C\C\C\C\D\D\E\F\G\HS9.rJS:\KS;'   S<\I0rLS= rMg)?aN  Conda activate and deactivate logic.

Implementation for all shell interface logic exposed via
`conda shell.* [activate|deactivate|reactivate|hook|commands]`. This includes a custom argument
parser, an abstract shell class, and special path handling for Windows.

See conda.cli.main.main_sourced for the entry point into this module.
    )annotationsN)	getLogger)abspathbasenamedirnameexists
expanduser
expandvarsisdirjoin)Path)dedent)TYPE_CHECKING   )CONDA_PACKAGE_ROOTCONDA_SOURCE_ROOT)Utf8NamedTemporaryFile)CONDA_ENV_VARS_UNSET_VARPACKAGE_ENV_VARS_DIRPREFIX_STATE_FILE)ROOT_ENV_NAMEcontextlocate_prefix_by_name)on_win)_cygpathpaths_equalunix_path_to_winwin_path_to_unix)path_identity)
deprecated)ActivateHelpArgumentErrorDeactivateHelpGenericHelp)CallableIterablehookcommands
reactivate)activate
deactivater'   r(   r)   c                     \ 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\S'   S9S jrS:S jrS rS rS r	S r
\R                  " SSSSS9S9S;S jj5       rS r\" SSS S!9S" 5       r\R"                  S<S# j5       rS<S$ jr\R                  " SSS%5      S=S& j5       rS' rS( rS) rS* rS+ rS, rS- rS. rS9S/ jrS9S0 jrS9S1 jrS2 r S3 r!S4 r"S5 r#S6 r$S7 r%S8r&g)>
_ActivatorA   strpathsep_joinsepzDCallable[[str | Iterable[str] | None], str | tuple[str, ...] | None]path_conversionscript_extension
str | Nonetempfile_extensioncommand_joinunset_var_tmplexport_var_tmplset_var_tmplrun_script_tmplzPath | Nonehook_source_pathNc                    Xl         g N)_raw_arguments)self	argumentss     .lib/python3.13/site-packages/conda/activate.py__init___Activator.__init__i   s    '    c                x   / n0 nUR                  5        H~  u  pVUcI  [        R                  (       a!  UR                  UR	                  5       5        M>  UR                  U5        MQ  [        R                  (       a  XdUR	                  5       '   Mz  XdU'   M     U(       a  [        R
                  R                  5        H  u  pVUcI  [        R                  (       a!  UR                  UR	                  5       5        M>  UR                  U5        MQ  SU;   d  SU;   aM  [        R                  (       a#  U R                  U5      XER	                  5       '   M  U R                  U5      XE'   M  [        R                  (       a  XdUR	                  5       '   M  XdU'   M     XC4$ UR                  [        R
                  5        XC4$ )aV  
:param export_metavars: whether to export `conda_exe_vars` meta variables.
:param kwargs: environment variables to export.
    .. if you pass and set any other variable to None, then it
    emits it to the dict with a value of None.

:return: A dict of env vars to export ordered the same way as kwargs.
    And a list of env vars to unset.
/\)itemsr   envvars_force_uppercaseappendupperconda_exe_vars_dictr2   extend)r?   export_metavarskwargs
unset_varsexport_varsnamevalues          rA   get_export_unset_vars _Activator.get_export_unset_varsl   sO    
 "<<>KD}22%%djjl3%%d+ 2205

-(-% * &::@@B=66"))$**,7"))$/E\TU]66484H4H4OJJL1,0,@,@,G)6649DJJL1,1D)  C( && g99:&&rD   c                :   / UQSP7nUc  U R                   R                  U5      $ U(       aJ  [        SUSS9 nUR                  U R                   R                  U5      5        S S S 5        UR                  $ [        5       e! , (       d  f       WR                  $ = f)N w+Fsuffixdelete)r6   r   r   writerR   NotImplementedError)r?   r(   exttfs       rA   	_finalize_Activator._finalize   s    "X?r?;$$))(33'SG2 **//9: H 77N%'' HG 77Ns   +B
Bc                    U R                   (       a  U R                  U R                  5      nOU R                  U R                  5      nU R	                  U R                  U5      U R                  5      $ r=   )stackbuild_stackenv_name_or_prefixbuild_activater`   _yield_commandsr5   )r?   builder_results     rA   r*   _Activator.activate   s\    ::!--d.E.EFN!001H1HIN~~  0$2I2I
 	
rD   c                t    U R                  U R                  U R                  5       5      U R                  5      $ r=   )r`   rg   build_deactivater5   r?   s    rA   r+   _Activator.deactivate   2    ~~  !6!6!894;R;R
 	
rD   c                t    U R                  U R                  U R                  5       5      U R                  5      $ r=   )r`   rg   build_reactivater5   rl   s    rA   r)   _Activator.reactivate   rn   rD   25.9z26.3auto_activate_baseauto_activate)renamec                   / nU R                  5       =n(       a  UR                  U5        U R                  (       a)  UR                  U R                  R                  5       5        Uc  [        R
                  (       d  U(       a#  UR                  S[        R                   S35        U R                  5       nUb  UR                  U5        SR                  U5      $ )Nzconda activate 'z'

)	_hook_preamblerJ   r;   	read_textr   rt   default_activation_env_hook_postambler   )r?   rt   builderpreamble	postambles        rA   r'   _Activator.hook   s    **,,8,NN8$  NN400::<= W%:%:mNN-g.L.L-MSQR((*	 NN9%yy!!rD   c                    U R                  5         [        R                  R                  U R                  5        [        X R                  5      " 5       n[        R                  R                  U R                  5        U$ r=   )_parse_and_set_argsr   plugin_managerinvoke_pre_commandscommandgetattrinvoke_post_commands)r?   responses     rA   execute_Activator.execute   sV      " 	224<<@4.033DLLArD   25.3zUse `conda commands` instead.addendumc           	     |    SSK JnJn  SSKJn  SR                  [        1 U" U" 5       5      kU" S5      k5      5      $ )z
Returns a list of possible subcommands that are valid
immediately following `conda` at the command line.
This method is generally only used by tab-completion.
r   )find_builtin_commandsgenerate_parser)find_commandsrw   T)cli.conda_argparser   r   cli.find_commandsr   r   sorted)r?   r   r   r   s       rA   r(   _Activator.commands   sH     	O4 yy*?+<="4(
 	
rD   c                    [         er=   )r]   rl   s    rA   rx   _Activator._hook_preamble   s
     "!rD   c                    g r=    rl   s    rA   r{   _Activator._hook_postamble   s    rD   r@   c                J  ^^	 U R                   =(       d    S /tmnSm	[        U	4S jU5       5      n[        U5      [        U5      :g  n[        U4S jU5       5      nT[        ;  a!  [        ST(       a  ST S3-   5      eS-   5      eU(       a	  [        T   eTR                  S5      (       d  TS	:X  a   UR                  S
5      nXE	 S[        l	        TS:X  a  [        R                  =(       a!    [        R                  [        R                  :*  U l         UR                  S5      n UR                  S5      nUS:  a  US:  a  [        ST-   5      eUS:  a	  SU l        XF	 US:  a	  SU l        XG	 [        U5      S:  a  [        TS-   [        U5      -   S-   5      eU(       a  US   U l        O.[        R                   U l        OU(       a  [        T SU S35      eTU l        g ! [         a    S[        l	         GN+f = f! [         a    Sn Nf = f! [         a    Sn Nf = f)N)z-hz--helpz/?c              3  6   >#    U  H  oT;  d  M
  Uv   M     g 7fr=   r   ).0arg
help_flagss     rA   	<genexpr>1_Activator._parse_and_set_args.<locals>.<genexpr>   s     PYcZ:OccYs   		c              3  H   >#    U  H  o(       d  M  UT:w  d  M  Uv   M     g 7fr=   r   )r   r   r   s     rA   r   r     s     U]ccccWncc]s   
""	"zT'activate', 'deactivate', 'hook', 'commands', or 'reactivate' command must be given.z, not 'z'..r*   r'   z--devTFz--stackz
--no-stackr   z.cannot specify both --stack and --no-stack to r   z) does not accept more than one argument:
rw   z+ does not accept arguments
remainder_args: )r>   tuplelenlistBUILTIN_COMMANDSr"   endswithindexr   dev
ValueError
auto_stackshlvlrc   r/   re   rz   r   )
r?   r@   non_help_argshelp_requestedremainder_argsdev_idx	stack_idxno_stack_idxr   r   s
           @@rA   r   _Activator._parse_and_set_args   sO   "11;dV)+
PYPPY3}+==U]UU**)ELggYb,AW RUW  "7++J''7f+<#(..w7 #+"j  ++SASAS0SDJ*00;	"-33LA A~,!"3#DwN  A~!
"-q "
"0>"Q&#BC.)*   *8*;'*1*H*H')GGWWYZ  U  $#$  	  "!"s6   4G% H (H %G>=G>HHH"!H"c              #  |  #    [        UR                  S0 5      R                  5       5       H  u  p#U R                  X#4-  v   M     UR                  SS5       H  nU R                  U-  v   M     UR                  SS5       H  nU R
                  U-  v   M     UR                  S0 5      R                  5        H  u  p#U R                  X#4-  v   M     UR                  S0 5      R                  5        H  u  p#U R                  X#4-  v   M     UR                  SS5       H  nU R                  U-  v   M     g 7f)Nexport_pathdeactivate_scriptsr   rP   set_varsrQ   activate_scripts)r   getrH   r8   r:   r7   r9   )r?   	cmds_dictkeyrS   scripts        rA   rg   _Activator._yield_commands;  s$     }b!A!G!G!IJJC&&#55 K  mm$8"=F&&// > ==r2C%%++ 3 $--
B7==?JC##sl22 @ $--r:@@BJC&&#55 C  mm$6;F&&// <s   D:D<c                &    U R                  US5      $ )NF_build_activate_stackr?   re   s     rA   rf   _Activator.build_activateN  s    ))*<eDDrD   c                &    U R                  US5      $ )NTr   r   s     rA   rd   _Activator.build_stackQ  s    ))*<dCCrD   c           	     \   [         R                  " SU5      (       a4  [        U5      n[        [	        US5      5      (       d  SSKJn  U" U5      eO(U[        S4;   a  [        R                  nO[        U5      n[        [        R                  " SS5      R                  5       =(       d    S5      n[        R                  " S	5      nXc:X  a  US:  a  U R                  5       $ U R!                  U5      nUS-   nU R#                  U5      n	U R%                  X95      n
U R'                  U5      R)                  5       VVs0 s H  u  pU[*        :w  d  M  X_M     nnn[-        U5      R/                  [        R0                  5      nUVs/ s H#  n[        R                  " U5      X   :w  d  M!  UPM%     nnU(       a3  [3        S
[4        R6                  S9  [3        SU 3[4        R6                  S9  U H"  n[        R                  " U5      USU SU 3'   M$     US:X  a<  U R8                  " SU R;                  U R=                  U5      5      UUU	U
S.UD6u  nnSnOU(       aH  U R8                  " SU R;                  U R=                  U5      5      UUU	U
S.UDSU 3USU 3S0D6u  nnSnOQU R8                  " SU R;                  U R?                  Xc5      5      UUU	U
S.UDSU 3U0D6u  nnU RA                  U5      n0 n[        RB                  (       a  U RE                  UU
5        UUUUUS.$ s  snnf s  snf )Nz\\|/z
conda-metar   )EnvironmentLocationNotFoundrootCONDA_SHLVLrW   r   CONDA_PREFIXz=WARNING: overwriting environment variables set in the machinefilezoverwriting variable __CONDA_SHLVL__)pathconda_prefixconda_shlvlconda_default_envconda_prompt_modifierr   CONDA_PREFIX_CONDA_STACKED_truerP   r   rQ   r   r   )#researchexpandr   r   
exceptionsr   r   r   root_prefixr   intosgetenvstriprp   _get_activate_scripts_default_env_prompt_modifier_get_environment_env_varsrH   r   setintersectionenvironprintsysstderrrT   r0   _add_prefix_to_path_replace_prefix_in_path_get_deactivate_scripts	changeps1_update_prompt)r?   re   rc   prefixr   old_conda_shlvlold_conda_prefixr   r   r   r   rR   rS   env_varsclobber_varsclobber_varoverwritten_clobber_varsrQ   rP   r   r   s                        rA   r    _Activator._build_activate_stackT  s   99W011./Ffl344C1&99 5  M6#::((F*+=>F biir:@@BGaH99^4 %/A*=((**55f=%) --f5 $ 5 5f P  $==fEKKM
M00 DKM 	 
 8}11"**=  ,$
+yy%)>> + 	! $

 $OZZ )*B)CD3::V DBD))D/H~o%6av>? ! a&*&@&@ '&&t'?'?'GH#'"3&;' '#K "$&*&@&@ '&&t'?'?'GH#'"3&;' ' $O#457G$[M2F'#K "$&*&@&@ '&&001AJ $'"3&;' ' $O#457G'#K "&!=!=>N!O*?@ % &"4 0
 	
E
$
s   :L#L# L)&L)c                   SU l         [        R                  " S5      n[        [        R                  " SS5      R	                  5       =(       d    S5      nU(       a  US:  a  S0 0 SSS.$ U R                  U5      nU R                  U5      nUS-
  n0 nUS:X  a>  U R                  U R                  U5      5      nU R                  S US S S	9u  pSn
SnS
U0nGOUS:  d   e[        R                  " SU-  5      nU R                  U5      nU R                  X5      n
U R                  U5      nSU-  [        R                  ;   nSnSU-  /n	U(       a5  U R                  U R                  U5      5      nU	R                  SU-  5        O U R                  U R                  X5      5      nU R                  " SUUUU
S	.UD6u  nnU	U-  n	S
U0nU R                  U5      n[         R"                  (       a  U R%                  Xj5        UR'                  5        H>  n[        R                  " SU SU 35      =n(       a  UUU'   M-  U	R                  U5        M@     U	UUUUUS.$ )NTr   r   rW   r   r   r   r   )r   r   r   r   PATHzCONDA_PREFIX_%dzCONDA_STACKED_%dr   r   )rP   r   rQ   r   r   r   )_deactivater   r   r   r   r   r   r0   _remove_prefix_from_pathrT   r   r   r   rJ   r   r   r   r   r   keys)r?   r   r   r   old_conda_environment_env_varsnew_conda_shlvlr   new_pathrQ   rP   r   r   r   
new_prefixr   new_conda_environment_env_varsold_prefix_stackedunset_vars2env_var
save_values                       rA   rk   _Activator.build_deactivate  s   99^4biir:@@BGaH?Q#6 !!&($&  "99:JK)-)G)G*
& *A-a((--.>?H '+&@&@!+"&&*	 'A '#K %'!!!8,K"Q&&&#4#FGJ $ 1 1* =$($9$9*$X!-1-K-KJ-W*!3o!E!SH+o=>J!,,112BC !!"4"FG,,001AN (,'A'A ('+"3&;	(
 1($K +%J!8,K#99*E@5::<GYY7H''STTzT'1G$!!'*	 = % &&"4 0
 	
rD   c                b   SU l         [        R                  " S5      n[        [        R                  " SS5      R	                  5       =(       d    S5      nU(       a  US:  a  / 0 0 SSS.$ [        R                  " S	U R                  U5      5      nU R                  U R                  X5      5      n0 nU R                  X5      n[        R                  (       a  U R                  XV5        U R                  UUU R                  X5      S
9u  pxUUUU R                  U5      U R                  U5      S.$ )NTr   r   rW   r   r   r   r   CONDA_DEFAULT_ENV)r   r   CONDA_PROMPT_MODIFIER)_reactivater   r   r   r   r   r0   r   r   r   r   r   rT   r   r   )	r?   r   r   r   r   r   r   rQ   rP   s	            rA   rp   _Activator.build_reactivate  s/   yy0"))M26<<>C!D{Q !!&($&  II!2!2<!@
 $$((D
  $ 5 5l V@"&"<"<#"&"7"7# #= #
 % &"&">">|"L $ : :< H
 	
rD   c                    SSS.n[         R                  " S[        R                  U;   a  U[        R                     OS5      nUR	                  [         R
                  5      nU$ )Nz/usr/bin:/bin:/usr/sbin:/sbinzcC:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\)darwinwin32r   z/usr/bin)r   r   r   platformsplitpathsep)r?   clean_pathsr   
path_splits       rA   _get_starting_path_list"_Activator._get_starting_path_list:  sY     6?	
 yy),)DK%*
 ZZ

+
rD   c              #    #    [         (       Ga  UR                  U R                  5      v   / nS Hk  nU R                  R                  USU45      n[        R
                  " SU5      (       a  [        XA5      n[        U5      (       d  MZ  UR                  U5        Mm     [        U5      S:  aI  [        SU SU S3[        R                  S9  [        S	U R                  U5       3[        R                  S9  U(       a$  U R                  R                  USUS
   S45      v   U R                  R                  USSS45      v   U R                  R                  USSS45      v   U R                  R                  USS45      v   U R                  R                  US45      v   U R                  R                  US45      v   g U R                  R                  US45      v   g 7f)N)ucrt64clang64mingw64
clangarm64Libraryz#^(/[A-Za-z]/|/cygdrive/[A-Za-z]/).*r   z	WARNING: z: z1 MSYS2 envs exist: please check your dependenciesr   zWARNING: conda list -n r   binz	mingw-w64usrScripts)r   rstripr1   r   r   matchr   r   rJ   r   r   r   r   r   )r?   r   variantsvariantr   s        rA   _get_path_dirs_Activator._get_path_dirsO  s    6--)) HIxx}}fi%AB 88A6JJ+D9D;;OOG, J 8}q xr(3de -d.?.?.G-HI
 hhmmVYU$KLL((--K GHH((--E5 ABB((--E :;;((-- 344((--00((--00s   BG#
EG#c                <   U R                  U5      nUc)  [        U R                  U R                  5       5      5      nO[        U R                  U5      5      n[        [        R
                  " SS5      R                  5       =(       d    S5      nU(       dQ  [        S U5       5      (       d;  U R                  [        [        R                  S5      5      nUR                  SU5        [        U R                  U R                  U5      5      5      USS& [        U5      $ )Nr   rW   r   c              3  B   #    U  H  oR                  S 5      v   M     g7f)condabinN)r   )r   ps     rA   r   1_Activator._add_prefix_to_path.<locals>.<genexpr>  s     *U9a::j+A+A9s   r'  )r2   r   r  r   r   r   r   anyr   r   r   insertr#  r   )r?   r   starting_path_dirs	path_listr   condabin_dirs         rA   r   _Activator._add_prefix_to_pathz  s    %%f-%T11$2N2N2PQRIT112DEFI biir:@@BGaHs*U9*U'U'U//W5I5I:0VWLQ-d2243F3Fv3NOP	!AYrD   c                (    U R                  US U5      $ r=   )r   )r?   r   r,  s      rA   r   #_Activator._remove_prefix_from_path  s    ++FD:LMMrD   c                   U R                  U5      nU R                  U5      nUc)  [        U R                  U R                  5       5      5      nO[        U R                  U5      5      nS nUb  [        U R	                  U5      5      nU" XFS   5      nUc  SnO[        U5      S-
  nS n	U	cA  US:  a;  U" XFU   5      n	U	c  [        SXh    3[        R                  S9  US-
  nU	c  US:  a  M;  U R                  U R                  R                  [        R                  SS45      5      n
XIS-      U
:X  a  U	S-  n	XGU	S-   2	 OSnUb  [        U R	                  U5      5      XGU& [        U5      $ )	Nc                T    [        U 5       H  u  p#[        X15      (       d  M  Us  $    g r=   )	enumerater   )paths	test_pathqr   s       rA   index_of_path9_Activator._replace_prefix_in_path.<locals>.index_of_path  s(    $U+t//H , rD   r   r   r   zDid not find path entry r   r  r  )r2   r   r  r   r#  r   r   r   r   r1   r   r   )r?   
old_prefixr   r,  r-  r8  prefix_dirs	first_idxprefix_dirs_idxlast_idxlibrary_bin_dirs              rA   r   "_Activator._replace_prefix_in_path  s   ))*5
))*5
%T11$2N2N2PQRIT112DEFI	 ! 3 3J ?@K%iQ@I 	"%k"2Q"6&?R+?,YO8TUH'6{7S6TU!$ '6&9O &?R+? #'"6"6HHMM3::y%"@A# \*o=MH(Q,67I!-1$2E2Ej2Q-RI	*YrD   c                    g r=   r   )r?   r   r   s      rA   r   _Activator._update_prompt  s    rD   c                    [        U[        R                  5      (       a  g[        [	        U5      5      S:X  a  [        U5      $ U$ )Nbaseenvs)r   r   r   r   r   )r?   r   s     rA   r   _Activator._default_env  s8    vw2233#+GFO#<#FxRFRrD   c                &   [         R                  (       Ga  / n/ n[        [        R                  " SS5      R                  5       5      n[        SUS-   5       H  nXe:X  a'  U R                  [        R                  " SS5      5      nO7U R                  [        R                  " SU 3S5      R                  5       5      n[        [        R                  " SU 3S5      R                  5       5      nUR                  U5        U(       d  USS	 nUR                  U5        M     [        U S
S5      n	[        U SS5      n
U	(       a^  USS	 nUSS	 n[        [        R                  " SU 3S5      R                  5       5      nU(       d  U(       a  UR                  US	   5        O2U
(       a  O*[        U SS5      nU(       d  USS	 nUR                  U5        SR                  US S S	2   5      n[         R                  R                  UUU[        U5      S9$ g)Nr   0r   r   rW   r   r   r   r   r   Fr
  rc   ,)default_envstacked_envr   rR   )r   r   r   r   r   r  ranger   boolrJ   r   r   
env_promptformatr   )r?   r   r   	env_stackprompt_stack	old_shlvlienv_i	stacked_ir+   r)   stackedrc   conda_stacked_envs                 rA   r   _Activator._prompt_modifier  s   ILBIImS9@@BCI1i!m,> --bii.KLE --		M!"5r:AACE !^A3+?!D!K!K!MN	  ' #/"#5L##E* - !}e<J }e<J+Ab1%aO	ryy>))ErJQQST9 ''	"6gu5#/"#5L##$56 #dd); <%%,,--f%	 -   rD   c           	        ^^ U R                   m[        T5      * m S [        R                  " [	        USSS5      5      5       nU R                  [        UU4S jU5       5      5      $ ! [
         a     gf = f)Nc              3  :   #    U  H  nUR                   v   M     g 7fr=   r   r   entrys     rA   r   3_Activator._get_activate_scripts.<locals>.<genexpr>  s      SE 

S   etccondaz
activate.dr   c              3  <   >#    U  H  oTS  T:X  d  M  Uv   M     g 7fr=   r   r   r(  _script_extensionse_lens     rA   r   r^     s     Gez5F'F11e   	r3   r   r   scandirr   OSErrorr2   r   r?   r   r5  rd  re  s      @@rA   r    _Activator._get_activate_scripts  s|     11'((	ZZVUG\(RSE ##GeGG
 	
  		s   (A( (
A54A5c           	        ^^ U R                   m[        T5      * m S [        R                  " [	        USSS5      5      5       nU R                  [        UU4S jU5       SS95      $ ! [
         a     gf = f)	Nc              3  :   #    U  H  nUR                   v   M     g 7fr=   r[  r\  s     rA   r   5_Activator._get_deactivate_scripts.<locals>.<genexpr>  s      UE 

Ur_  r`  ra  zdeactivate.dr   c              3  <   >#    U  H  oTS  T:X  d  M  Uv   M     g 7fr=   r   rc  s     rA   r   rn    s     Hu!&'
6G(GAAurf  T)reverserg  rj  s      @@rA   r   "_Activator._get_deactivate_scripts  s     11'((	ZZVUG^(TUE ##HuHRVW
 	
  		s   (A' '
A43A4c                `   [        U[        5      n[        U[        5      n0 n[        U5      (       as  [	        S [
        R                  " U5      5       5       HJ  n[        U5       nUR                  [        R                  " UR                  5       5      5        S S S 5        ML     [        U5      (       a  [        U5       n[        R                  " UR                  5       5      nUR                  S0 5      nUR                  5       V	s/ s H  oUR                  5       ;   d  M  U	PM     n
n	U
 H7  n[        S[        R                   S9  [        SU S3[        R                   S9  M9     UR                  U5        S S S 5        U$ U$ ! , (       d  f       GM>  = fs  sn	f ! , (       d  f       U$ = f)Nc              3  8   #    U  H  oR                   v   M     g 7fr=   r[  r\  s     rA   r   7_Activator._get_environment_env_vars.<locals>.<genexpr>  s      +(Cu

(Cs   r   zbWARNING: duplicate env vars detected. Vars from the environment will overwrite those from packagesr   z	variable z duplicated)r   r   r   r   r   r   rh  openupdatejsonloadsreadr   r   r   r   r   )r?   r   env_vars_filepkg_env_var_dirr   pkg_env_var_pathfprefix_stateprefix_state_env_varsevdup_varsdups               rA   r   $_Activator._get_environment_env_vars  sh   V%67v';< /""$* +(*

?(C+ %  *+qOODJJqvvx$89 ,+% -  m$#zz!&&(3(4(8(8R(H%!)!02:O:T:T:V4VB   $C= ZZ
 IcU+6SZZH $  56 % x) ,+ %$ s2   &4FAF	F$F*AF
F	F
F-)r   r>   r
  r   re   rc   r=   )T)rt   zbool | Nonereturnr/   )r  r4   r  None)'__name__
__module____qualname____firstlineno____annotations__rB   rT   r`   r*   r+   r)   r    argumentr'   r   r(   abcabstractmethodrx   r{   r   rg   rf   rd   r   rk   rp   r  r#  r   r   r   r   r   r   r   r   r   __static_attributes__r   rD   rA   r-   r-   A   s\   . 	H  ""!!(1'f(




 )=oV" W" 0

* 	" " 5< 6<|0&EDa
FX
t'
R*)1V &N, \S
-^

rD   r-   )	metaclassc                <    [        [        [        U 5      5      5      $ r=   )r   r	   r
   r[  s    rA   r   r   2  s    :j./00rD   r   rr   z0Use `conda.common.compat.ensure_binary` instead.r   c                J     U R                  S5      $ ! [         a    U s $ f = f)Nzutf-8)encodeAttributeError)rS   s    rA   ensure_binaryr  6  s,    ||G$$  s    ""c                V    SSK Jn   U R                  U5      $ ! [         a    U s $ f = f)Nr   )FILESYSTEM_ENCODING)common.compatr  decoder  )rS   r  s     rA   ensure_fs_path_encodingr  @  s.    2||/00 s    ((_Cygpathz)Use `conda.common.path._cygpath` instead.native_path_to_unixz1Use `conda.common.path.win_path_to_unix` instead.unix_path_to_nativez1Use `conda.common.path.unix_path_to_win` instead.r   z.Use `conda.common.path.path_identity` instead.c           	         U c  g [        U [        5      (       a  U R                  SS5      $ [        U Vs/ s H  oR                  SS5      PM     sn5      $ s  snf )NrG   rF   )
isinstancer/   replacer   )r5  r   s     rA   backslash_to_forwardslashr  j  sP     }	E3		}}T3''%@%$ll4-%@AA@s   Ac                      \ rS rSrSR                  rSr\" \(       a  \	O\
5      rSrSrSrSrSrS	rS
r\" \SSSS5      rS rSS jrSrg)PosixActivatoriu  :rF   .shNrw   zunset %szexport %s='%s'z%s='%s'. "%s"shellr`  	profile.dzconda.shc                    [         R                  " SS5      nSU;   a  g [         R                  " S5      nU(       a,  [        R                  " [        R                  " U5      SU5      nUR                  SS5      nUR                  SX#-   05        g )NPS1rW   POWERLINE_COMMANDr	  'z'"'"')r   r   r   subescaper  rv  )r?   r   r   ps1current_prompt_modifiers        rA   r   PosixActivator._update_prompt  sx    iir"#%"$)),C"D"&&#:;S#FC kk#y),2	
rD   c                f   / n[         R                  R                  5        Hz  u  p#Uc"  UR                  U R                  US4-  5        M*  [
        (       a&  SU;   d  SU;   a  UR                  SU SU S35        M[  UR                  U R                  X#4-  5        M|     SR                  U5      S-   $ )NrW   rF   rG   zexport z="$(cygpath 'z')"rw   )r   rL   rH   rJ   r8   r   r   r?   resultr   rS   s       rA   rx   PosixActivator._hook_preamble  s    !55;;=JC} d22c2Y>?SE\TU]'#mE7#HId22c\AB > yy 4''rD   r   r  r/   )r  r  r  r  r   r0   r1   staticmethodr   r   _path_identityr2   r3   r5   r6   r7   r8   r9   r:   r   r   r;   r   rx   r  r   rD   rA   r  r  u  sh    88L
C"v#3>ROLN&OLO
$(rD   r  c                      \ rS rSrSR                  rSr\" \(       a  \	O\
5      rSrSrSrSrSrS	rS
rSrS rSS jrSrg)CshActivatori  r  rF   z.cshN;
zunsetenv %szsetenv %s "%s"zset %s='%s'source "%s"c                    [         R                  " SS5      n[         R                  " S5      nU(       a,  [        R                  " [        R                  " U5      SU5      nUR                  SX#-   05        g )NpromptrW   r	  )r   r   r   r  r  rv  r?   r   r   r  r  s        rA   r   CshActivator._update_prompt  s[    8R("$)),C"D"VVBII&=>VLF/8	
rD   c                f   [        [        SSSS5      n[        (       aJ  S[        R                   S[        R
                   S[        R                   S[        R                   S	U S
3$ S[        R                   S[        R
                   S[        R                   S[        R                   SU S3$ )Nr  r`  r  z	conda.cshzsetenv CONDA_EXE "`cygpath 'z#'`";
setenv _CONDA_ROOT "`cygpath 'z"'`";
setenv _CONDA_EXE "`cygpath 'z('`";
setenv CONDA_PYTHON_EXE "`cygpath 'z'`";
source "`cygpath 'z'`";
zsetenv CONDA_EXE "z";
setenv _CONDA_ROOT "z";
setenv _CONDA_EXE "z";
setenv CONDA_PYTHON_EXE "z";
source "z";
)r   r   r   r   	conda_exer   r   
executable)r?   r;   s     rA   rx   CshActivator._hook_preamble  s      
 6/0A0A/B C2292F2F1G H1181B1B0C D77:~~6F G&&6%7w	@ %W%6%6$7 8''.';';&< =&&-&7&7%8 9,,/NN+; <+,D	2rD   r   r  )r  r  r  r  r   r0   r1   r  r   r   r  r2   r3   r5   r6   r7   r8   r9   r:   r;   r   rx   r  r   rD   rA   r  r    sT    88L
C"v#3>ROL"N&O L#O	
rD   r  c                      \ rS rSr\(       a  SR
                  OSR
                  rSr\" \(       a  \	O\
5      r\(       a  SOSrSrSrS	rS
rS
r\(       a  SOSr\" \SS5      rSS jrSrg)XonshActivatori  ;r  rF   .batr  Nrw   z*try:
    del $%s
except KeyError:
    passz
$%s = '%s'z'source-cmd --suppress-skip-message "%s"z+source-bash --suppress-skip-message -n "%s"r  z	conda.xshc                   / n[         R                  R                  5        HV  u  p#Uc   UR                  U R                  U-  5        M(  UR                  U R
                  X R                  U5      4-  5        MX     SR                  U5      S-   $ )Nrw   )r   rL   rH   rJ   r7   r8   r2   r   r  s       rA   rx   XonshActivator._hook_preamble  sz    !55;;=JC}d11C78d22c;O;OPU;V5WWX	 >
 yy 4''rD   r   r  )r  r  r  r  r   r   r0   r1   r  r  r  r2   r3   r5   r6   r7   r8   r9   r:   r   r   r;   rx   r  r   rD   rA   r  r    sy    %388388L
C"%+!O
 "(vULDN"OL  	2:  .E(rD   r  c                  p    \ rS rSrSR                  rSr\" \5      r	Sr
SrSrSrS=rrS	rS
rS rSS jrSrg
)CmdExeActivatori  r  rG   r  z.envrw   z%s=z%s=%sz_CONDA_SCRIPT=%sNc                    [         R                  " SS5      n[         R                  " S5      nU(       a,  [        R                  " [        R                  " U5      SU5      nX#-   US'   g )NPROMPTrW   r	  )r   r   r   r  r  r  s        rA   r   CmdExeActivator._update_prompt  sN    8R("$)),C"D"VVBII&=>VLF2;rD   c                    g r=   r   rl   s    rA   rx   CmdExeActivator._hook_preamble  s     	rD   r   r  )r  r  r  r  r   r0   r1   r  r  r2   r3   r5   r6   r7   r8   r9   r:   r;   r   rx   r  r   rD   rA   r  r    sQ    88L
C">2OL
 N%,,Ol(O<rD   r  c                      \ rS rSrSR                  rSr\" \(       a  \	O\
5      rSrSrSrSrSrS	rS
r\" \SSSSS5      rSS jrSrg)FishActivatori   z" "rF   z.fishNr  z	set -e %szset -gx %s "%s"zset -g %s "%s"r  r  r`  fishzconf.dz
conda.fishc                   [         (       a^  [        S[        R                   S[        R                   S[        R                   S[
        R                   S3	5      R                  5       $ [        S[        R                   S[        R                   S[        R                   S	[
        R                   S
3	5      R                  5       $ )Nz-
                set -gx CONDA_EXE (cygpath "z-")
                set _CONDA_ROOT (cygpath "z,")
                set _CONDA_EXE (cygpath "z6")
                set -gx CONDA_PYTHON_EXE (cygpath "z")
                z$
                set -gx CONDA_EXE "z#"
                set _CONDA_ROOT "z""
                set _CONDA_EXE "z,"
                set -gx CONDA_PYTHON_EXE "z"
                )r   r   r   r  r   r   r  r   rl   s    rA   rx   FishActivator._hook_preamble6  s    6--4->->,? @++2+?+?*@ A**1*;*;)< =447NN3C D	 eg $$+$5$5#6 7"")"6"6!7 8!!(!2!2 3 4++.>>*: ;	 egrD   r   r  )r  r  r  r  r   r0   r1   r  r   r   r  r2   r3   r5   r6   r7   r8   r9   r:   r   r   r;   rx   r  r   rD   rA   r  r     sf    ::L
C"v#3>ROL N'O#L#OrD   r  c                      \ rS rSr\(       a  SR
                  OSR
                  r\(       a  SOSr\" \	5      r
SrSrSrS	rS
rS
rSr\" \SSS5      rSS jrSS jrSrg)PowerShellActivatoriK  r  r  rG   rF   z.ps1Nrw   z$Env:%s = $nullz$Env:%s = "%s"r  r  r'  zconda-hook.ps1c                   [         R                  (       a[  [        S[         S[        R
                   S[         S[         R                   S[         R                   S35      R                  5       $ [        S[         R                   S[         R                   S[         R                   S[         R                   S3	5      R                  5       $ )	Nz$
                $Env:PYTHONPATH = "z$"
                $Env:CONDA_EXE = "zq"
                $Env:_CE_M = "-m"
                $Env:_CE_CONDA = "conda"
                $Env:_CONDA_ROOT = "z%"
                $Env:_CONDA_EXE = "z4"
                $CondaModuleArgs = @{ChangePs1 = $z}
                z#
                $Env:CONDA_EXE = "zp"
                $Env:_CE_M = $null
                $Env:_CE_CONDA = $null
                $Env:_CONDA_ROOT = ")r   r   r   r   r   r  r   r  r   r   r   rl   s    rA   rx   "PowerShellActivator._hook_preamble_  s    ;;$$5#6 7##&>>"2 3% &8$8 9$$+$5$5#6 744;4E4E3F G
 eg
 ##*#4#4"5 6% &-%9%9$: ;$$+$5$5#6 744;4E4E3F G	 eg	rD   c                    g)NzRemove-Variable CondaModuleArgsr   rl   s    rA   r{   #PowerShellActivator._hook_postamblex  s    0rD   r   r  )r  r  r  r  r   r   r0   r1   r  r  r2   r3   r5   r6   r7   r8   r9   r:   r   r   r;   rx   r{   r  r   rD   rA   r  r  K  sl    %388388L$cC">2OL&N&O#LO	21rD   r  c                  6    \ rS rSrSr\rSr\rS r	S r
S rSrg)JSONFormatMixini|  zPReturns the necessary values for activation as JSON, so that tools can use them.Nc                    [         R                  (       a-  [        [        R                  SS[
        [         R                  S.$ [         R                  SS[         R                  [         R                  S.$ )Nz-mra  )
PYTHONPATH	CONDA_EXE_CE_M	_CE_CONDA_CONDA_ROOT
_CONDA_EXErW   )r  r  r  r  r  )r   r   r   r   r  r   r  r   rl   s    rA   rx   JSONFormatMixin._hook_preamble  s\    ;;/ ^^$1%//  %..&33%// rD   c                2   0 nU H  nUR                  U5        M     UnUc  [        R                  " USS9$ U(       a5  [        SUSS9 n[        R                  " XSS9  S S S 5        UR
                  $ [        5       e! , (       d  f       WR
                  $ = f)N   )indentrX   FrY   )rv  rw  dumpsr   dumprR   r]   )r?   r(   r^   merged_cmdsr_   s         rA   r`   JSONFormatMixin._finalize  s    EMM%   ;::hq11'SG2 		(q1 H 77N%'' HG 77Ns   	A==
Bc              #  j  #    UR                  S0 5      nUR                  S0 5      nSU;   a6  UR                  S/ 5      nUR                  UR                  S5      5        XBS'   UUUR                  SS5      UR                  S0 5      S.UR                  SS5      UR                  S	S5      S
.S.v   g 7f)Nr   rQ   r   rP   r   r   )exportunsetr   r   r   )r*   r+   )r   varsscripts)r   rM   pop)r?   r   r   rQ   r   s        rA   rg   JSONFormatMixin._yield_commands  s      }}]B/mmM26[ xx+HOOKOOF34#L %"|R8 }}Z4 &MM*<bA'mm,@"E
 	
s   B1B3r   )r  r  r  r  __doc__r   r0   r5   r6   rx   r`   rg   r  r   rD   rA   r  r  |  s$    ZLL&("
rD   r  )posixashbashdashzshcshtcshxonshzcmd.exer  
powershellzdict[str, type[_Activator]]activator_maprw  c                    U R                  S5      nUS   USS p2[        U   /nU H  nUR                  [        U   5        M     [	        S[        [        U5      5      0 5      nU$ )a  Dynamically construct the activator class.

Detect the base activator and any number of formatters (appended using '+' to the base name).
For example, `posix+json` (as in `conda shell.posix+json activate`) would use the
`PosixActivator` base class and add the `JSONFormatMixin`.
+r   r   N	Activator)r  r   rJ   formatter_maptyper   reversed)r  	shell_etc	activator
formattersbasesr}  clss          rA   _build_activator_clsr    si     C I%aL)AB-z9%&E]1%&  {E(5/2B
7CJrD   )r5  zstr | Iterable[str] | Noner  zstr | tuple[str, ...] | None)Nr  
__future__r   r  rw  r   r   r   loggingr   os.pathr   r   r   r   r	   r
   r   r   pathlibr   textwrapr   typingr   rW   r   r   auxlib.compatr   base.constantsr   r   r   base.contextr   r   r   r  r   common.pathr   r   r   r   r   r  deprecationsr    r   r!   r"   r#   r$   collections.abcr%   r&   r  logr   ABCMetar-   r   r  r  constantr  r  r  r  r  r  r  r  r   r  r  r  r   rD   rA   <module>r     s2   # 
  	 	 
 	 	 	     4 1 
 H G ! R R 8 $ P P2  "J'l+ n3;; nb1 FF%WX Y FF    

8  
  

@   

@   

=B%B!B2(Z 2(j3: 3l(Z (Dj <(J (V.1* .1bA
j A
J %.*  O
rD   