From cf961de9043cc8ff6430794308c4fcc1c68cba52 Mon Sep 17 00:00:00 2001 From: Lling0000 Date: Tue, 7 Jul 2026 15:47:28 +0800 Subject: [PATCH] Detect src layout Python entry points --- engine/antigravity_engine/hub/scanner.py | 1 + engine/tests/test_hub_scanner.py | 14 ++++++++++++++ 2 files changed, 15 insertions(+) diff --git a/engine/antigravity_engine/hub/scanner.py b/engine/antigravity_engine/hub/scanner.py index 13f69df48..425bd4335 100644 --- a/engine/antigravity_engine/hub/scanner.py +++ b/engine/antigravity_engine/hub/scanner.py @@ -388,6 +388,7 @@ def _read_entry_points(root: Path, config_contents: dict[str, str]) -> dict[str, for _cmd, ref in scripts.items(): mod = ref.split(":")[0].replace(".", "/") + ".py" candidates.append(mod) + candidates.append(f"src/{mod}") except Exception: pass diff --git a/engine/tests/test_hub_scanner.py b/engine/tests/test_hub_scanner.py index 439e4e328..f5b27f184 100644 --- a/engine/tests/test_hub_scanner.py +++ b/engine/tests/test_hub_scanner.py @@ -212,6 +212,20 @@ def test_full_scan_detects_entry_points_from_pyproject(tmp_path: Path) -> None: assert "ag_cli/cli.py" in report.entry_points +def test_full_scan_detects_src_layout_entry_points_from_pyproject(tmp_path: Path) -> None: + """Entry points in src-layout Python packages should be detected.""" + (tmp_path / "pyproject.toml").write_text( + '[project.scripts]\nag = "ag_cli.cli:app"\n', encoding="utf-8" + ) + cli_dir = tmp_path / "src" / "ag_cli" + cli_dir.mkdir(parents=True) + (cli_dir / "cli.py").write_text("app = 'hello'\n", encoding="utf-8") + + report = full_scan(tmp_path) + + assert "src/ag_cli/cli.py" in report.entry_points + + def test_full_scan_detects_common_entry_files(tmp_path: Path) -> None: """Common entry-point filenames are detected as fallback.""" (tmp_path / "main.py").write_text("if __name__ == '__main__': pass\n", encoding="utf-8")