'Return a representation of the function suitable for pickling.
This allows the copy module (which works by pickling and then
unpickling objects) to copy a template. Functions in the copy will
return to their original (JSON) form (i.e. a single-element map).'

def __reduce__(self):

    return (dict, ([(self.fn_name, self.args)],))
