Skip to content

Commit c70748f

Browse files
committed
Use filter
1 parent 6239fe0 commit c70748f

File tree

1 file changed

+24
-19
lines changed

1 file changed

+24
-19
lines changed

vm/src/import.rs

+24-19
Original file line numberDiff line numberDiff line change
@@ -88,26 +88,31 @@ pub fn remove_importlib_frames(vm: &VirtualMachine, exc: &PyObjectRef) -> PyObje
8888

8989
if let Ok(tb) = vm.get_attribute(exc.clone(), "__traceback__") {
9090
if objtype::isinstance(&tb, &vm.ctx.list_type()) {
91-
let mut tb_entries = objsequence::get_elements_list(&tb).to_vec();
92-
tb_entries.reverse();
93-
let mut new_tb = Vec::with_capacity(tb_entries.len());
94-
95-
for tb_entry in tb_entries.iter() {
96-
let mut current_chunk = vec![];
97-
let location_attrs = objsequence::get_elements_tuple(&tb_entry);
98-
let file_name = objstr::get_value(&location_attrs[0]);
99-
if file_name != "_frozen_importlib" && file_name != "_frozen_importlib_external" {
100-
current_chunk.clear();
101-
new_tb.push(tb_entry.clone())
102-
} else {
103-
current_chunk.push(tb_entry.clone());
104-
let run_obj_name = objstr::get_value(&location_attrs[0]);
105-
if run_obj_name == "_call_with_frames_removed" || always_trim {
106-
new_tb.append(&mut current_chunk);
91+
let tb_entries = objsequence::get_elements_list(&tb).to_vec();
92+
let mut in_importlib = false;
93+
let new_tb = tb_entries
94+
.iter()
95+
.filter(|tb_entry| {
96+
let location_attrs = objsequence::get_elements_tuple(&tb_entry);
97+
let file_name = objstr::get_value(&location_attrs[0]);
98+
if file_name == "_frozen_importlib" || file_name == "_frozen_importlib_external"
99+
{
100+
let run_obj_name = objstr::get_value(&location_attrs[2]);
101+
if run_obj_name == "_call_with_frames_removed" {
102+
in_importlib = true;
103+
}
104+
if always_trim || in_importlib {
105+
false
106+
} else {
107+
true
108+
}
109+
} else {
110+
in_importlib = false;
111+
true
107112
}
108-
};
109-
}
110-
new_tb.reverse();
113+
})
114+
.map(|x| x.clone())
115+
.collect();
111116
vm.set_attr(exc, "__traceback__", vm.ctx.new_list(new_tb))
112117
.unwrap();
113118
}

0 commit comments

Comments
 (0)