U
    .e                     @   s,  d Z ddlZddlZddlmZ ddlZddlmZmZm	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ejeddidejdddedddejdd dedd!dejd"dedd#dejd$d%dedd&dejd'dedd(dejd)dedd*deje	d.d,d-ZdS )/z3The ``celery shell`` program, used to start a REPL.    N)import_module)CeleryCommandCeleryOptionhandle_preload_optionsc                 C   s^   dd l }zdd l}W n tk
r(   Y n&X dd l}||| j |d |j| d d S )Nr   ztab:complete)local)	codereadlineImportErrorrlcompleterZset_completerZ	CompleterZcompleteparse_and_bindZinteract)localsr   r   r
    r   4/tmp/pip-unpacked-wheel-f4liivr4/celery/bin/shell.py_invoke_fallback_shell   s    

r   c                 C   s   dd l }||  d S Nr   )bpythonembed)r   r   r   r   r   _invoke_bpython_shell   s    r   c              	   C   s<   t ttttfD ](}z|| W   S  tk
r4   Y qX qd S )N)_ipython_ipython_pre_10_ipython_terminal_ipython_010_no_ipythonr	   )r   ipr   r   r   _invoke_ipython_shell   s     r   c                 C   s   ddl m} |g | d d S )Nr   )start_ipythonargvuser_ns)IPythonr   )r   r   r   r   r   r   )   s    r   c                 C   s:   ddl m} | }|jg d |jj|  |  d S )Nr   )TerminalIPythonApp)r   )ZIPython.frontend.terminal.ipappr    instanceZ
initializeshellr   updatestart)r   r    appr   r   r   r   .   s
    r   c                 C   s    ddl m} |j| d  d S )Nr   )r   )r   )ZIPython.terminalr   ZTerminalInteractiveShellmainloop)r   r   r   r   r   r   6   s    r   c                 C   s    ddl m} |g | d  d S )Nr   )IPShellr   )ZIPython.Shellr'   r&   )r   r'   r   r   r   r   ;   s    r   c                 C   s   t dd S )Nzno suitable ipython found)r	   )selfr   r   r   r   @   s    r   c                 C   s`   zdd l }W nF tk
rR   zdd l}W n tk
rD   t|  Y n
X t|  Y n
X t|  d S r   )r   r	   r   r   r   r   )r   r   r   r   r   r   _invoke_default_shellD   s    r)   Zallow_extra_argsT)clsZcontext_settingsz-Iz	--ipythonzShell OptionszForce IPython.)Zis_flagr*   Z
help_grouphelpz-Bz	--bpythonzForce bpython.z--pythonzForce default Python shell.z-Tz--without-taskszDon't add tasks to locals.z
--eventletzUse eventlet.z--geventzUse gevent.Fc                 K   s:  t jdt  |rtd |r*td ddl}| jj}	|	j	
  |	|	|j|j|j|j|j|j|j|j|jd}
|s|
dd |	j D  |rt|
 n|rzt|
 W n* tk
r   | j| jj d Y nX nR|r.zt|
 W n> tk
r, } z| j| jj d	|  W 5 d}~X Y nX t|
 dS )
a.  Start shell session with convenient access to celery symbols.

    The following symbols will be added to the main globals:
    - ``celery``:  the current application.
    - ``chord``, ``group``, ``chain``, ``chunks``,
      ``xmap``, ``xstarmap`` ``subtask``, ``Task``
    - all registered tasks.
    r   zcelery.concurrency.eventletzcelery.concurrency.geventN)r%   celeryTaskchordgroupchainchunksxmapxstarmapsubtask	signaturec                 S   s    i | ]}|j d s|j|qS )zcelery.)name
startswith__name__).0Ztaskr   r   r   
<dictcomp>   s    zshell.<locals>.<dictcomp>z: bpython is not installedz: )syspathinsertosgetcwdr   r,   objr%   loaderZimport_default_modulesr-   r.   r/   r0   r1   r2   r3   r4   r5   r#   Ztasksvaluesr   r   r	   ZechoERRORr   r)   )ctxZipythonr   pythonZwithout_tasksZeventletZgeventkwargsr,   r%   r   er   r   r   r"   R   sJ    1


,r"   )FFFFFF)__doc__r>   r;   	importlibr   ZclickZcelery.bin.baser   r   r   r   r   r   r   r   r   r   r   r)   commandoptionZpass_contextr"   r   r   r   r   <module>   s   
        