okay, this sounds like the jobs will be going into a ``set()`` somewhere, in which case both ``__eq__`` and ``__hash__`` need to be defined. However, there are valid situations where a job should be rerun such as some random failure, node death, etc. Equivalency of a job likely should not include its status as that is a state change regarding where the job is in processing, not a detail about the job itself. Checking the ``function`` and ``options`` make sense I think though it makes assumptions about what is contained in ``options``. Checking ``results`` shouldn't be necessary as, if a job is identical, then the results should be identical, except in the case of a stochastic function, but even then, you'd likely only want to base equality on what is being executed and with what arguments.