o
    Df                     @   s2  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y   Y nw dd l}||| j |d |j| d d S )Nr   ztab:complete)local)	codereadlineImportErrorrlcompleterset_completer	Completercompleteparse_and_bindinteract)localsr   r   r
    r   I/home/ubuntu/webapp/venv/lib/python3.10/site-packages/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   s8   t ttttfD ]}z|| W   S  ty   Y qw 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!   )IPython.frontend.terminal.ipappr$   instance
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"   )IPython.terminalr   TerminalInteractiveShellmainloop)r   r   r   r   r   r   6      r   c                 C   s    ddl m} |g | d  d S )Nr   )IPShellr    )IPython.Shellr0   r.   )r   r0   r   r   r   r   ;   r/   r   c                 C   s   t d)Nzno suitable ipython found)r	   )selfr   r   r   r   @   s   r   c                 C   sb   zdd l }W n$ ty*   zdd l}W n ty"   t|  Y Y d S w t|  Y d S w t|  d S r   )r#   r	   r   r   r   r   )r   r#   r   r   r   r   _invoke_default_shellD   s   r3   allow_extra_argsT)clscontext_settingsz-Iz	--ipythonzShell OptionszForce IPython.)is_flagr5   
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   s4  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}
|sH|
dd |	j D  |rOt|
 nE|rlzt|
 W n< tyk   | j| jj d Y n)w |rzt|
 W n ty } z| j| jj d	|  W Y d}~nd}~ww 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__).0taskr   r   r   
<dictcomp>   s    
zshell.<locals>.<dictcomp>z: bpython is not installedz: )syspathinsertosgetcwdr   r:   objr+   loaderimport_default_modulesr;   r<   r=   r>   r?   r@   rA   rB   rC   r)   tasksvaluesr   r   r	   echoERRORr   r3   )ctxipythonr   pythonwithout_taskseventletgeventkwargsr:   r+   r   er   r   r   r(   R   sP   1


&r(   )FFFFFF)__doc__rM   rJ   	importlibr   clickcelery.bin.baser   r   r   r   r   r   r   r   r   r   r   r3   commandoptionpass_contextr(   r   r   r   r   <module>   s~    
 