 Parkour will invoke the `var`-returned partitioner function with the raw (not
 unwrapped) tuple key and value objects."
   [conf var & args]
+  (assert (instance? Var var))
   (conf/assoc! conf
     "parkour.partitioner.var" (pr-str var)
     "parkour.partitioner.args" (pr-str args))

            [parkour.mapreduce (source :as src) (sink :as snk)]
            [parkour.util :refer [returning ignore-errors]])
  (:import [java.io Writer]
           [org.apache.hadoop.mapreduce Job]
           [org.apache.hadoop.mapreduce TaskAttemptContext TaskAttemptID]))


Parkour will invoke the `var`-returned function with only the task context, and
will ignore any return value."
  [conf var & args]
  (assert (instance? Var var))
  (let [i (conf/get-int conf "parkour.mapper.next" 0)]
    (conf/assoc! conf
      "parkour.mapper.next" (inc i)
