src/python_access/diff_mapping.rs

changeset 10
0c9e19020217
parent 4
49b062acace9
--- a/src/python_access/diff_mapping.rs	Sun May 17 19:40:50 2026 -0500
+++ b/src/python_access/diff_mapping.rs	Sat Jun 13 20:58:47 2026 -0500
@@ -171,22 +171,20 @@
     fn curvature_bound_components(
         &self,
         _guess: BoundedCurvatureGuess,
-    ) -> (DynResult<f64>, DynResult<f64>) {
+    ) -> (DynResult<f64>, DynResult<f64>, DynResult<f64>) {
         let m = intern!(self.obj.py(), "curvature_bound_components");
-        match process_error::<(Option<f64>, Option<f64>)>(
-            "curvature_bound_components",
-            self.obj.py(),
-            self.obj.call_method0(m).and_then(|r| r.extract()),
-        ) {
-            Ok((l, θ2)) => (
-                l.ok_or_else(|| anyhow!("l is None")),
-                θ2.ok_or_else(|| anyhow!("θ2 is None")),
-            ),
-            Err(e) => (
-                Err(anyhow!("(same error as second component)")),
-                Err(e.into()),
-            ),
-        }
+        let (ℓ_F, ℓ_gradv_est, transport_lip): (Option<f64>, Option<f64>, Option<f64>) =
+            process_error(
+                "curvature_bound_components",
+                self.obj.py(),
+                self.obj.call_method0(m).and_then(|r| r.extract()),
+            )
+            .unwrap();
+        (
+            ℓ_F.ok_or_else(|| anyhow!("ℓ_F is None")),
+            ℓ_gradv_est.ok_or_else(|| anyhow!("ℓ_gradv_est is None")),
+            transport_lip.ok_or_else(|| anyhow!("transport_lip is None")),
+        )
     }
 }
 

mercurial