Relative "from ..mylib.some import smth" was broken several versions ago
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Idoneità per principianti
- 70/100
Direzione di ricerca
Inizia da Basilisk/crates/basilisk-resolver/src/visitor/class_info_ext.rs, poi segui la gestione degli import in Basilisk/crates/basilisk-checker/src/imports/apply.rs e il resolver esistente in resolve.rs. Esegui la configurazione minima fornita e aggiungi la copertura di integrazione tramite resolve_module_imports per entrambi i casi con due punti; il lavoro è completato quando quegli import vengono risolti senza errori.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Basilisk 0.38.0, CLI, Linux x86_64. Though used through basilisk.nvim
Actual project path: /d/mypj/src/mypj/init.py
Minimal Setup
mkdir -p src/pkg/dev src/pkg/sub
touch src/pkg/__init__.py src/pkg/dev/__init__.py src/pkg/sub/__init__.py
echo "class Foo: pass" > src/pkg/sub/mod.py
echo "class Bar: pass" > src/pkg/dev/other.py
cat > pyproject.toml <<'EOF'
[tool.basilisk]
include = ["src/"]
EOF
Case 1 — single dot, same directory: PASSES
echo "from .other import Bar" > src/pkg/dev/user_dot.py
basilisk check src/pkg/dev/user_dot.py
# -> All checked. No issues found.
Case 2 — double dot, bare module target: FAILS
echo "from ..sub import mod" > src/pkg/dev/user_dotdot_direct.py
basilisk check src/pkg/dev/user_dotdot_direct.py
# -> error[imports_unresolved]: Cannot resolve import `sub`
# = help: `sub` is not installed or has no type stubs
Case 3 — double dot, dotted attribute target: FAILS identically
echo "from ..sub.mod import Foo" > src/pkg/dev/user_dotdot_deep.py
basilisk check src/pkg/dev/user_dotdot_deep.py
# -> error[imports_unresolved]: Cannot resolve import `sub.mod`
# = help: `sub` is not installed or has no type stubs
I'm at my wits end, no settings help to fix this.
Some analysis from codex:
• Confirmed: this is a Basilisk core bug, not a basilisk.nvim configuration issue.
from .other import Bar passes accidentally: the resolver treats it as absolute other, then searches the importing file’s directory. For from ..sub import mod, the parser has already
discarded the .. level, so it again tries absolute sub rather than searching the parent package directory.
The repository already contains resolve_relative_import, including correct parent traversal, but the normal import pipeline never invokes it. The relevant gap is:
- Basilisk/crates/basilisk-resolver/src/visitor/class_info_ext.rs:395 builds ImportInfo without preserving StmtImportFrom.level.
- Basilisk/crates/basilisk-checker/src/imports/apply.rs:37 resolves every import through the absolute-import path.
- Basilisk/crates/basilisk-checker/src/imports/resolve.rs:369 has the unused correct relative resolver.
The appropriate fix is to add a relative_level field to ImportInfo, populate it from node.level, and dispatch From/Star imports with a nonzero level to resolve_relative_import. Add
integration tests through resolve_module_imports for both issue cases—not just unit tests of the standalone resolver, which already pass and mask this wiring bug.
- Lingua principale
- Rust
- Stelle
- 54
- Fork
- 3
- Metriche di merge delle PR
- Nessuna PR unita negli ultimi 30g
Preparare l'ambiente
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di Nimblesite/Basilisk
-
spec-violation
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
Nimblesite/Basilisk#204 · 1 commento ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
Nimblesite/Basilisk#188 ·
-
Difficoltà 3/5 1-2 giorni Idoneità per principianti 68/100
Nimblesite/Basilisk#439 ·
-
GenericsAperta
Difficoltà 4/5 3-5 giorni Idoneità per principianti 50/100
Nimblesite/Basilisk#419 · 1 commento ·
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 45/100
Nimblesite/Basilisk#418 ·
Tutte le issue di Nimblesite/Basilisk
Issue simili
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 88/100
aws-samples/sample-pacer#76 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 86/100
axodotdev/cargo-dist#2523 ·
I maintainer di solito rispondono entro 2 giorni