region:us
# Table of Contents

* [Structure of TestCodeFlow](#structure-of-testcodeflow)
* [TestCodeFlow](#TestCodeFlow)
  * [TestCodeFlow](#TestCodeFlow.TestCodeFlow)
    * [\_\_init\_\_](#TestCodeFlow.TestCodeFlow.__init__)
    * [instantiate\_from\_config](#TestCodeFlow.TestCodeFlow.instantiate_from_config)
    * [run](#TestCodeFlow.TestCodeFlow.run)
* [TestCodeFileEditAtomicFlow](#TestCodeFileEditAtomicFlow)
  * [TestCodeFileEditAtomicFlow](#TestCodeFileEditAtomicFlow.TestCodeFileEditAtomicFlow)
* [run](#run)
* [\_\_init\_\_](#__init__)
* [CodeTestingAtomicFlow](#CodeTestingAtomicFlow)
  * [CodeTestingAtomicFlow](#CodeTestingAtomicFlow.CodeTestingAtomicFlow)
    * [run](#CodeTestingAtomicFlow.CodeTestingAtomicFlow.run)



# Structure of TestCodeFlow

```
               code
                |
                v
        +-------------------+
        |  TestCodeFileEdit | Edit a temp code file with the code to be tested and necessary imports (manually added): https://huggingface.co/aiflows/TestCodeFlowModule/blob/main/TestCodeFileEditAtomicFlow.py
        +-------------------+                        
                |                                
                | (temp_code_file_location)        
                |                                
                v                                
        +------------------+                     
        |   CodeTesting    |  Opens up the temp file until user closes the file, run the test code.
        +------------------+                     
                |                                
                | (feedback)                      
                |                                
                v                                            
             feedback     
                

```
Memory_files: 
- `library.py`


<a id="TestCodeFlow"></a>

# TestCodeFlow

<a id="TestCodeFlow.TestCodeFlow"></a>

## TestCodeFlow Objects

```python
class TestCodeFlow(SequentialFlow)
```

This class is used to test code. It is a sequential flow that runs the following steps:
1. Prepares the code to be tested, it is composed of the code to be tested and necessary import statements manually added.
2. Opens the code in VSCode and waits for the user to clode the vscode session. The user is able to add tests.
3. The following will be tested:
    a. (Default & Compulsory) Code syntax;
    b. (Added by user) Any other tests.
4. Runs the test and returns the output.

*Input Interface*:
- `code` (str): The code to be tested.

*Output Interface*:
- `feedback` (str): The test results.

*Configuration Parameters*:
- `memory_files`: The memory files to be used in the flow, typically we need to have the code library as memory file here.
- `input_interface`: The input interface of the flow.
- `output_interface`: The output interface of the flow.
- `subflows_config`: The subflows configuration.
- `topology`: The topology of the subflows.

<a id="TestCodeFlow.TestCodeFlow.__init__"></a>

#### \_\_init\_\_

```python
def __init__(memory_files: Dict[str, Any], **kwargs)
```

This function instantiates the class.

**Arguments**:

- `memory_files` (`Dict[str, Any]`): The memory files to be used in the flow, typically we need to have the code library as memory file here.
- `kwargs` (`Any`): The keyword arguments.

<a id="TestCodeFlow.TestCodeFlow.instantiate_from_config"></a>

#### instantiate\_from\_config

```python
@classmethod
def instantiate_from_config(cls, config)
```

This function instantiates the class from a configuration dictionary.

**Arguments**:

- `config` (`Dict[str, Any]`): The configuration dictionary.

**Returns**:

`TestCodeFlow`: The instantiated class.

<a id="TestCodeFlow.TestCodeFlow.run"></a>

#### run

```python
def run(input_data: Dict[str, Any]) -> Dict[str, Any]
```

This function runs the flow.

**Arguments**:

- `input_data` (`Dict[str, Any]`): The input data.

**Returns**:

`Dict[str, Any]`: The output data.

<a id="TestCodeFileEditAtomicFlow"></a>

# TestCodeFileEditAtomicFlow

<a id="TestCodeFileEditAtomicFlow.TestCodeFileEditAtomicFlow"></a>

## TestCodeFileEditAtomicFlow Objects

```python
class TestCodeFileEditAtomicFlow(CodeFileEditAtomicFlow)
```

Refer to: https://huggingface.co/aiflows/CodeFileEditFlowModule/tree/main

*Input Interface*:
- `code`: str
- `memory_files`: Dict[str, str]

*Output Interface*:
- `code_editor_output`: str, the code editor output
- `temp_code_file_location`: str, the location of the temporary code file

*Configuration Parameters*:
- `input_interface`: The input interface of the flow.
- `output_interface`: The output interface of the flow.

<a id="run"></a>

# run

<a id="__init__"></a>

# \_\_init\_\_

<a id="CodeTestingAtomicFlow"></a>

# CodeTestingAtomicFlow

<a id="CodeTestingAtomicFlow.CodeTestingAtomicFlow"></a>

## CodeTestingAtomicFlow Objects

```python
class CodeTestingAtomicFlow(InterpreterAtomicFlow)
```

This class inherits from InterpreterAtomicFlow and is used to test code.

*Input Interface*:
- `temp_code_file_location`: Location of the file containing the code to be tested.

*Output Interface*:
- `feedback`: Feedback from the test (i.e. test results).

*Configuration Parameters*:
- `input_interface`: the input interface of the atomic flow.
- `output_interface`: the output interface of the atomic flow.

<a id="CodeTestingAtomicFlow.CodeTestingAtomicFlow.run"></a>

#### run

```python
def run(input_data: Dict[str, Any])
```

Runs the atomic flow.

**Arguments**:

- `input_data` (`Dict[str, Any]`): The input data to the atomic flow.

**Returns**:

`Dict[str, Any]`: The output data of the atomic flow.

