akiko19191 commited on
Commit
9bbe36f
·
verified ·
1 Parent(s): 9912dbd

Update tests.py

Browse files
Files changed (1) hide show
  1. tests.py +19 -27
tests.py CHANGED
@@ -12,7 +12,7 @@ import json
12
  import openpyxl
13
  import shutil
14
  from google import genai
15
-
16
  client = genai.Client(api_key="AIzaSyDtP05TyoIy9j0uPL7_wLEhgQEE75AZQSc")
17
 
18
  source_dir = "/app/uploads/temp"
@@ -210,10 +210,9 @@ def create_code_files(filename: str, code: str) -> dict:
210
  return {"info":"task completed. The referenced code files were created successfully. "}
211
 
212
  @mcp.tool()
213
- def run_code(python_packages:str,filename: str, code: str,start_cmd:str) -> dict:
214
  """
215
  Execute code in a controlled environment with package installation and file handling.
216
-
217
  Args:
218
  python_packages[Output an empty string ,if using any other language.]: Space-separated list of packages to install (e.g., "numpy matplotlib").
219
  Preinstalled packages: gradio, XlsxWriter, openpyxl.
@@ -221,8 +220,7 @@ def run_code(python_packages:str,filename: str, code: str,start_cmd:str) -> dict
221
  code: Full code to write to the file.
222
  start_cmd: Command to execute the file (e.g., "python /app/code_interpreter/app.py"
223
  or "bash /app/code_interpreter/app.py").
224
-
225
- Notes:
226
  - All user-uploaded files are in /app/code_interpreter/.
227
  - After execution, embed a download link (or display images/gifs/videos directly in markdown format) in your response.
228
  """
@@ -244,9 +242,15 @@ def run_code(python_packages:str,filename: str, code: str,start_cmd:str) -> dict
244
  f = open(os.path.join(destination_dir, filename), "w")
245
  f.write(code)
246
  f.close()
247
- run(start_cmd, 300)
248
- while stderr=="" and stdout=="":
249
- pass
 
 
 
 
 
 
250
  onlyfiles = glob.glob("/app/code_interpreter/*")
251
  onlyfiles=list(set(onlyfiles)-set(files_list))
252
  uploaded_filenames=[]
@@ -286,15 +290,13 @@ def run_code_files(start_cmd:str) -> dict:
286
  @mcp.tool()
287
  def run_shell_command(cmd:str) -> dict:
288
  """(cmd:Example- mkdir test.By default , the command is run inside the /app/code_interpreter/ directory.).Remember, the code_interpreter is running on **alpine linux** , so write commands accordingly.Eg-sudo does not work and is not required.."""
289
- global stdout
290
- global stderr
291
-
292
- run(cmd, 300)
293
- while stderr=="" and stdout=="":
294
- pass
295
- time.sleep(1.5)
296
  transfer_files()
297
- return {"stdout":stdout,"stderr":stderr}
298
 
299
 
300
 
@@ -426,14 +428,4 @@ def deepthinking3(query:str,info:str) -> dict:
426
 
427
  if __name__ == "__main__":
428
  # Initialize and run the server
429
- mcp.run(transport='stdio')
430
-
431
-
432
- # @mcp.tool()
433
- # def run_website(start_cmd:str,port=8501) -> dict:
434
- # """(start_cmd:streamlit run app.py).Always specify sandbox id.Specify port (int) if different from 8501."""
435
- # output=sbx.commands.run(start_cmd,sandbox_id)
436
- # url = sbx.get_host(port)
437
- # info={"info":f"Your Application is live [here](https://{url})"}
438
-
439
- # return info
 
12
  import openpyxl
13
  import shutil
14
  from google import genai
15
+ import pexpect
16
  client = genai.Client(api_key="AIzaSyDtP05TyoIy9j0uPL7_wLEhgQEE75AZQSc")
17
 
18
  source_dir = "/app/uploads/temp"
 
210
  return {"info":"task completed. The referenced code files were created successfully. "}
211
 
212
  @mcp.tool()
213
+ def run_code(python_packages:str,filename: str, code: str,start_cmd:str,forever_cmd:bool) -> dict:
214
  """
215
  Execute code in a controlled environment with package installation and file handling.
 
216
  Args:
217
  python_packages[Output an empty string ,if using any other language.]: Space-separated list of packages to install (e.g., "numpy matplotlib").
218
  Preinstalled packages: gradio, XlsxWriter, openpyxl.
 
220
  code: Full code to write to the file.
221
  start_cmd: Command to execute the file (e.g., "python /app/code_interpreter/app.py"
222
  or "bash /app/code_interpreter/app.py").
223
+ forever_cmd: If True, the command will run indefinitely.Set to True, when runnig a website/server. If False, the command will time out after 300 second and the result will be returned.
 
224
  - All user-uploaded files are in /app/code_interpreter/.
225
  - After execution, embed a download link (or display images/gifs/videos directly in markdown format) in your response.
226
  """
 
242
  f = open(os.path.join(destination_dir, filename), "w")
243
  f.write(code)
244
  f.close()
245
+ if forever_cmd:
246
+ child=pexpect.spawn(command)
247
+ time.sleep(5)
248
+ stdout=str(child.readline().decode())
249
+ stderr=""
250
+ else:
251
+ run(start_cmd, 300)
252
+ while stderr=="" and stdout=="":
253
+ pass
254
  onlyfiles = glob.glob("/app/code_interpreter/*")
255
  onlyfiles=list(set(onlyfiles)-set(files_list))
256
  uploaded_filenames=[]
 
290
  @mcp.tool()
291
  def run_shell_command(cmd:str) -> dict:
292
  """(cmd:Example- mkdir test.By default , the command is run inside the /app/code_interpreter/ directory.).Remember, the code_interpreter is running on **alpine linux** , so write commands accordingly.Eg-sudo does not work and is not required.."""
293
+ process = pexpect.spawn(cmd)
294
+ strLine=""
295
+ while not process.eof():
296
+ strLine = strLine+process.readline().decode()
297
+ output=strLine
 
 
298
  transfer_files()
299
+ return {"output":output}
300
 
301
 
302
 
 
428
 
429
  if __name__ == "__main__":
430
  # Initialize and run the server
431
+ mcp.run(transport='stdio')