Skip to content

Commit 378c9b2

Browse files
committed
refactor: prefer canonical imports in tests and document shim removal
Point regression tests at pure_auto_codeql.* modules while keeping the legacy-surface identity test. Document when top-level re-export shims can safely be deleted.
1 parent b72c03b commit 378c9b2

5 files changed

Lines changed: 34 additions & 23 deletions

File tree

docs/package_architecture.md

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,3 +93,14 @@ cd tools/mcp_ripgrep
9393
npm audit --audit-level=high
9494
npm run build
9595
```
96+
97+
## Shim Removal Readiness
98+
99+
Runtime code under `pure_auto_codeql/` no longer imports the top-level shim
100+
packages. Top-level shims can be removed only after:
101+
102+
1. External consumers and docs stop using `from utils/services/api/...`
103+
2. Tests that intentionally assert legacy identity are retired or updated
104+
3. `pyproject.toml` package includes and README entry points are updated
105+
106+
Until then, keep the thin re-export packages at the repository root.

test/test_404_retry_mechanism.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
from unittest.mock import AsyncMock, Mock, patch
2222
import pytest
2323

24-
from services.llm_service import (
24+
from pure_auto_codeql.services.llm_service import (
2525
APIErrorClassifier,
2626
llm_retry_decorator,
2727
AgentRetryTracker,

test/test_cli_refactor.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
dispatch_command,
99
parse_arguments,
1010
)
11-
from utils.project_import_policy import (
11+
from pure_auto_codeql.utils.project_import_policy import (
1212
ProjectImportPolicy,
1313
ProjectImportPolicyError,
1414
validate_project_import_policy,

test/test_lsp_lookup.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,9 @@
1313
# Add project root to path
1414
sys.path.insert(0, str(Path(__file__).parent.parent))
1515

16-
from tools.lsp_codeql import HotCodeQL
17-
from utils.lsp_definition import LSPDefinitionLookup
18-
from tools.lsp_lookup_tool import LSPFunctionLookupTool
16+
from pure_auto_codeql.tools.lsp_codeql import HotCodeQL
17+
from pure_auto_codeql.utils.lsp_definition import LSPDefinitionLookup
18+
from pure_auto_codeql.tools.lsp_lookup_tool import LSPFunctionLookupTool
1919

2020

2121
def test_lsp_definition_lookup():

test/test_security_regressions.py

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -6,14 +6,14 @@
66
import pytest
77
from fastapi.testclient import TestClient
88

9-
from api.models import ProjectImportRequest, TaskStatus
10-
from api.projects_routes import _ensure_api_import_allowed
11-
from api.task_manager import TaskManager
12-
from core.context import AnalysisResult as CoreAnalysisResult
13-
from services.llm_service import AgentResult
14-
from utils.case import resolve_case
15-
from utils.project_importer import import_project
16-
from utils.project_import_policy import ProjectImportPolicyError
9+
from pure_auto_codeql.api.models import ProjectImportRequest, TaskStatus
10+
from pure_auto_codeql.api.projects_routes import _ensure_api_import_allowed
11+
from pure_auto_codeql.api.task_manager import TaskManager
12+
from pure_auto_codeql.core.context import AnalysisResult as CoreAnalysisResult
13+
from pure_auto_codeql.services.llm_service import AgentResult
14+
from pure_auto_codeql.utils.case import resolve_case
15+
from pure_auto_codeql.utils.project_importer import import_project
16+
from pure_auto_codeql.utils.project_import_policy import ProjectImportPolicyError
1717

1818

1919
def test_resolve_case_rejects_path_escape(tmp_path):
@@ -28,7 +28,7 @@ def test_resolve_case_rejects_path_escape(tmp_path):
2828

2929

3030
def test_api_import_guard_restricts_paths_and_build_commands(tmp_path, monkeypatch):
31-
from api import config as api_config
31+
from pure_auto_codeql.api import config as api_config
3232

3333
allowed = tmp_path / "imports"
3434
allowed.mkdir()
@@ -57,7 +57,7 @@ def test_api_import_guard_restricts_paths_and_build_commands(tmp_path, monkeypat
5757

5858

5959
def test_projects_import_endpoint_enforces_shared_policy(tmp_path, monkeypatch):
60-
from api import config as api_config
60+
from pure_auto_codeql.api import config as api_config
6161
import api.server as server_module
6262

6363
allowed = tmp_path / "imports"
@@ -95,7 +95,7 @@ def test_projects_import_endpoint_enforces_shared_policy(tmp_path, monkeypatch):
9595

9696

9797
def test_analysis_start_endpoint_rejects_unsafe_case_id(monkeypatch, tmp_path):
98-
from api import config as api_config
98+
from pure_auto_codeql.api import config as api_config
9999
import api.server as server_module
100100

101101
monkeypatch.setattr(api_config.config, "auth_token", "")
@@ -109,7 +109,7 @@ def test_analysis_start_endpoint_rejects_unsafe_case_id(monkeypatch, tmp_path):
109109

110110

111111
def test_auth_token_protects_api_routes(monkeypatch):
112-
from api import config as api_config
112+
from pure_auto_codeql.api import config as api_config
113113
import api.server as server_module
114114

115115
monkeypatch.setattr(api_config.config, "auth_token", "secret-token")
@@ -130,8 +130,8 @@ def test_auth_token_protects_api_routes(monkeypatch):
130130

131131

132132
def test_project_files_skips_symlinks_outside_source_root(tmp_path, monkeypatch):
133-
from api import config as api_config
134-
from api.projects_routes import get_project_files
133+
from pure_auto_codeql.api import config as api_config
134+
from pure_auto_codeql.api.projects_routes import get_project_files
135135

136136
projects = tmp_path / "projects"
137137
source = projects / "CASE-1" / "source_code"
@@ -153,7 +153,7 @@ def test_project_files_skips_symlinks_outside_source_root(tmp_path, monkeypatch)
153153

154154

155155
def test_import_project_skips_external_symlink(tmp_path, monkeypatch):
156-
from api import config as api_config
156+
from pure_auto_codeql.api import config as api_config
157157

158158
projects = tmp_path / "projects"
159159
source_root = tmp_path / "incoming"
@@ -174,7 +174,7 @@ def test_import_project_skips_external_symlink(tmp_path, monkeypatch):
174174

175175

176176
def test_import_project_rejects_zip_symlink(tmp_path, monkeypatch):
177-
from api import config as api_config
177+
from pure_auto_codeql.api import config as api_config
178178

179179
projects = tmp_path / "projects"
180180
source_root = tmp_path / "incoming"
@@ -194,7 +194,7 @@ def test_import_project_rejects_zip_symlink(tmp_path, monkeypatch):
194194

195195

196196
def test_import_project_skips_external_metadata_symlink(tmp_path, monkeypatch):
197-
from api import config as api_config
197+
from pure_auto_codeql.api import config as api_config
198198

199199
projects = tmp_path / "projects"
200200
source_root = tmp_path / "incoming"
@@ -234,7 +234,7 @@ async def fake_analyze_case(self, case_id, language=None):
234234
output_directory="output/run",
235235
)
236236

237-
from core.orchestrator import AnalysisOrchestrator
237+
from pure_auto_codeql.core.orchestrator import AnalysisOrchestrator
238238

239239
monkeypatch.setattr(AnalysisOrchestrator, "analyze_case", fake_analyze_case)
240240

0 commit comments

Comments
 (0)