Skip to content
This repository has been archived by the owner on Nov 17, 2023. It is now read-only.

Commit

Permalink
revert hashcheck and add more info in the error message
Browse files Browse the repository at this point in the history
  • Loading branch information
lanking520 committed Jun 21, 2018
1 parent b0478b2 commit 026d95b
Show file tree
Hide file tree
Showing 5 changed files with 13 additions and 23 deletions.
4 changes: 0 additions & 4 deletions scala-package/core/src/main/scala/org/apache/mxnet/FILEHASH

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -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 = {
Expand Down Expand Up @@ -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)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -35,7 +36,7 @@ private[mxnet] object CToScalaUtils {
case "boolean" | "booleanorNone" => "Boolean"
case "tupleof<float>" | "tupleof<double>" | "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")
}
}

Expand All @@ -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'}
Expand All @@ -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 {
Expand Down

0 comments on commit 026d95b

Please sign in to comment.