From 8c7c76c591012be83bc69984945a59108383347c Mon Sep 17 00:00:00 2001 From: LucaSforza Date: Sun, 14 May 2023 16:27:50 +0200 Subject: [PATCH 1/3] Implemented __reduce__ method for the ImportError exception --- vm/src/exceptions.rs | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/vm/src/exceptions.rs b/vm/src/exceptions.rs index a62d1616b0..caf420ef0b 100644 --- a/vm/src/exceptions.rs +++ b/vm/src/exceptions.rs @@ -1182,6 +1182,22 @@ pub(super) mod types { )?; Ok(()) } + + #[pymethod(magic)] + fn reduce( + exc: PyBaseExceptionRef, + _vm: &VirtualMachine + ) -> PyTupleRef { + + let obj = exc.as_object().to_owned(); + let mut result: Vec = vec![obj.class().to_owned().into(),_vm.new_tuple((exc.get_arg(0).unwrap(),)).into()]; + + if let Some(dict) = obj.dict().filter(|x| !x.is_empty()) { + result.push(dict.into()); + } + + result.into_pytuple(_vm) + } } #[pyexception(name, base = "PyImportError", ctx = "module_not_found_error", impl)] From 3715714a70e9e94b08ad9d9709f160428ba78b25 Mon Sep 17 00:00:00 2001 From: LucaSforza Date: Sun, 14 May 2023 18:32:14 +0200 Subject: [PATCH 2/3] Problem solved with rustfmt --- vm/src/exceptions.rs | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/vm/src/exceptions.rs b/vm/src/exceptions.rs index caf420ef0b..064943048b 100644 --- a/vm/src/exceptions.rs +++ b/vm/src/exceptions.rs @@ -1182,15 +1182,13 @@ pub(super) mod types { )?; Ok(()) } - #[pymethod(magic)] - fn reduce( - exc: PyBaseExceptionRef, - _vm: &VirtualMachine - ) -> PyTupleRef { - + fn reduce(exc: PyBaseExceptionRef, _vm: &VirtualMachine) -> PyTupleRef { let obj = exc.as_object().to_owned(); - let mut result: Vec = vec![obj.class().to_owned().into(),_vm.new_tuple((exc.get_arg(0).unwrap(),)).into()]; + let mut result: Vec = vec![ + obj.class().to_owned().into(), + _vm.new_tuple((exc.get_arg(0).unwrap(),)).into(), + ]; if let Some(dict) = obj.dict().filter(|x| !x.is_empty()) { result.push(dict.into()); From 3f1c28649f98902ce29865b051d45e626d783291 Mon Sep 17 00:00:00 2001 From: "Jeong, YunWon" <69878+youknowone@users.noreply.github.com> Date: Mon, 15 May 2023 16:39:38 +0900 Subject: [PATCH 3/3] Fix _vm->vm --- vm/src/exceptions.rs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/vm/src/exceptions.rs b/vm/src/exceptions.rs index 064943048b..19b035d980 100644 --- a/vm/src/exceptions.rs +++ b/vm/src/exceptions.rs @@ -1183,18 +1183,18 @@ pub(super) mod types { Ok(()) } #[pymethod(magic)] - fn reduce(exc: PyBaseExceptionRef, _vm: &VirtualMachine) -> PyTupleRef { + fn reduce(exc: PyBaseExceptionRef, vm: &VirtualMachine) -> PyTupleRef { let obj = exc.as_object().to_owned(); let mut result: Vec = vec![ obj.class().to_owned().into(), - _vm.new_tuple((exc.get_arg(0).unwrap(),)).into(), + vm.new_tuple((exc.get_arg(0).unwrap(),)).into(), ]; if let Some(dict) = obj.dict().filter(|x| !x.is_empty()) { result.push(dict.into()); } - result.into_pytuple(_vm) + result.into_pytuple(vm) } }