o
    Zh\                     @  s   d Z ddlmZ ddl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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mZ ddlmZ ddlmZ G dd dZdddZdS )zMagicsEngine class.    )annotations)AbstractSetSequence)argument_parser)cmd_line_parser)command)compare_cmd)compile_cmd)eval_cmd)ipython_env)model_registry)parsed_args_lib)post_process_utils)run_cmd)prompt_utilsc                   @  s>   e Zd ZdZ		ddddZdddZdddZdddZdS )MagicsEnginezImplementation of functionality used by Magics.

    This class provides the implementation for Magics, decoupled from the
    details of integrating with Colab Magics such as registration.
    Nregistry#model_registry.ModelRegistry | Noneenvipython_env.IPythonEnv | Nonec                 C  sb   || _ |pt }tjjtj||dtjjt	j
||dtjjtj|dtjjtj||di| _d S )N)modelsr   )r   )_ipython_envr   ZModelRegistryr   ZCommandNameZRUN_CMDr   Z
RunCommandZCOMPILE_CMDr	   ZCompileCommandZCOMPARE_CMDr   ZCompareCommandZEVAL_CMDr
   ZEvalCommand_cmd_handlers)selfr   r   r    r   a/var/www/html/lang_env/lib/python3.10/site-packages/google/generativeai/notebook/magics_engine.py__init__)   s   

zMagicsEngine.__init__linestrplaceholdersAbstractSet[str]returnGtuple[parsed_args_lib.ParsedArgs, parsed_args_lib.PostProcessingTokens]c                 C  s   t  ||S )N)r   ZCmdLineParser
parse_line)r   r   r   r   r   r   r#   9   s   zMagicsEngine.parse_lineftuple[command.Command, parsed_args_lib.ParsedArgs, Sequence[post_process_utils.ParsedPostProcessExpr]]c                 C  s4   |  ||\}}|j}| j| }||}|||fS )a}  Given the command line, parse and return all components.

        Args:
          line: The LLM Magics command line.
          placeholders: Placeholders from prompts in the cell contents.

        Returns:
          A three-tuple containing:
          - The command (e.g. "run")
          - Parsed arguments for the command,
          - Parsed post-processing expressions
        )r#   cmdr   Zparse_post_processing_tokens)r   r   r   parsed_argsZpost_processing_tokenscmd_namehandlerpost_processing_fnsr   r   r   _get_handler@   s
   


zMagicsEngine._get_handlercell_contentc           
   
   C  s   t |}t|}z| ||\}}}||||W S  tjy: } z| jdur.|| j |W  Y d}~S d}~w tj	y` } z|
| j | rUd| d nd}	t|	|d}~ww )z2Executes the supplied magic line and cell payload.NzGot parser error: {} )_clean_cellr   Zget_placeholdersr*   executer   ZParserNormalExitr   Zset_ipython_envZParserErrordisplayZmsgsformat
SystemExit)
r   r   r+   cellr   r(   r&   r)   e	error_msgr   r   r   execute_cellW   s    



zMagicsEngine.execute_cell)NN)r   r   r   r   )r   r   r   r    r!   r"   )r   r   r   r    r!   r$   )r   r   r+   r   )__name__
__module____qualname____doc__r   r#   r*   r6   r   r   r   r   r   "   s    

r   r+   r   r!   c                 C  s   | }| dr|d d }|S )N
r,   )endswith)r+   r3   r   r   r   r.   t   s   
r.   N)r+   r   r!   r   )r:   
__future__r   typingr   r   Zgoogle.generativeai.notebookr   r   r   r   r	   r
   r   r   r   r   r   Z google.generativeai.notebook.libr   r   r.   r   r   r   r   <module>   s"   R