mirror of
https://github.com/giancarloerra/socraticode.git
synced 2026-07-03 14:05:21 +02:00
8921690d72
Resolves #46. Reported by @mrsuit92. Python projects where each top-level directory is a runnable application root (a common service-style monorepo layout) had `import config` from `service-a/main.py` produce 0 dependency edges, even when `service-a/config.py` sits next to the importer. At runtime Python resolves this correctly because the importer's directory is sys.path[0] when the file is run as `python main.py` from inside its own directory. The static resolver did not check that path. The Python case in graph-resolution.ts only tried: <projectPath>/<module>.py <projectPath>/src/<module>.py <projectPath>/lib/<module>.py It did not try `<sourceDir>/<module>.py`, so non-relative sibling imports never resolved. Relative imports (`from .config import ...`) already used sourceDir and worked. Fix: add `<sourceDir>/<module>.py` as the LAST fallback, after the existing project-root and src/lib checks. Tried last to preserve project-root precedence, so any layout that resolved before this PR continues to resolve to the same file. resolveRelativePath also handles the `<sourceDir>/<module>/__init__.py` package case via its built-in Python init fallback, so package-style sibling imports work too. Tests: 5 new cases in tests/unit/graph-resolution.test.ts covering sibling-flat resolution, dotted module paths, package via __init__.py, project-root precedence preservation, and the negative case (no match anywhere). Existing 730 tests continue to pass; total now 735. typecheck, biome, and CodeRabbit local review all clean. Co-authored-by: mrsuit92 <mrsuit92@users.noreply.github.com>