The client doesn't have any information on how to format the return. Redis' response is always returned as nested lists to python, and it's redis-py's job to turn those into dicts, sets, etc.
now, in the case of lua, without peeking into the code, it's impossible to know what the return type should be.
what I can do is add to LuaCall, some sort of way to tell the call what return types it should pack.
something like:
mult = LuaCall(match, conn, returns=[string,dict])
and then the function will auto convert the return. If that's interesting to you, we can continue the discussion on the kickass redis mailing list, as it's a bit off topic here :)