
    Ng                         d Z ddlmZmZmZ ddlmZ ddlmZm	Z	 ddl
mZmZ  G d de          Z G d d	e          Z G d
 de          Z G d de          ZdS )z
Tool implementations for the Riza (https://riza.io) code interpreter API.

Documentation: https://docs.riza.io
API keys:      https://dashboard.riza.io
    )AnyOptionalType)CallbackManagerForToolRun)BaseToolToolException)	BaseModelFieldc                   2    e Zd ZU  ed          Zeed<   dS )ExecPythonInputzthe Python code to executedescriptioncodeN__name__
__module____qualname__r
   r   str__annotations__     b/var/www/html/ai-engine/env/lib/python3.11/site-packages/langchain_community/tools/riza/command.pyr   r      s0         ">???D#?????r   r   c                        e Zd ZU dZdZeed<   dZeed<   eZ	e
e         ed<   dZeed<   d	Zeed
<   dedd	f fdZ	 ddedee         defdZ xZS )
ExecPythona  Riza Code tool.

    Setup:
        Install ``langchain-community`` and ``rizaio`` and set environment variable ``RIZA_API_KEY``.

        .. code-block:: bash

            pip install -U langchain-community rizaio
            export RIZA_API_KEY="your-api-key"

    Instantiation:
        .. code-block:: python

            from langchain_community.tools.riza.command import ExecPython

            tool = ExecPython()

    Invocation with args:
        .. code-block:: python

            tool.invoke("x = 5; print(x)")

        .. code-block:: python

            '5\n'

    Invocation with ToolCall:

        .. code-block:: python

            tool.invoke({"args": {"code":"x = 5; print(x)"}, "id": "1", "name": tool.name, "type": "tool_call"})

        .. code-block:: python

            tool.invoke({"args": {"code":"x = 5; print(x)"}, "id": "1", "name": tool.name, "type": "tool_call"})

    riza_exec_pythonnamezExecute Python code to solve problems.

    The Python runtime does not have filesystem access. You can use the httpx
    or requests library to make HTTP requests. Always print output to stdout.r   args_schemaThandle_tool_errorNclientkwargsreturnc                     	 ddl m} n"# t          $ r}t          d          |d }~ww xY w t                      j        di |  |            | _        d S Nr   )RizazGCouldn't import the `rizaio` package. Try running `pip install rizaio`.r   rizaior$   ImportErrorsuper__init__r   selfr    r$   e	__class__s       r   r)   zExecPython.__init__F       	####### 	 	 	4  	
 	""6"""dff   
 
)$)r   run_managerc                     | j         j                            d|          }|j        dk    rt	          d|j                   |j        S )NPYTHONlanguager   r   XRiza code execution returned a non-zero exit code. The output captured from stderr was:
r   commandexec	exit_coder   stderrstdoutr+   r   r0   outputs       r   _runzExecPython._runQ   sb     $))8$)GGaI9?I I   }r   N)r   r   r   __doc__r   r   r   r   r   r   r   r	   r   boolr   r   r)   r   r   r>   __classcell__r-   s   @r   r   r      s         $ $L #D#"""QK Q Q Q $3Ki222"t"""FC	 	 	 	 	 	 	 	 MQ	 		&./H&I			 	 	 	 	 	 	 	r   r   c                   2    e Zd ZU  ed          Zeed<   dS )ExecJavaScriptInputzthe JavaScript code to executer   r   Nr   r   r   r   rE   rE   ]   s0         "BCCCD#CCCCCr   rE   c                        e Zd ZU dZdZeed<   dZeed<   eZ	e
e         ed<   dZeed<   d	Zeed
<   dedd	f fdZ	 ddedee         defdZ xZS )ExecJavaScriptzLA tool implementation to execute JavaScript via Riza's Code Interpreter API.riza_exec_javascriptr   zExecute JavaScript code to solve problems.

    The JavaScript runtime does not have filesystem access, but can use fetch
    to make HTTP requests and does include the global JSON object. Always print
    output to stdout.r   r   Tr   Nr   r    r!   c                     	 ddl m} n"# t          $ r}t          d          |d }~ww xY w t                      j        di |  |            | _        d S r#   r%   r*   s       r   r)   zExecJavaScript.__init__o   r.   r/   r   r0   c                     | j         j                            d|          }|j        dk    rt	          d|j                   |j        S )N
JAVASCRIPTr3   r   r5   r6   r<   s       r   r>   zExecJavaScript._runz   sb     $))<d)KKaI9?I I   }r   r?   )r   r   r   r@   r   r   r   r   rE   r   r   r	   r   rA   r   r   r)   r   r   r>   rB   rC   s   @r   rG   rG   a   s         VV&D#&&&K   
 $7Ki666"t"""FC	 	 	 	 	 	 	 	 MQ	 		&./H&I			 	 	 	 	 	 	 	r   rG   N)r@   typingr   r   r   langchain_core.callbacksr   langchain_core.toolsr   r   pydanticr	   r
   r   r   rE   rG   r   r   r   <module>rP      sJ    ' & & & & & & & & &      9 8 8 8 8 8 8 8 % % % % % % % %@ @ @ @ @i @ @ @E E E E E E E EPD D D D D) D D D" " " " "X " " " " "r   