{"action":"created","comment":{"url":"https://api.github.com/repos/broadinstitute/cromwell/pulls/comments/39764463","id":39764463,"diff_hunk":"@@ -0,0 +1,405 @@\n+package cromwell.binding.expression\n+\n+import cromwell.binding.types._\n+import cromwell.binding.values._\n+import cromwell.binding.{NamespaceWithWorkflow, WdlExpression}\n+import cromwell.parser.BackendType\n+import cromwell.util.SampleWdl\n+import org.scalatest.{FlatSpec, Matchers}\n+import org.scalatest.prop.TableDrivenPropertyChecks._\n+\n+import scala.util.{Failure, Success, Try}\n+\n+class TypeEvaluatorSpec extends FlatSpec with Matchers {\n+  val expr: String => WdlExpression = WdlExpression.fromString\n+  val namespace = NamespaceWithWorkflow.load(SampleWdl.ThreeStep.wdlSource(), BackendType.LOCAL)\n+\n+  def noLookup(String: String): WdlType = fail(\"No identifiers should be looked up in this test\")\n+\n+  def identifierLookup(String: String): WdlType = {\n+    String match {\n+      case \"cgrep\" => WdlCallOutputsObjectType(namespace.workflow.calls.find(_.name == \"cgrep\").get)\n+      case \"ps\" => WdlCallOutputsObjectType(namespace.workflow.calls.find(_.name == \"ps\").get)\n+    }\n+  }\n+\n+  def identifierEval(exprStr: String): WdlPrimitiveType = expr(exprStr).evaluateType(identifierLookup, new WdlStandardLibraryFunctionsType).asInstanceOf[Try[WdlPrimitiveType]].get\n+  def identifierEvalError(exprStr: String): Unit = {\n+    expr(exprStr).evaluateType(identifierLookup, new WdlStandardLibraryFunctionsType).asInstanceOf[Try[WdlPrimitive]] match {\n+      case Failure(ex) => // Expected\n+      case Success(value) => fail(s\"Operation was supposed to fail, instead I got value: $value\")\n+    }\n+  }\n+\n+  private def operate(lhs: WdlType, op: String, rhs: WdlType): Try[WdlType] = op match {\n+    case \"+\" => lhs.add(rhs)\n+    case \"-\" => lhs.subtract(rhs)\n+    case \"*\" => lhs.multiply(rhs)\n+    case \"/\" => lhs.divide(rhs)\n+    case \"%\" => lhs.mod(rhs)\n+    case \"==\" => lhs.equals(rhs)\n+    case \"!=\" => lhs.notEquals(rhs)\n+    case \"<\" => lhs.lessThan(rhs)\n+    case \"<=\" => lhs.lessThanOrEqual(rhs)\n+    case \">\" => lhs.greaterThan(rhs)\n+    case \">=\" => lhs.greaterThanOrEqual(rhs)\n+    case \"||\" => lhs.or(rhs)\n+    case \"&&\" => lhs.and(rhs)\n+    case _ => fail(s\"unexpected operator: $op\")\n+  }\n+\n+  val validOperations = Table(\n+    (\"lhs\", \"op\", \"rhs\", \"result\"),\n+    (WdlIntegerType, \"+\", WdlIntegerType, WdlIntegerType),\n+    (WdlIntegerType, \"+\", WdlFloatType, WdlFloatType),\n+    (WdlIntegerType, \"+\", WdlStringType, WdlStringType),\n+    (WdlIntegerType, \"-\", WdlIntegerType, WdlIntegerType),\n+    (WdlIntegerType, \"-\", WdlFloatType, WdlFloatType),\n+    (WdlIntegerType, \"*\", WdlIntegerType, WdlIntegerType),\n+    (WdlIntegerType, \"*\", WdlFloatType, WdlFloatType),\n+    (WdlIntegerType, \"/\", WdlIntegerType, WdlIntegerType),\n+    (WdlIntegerType, \"/\", WdlFloatType, WdlFloatType),\n+    (WdlIntegerType, \"%\", WdlIntegerType, WdlIntegerType),\n+    (WdlIntegerType, \"%\", WdlFloatType, WdlFloatType),\n+    (WdlIntegerType, \"==\", WdlIntegerType, WdlBooleanType),\n+    (WdlIntegerType, \"==\", WdlFloatType, WdlBooleanType),\n+    (WdlIntegerType, \"!=\", WdlIntegerType, WdlBooleanType),\n+    (WdlIntegerType, \"!=\", WdlFloatType, WdlBooleanType),\n+    (WdlIntegerType, \"<\", WdlIntegerType, WdlBooleanType),\n+    (WdlIntegerType, \"<\", WdlFloatType, WdlBooleanType),\n+    (WdlIntegerType, \"<=\", WdlIntegerType, WdlBooleanType),\n+    (WdlIntegerType, \"<=\", WdlFloatType, WdlBooleanType),\n+    (WdlIntegerType, \">\", WdlIntegerType, WdlBooleanType),\n+    (WdlIntegerType, \">\", WdlFloatType, WdlBooleanType),\n+    (WdlIntegerType, \">=\", WdlIntegerType, WdlBooleanType),\n+    (WdlIntegerType, \">=\", WdlFloatType, WdlBooleanType),\n+    (WdlFloatType, \"+\", WdlIntegerType, WdlFloatType),\n+    (WdlFloatType, \"+\", WdlFloatType, WdlFloatType),\n+    (WdlFloatType, \"+\", WdlStringType, WdlStringType),\n+    (WdlFloatType, \"-\", WdlIntegerType, WdlFloatType),\n+    (WdlFloatType, \"-\", WdlFloatType, WdlFloatType),\n+    (WdlFloatType, \"*\", WdlIntegerType, WdlFloatType),\n+    (WdlFloatType, \"*\", WdlFloatType, WdlFloatType),\n+    (WdlFloatType, \"/\", WdlIntegerType, WdlFloatType),\n+    (WdlFloatType, \"/\", WdlFloatType, WdlFloatType),\n+    (WdlFloatType, \"%\", WdlIntegerType, WdlFloatType),\n+    (WdlFloatType, \"%\", WdlFloatType, WdlFloatType),\n+    (WdlFloatType, \"==\", WdlIntegerType, WdlBooleanType),\n+    (WdlFloatType, \"==\", WdlFloatType, WdlBooleanType),\n+    (WdlFloatType, \"!=\", WdlIntegerType, WdlBooleanType),\n+    (WdlFloatType, \"!=\", WdlFloatType, WdlBooleanType),\n+    (WdlFloatType, \"<\", WdlIntegerType, WdlBooleanType),\n+    (WdlFloatType, \"<\", WdlFloatType, WdlBooleanType),\n+    (WdlFloatType, \"<=\", WdlIntegerType, WdlBooleanType),\n+    (WdlFloatType, \"<=\", WdlFloatType, WdlBooleanType),\n+    (WdlFloatType, \">\", WdlIntegerType, WdlBooleanType),\n+    (WdlFloatType, \">\", WdlFloatType, WdlBooleanType),\n+    (WdlFloatType, \">=\", WdlIntegerType, WdlBooleanType),\n+    (WdlFloatType, \">=\", WdlFloatType, WdlBooleanType),\n+    (WdlStringType, \"+\", WdlIntegerType, WdlStringType),\n+    (WdlStringType, \"+\", WdlFloatType, WdlStringType),\n+    (WdlStringType, \"+\", WdlStringType, WdlStringType),\n+    (WdlStringType, \"==\", WdlStringType, WdlBooleanType),\n+    (WdlStringType, \"!=\", WdlStringType, WdlBooleanType),\n+    (WdlStringType, \"<\", WdlStringType, WdlBooleanType),\n+    (WdlStringType, \"<=\", WdlStringType, WdlBooleanType),\n+    (WdlStringType, \">\", WdlStringType, WdlBooleanType),\n+    (WdlStringType, \">=\", WdlStringType, WdlBooleanType),\n+    (WdlFileType, \"+\", WdlStringType, WdlFileType),\n+    (WdlFileType, \"+\", WdlFileType, WdlFileType),\n+    (WdlFileType, \"==\", WdlStringType, WdlBooleanType),\n+    (WdlFileType, \"==\", WdlFileType, WdlBooleanType),\n+    (WdlFileType, \"!=\", WdlStringType, WdlBooleanType),\n+    (WdlFileType, \"!=\", WdlFileType, WdlBooleanType),\n+    (WdlFileType, \"<=\", WdlStringType, WdlBooleanType),","path":"src/test/scala/cromwell/binding/expression/TypeEvaluatorSpec.scala","position":114,"original_position":114,"commit_id":"07ff6b815f1a827021e645edd26ccd2abf09891f","original_commit_id":"7a1a2a37f140ec29aa715cf3c26c06457221765d","user":{"login":"scottfrazer","id":58551,"avatar_url":"https://avatars.githubusercontent.com/u/58551?v=3","gravatar_id":"","url":"https://api.github.com/users/scottfrazer","html_url":"https://github.com/scottfrazer","followers_url":"https://api.github.com/users/scottfrazer/followers","following_url":"https://api.github.com/users/scottfrazer/following{/other_user}","gists_url":"https://api.github.com/users/scottfrazer/gists{/gist_id}","starred_url":"https://api.github.com/users/scottfrazer/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/scottfrazer/subscriptions","organizations_url":"https://api.github.com/users/scottfrazer/orgs","repos_url":"https://api.github.com/users/scottfrazer/repos","events_url":"https://api.github.com/users/scottfrazer/events{/privacy}","received_events_url":"https://api.github.com/users/scottfrazer/received_events","type":"User","site_admin":false},"body":"With current semantics it'll return `WdlBoolean.False`, because `<` is not defined on but `==` is defined, so it'd return the result of `WdlFile(\"/dev/null\") == WdlString(\"foo\")`.  In terms of binary operators, I tried to keep String and File relatively close in semantics.\r\n\r\nDoes that seem weird to you?  Any other suggestions?","created_at":"2015-09-17T16:05:04Z","updated_at":"2015-09-17T16:05:04Z","html_url":"https://github.com/broadinstitute/cromwell/pull/174#discussion_r39764463","pull_request_url":"https://api.github.com/repos/broadinstitute/cromwell/pulls/174","_links":{"self":{"href":"https://api.github.com/repos/broadinstitute/cromwell/pulls/comments/39764463"},"html":{"href":"https://github.com/broadinstitute/cromwell/pull/174#discussion_r39764463"},"pull_request":{"href":"https://api.github.com/repos/broadinstitute/cromwell/pulls/174"}}},"pull_request":{"url":"https://api.github.com/repos/broadinstitute/cromwell/pulls/174","id":44494208,"html_url":"https://github.com/broadinstitute/cromwell/pull/174","diff_url":"https://github.com/broadinstitute/cromwell/pull/174.diff","patch_url":"https://github.com/broadinstitute/cromwell/pull/174.patch","issue_url":"https://api.github.com/repos/broadinstitute/cromwell/issues/174","number":174,"state":"open","locked":false,"title":"Expression evaluator refactoring","user":{"login":"scottfrazer","id":58551,"avatar_url":"https://avatars.githubusercontent.com/u/58551?v=3","gravatar_id":"","url":"https://api.github.com/users/scottfrazer","html_url":"https://github.com/scottfrazer","followers_url":"https://api.github.com/users/scottfrazer/followers","following_url":"https://api.github.com/users/scottfrazer/following{/other_user}","gists_url":"https://api.github.com/users/scottfrazer/gists{/gist_id}","starred_url":"https://api.github.com/users/scottfrazer/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/scottfrazer/subscriptions","organizations_url":"https://api.github.com/users/scottfrazer/orgs","repos_url":"https://api.github.com/users/scottfrazer/repos","events_url":"https://api.github.com/users/scottfrazer/events{/privacy}","received_events_url":"https://api.github.com/users/scottfrazer/received_events","type":"User","site_admin":false},"body":"* Moved all expression related code into `cromwell.binding.expression`.\r\n* Defined interface `Evaluator` which evaluates into a `type T`.  The 3 currently implemented evaluators are:\r\n  * `ValueEvaluator` - Evaluate a `WdlExpression` into a `WdlValue`\r\n  * `TypeEvaluator` - Evaluate a `WdlExpression` into a `WdlType`\r\n  * `FileEvaluator` - Evaluate a `WdlExpression` into a `Seq[WdlFile]`\r\n* Public API for evaluating expressions is not changed much.  Basically:\r\n  * `WdlExpression.evaluate(...): Try[WdlValue]`\r\n  * `WdlExpression.evaluateType(...): Try[WdlType]`\r\n  * `WdlExpression.evaluateFiles(...): Try[Seq[WdlValue]]`\r\n* `JesBackend` now uses the `WdlExpression.evaluateFiles()` for calculating all `JesOutput`s\r\n* Statically type-check the `output` section of a task defintion!\r\n* Coercion of input types happens when locally qualified inputs are created","created_at":"2015-09-08T23:11:11Z","updated_at":"2015-09-17T16:05:04Z","closed_at":null,"merged_at":null,"merge_commit_sha":"a6c1e5e3bce26b7bd3a9a84e3efe20244087d34f","assignee":{"login":"Horneth","id":2978948,"avatar_url":"https://avatars.githubusercontent.com/u/2978948?v=3","gravatar_id":"","url":"https://api.github.com/users/Horneth","html_url":"https://github.com/Horneth","followers_url":"https://api.github.com/users/Horneth/followers","following_url":"https://api.github.com/users/Horneth/following{/other_user}","gists_url":"https://api.github.com/users/Horneth/gists{/gist_id}","starred_url":"https://api.github.com/users/Horneth/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Horneth/subscriptions","organizations_url":"https://api.github.com/users/Horneth/orgs","repos_url":"https://api.github.com/users/Horneth/repos","events_url":"https://api.github.com/users/Horneth/events{/privacy}","received_events_url":"https://api.github.com/users/Horneth/received_events","type":"User","site_admin":false},"milestone":null,"commits_url":"https://api.github.com/repos/broadinstitute/cromwell/pulls/174/commits","review_comments_url":"https://api.github.com/repos/broadinstitute/cromwell/pulls/174/comments","review_comment_url":"https://api.github.com/repos/broadinstitute/cromwell/pulls/comments{/number}","comments_url":"https://api.github.com/repos/broadinstitute/cromwell/issues/174/comments","statuses_url":"https://api.github.com/repos/broadinstitute/cromwell/statuses/07ff6b815f1a827021e645edd26ccd2abf09891f","head":{"label":"broadinstitute:expr_evaluator","ref":"expr_evaluator","sha":"07ff6b815f1a827021e645edd26ccd2abf09891f","user":{"login":"broadinstitute","id":393552,"avatar_url":"https://avatars.githubusercontent.com/u/393552?v=3","gravatar_id":"","url":"https://api.github.com/users/broadinstitute","html_url":"https://github.com/broadinstitute","followers_url":"https://api.github.com/users/broadinstitute/followers","following_url":"https://api.github.com/users/broadinstitute/following{/other_user}","gists_url":"https://api.github.com/users/broadinstitute/gists{/gist_id}","starred_url":"https://api.github.com/users/broadinstitute/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/broadinstitute/subscriptions","organizations_url":"https://api.github.com/users/broadinstitute/orgs","repos_url":"https://api.github.com/users/broadinstitute/repos","events_url":"https://api.github.com/users/broadinstitute/events{/privacy}","received_events_url":"https://api.github.com/users/broadinstitute/received_events","type":"Organization","site_admin":false},"repo":{"id":34136406,"name":"cromwell","full_name":"broadinstitute/cromwell","owner":{"login":"broadinstitute","id":393552,"avatar_url":"https://avatars.githubusercontent.com/u/393552?v=3","gravatar_id":"","url":"https://api.github.com/users/broadinstitute","html_url":"https://github.com/broadinstitute","followers_url":"https://api.github.com/users/broadinstitute/followers","following_url":"https://api.github.com/users/broadinstitute/following{/other_user}","gists_url":"https://api.github.com/users/broadinstitute/gists{/gist_id}","starred_url":"https://api.github.com/users/broadinstitute/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/broadinstitute/subscriptions","organizations_url":"https://api.github.com/users/broadinstitute/orgs","repos_url":"https://api.github.com/users/broadinstitute/repos","events_url":"https://api.github.com/users/broadinstitute/events{/privacy}","received_events_url":"https://api.github.com/users/broadinstitute/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/broadinstitute/cromwell","description":"Workflow Execution Engine using WDL","fork":false,"url":"https://api.github.com/repos/broadinstitute/cromwell","forks_url":"https://api.github.com/repos/broadinstitute/cromwell/forks","keys_url":"https://api.github.com/repos/broadinstitute/cromwell/keys{/key_id}","collaborators_url":"https://api.github.com/repos/broadinstitute/cromwell/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/broadinstitute/cromwell/teams","hooks_url":"https://api.github.com/repos/broadinstitute/cromwell/hooks","issue_events_url":"https://api.github.com/repos/broadinstitute/cromwell/issues/events{/number}","events_url":"https://api.github.com/repos/broadinstitute/cromwell/events","assignees_url":"https://api.github.com/repos/broadinstitute/cromwell/assignees{/user}","branches_url":"https://api.github.com/repos/broadinstitute/cromwell/branches{/branch}","tags_url":"https://api.github.com/repos/broadinstitute/cromwell/tags","blobs_url":"https://api.github.com/repos/broadinstitute/cromwell/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/broadinstitute/cromwell/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/broadinstitute/cromwell/git/refs{/sha}","trees_url":"https://api.github.com/repos/broadinstitute/cromwell/git/trees{/sha}","statuses_url":"https://api.github.com/repos/broadinstitute/cromwell/statuses/{sha}","languages_url":"https://api.github.com/repos/broadinstitute/cromwell/languages","stargazers_url":"https://api.github.com/repos/broadinstitute/cromwell/stargazers","contributors_url":"https://api.github.com/repos/broadinstitute/cromwell/contributors","subscribers_url":"https://api.github.com/repos/broadinstitute/cromwell/subscribers","subscription_url":"https://api.github.com/repos/broadinstitute/cromwell/subscription","commits_url":"https://api.github.com/repos/broadinstitute/cromwell/commits{/sha}","git_commits_url":"https://api.github.com/repos/broadinstitute/cromwell/git/commits{/sha}","comments_url":"https://api.github.com/repos/broadinstitute/cromwell/comments{/number}","issue_comment_url":"https://api.github.com/repos/broadinstitute/cromwell/issues/comments{/number}","contents_url":"https://api.github.com/repos/broadinstitute/cromwell/contents/{+path}","compare_url":"https://api.github.com/repos/broadinstitute/cromwell/compare/{base}...{head}","merges_url":"https://api.github.com/repos/broadinstitute/cromwell/merges","archive_url":"https://api.github.com/repos/broadinstitute/cromwell/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/broadinstitute/cromwell/downloads","issues_url":"https://api.github.com/repos/broadinstitute/cromwell/issues{/number}","pulls_url":"https://api.github.com/repos/broadinstitute/cromwell/pulls{/number}","milestones_url":"https://api.github.com/repos/broadinstitute/cromwell/milestones{/number}","notifications_url":"https://api.github.com/repos/broadinstitute/cromwell/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/broadinstitute/cromwell/labels{/name}","releases_url":"https://api.github.com/repos/broadinstitute/cromwell/releases{/id}","created_at":"2015-04-17T19:39:36Z","updated_at":"2015-08-24T15:16:51Z","pushed_at":"2015-09-17T14:51:07Z","git_url":"git://github.com/broadinstitute/cromwell.git","ssh_url":"git@github.com:broadinstitute/cromwell.git","clone_url":"https://github.com/broadinstitute/cromwell.git","svn_url":"https://github.com/broadinstitute/cromwell","homepage":"http://broadinstitute.github.io/cromwell/","size":5457,"stargazers_count":7,"watchers_count":7,"language":"Scala","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":0,"mirror_url":null,"open_issues_count":5,"forks":0,"open_issues":5,"watchers":7,"default_branch":"master"}},"base":{"label":"broadinstitute:develop","ref":"develop","sha":"7b48d76ff6773a250a7a7d6b95e21551ff39cf56","user":{"login":"broadinstitute","id":393552,"avatar_url":"https://avatars.githubusercontent.com/u/393552?v=3","gravatar_id":"","url":"https://api.github.com/users/broadinstitute","html_url":"https://github.com/broadinstitute","followers_url":"https://api.github.com/users/broadinstitute/followers","following_url":"https://api.github.com/users/broadinstitute/following{/other_user}","gists_url":"https://api.github.com/users/broadinstitute/gists{/gist_id}","starred_url":"https://api.github.com/users/broadinstitute/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/broadinstitute/subscriptions","organizations_url":"https://api.github.com/users/broadinstitute/orgs","repos_url":"https://api.github.com/users/broadinstitute/repos","events_url":"https://api.github.com/users/broadinstitute/events{/privacy}","received_events_url":"https://api.github.com/users/broadinstitute/received_events","type":"Organization","site_admin":false},"repo":{"id":34136406,"name":"cromwell","full_name":"broadinstitute/cromwell","owner":{"login":"broadinstitute","id":393552,"avatar_url":"https://avatars.githubusercontent.com/u/393552?v=3","gravatar_id":"","url":"https://api.github.com/users/broadinstitute","html_url":"https://github.com/broadinstitute","followers_url":"https://api.github.com/users/broadinstitute/followers","following_url":"https://api.github.com/users/broadinstitute/following{/other_user}","gists_url":"https://api.github.com/users/broadinstitute/gists{/gist_id}","starred_url":"https://api.github.com/users/broadinstitute/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/broadinstitute/subscriptions","organizations_url":"https://api.github.com/users/broadinstitute/orgs","repos_url":"https://api.github.com/users/broadinstitute/repos","events_url":"https://api.github.com/users/broadinstitute/events{/privacy}","received_events_url":"https://api.github.com/users/broadinstitute/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/broadinstitute/cromwell","description":"Workflow Execution Engine using WDL","fork":false,"url":"https://api.github.com/repos/broadinstitute/cromwell","forks_url":"https://api.github.com/repos/broadinstitute/cromwell/forks","keys_url":"https://api.github.com/repos/broadinstitute/cromwell/keys{/key_id}","collaborators_url":"https://api.github.com/repos/broadinstitute/cromwell/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/broadinstitute/cromwell/teams","hooks_url":"https://api.github.com/repos/broadinstitute/cromwell/hooks","issue_events_url":"https://api.github.com/repos/broadinstitute/cromwell/issues/events{/number}","events_url":"https://api.github.com/repos/broadinstitute/cromwell/events","assignees_url":"https://api.github.com/repos/broadinstitute/cromwell/assignees{/user}","branches_url":"https://api.github.com/repos/broadinstitute/cromwell/branches{/branch}","tags_url":"https://api.github.com/repos/broadinstitute/cromwell/tags","blobs_url":"https://api.github.com/repos/broadinstitute/cromwell/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/broadinstitute/cromwell/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/broadinstitute/cromwell/git/refs{/sha}","trees_url":"https://api.github.com/repos/broadinstitute/cromwell/git/trees{/sha}","statuses_url":"https://api.github.com/repos/broadinstitute/cromwell/statuses/{sha}","languages_url":"https://api.github.com/repos/broadinstitute/cromwell/languages","stargazers_url":"https://api.github.com/repos/broadinstitute/cromwell/stargazers","contributors_url":"https://api.github.com/repos/broadinstitute/cromwell/contributors","subscribers_url":"https://api.github.com/repos/broadinstitute/cromwell/subscribers","subscription_url":"https://api.github.com/repos/broadinstitute/cromwell/subscription","commits_url":"https://api.github.com/repos/broadinstitute/cromwell/commits{/sha}","git_commits_url":"https://api.github.com/repos/broadinstitute/cromwell/git/commits{/sha}","comments_url":"https://api.github.com/repos/broadinstitute/cromwell/comments{/number}","issue_comment_url":"https://api.github.com/repos/broadinstitute/cromwell/issues/comments{/number}","contents_url":"https://api.github.com/repos/broadinstitute/cromwell/contents/{+path}","compare_url":"https://api.github.com/repos/broadinstitute/cromwell/compare/{base}...{head}","merges_url":"https://api.github.com/repos/broadinstitute/cromwell/merges","archive_url":"https://api.github.com/repos/broadinstitute/cromwell/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/broadinstitute/cromwell/downloads","issues_url":"https://api.github.com/repos/broadinstitute/cromwell/issues{/number}","pulls_url":"https://api.github.com/repos/broadinstitute/cromwell/pulls{/number}","milestones_url":"https://api.github.com/repos/broadinstitute/cromwell/milestones{/number}","notifications_url":"https://api.github.com/repos/broadinstitute/cromwell/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/broadinstitute/cromwell/labels{/name}","releases_url":"https://api.github.com/repos/broadinstitute/cromwell/releases{/id}","created_at":"2015-04-17T19:39:36Z","updated_at":"2015-08-24T15:16:51Z","pushed_at":"2015-09-17T14:51:07Z","git_url":"git://github.com/broadinstitute/cromwell.git","ssh_url":"git@github.com:broadinstitute/cromwell.git","clone_url":"https://github.com/broadinstitute/cromwell.git","svn_url":"https://github.com/broadinstitute/cromwell","homepage":"http://broadinstitute.github.io/cromwell/","size":5457,"stargazers_count":7,"watchers_count":7,"language":"Scala","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":0,"mirror_url":null,"open_issues_count":5,"forks":0,"open_issues":5,"watchers":7,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/broadinstitute/cromwell/pulls/174"},"html":{"href":"https://github.com/broadinstitute/cromwell/pull/174"},"issue":{"href":"https://api.github.com/repos/broadinstitute/cromwell/issues/174"},"comments":{"href":"https://api.github.com/repos/broadinstitute/cromwell/issues/174/comments"},"review_comments":{"href":"https://api.github.com/repos/broadinstitute/cromwell/pulls/174/comments"},"review_comment":{"href":"https://api.github.com/repos/broadinstitute/cromwell/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/broadinstitute/cromwell/pulls/174/commits"},"statuses":{"href":"https://api.github.com/repos/broadinstitute/cromwell/statuses/07ff6b815f1a827021e645edd26ccd2abf09891f"}}}}