def steps(self):
        # only include methods that have been redefined
        kwargs = dict(
            (func_name, getattr(self, func_name))
            for func_name in _JOB_STEP_FUNC_PARAMS
            if (_im_func(getattr(self, func_name)) is not
                _im_func(getattr(MRJob, func_name))))

        # MRStep takes commands as strings, but the user defines them in the
        # class as functions that return strings, so call the functions.
        updates = {}
        for k, v in kwargs.items():
            if k.endswith('_cmd'):
                updates[k] = v()

        kwargs.update(updates)

        return [MRStep(**kwargs)]
Return connection pattern of subfgraph defined by inputs and outputs.
dataset/ETHPy150Open Yelp/mrjob/mrjob/job.py/MRJob.steps--crossover with--dataset/ETHPy150Open rizar/attention-lvcsr/libs/Theano/theano/compile/builders.py/OpFromGraph.connection_pattern