B
    '\Л                 @   s  d dl mZmZmZmZ d dlmZ d dlmZ d dl	m	Z	 d dl
mZ d dlZd dlmZmZmZmZmZmZmZ d dlZd dlZd dlmZ d	d
lmZmZ d	dlmZmZ d	dlm Z  d	dl!m"Z"m#Z#m$Z$ d	dl%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+ d	dl,m-Z- G dd de.Z/dd Z0dd Z1dd Z2dd Z3dd Z4G dd de/Z5G dd de/Z6G d d! d!e/Z7G d"d# d#e/Z8G d$d% d%e/Z9G d&d' d'e/Z:e5e5e5e5e5e6e6e7e8e9e:d(Z;d,d)d*Z<e=d+kre>e<  dS )-    )absolute_importdivisionprint_functionunicode_literals)OrderedDict)ENOENT)glob)chainN)abspathbasenamedirname
expanduser
expandvarsisdirjoin)dedent   )CONDA_PACKAGE_ROOT
CondaError)concatvdrop)Utf8NamedTemporaryFile)ROOT_ENV_NAMEcontextlocate_prefix_by_name)FILESYSTEM_ENCODINGPY2	iteritemson_winstring_types	text_type)paths_equalc               @   s4  e Zd ZdZdZdZdZdZdZdZ	dZ
dZdZdZd?ddZdd Zdd Zdd	 Zd
d Zdd Zdd Zdd Zd@ddZdd Zdd Zdd Zdd Zdd Zdd Zd d! Zd"d# Zd$d% Zd&d' Z d(d) Z!dAd+d,Z"dBd-d.Z#dCd/d0Z$dDd1d2Z%d3d4 Z&d5d6 Z'd7d8 Z(d9d: Z)d;d< Z*d=d> Z+dS )E
_ActivatorNc             C   s2   || _ tr"dd ttjD | _ntj | _d S )Nc             S   s   i | ]\}}t |t |qS  )ensure_fs_path_encoding).0kvr#   r#   -lib/python3.7/site-packages/conda/activate.py
<dictcomp>C   s   z'_Activator.__init__.<locals>.<dictcomp>)_raw_argumentsr   r   osenvironcopy)self	argumentsr#   r#   r(   __init__?   s
    z_Activator.__init__c             C   s   |}d|ks|d dk	rdnd}g }g }ddl m} | }xDtj D ]6\}}	|	dksZ|rf|| qF|	rt| |	n|	||< qFW ddl m} | }
xD| D ]8\}}	|dkrqq|	dkr||  q|	|
| < qW ||7 }|t|
 | }
|
|fS )a)  
        :param kwargs: environment variables to export. The `conda_exe_vars` meta
                       variables are also exported by default. If you do not want
                       this to happen then pass:
                           conda_exe_vars=None
                       .. if you pass and set any other variable to None, then it
                       emits it to the dict with a value of None.

        :return: A OrderedDict of env vars to export ordered the same way as kwargs.
                 And a list of env vars to unset.
        Zconda_exe_varsNFTr   )r   )	collectionsr   r   conda_exe_vars_dictitemsappendpath_conversionupperr	   )r.   odargskwargsZconda_exe_vars_NoneZconda_exe_unset_vars
unset_varsr   Zconda_exe_vars_exportr&   r'   export_varsr#   r#   r(   get_export_unset_varsI   s,    z _Activator.get_export_unset_varsc             K   sJ   | j t|d\}}|d k	r2tt| | }|d k	rB||7 }||fS )N)r7   )r;   r   r	   r3   )r.   r:   r9   r8   Znew_export_varsZnew_unset_varsr#   r#   r(   add_export_unset_varsq   s    z _Activator.add_export_unset_varsc                sl    j t|d\}}d  }}|r> j fdd| D }|r\ j fdd|D }|pbd|phdfS )N)r7   c                s   g | ]\}} j ||f qS r#   )export_var_tmpl)r%   r&   r'   )r.   r#   r(   
<listcomp>   s    z<_Activator.get_scripts_export_unset_vars.<locals>.<listcomp>c                s   g | ]} j | qS r#   )unset_var_tmpl)r%   r&   )r.   r#   r(   r>      s     )r;   r   command_joinr   r3   )r.   r8   r:   r9   Zscript_export_varsZscript_unset_varsr#   )r.   r(   get_scripts_export_unset_varsz   s    z(_Activator.get_scripts_export_unset_varsc          	   C   s^   t |d}|d kr| j|S |rTtd|dd}|| j| W d Q R X |jS t d S )N)r@   zw+F)suffixdelete)r   rA   r   r   writenameNotImplementedError)r.   commandsZextZtfr#   r#   r(   	_finalize   s    
z_Activator._finalizec             C   s4   | j r| | j}n| | j}| | || jS )N)stackbuild_stackenv_name_or_prefixbuild_activaterI   _yield_commandstempfile_extension)r.   Zbuilder_resultr#   r#   r(   activate   s    z_Activator.activatec             C   s   |  | |  | jS )N)rI   rN   build_deactivaterO   )r.   r#   r#   r(   
deactivate   s    z_Activator.deactivatec             C   s   |  | |  | jS )N)rI   rN   build_reactivaterO   )r.   r#   r#   r(   
reactivate   s    z_Activator.reactivatec          	   C   s\   g }| |   t| j}| |  W d Q R X |d krDtjsH|rR| d d|S )Nzconda activate base

)r4   _hook_preambleopenhook_source_pathreadr   auto_activate_baser   )r.   rZ   ZbuilderZfsrcr#   r#   r(   hook   s    
z_Activator.hookc             C   s   |  | j t| | j S )N)_parse_and_set_argsr*   getattrcommand)r.   r#   r#   r(   execute   s    z_Activator.executec             C   s<   ddl m} ddlm}m} dt|| t|d S )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_commands)generate_parserfind_builtin_commandsrU   T)Zcli.find_commandsr`   Zcli.conda_argparsera   rb   r   sortedtuple)r.   r`   ra   rb   r#   r#   r(   rH      s
    z_Activator.commandsc             C   s
   t  d S )N)rG   )r.   r#   r#   r(   rV      s    z_Activator._hook_preamblec                s  |d krddl m} |d|d  ttd|}dtfdd|D }t|t|k}t fdd|D } sddl m} |d	nb|rdd
l m}m}m} | | |d|d|dd}	|	  n  dkrddl m} |d   	ds dkr<y|
d}
W n tk
r.   dt_Y nX ||
= dt_ dkry|
d}W n tk
rp   d| _Y nX ||= d| _t|dkrddl m} | d t| d |r|d pd| _n"|rddl m} |d |f  | _d S )Nr   )ArgumentErrorz?'activate', 'deactivate', or 'reactivate' command must be givenr   )z-hz--helpz/?c             3   s   | ]}| kr|V  qd S )Nr#   )r%   arg)
help_flagsr#   r(   	<genexpr>   s    z1_Activator._parse_and_set_args.<locals>.<genexpr>c             3   s   | ]}|r| kr|V  qd S )Nr#   )r%   rf   )r^   r#   r(   rh      s    zS'activate', 'deactivate', 'hook', 'commands', or 'reactivate' command must be given)ActivateHelpDeactivateHelpGenericHelpr[   rH   rT   )rP   rR   r[   rH   rT   )rP   rR   rT   r[   rH   zinvalid command '%s'rP   z--devFTz--stackz) does not accept more than one argument:
rU   basez0%s does not accept arguments
remainder_args: %s
)
exceptionsre   rd   r   lenlistri   rj   rk   endswithindex
ValueErrorr   devrJ   strrL   r^   )r.   r/   re   Znon_help_argsZhelp_requestedZremainder_argsri   rj   rk   Zhelp_classesZdev_idxZ	stack_idxr#   )r^   rg   r(   r\      s^    


z_Activator._parse_and_set_argsc             c   s   x | ddD ]}| j| V  qW x | ddD ]}| j| V  q0W x,t| di D ]\}}| j||f V  qVW x,t| di D ]\}}| j||f V  qW x | ddD ]}| j| V  qW d S )Ndeactivate_scriptsr#   r9   set_varsr:   activate_scripts)getrun_script_tmplr?   r   set_var_tmplr=   )r.   Z	cmds_dictZscriptkeyvaluer#   r#   r(   rN     s    z_Activator._yield_commandsc             C   s   |  |dS )NF)_build_activate_stack)r.   rL   r#   r#   r(   rM     s    z_Activator.build_activatec             C   s   |  |dS )NT)r}   )r.   rL   r#   r#   r(   rK     s    z_Activator.build_stackc             C   s$  t d|r8t|}tt|dsTddlm} ||n|tdfkrLtj	}nt
|}t| jdd pjd}|d }| jd	}||kr|dkr|  S | |}| |}	| ||	}
g }|dkr| | |}| jtd
|fd|fd|fd|	fd|
ffd\}}d}n| jd|d  |kr2|  S |r| | |}d}| jtd
|fd|fd|fd|	fd|
ffd\}}||d| < d|d| < nZ| | ||}| |}| jtd
|fd|fd|fd|	fd|
ffd\}}||d| < i }tjr
| ||
 | | |||||dS )Nz\\|/z
conda-metar   )EnvironmentLocationNotFoundrootCONDA_SHLVLr@   r   CONDA_PREFIXpathconda_prefixconda_shlvlconda_default_envconda_prompt_modifier)r7   r#   zCONDA_PREFIX_%szCONDA_PREFIX_%dtruezCONDA_STACKED_%d)r9   rv   r:   ru   rw   )researchexpandr   r   rm   r~   r   r   root_prefixr   intr,   rx   striprS   _get_activate_scripts_default_env_prompt_modifierpathsep_join_add_prefix_to_pathr;   r   rQ   _replace_prefix_in_path_get_deactivate_scripts	changeps1_update_prompt_build_activate_shell_custom)r.   rL   rJ   prefixr~   old_conda_shlvlnew_conda_shlvlold_conda_prefixrw   r   r   r9   new_pathr:   ru   rv   r#   r#   r(   r}     sv    





z _Activator._build_activate_stackc             C   s  | j d}t| j dd p"d}|r2|dk rFdt t dddS | |}|d }i }|dkr| | |}| jtd|fd	d
|fddfd\}}d}	d}
n|dkst	| j d| }| 
|}| ||}	d| | j k}d}d| g}|r| | |}|d|  n| | ||}| jtd|fd|fd
|fd|fd|	ffd\}}||7 }| |}
tjr| ||	 |||||
dS )Nr   r   r@   r   r   r#   )r9   rv   r:   ru   rw   r   )r   Nr   )r   N)r   N)r7   zCONDA_PREFIX_%dzCONDA_STACKED_%dr   r   r   )r,   rx   r   r   r   r   r   _remove_prefix_from_pathr;   AssertionErrorr   r   r4   r   r   r   r   r   )r.   r   r   ru   r   rv   r   r:   r9   r   rw   
new_prefixr   Zold_prefix_stackedZunset_vars2r#   r#   r(   rQ   d  s`    



z_Activator.build_deactivatec          
   C   s   | j d}t| j dd p"d}|r2|dk rFdt t dddS | j d| |}| | ||}i }| ||}t	j
r| || d|td	|fd|fd
| ||fg| || |dS )Nr   r   r@   r   r   r#   )r9   rv   r:   ru   rw   ZCONDA_DEFAULT_ENVPATHCONDA_PROMPT_MODIFIER)r,   rx   r   r   r   r   r   r   r   r   r   r   r   r   )r.   r   r   r   r   rv   r   r#   r#   r(   rS     s,    z_Activator.build_reactivatec             C   s   ddd}| j dtj|kr&|tj nd}|tj}trt| 	tj
}d}x6|t|k r|t|k rt|| || r|d7 }qRW ||d  }| | jtj
dd	f}t|d |r|dd  }|S )
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/binr   r   Librarybin)r,   rx   sysplatformsplitr+   pathsepr   rd   _get_path_dirsr   rn   r!   r5   sepr   )r.   Zclean_pathsr   Z
path_splitprefix_dirsZstart_indexlibrary_bin_dirr#   r#   r(   _get_starting_path_list  s&    z"_Activator._get_starting_path_listFc             c   s   t rv|dV  | j|dddfV  | j|dddfV  | j|ddfV  | j|dfV  | j|dfV  n| j|dfV  d S )N\r   z	mingw-w64r   ZusrZScripts)r   rstripr   r   )r.   r   Zextra_library_binr#   r#   r(   r     s    z_Activator._get_path_dirsc             C   s   |  |}|d kr&t|  |  }nt|  |}t| jdd pJd}|stdd |D s|  tt	j
d}|d| t|  | ||dd< t|S )Nr   r@   r   c             s   s   | ]}| d V  qdS )condabinN)rp   )r%   pr#   r#   r(   rh     s    z1_Activator._add_prefix_to_path.<locals>.<genexpr>r   )r5   ro   r   r   r,   rx   r   anyr   r   r   insertr   rd   )r.   r   starting_path_dirs	path_listr   Zcondabin_dirr#   r#   r(   r     s    
z_Activator._add_prefix_to_pathc             C   s   |  |d |S )N)r   )r.   r   r   r#   r#   r(   r     s    z#_Activator._remove_prefix_from_pathc       
      C   s   |  |}|  |}|d kr0t|  |  }nt|  |}dd }|d k	rt| |}|||d }|d krxd}q|||d }|d k	st|  | jtj	ddf}	||d  |	kr|d7 }|||d = nd}|d k	rt| ||||< t|S )Nc             S   s(   x"t | D ]\}}t||r
|S q
W d S )N)	enumerater!   )pathsZ	test_pathqr   r#   r#   r(   index_of_path  s    
z9_Activator._replace_prefix_in_path.<locals>.index_of_pathr   r   r   r   )
r5   ro   r   rd   r   r   r   r   r   r   )
r.   Z
old_prefixr   r   r   r   r   Z	first_idxZlast_idxr   r#   r#   r(   r     s,    

z"_Activator._replace_prefix_in_pathc             C   s   d S )Nr#   )r.   r:   r#   r#   r(   r   6  s    z'_Activator._build_activate_shell_customc             C   s   d S )Nr#   )r.   rv   r   r#   r#   r(   r   ;  s    z_Activator._update_promptc             C   s,   t |tjrdS tt|dkr(t|S |S )Nrl   Zenvs)r!   r   r   r   r   )r.   r   r#   r#   r(   r   >  s    z_Activator._default_envc             C   s$   t jrt jj||t|dS dS d S )N)Zdefault_envr   rF   r@   )r   r   Z
env_promptformatr   )r.   r   r   r#   r#   r(   r   C  s    z_Activator._prompt_modifierc             C   s$   |  ttt|dddd| j S )Netccondaz
activate.d*)r5   rc   r   r   script_extension)r.   r   r#   r#   r(   r   M  s    
z _Activator._get_activate_scriptsc             C   s(   |  ttt|dddd| j ddS )Nr   r   zdeactivate.dr   T)reverse)r5   rc   r   r   r   )r.   r   r#   r#   r(   r   R  s    
z"_Activator._get_deactivate_scripts)N)N)F)N)N)N),__name__
__module____qualname__r   r   r5   r   rO   rA   r?   r=   rz   ry   rX   r0   r;   r<   rB   rI   rP   rR   rT   r[   r_   rH   rV   r\   rN   rM   rK   r}   rQ   rS   r   r   r   r   r   r   r   r   r   r   r   r#   r#   r#   r(   r"      sR   

(	
	?LI #



%
r"   c             C   s   t tt| S )N)r
   r   r   )r   r#   r#   r(   r   X  s    r   c             C   s$   y
|  dS  tk
r   | S X d S )Nzutf-8)encodeAttributeError)r|   r#   r#   r(   ensure_binary\  s    
r   c             C   s$   y
|  tS  tk
r   | S X d S )N)decoder   r   )r|   r#   r#   r(   r$   e  s    
r$   c          
   C   s  t st| S | d krd S ddlm}m}m} ddlm} ddlm	} |d}|rbt
jt|dnd}|d7 }t| t}|r| nd	t
j | }	t|	d
r|	d}	y||||||d}
W n\ tk
r } z<|jtkr܂ dd }t|	}	td||	ddd}W d d }~X Y nnX |
j|	d\}}|
j}|dks@|rhd|||f }t|tjd ||||t|dr~| d}|! }|r|"dpd}|r|d S t#|S )Nr   )CalledProcessErrorPIPEPopen)shlex_split_unicoder   )whichbashZcygpathz --path -f -z%sr   zutf-8)stdinstdoutstderrc             S   s0   |  ddddddd}d|d S )Nr   r   /:r@   z//)groupreplacer   )Z
found_pathfoundr#   r#   r(   _translation  s    "z)native_path_to_unix.<locals>._translationz/([a-zA-Z]:[\/\\\\]+(?:[^:*?\"<>|;]+[\/\\\\]*)*)z;/z:/;)inputz$
  stdout: %s
  stderr: %s
  rc: %s
)filer   r   r#   )$r   path_identity
subprocessr   r   r   Zconda._vendor.auxlib.compatr   common.pathr   r+   r   r   r   
isinstancer   r   hasattrr   EnvironmentErrorerrnor   r$   r   subr   r   Zcommunicate
returncodeprintr   r   r   r   r   rd   )r   r   r   r   r   r   r   r^   Zsingle_pathZjoinedr   er   r   r   Zrcmessagefinalr#   r#   r(   native_path_to_unixl  sJ    



 
r   c             C   s&   t | tr| S | d krd S t| S d S )N)r   r   rd   )r   r#   r#   r(   r     s
    
r   c                   s.   e Zd Zd fdd	Zdd Zdd Z  ZS )	PosixActivatorNc                sd   dj | _d| _t| _d| _d | _d| _d| _d| _	d| _
d| _t td	d
dd| _tt| | d S )Nr   r   z.shrU   zunset %szexport %s='%s'z%s='%s'z. "%s"shellr   z	profile.dzconda.sh)r   r   r   r   r5   r   rO   rA   r?   r=   rz   ry   r   rX   superr   r0   )r.   r/   )	__class__r#   r(   r0     s    zPosixActivator.__init__c             C   s`   | j dd}d|krd S | j d}|r>tt|d|}|dd}|d|| i d S )NZPS1r@   ZPOWERLINE_COMMANDr   'z'"'"')r,   rx   r   r   escaper   update)r.   rv   r   Zps1current_prompt_modifierr#   r#   r(   r     s    zPosixActivator._update_promptc             C   s   t r6tjrdtjttf S dtjttj	ddf S n^d}xTtj
 D ]F\}}|d krr|t| j|df d 7 }qF|t| j||f d 7 }qFW |S d S )Nznexport CONDA_EXE="$(cygpath '%s')"
export _CE_M=-m
export _CE_CONDA=conda
export PYTHONPATH="$(cygpath '%s')"
z_export CONDA_EXE="$(cygpath '%s')"
export _CE_M=-m
export _CE_CONDA=conda
export CONDA_BAT="%s"r   z	conda.batr@   rU   )r   r   rs   r   
executabler   r   	conda_exer   r   r2   r3   r=   )r.   resultr{   r|   r#   r#   r(   rV     s    zPosixActivator._hook_preamble)N)r   r   r   r0   r   rV   __classcell__r#   r#   )r   r(   r     s   r   c                   s.   e Zd Zd fdd	Zdd Zdd Z  ZS )	CshActivatorNc                sd   dj | _d| _t| _d| _d | _d| _d| _d| _	d| _
d| _t td	d
dd| _tt| | d S )Nr   r   z.cshz;
zunsetenv %szsetenv %s "%s"zset %s='%s'zsource "%s"r   r   z	profile.dz	conda.csh)r   r   r   r   r5   r   rO   rA   r?   r=   rz   ry   r   rX   r   r   r0   )r.   r/   )r   r#   r(   r0     s    zCshActivator.__init__c             C   sH   | j dd}| j d}|r2tt|d|}|d|| i d S )Npromptr@   r   )r,   rx   r   r   r   r   )r.   rv   r   r   r   r#   r#   r(   r     s    zCshActivator._update_promptc             C   s0   t rdtjtjtjf S dtjtjtjf S d S )Nz\setenv CONDA_EXE `cygpath %s`
setenv _CONDA_ROOT `cygpath %s`
setenv _CONDA_EXE `cygpath %s`zDsetenv CONDA_EXE "%s"
setenv _CONDA_ROOT "%s"
setenv _CONDA_EXE "%s")r   r   r   r   )r.   r#   r#   r(   rV     s
    zCshActivator._hook_preamble)N)r   r   r   r0   r   rV   r   r#   r#   )r   r(   r     s   	r   c                   s&   e Zd Zd fdd	Zdd Z  ZS )XonshActivatorNc                s`   dj | _d| _t| _d| _d| _d| _d| _d| _	d| _
d| _t tdd	| _tt| | d S )
Nr   r   z.xshrU   zdel $%sz
$%s = '%s'zsource "%s"r   z	conda.xsh)r   r   r   r   r5   r   rO   rA   r?   r=   rz   ry   r   rX   r   r   r0   )r.   r/   )r   r#   r(   r0     s    zXonshActivator.__init__c             C   s
   dt j S )NzCONDA_EXE = "%s")r   r   )r.   r#   r#   r(   rV   '  s    zXonshActivator._hook_preamble)N)r   r   r   r0   rV   r   r#   r#   )r   r(   r     s   r   c                   s   e Zd Zd fdd	Z  ZS )CmdExeActivatorNc                sX   dj | _d| _t| _d| _d| _d| _d| _d| _	d| _
d| _d | _tt| | d S )Nr   r   z.batrU   z@SET %s=z@SET "%s=%s"z
@CALL "%s")r   r   r   r   r5   r   rO   rA   r?   r=   rz   ry   rX   r   r   r0   )r.   r/   )r   r#   r(   r0   -  s    zCmdExeActivator.__init__)N)r   r   r   r0   r   r#   r#   )r   r(   r   +  s   r   c                   s&   e Zd Zd fdd	Zdd Z  ZS )FishActivatorNc                sf   dj | _d| _t| _d| _d | _d| _d| _d| _	d| _
d| _t td	d
ddd| _tt| | d S )Nz" "r   z.fishz;
z	set -e %szset -gx %s "%s"zset -g %s "%s"zsource "%s"r   r   fishzconf.dz
conda.fish)r   r   r   r   r5   r   rO   rA   r?   r=   rz   ry   r   rX   r   r   r0   )r.   r/   )r   r#   r(   r0   G  s    zFishActivator.__init__c             C   s0   t rdtjtjtjf S dtjtjtjf S d S )Nz]set -gx CONDA_EXE (cygpath "%s")
set _CONDA_ROOT (cygpath "%s")
set _CONDA_EXE (cygpath "%s")z?set -gx CONDA_EXE "%s"
set _CONDA_ROOT "%s"
set _CONDA_EXE "%s")r   r   r   r   )r.   r#   r#   r(   rV   Y  s
    zFishActivator._hook_preamble)N)r   r   r   r0   rV   r   r#   r#   )r   r(   r   E  s   r   c                   s&   e Zd Zd fdd	Zdd Z  ZS )PowerShellActivatorNc                st   t r
djndj| _t rdnd| _t| _d| _d | _d| _d| _	d| _
d| _d	| _ttd
dd| _tt| | d S )Nr   r   r   r   z.ps1rU   zRemove-Item Env:/%sz$env:%s = "%s"z. "%s"r   r   zconda-hook.ps1)r   r   r   r   r   r5   r   rO   rA   r?   r=   rz   ry   r   rX   r   r   r0   )r.   r/   )r   r#   r(   r0   h  s    zPowerShellActivator.__init__c             C   s*   t jrtdjt dS tdjt dS d S )Na                  $Env:CONDA_EXE = "{context.conda_exe}"
                $Env:_CE_M = "-m"
                $Env:_CE_CONDA = "conda"
                $Env:_CONDA_ROOT = "{context.conda_prefix}"
                $Env:_CONDA_EXE = "{context.conda_exe}"
                )r   z                $Env:CONDA_EXE = "{context.conda_exe}"
                $Env:_CE_M = ""
                $Env:_CE_CONDA = ""
                $Env:_CONDA_ROOT = "{context.conda_prefix}"
                $Env:_CONDA_EXE = "{context.conda_exe}"
                )r   rs   r   r   )r.   r#   r#   r(   rV   y  s
    z"PowerShellActivator._hook_preamble)N)r   r   r   r0   rV   r   r#   r#   )r   r(   r   f  s   r   )posixZashr   ZdashZzshZcshZtcshZxonshzcmd.exer   Z
powershellc          
   C   s   ddl m} t  |  | p"tj} t| dks4t| d dsFt| d 	ddd}| dd  }yt
| }W n  tk
r   td| Y nX ||}yt| dd d	S  tk
r } z(t|trtt|tjd
 |jS  W d d }~X Y nX d S )Nr   )init_std_stream_encoding   zshell.r@      z%s is not a supported shell.)endr   )r   )common.compatr   r   r0   r   argvrn   r   
startswithr   activator_mapKeyErrorr   r   r_   	Exceptionr   r    r   Zreturn_code)r  r   r   Zactivator_argsZactivator_clsZ	activatorr   r#   r#   r(   main  s*    

r  __main__)N)?Z
__future__r   r   r   r   r1   r   r   r   r   	itertoolsr	   r+   os.pathr
   r   r   r   r   r   r   r   r   textwrapr   r@   r   r   Z_vendor.toolzr   r   Z_vendor.auxlib.compatr   Zbase.contextr   r   r   r  r   r   r   r   r   r    r   r!   objectr"   r   r   r$   r   r   r   r   r   r   r   r   r  r  r   exitr#   r#   r#   r(   <module>   sZ   $     B	6	@)!'

