From 32ec14f5c3d7d1229ec3a837f5f7a60383afd734 Mon Sep 17 00:00:00 2001 From: Ed_ Date: Wed, 25 Feb 2026 20:12:14 -0500 Subject: [PATCH] feat(mma): Add dependency mapping to mma-exec --- scripts/mma_exec.py | 21 ++++++++++++++++++++- tests/test_mma_exec.py | 16 ++++++++++++++-- 2 files changed, 34 insertions(+), 3 deletions(-) diff --git a/scripts/mma_exec.py b/scripts/mma_exec.py index 466307e..89badb4 100644 --- a/scripts/mma_exec.py +++ b/scripts/mma_exec.py @@ -126,4 +126,23 @@ def main(): print(result) if __name__ == "__main__": - main() \ No newline at end of file + main() +import ast +def get_dependencies(filepath): + with open(filepath, 'r', encoding='utf-8') as f: + tree = ast.parse(f.read()) + dependencies = [] + for node in tree.body: + if isinstance(node, ast.Import): + for alias in node.names: + dependencies.append(alias.name.split('.')[0]) + elif isinstance(node, ast.ImportFrom): + if node.module: + dependencies.append(node.module.split('.')[0]) + seen = set() + result = [] + for d in dependencies: + if d not in seen: + result.append(d) + seen.add(d) + return result diff --git a/tests/test_mma_exec.py b/tests/test_mma_exec.py index 23e7115..734fb2a 100644 --- a/tests/test_mma_exec.py +++ b/tests/test_mma_exec.py @@ -1,6 +1,6 @@ import pytest from unittest.mock import patch, MagicMock -from scripts.mma_exec import create_parser, get_role_documents, execute_agent, get_model_for_role +from scripts.mma_exec import create_parser, get_role_documents, execute_agent, get_model_for_role, get_dependencies def test_parser_role_choices(): """Test that the parser accepts valid roles and the prompt argument.""" @@ -83,4 +83,16 @@ def test_execute_agent(): assert kwargs.get("capture_output") is True assert kwargs.get("text") is True - assert result == mock_stdout \ No newline at end of file + assert result == mock_stdout + +def test_get_dependencies(tmp_path): + content = ( + "import os\n" + "import sys\n" + "import file_cache\n" + "from mcp_client import something\n" + ) + filepath = tmp_path / "mock_script.py" + filepath.write_text(content) + dependencies = get_dependencies(filepath) + assert dependencies == ['os', 'sys', 'file_cache', 'mcp_client']