(&mut self, vm: &VirtualMachine, module_name: Option<&Py<PyStr>>)
| 6149 | |
| 6150 | #[cfg_attr(feature = "flame-it", flame("Frame"))] |
| 6151 | fn import(&mut self, vm: &VirtualMachine, module_name: Option<&Py<PyStr>>) -> PyResult<()> { |
| 6152 | let module_name = module_name.unwrap_or(vm.ctx.empty_str); |
| 6153 | let top = self.pop_value(); |
| 6154 | let from_list = match <Option<PyTupleRef>>::try_from_object(vm, top)? { |
| 6155 | Some(from_list) => from_list.try_into_typed::<PyStr>(vm)?, |
| 6156 | None => vm.ctx.empty_tuple_typed().to_owned(), |
| 6157 | }; |
| 6158 | let level = usize::try_from_object(vm, self.pop_value())?; |
| 6159 | |
| 6160 | let module = vm.import_from(module_name, &from_list, level)?; |
| 6161 | |
| 6162 | self.push_value(module); |
| 6163 | Ok(()) |
| 6164 | } |
| 6165 | |
| 6166 | #[cfg_attr(feature = "flame-it", flame("Frame"))] |
| 6167 | fn import_from(&mut self, vm: &VirtualMachine, idx: bytecode::NameIdx) -> PyResult { |
no test coverage detected