10000 Implement IMPORT_FROM · go-python/gpython@47c8d26 · GitHub
[go: up one dir, main page]

Skip to content

Commit 47c8d26

Browse files
committed
Implement IMPORT_FROM
1 parent e906ee1 commit 47c8d26

File tree

1 file changed

+11
-1
lines changed

1 file changed

+11
-1
lines changed

vm/eval.go

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -900,7 +900,17 @@ func do_IMPORT_NAME(vm *Vm, namei int32) {
900900
// subsequently stored by a STORE_FAST instruction.
901901
func do_IMPORT_FROM(vm *Vm, namei int32) {
902902
defer vm.CheckException()
903-
vm.NotImplemented("IMPORT_FROM", namei)
903+
name := vm.frame.Code.Names[namei]
904+
module := vm.TOP()
905+
res, err := py.GetAttrErr(module, name)
906+
if err != nil {
907+
// Catch AttributeError and rethrow as ImportError
908+
if py.IsException(py.AttributeError, err) {
909+
err = py.ExceptionNewf(py.ImportError, "cannot import name %s", name)
910+
}
911+
vm.SetException(py.MakeException(err))
912+
}
913+
vm.PUSH(res)
904914
}
905915

906916
// Increments bytecode counter by delta.

0 commit comments

Comments
 (0)
0