U
    h                     @  st   d Z ddlmZ ddlZddlmZ ddlmZ ddlmZ G dd dej	Z
d	d
dddZddddddZdS )z2Utilities for exporting outputs from LLMFunctions.    )annotationsN)parsed_args_lib)py_utils)llmfn_outputsc                   @  s.   e Zd ZdZddddZdddd	d
ZdS )_PyVarOutputsSinkz.Sink that writes results to a Python variable.str)var_namec                 C  s
   || _ d S N)	_var_name)selfr    r   M/tmp/pip-unpacked-wheel-doshhd5e/google/generativeai/notebook/output_utils.py__init__   s    z_PyVarOutputsSink.__init__zllmfn_outputs.LLMFnOutputsBaseNone)outputsreturnc                 C  s   t | jt| d S r	   )r   Z
set_py_varr
   copydeepcopy)r   r   r   r   r   write_outputs   s    z_PyVarOutputsSink.write_outputsN)__name__
__module____qualname____doc__r   r   r   r   r   r   r      s   r   r   zllmfn_outputs.LLMFnOutputsSink)r   r   c                 C  s,   t | r$t | }t|tjr$|S t| S r	   )r   Z
has_py_varZ
get_py_var
isinstancer   LLMFnOutputsSinkr   )r   datar   r   r   get_outputs_sink_from_py_var$   s
    

r   zllmfn_outputs.LLMFnOutputszparsed_args_lib.ParsedArgsr   )resultsparsed_argsr   c                 C  s0   |j D ]}| | q|jD ]}| | qdS )zWrites `results` to the sinks provided.

  Args:
    results: The results to export.
    parsed_args: Arguments parsed from the command line.
  N)r   exportZsheets_output_names)r   r   Zsinkr   r   r   write_to_outputs0   s    


r    )r   
__future__r   r   Zgoogle.generativeai.notebookr   r   Z google.generativeai.notebook.libr   r   r   r   r    r   r   r   r   <module>   s   