From 5c9e0bc2bb16f449257bfce80622b195237fb4f7 Mon Sep 17 00:00:00 2001 From: Shams Ul Azeem Date: Thu, 13 Feb 2020 03:58:39 +0500 Subject: [PATCH] Ignore none type for pythonexception (#237) * Making TypeName enum public * Ignoring None type object for PythonExceptions * better handling of None + test Co-authored-by: Fariz Rahman --- .../java/org/datavec/python/PythonExecutioner.java | 2 +- .../main/java/org/datavec/python/PythonObject.java | 4 +++- .../org/datavec/python/TestPythonExecutioner.java | 11 +++++++++++ 3 files changed, 15 insertions(+), 2 deletions(-) diff --git a/datavec/datavec-python/src/main/java/org/datavec/python/PythonExecutioner.java b/datavec/datavec-python/src/main/java/org/datavec/python/PythonExecutioner.java index e2d2e5747..530dd0e02 100644 --- a/datavec/datavec-python/src/main/java/org/datavec/python/PythonExecutioner.java +++ b/datavec/datavec-python/src/main/java/org/datavec/python/PythonExecutioner.java @@ -226,7 +226,7 @@ public class PythonExecutioner { private static void throwIfExecutionFailed() throws PythonException{ PythonObject ex = getVariable(PYTHON_EXCEPTION_KEY); - if (ex != null && !ex.toString().isEmpty()){ + if (ex != null && !ex.isNone() && !ex.toString().isEmpty()) { setVariable(PYTHON_EXCEPTION_KEY, new PythonObject("")); throw new PythonException(ex); } diff --git a/datavec/datavec-python/src/main/java/org/datavec/python/PythonObject.java b/datavec/datavec-python/src/main/java/org/datavec/python/PythonObject.java index c0079919c..84dd16e73 100644 --- a/datavec/datavec-python/src/main/java/org/datavec/python/PythonObject.java +++ b/datavec/datavec-python/src/main/java/org/datavec/python/PythonObject.java @@ -583,7 +583,9 @@ public class PythonObject { } } public boolean isNone() { - return nativePythonObject == null; + return (nativePythonObject == null)|| + (toString().equals("None") && Python.type(this).toString().equals("")); + } } diff --git a/datavec/datavec-python/src/test/java/org/datavec/python/TestPythonExecutioner.java b/datavec/datavec-python/src/test/java/org/datavec/python/TestPythonExecutioner.java index b8916476c..52e2aad56 100644 --- a/datavec/datavec-python/src/test/java/org/datavec/python/TestPythonExecutioner.java +++ b/datavec/datavec-python/src/test/java/org/datavec/python/TestPythonExecutioner.java @@ -322,5 +322,16 @@ public class TestPythonExecutioner { Python.setMainContext(); } + @Test + public void testIsNone(){ + PythonObject d = Python.dict(); + PythonObject none = d.attr("get").call("x"); + Assert.assertTrue(none.isNone()); + d.set(new PythonObject("x"), new PythonObject("y")); + PythonObject notNone = d.attr("get").call("x"); + Assert.assertFalse(notNone.isNone()); + Assert.assertEquals("y", notNone.toString()); + } + }