Skip to content

Commit

Permalink
Merge branch 'main' into feat/base_url_for_web
Browse files Browse the repository at this point in the history
  • Loading branch information
Mai0313 authored Apr 13, 2024
2 parents 0ebc6c9 + d473dee commit e24580f
Show file tree
Hide file tree
Showing 5 changed files with 205 additions and 56 deletions.
3 changes: 2 additions & 1 deletion autogen/agentchat/conversable_agent.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
from .._pydantic import model_dump
from ..cache.cache import AbstractCache
from ..code_utils import (
PYTHON_VARIANTS,
UNKNOWN,
check_can_use_docker_or_throw,
content_str,
Expand Down Expand Up @@ -2079,7 +2080,7 @@ def execute_code_blocks(self, code_blocks):
)
if lang in ["bash", "shell", "sh"]:
exitcode, logs, image = self.run_code(code, lang=lang, **self._code_execution_config)
elif lang in ["python", "Python"]:
elif lang in PYTHON_VARIANTS:
if code.startswith("# filename: "):
filename = code[11 : code.find("\n")].strip()
else:
Expand Down
3 changes: 3 additions & 0 deletions autogen/code_utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@
DEFAULT_TIMEOUT = 600
WIN32 = sys.platform == "win32"
PATH_SEPARATOR = WIN32 and "\\" or "/"
PYTHON_VARIANTS = ["python", "Python", "py"]

logger = logging.getLogger(__name__)

Expand Down Expand Up @@ -244,6 +245,8 @@ def get_powershell_command():


def _cmd(lang: str) -> str:
if lang in PYTHON_VARIANTS:
return "python"
if lang.startswith("python") or lang in ["bash", "sh"]:
return lang
if lang in ["shell"]:
Expand Down
5 changes: 4 additions & 1 deletion autogen/coding/local_commandline_code_executor.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
to_stub,
)

from ..code_utils import TIMEOUT_MSG, WIN32, _cmd
from ..code_utils import PYTHON_VARIANTS, TIMEOUT_MSG, WIN32, _cmd
from .base import CodeBlock, CodeExecutor, CodeExtractor, CommandLineCodeResult
from .markdown_code_extractor import MarkdownCodeExtractor
from .utils import _get_file_name_from_content, silence_pip
Expand Down Expand Up @@ -217,6 +217,9 @@ def _execute_code_dont_check_setup(self, code_blocks: List[CodeBlock]) -> Comman
LocalCommandLineCodeExecutor.sanitize_command(lang, code)
code = silence_pip(code, lang)

if lang in PYTHON_VARIANTS:
lang = "python"

if WIN32 and lang in ["sh", "shell"]:
lang = "ps1"

Expand Down
18 changes: 11 additions & 7 deletions test/coding/test_commandline_code_executor.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@

UNIX_SHELLS = ["bash", "sh", "shell"]
WINDOWS_SHELLS = ["ps1", "pwsh", "powershell"]
PYTHON_VARIANTS = ["python", "Python", "py"]


@pytest.mark.parametrize("cls", classes_to_test)
Expand Down Expand Up @@ -60,23 +61,26 @@ def test_commandline_executor_init(cls) -> None:
executor = cls(timeout=111, work_dir="/invalid/directory")


@pytest.mark.parametrize("py_variant", PYTHON_VARIANTS)
@pytest.mark.parametrize("cls", classes_to_test)
def test_commandline_executor_execute_code(cls) -> None:
def test_commandline_executor_execute_code(cls, py_variant) -> None:
with tempfile.TemporaryDirectory() as temp_dir:
executor = cls(work_dir=temp_dir)
_test_execute_code(executor=executor)
_test_execute_code(py_variant, executor=executor)


def _test_execute_code(executor: CodeExecutor) -> None:
@pytest.mark.parametrize("py_variant", PYTHON_VARIANTS)
def _test_execute_code(py_variant, executor: CodeExecutor) -> None:

# Test single code block.
code_blocks = [CodeBlock(code="import sys; print('hello world!')", language="python")]
code_blocks = [CodeBlock(code="import sys; print('hello world!')", language=py_variant)]
code_result = executor.execute_code_blocks(code_blocks)
assert code_result.exit_code == 0 and "hello world!" in code_result.output and code_result.code_file is not None

# Test multiple code blocks.
code_blocks = [
CodeBlock(code="import sys; print('hello world!')", language="python"),
CodeBlock(code="a = 100 + 100; print(a)", language="python"),
CodeBlock(code="import sys; print('hello world!')", language=py_variant),
CodeBlock(code="a = 100 + 100; print(a)", language=py_variant),
]
code_result = executor.execute_code_blocks(code_blocks)
assert (
Expand All @@ -94,7 +98,7 @@ def _test_execute_code(executor: CodeExecutor) -> None:

# Test running code.
file_lines = ["import sys", "print('hello world!')", "a = 100 + 100", "print(a)"]
code_blocks = [CodeBlock(code="\n".join(file_lines), language="python")]
code_blocks = [CodeBlock(code="\n".join(file_lines), language=py_variant)]
code_result = executor.execute_code_blocks(code_blocks)
assert (
code_result.exit_code == 0
Expand Down
Loading

0 comments on commit e24580f

Please sign in to comment.