@@ -136,15 +136,15 @@ impl VirtualMachine {
136
136
137
137
pub fn try_class ( & self , module : & str , class : & str ) -> PyResult < PyClassRef > {
138
138
let class = self
139
- . get_attribute ( self . import ( module, & self . ctx . new_tuple ( vec ! [ ] ) ) ?, class) ?
139
+ . get_attribute ( self . import ( module, & self . ctx . new_tuple ( vec ! [ ] ) , 0 ) ?, class) ?
140
140
. downcast ( )
141
141
. expect ( "not a class" ) ;
142
142
Ok ( class)
143
143
}
144
144
145
145
pub fn class ( & self , module : & str , class : & str ) -> PyClassRef {
146
146
let module = self
147
- . import ( module, & self . ctx . new_tuple ( vec ! [ ] ) )
147
+ . import ( module, & self . ctx . new_tuple ( vec ! [ ] ) , 0 )
148
148
. unwrap_or_else ( |_| panic ! ( "unable to import {}" , module) ) ;
149
149
let class = self
150
150
. get_attribute ( module. clone ( ) , class)
@@ -302,7 +302,7 @@ impl VirtualMachine {
302
302
TryFromObject :: try_from_object ( self , repr)
303
303
}
304
304
305
- pub fn import ( & self , module : & str , from_list : & PyObjectRef ) -> PyResult {
305
+ pub fn import ( & self , module : & str , from_list : & PyObjectRef , level : usize ) -> PyResult {
306
306
let sys_modules = self
307
307
. get_attribute ( self . sys_module . clone ( ) , "modules" )
308
308
. unwrap ( ) ;
@@ -314,9 +314,14 @@ impl VirtualMachine {
314
314
func,
315
315
vec ! [
316
316
self . ctx. new_str( module. to_string( ) ) ,
317
- self . get_none( ) ,
317
+ if self . current_frame( ) . is_some( ) {
318
+ self . get_locals( ) . into_object( )
319
+ } else {
320
+ self . get_none( )
321
+ } ,
318
322
self . get_none( ) ,
319
323
from_list. clone( ) ,
324
+ self . ctx. new_int( level) ,
320
325
] ,
321
326
) ,
322
327
Err ( _) => Err ( self . new_exception (
0 commit comments