in scalding-base/src/main/scala/com/twitter/scalding/typed/Grouped.scala [33:53]
final def atMostOneValue[A, B](cg: CoGroupable[A, B]): Boolean = {
import CoGrouped._
cg match {
case Pair(left, right, joinf) =>
atMostOneValue(left) && atMostOneValue(right) && (joinf match {
case Joiner.InnerJoin() => true
case Joiner.OuterJoin() => true
case Joiner.LeftJoin() => true
case Joiner.RightJoin() => true
case _ => false
})
case WithReducers(on, _) => atMostOneValue(on)
case WithDescription(on, _) => atMostOneValue(on)
case FilterKeys(on, _) => atMostOneValue(on)
case MapGroup(on, fn) =>
atMostOneFn(fn) || (atMostOneValue(on) && atMostInputSizeFn(fn))
case IdentityReduce(_, _, _, _, _) => false
case UnsortedIdentityReduce(_, _, _, _, _) => false
case IteratorMappedReduce(_, _, fn, _, _) => atMostOneFn(fn)
}
}