def __getattr__(self, item):
def command(*args, **kwargs):<EOL><INDENT>"""<STR_LIT>"""<EOL>future = Future()<EOL>self._stack.append((item, args, kwargs, future))<EOL>return future<EOL><DEDENT>return command<EOL>
when you call a command like `pipeline().incr('foo')` it winds up here.
the item would be 'incr', because python can't find that attribute.
We build a custom function for it on the fly.

:param item: str, the name of the function we are wrapping.
:return: callable