From 026d95b80cebbf0ef1b154b6deb8722f346e00d7 Mon Sep 17 00:00:00 2001 From: Qing Date: Thu, 21 Jun 2018 08:24:12 -0700 Subject: [PATCH] revert hashcheck and add more info in the error message --- .../core/src/main/scala/org/apache/mxnet/FILEHASH | 4 ---- .../scala/org/apache/mxnet/APIDocGenerator.scala | 13 +------------ .../main/scala/org/apache/mxnet/NDArrayMacro.scala | 3 ++- .../main/scala/org/apache/mxnet/SymbolMacro.scala | 3 ++- .../org/apache/mxnet/utils/CToScalaUtils.scala | 13 ++++++++----- 5 files changed, 13 insertions(+), 23 deletions(-) delete mode 100644 scala-package/core/src/main/scala/org/apache/mxnet/FILEHASH diff --git a/scala-package/core/src/main/scala/org/apache/mxnet/FILEHASH b/scala-package/core/src/main/scala/org/apache/mxnet/FILEHASH deleted file mode 100644 index 23afdf91910a..000000000000 --- a/scala-package/core/src/main/scala/org/apache/mxnet/FILEHASH +++ /dev/null @@ -1,4 +0,0 @@ -6XrDYX1yoLNPRND2Y15LuA -9ZXWdPEoMmH-nK91mFa1NQ -AcoHjLSgJdWSMUb072EmcA -LQgYj0VGtMQUgpKKh5AhaQ \ No newline at end of file diff --git a/scala-package/macros/src/main/scala/org/apache/mxnet/APIDocGenerator.scala b/scala-package/macros/src/main/scala/org/apache/mxnet/APIDocGenerator.scala index 94a3c3e2b761..5cb2d83c2790 100644 --- a/scala-package/macros/src/main/scala/org/apache/mxnet/APIDocGenerator.scala +++ b/scala-package/macros/src/main/scala/org/apache/mxnet/APIDocGenerator.scala @@ -44,17 +44,6 @@ private[mxnet] object APIDocGenerator{ hashCollector += nonTypeSafeClassGen(FILE_PATH, true) hashCollector += nonTypeSafeClassGen(FILE_PATH, false) val finalHash = hashCollector.mkString("\n") - val prevHash = Source.fromFile(FILE_PATH + s"FILEHASH") - .getLines().mkString("\n") - // TODO: GPU test seemed to generate different files - if (!System.getenv().containsKey("SCALA_ON_GPU")) { - require(prevHash.equals(finalHash), - "Detect Operator changes, comment on this line and update the hashfile" - + ", please go to scala-package/macros/.../APIDocGenerator.scala") - } - val pw = new PrintWriter(new File(FILE_PATH + s"FILEHASH")) - pw.write(finalHash) - pw.close() } def MD5Generator(input : String) : String = { @@ -193,7 +182,7 @@ private[mxnet] object APIDocGenerator{ val realName = if (aliasName == name.value) "" else s"(a.k.a., ${name.value})" val argList = argNames zip argTypes zip argDescs map { case ((argName, argType), argDesc) => - val typeAndOption = CToScalaUtils.argumentCleaner(argType, returnType) + val typeAndOption = CToScalaUtils.argumentCleaner(argType, argName, returnType) new absClassArg(argName, typeAndOption._1, argDesc, typeAndOption._2) } new absClassFunction(aliasName, desc.value, argList.toList, returnType) diff --git a/scala-package/macros/src/main/scala/org/apache/mxnet/NDArrayMacro.scala b/scala-package/macros/src/main/scala/org/apache/mxnet/NDArrayMacro.scala index 082c64a609c3..ae841d55f7fc 100644 --- a/scala-package/macros/src/main/scala/org/apache/mxnet/NDArrayMacro.scala +++ b/scala-package/macros/src/main/scala/org/apache/mxnet/NDArrayMacro.scala @@ -225,7 +225,8 @@ private[mxnet] object NDArrayMacro { } // scalastyle:on println val argList = argNames zip argTypes map { case (argName, argType) => - val typeAndOption = CToScalaUtils.argumentCleaner(argType, "org.apache.mxnet.NDArray") + val typeAndOption = + CToScalaUtils.argumentCleaner(argType, argName, "org.apache.mxnet.NDArray") new NDArrayArg(argName, typeAndOption._1, typeAndOption._2) } new NDArrayFunction(aliasName, argList.toList) diff --git a/scala-package/macros/src/main/scala/org/apache/mxnet/SymbolMacro.scala b/scala-package/macros/src/main/scala/org/apache/mxnet/SymbolMacro.scala index 81430c2ab263..3c8d819e14f2 100644 --- a/scala-package/macros/src/main/scala/org/apache/mxnet/SymbolMacro.scala +++ b/scala-package/macros/src/main/scala/org/apache/mxnet/SymbolMacro.scala @@ -230,7 +230,8 @@ private[mxnet] object SymbolImplMacros { } // scalastyle:on println val argList = argNames zip argTypes map { case (argName, argType) => - val typeAndOption = CToScalaUtils.argumentCleaner(argType, "org.apache.mxnet.Symbol") + val typeAndOption = + CToScalaUtils.argumentCleaner(argType, argName, "org.apache.mxnet.Symbol") new SymbolArg(argName, typeAndOption._1, typeAndOption._2) } new SymbolFunction(aliasName, argList.toList) diff --git a/scala-package/macros/src/main/scala/org/apache/mxnet/utils/CToScalaUtils.scala b/scala-package/macros/src/main/scala/org/apache/mxnet/utils/CToScalaUtils.scala index 9d51ddcb674a..c522e0e9ee7e 100644 --- a/scala-package/macros/src/main/scala/org/apache/mxnet/utils/CToScalaUtils.scala +++ b/scala-package/macros/src/main/scala/org/apache/mxnet/utils/CToScalaUtils.scala @@ -21,7 +21,8 @@ private[mxnet] object CToScalaUtils { // Convert C++ Types to Scala Types - def typeConversion(in : String, argType : String = "", returnType : String) : String = { + def typeConversion(in : String, argType : String = "", + argName : String, returnType : String) : String = { in match { case "Shape(tuple)" | "ShapeorNone" => "org.apache.mxnet.Shape" case "Symbol" | "NDArray" | "NDArray-or-Symbol" => returnType @@ -35,7 +36,7 @@ private[mxnet] object CToScalaUtils { case "boolean" | "booleanorNone" => "Boolean" case "tupleof" | "tupleof" | "ptr" | "" => "Any" case default => throw new IllegalArgumentException( - s"Invalid type for args: $default, $argType") + s"Invalid type for args: $default\nString argType: $argType\nargName: $argName") } } @@ -47,10 +48,12 @@ private[mxnet] object CToScalaUtils { * The three field shown above do not usually come at the same time * This function used the above format to determine if the argument is * optional, what is it Scala type and possibly pass in a default value + * @param argName The name of the argument * @param argType Raw arguement Type description * @return (Scala_Type, isOptional) */ - def argumentCleaner(argType : String, returnType : String) : (String, Boolean) = { + def argumentCleaner(argName: String, + argType : String, returnType : String) : (String, Boolean) = { val spaceRemoved = argType.replaceAll("\\s+", "") var commaRemoved : Array[String] = new Array[String](0) // Deal with the case e.g: stype : {'csr', 'default', 'row_sparse'} @@ -66,9 +69,9 @@ private[mxnet] object CToScalaUtils { // arg: Type, optional, default = Null require(commaRemoved(1).equals("optional")) require(commaRemoved(2).startsWith("default=")) - (typeConversion(commaRemoved(0), argType, returnType), true) + (typeConversion(commaRemoved(0), argType, argName, returnType), true) } else if (commaRemoved.length == 2 || commaRemoved.length == 1) { - val tempType = typeConversion(commaRemoved(0), argType, returnType) + val tempType = typeConversion(commaRemoved(0), argType, argName, returnType) val tempOptional = tempType.equals("org.apache.mxnet.Symbol") (tempType, tempOptional) } else {