def emit(<EOL>self, tup, tup_id=None, stream=None, direct_task=None, need_task_ids=False<EOL>):
if tup_id is None:<EOL><INDENT>raise ValueError(<EOL>"<STR_LIT>"<EOL>"<STR_LIT>"<EOL>"<STR_LIT>"<EOL>)<EOL><DEDENT>args = (tup, stream, direct_task, need_task_ids)<EOL>self.unacked_tuples[tup_id] = args<EOL>return super(ReliableSpout, self).emit(<EOL>tup,<EOL>tup_id=tup_id,<EOL>stream=stream,<EOL>direct_task=direct_task,<EOL>need_task_ids=need_task_ids,<EOL>)<EOL>
Emit a spout Tuple & add metadata about it to `unacked_tuples`.

        In order for this to work, `tup_id` is a required parameter.

        See :meth:`Bolt.emit`.