
    ; i\                        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          Z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                  8    e Zd ZdZ	 	 dddZddZddZ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                r   || _         |pt          j                    }t          j        j        t          j        ||          t          j        j        t          j
        ||          t          j        j        t          j        |          t          j        j        t          j        ||          i| _        d S )N)modelsr   )r   )_ipython_envr   ModelRegistryr   CommandNameRUN_CMDr   
RunCommandCOMPILE_CMDr
   CompileCommandCOMPARE_CMDr	   CompareCommandEVAL_CMDr   EvalCommand_cmd_handlers)selfr   r   r   s       /var/www/development/aibuddy-work/election-extract/venv/lib/python3.11/site-packages/google/generativeai/notebook/magics_engine.py__init__zMagicsEngine.__init__)   s    
  ;^9;;'/1C6WZ1[1[1['3[5O36 6 6 '3[5OTW5X5X5X'0(2FfZ]2^2^2^R
    linestrplaceholdersAbstractSet[str]returnGtuple[parsed_args_lib.ParsedArgs, parsed_args_lib.PostProcessingTokens]c                P    t          j                                        ||          S )N)r   CmdLineParser
parse_line)r&   r*   r,   s      r'   r2   zMagicsEngine.parse_line9   s#    
 ,..99$MMMr)   ftuple[command.Command, parsed_args_lib.ParsedArgs, Sequence[post_process_utils.ParsedPostProcessExpr]]c                    |                      ||          \  }}|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
        )r2   cmdr%   parse_post_processing_tokens)r&   r*   r,   parsed_argspost_processing_tokenscmd_namehandlerpost_processing_fnss           r'   _get_handlerzMagicsEngine._get_handler@   sT    " /3oodL.Q.Q++?$X.%BBCYZZ%888r)   cell_contentc                (   t          |          }t          j        |          }	 |                     ||          \  }}}|                    |||          S # t
          j        $ r-}| j        |                    | j                   |cY d}~S d}~wt
          j	        $ rr}|
                    | j                   |                                r-d                    |                                d                   nd}	t          |	          |d}~ww xY w)z2Executes the supplied magic line and cell payload.NzGot parser error: {} )_clean_cellr   get_placeholdersr<   executer   ParserNormalExitr   set_ipython_envParserErrordisplaymsgsformat
SystemExit)
r&   r*   r=   cellr,   r:   r7   r;   e	error_msgs
             r'   execute_cellzMagicsEngine.execute_cellW   s!   <((#4T::	/8<8I8I$P\8]8]5G["5??;6IJJJ/ 	 	 	 ,!!$"3444 HHHHHH* 	/ 	/ 	/IId'((( HIvvxxW.55affhhrlCCCUWIY''Q.	/s*   0A D%"BDDA-DD)NN)r   r   r   r   )r*   r+   r,   r-   r.   r/   )r*   r+   r,   r-   r.   r3   )r*   r+   r=   r+   )__name__
__module____qualname____doc__r(   r2   r<   rN    r)   r'   r   r   "   s          9=-1
 
 
 
 
 N N N N9 9 9 9./ / / / / /r)   r   r=   r+   r.   c                H    | }|                     d          r
|d d         }|S )N
r?   )endswith)r=   rK   s     r'   rA   rA   t   s/    
 D}}T CRCyKr)   N)r=   r+   r.   r+   )rR   
__future__r   typingr   r   google.generativeai.notebookr   r   r   r	   r
   r   r   r   r   r   r    google.generativeai.notebook.libr   r   rA   rS   r)   r'   <module>r[      s^     " " " " " " ( ( ( ( ( ( ( ( 8 8 8 8 8 8 8 8 8 8 8 8 0 0 0 0 0 0 4 4 4 4 4 4 4 4 4 4 4 4 1 1 1 1 1 1 4 4 4 4 4 4 7 7 7 7 7 7 8 8 8 8 8 8 ; ; ; ; ; ; 0 0 0 0 0 0 9 9 9 9 9 9O/ O/ O/ O/ O/ O/ O/ O/d     r)   