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)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy