def _combine_hash_arrays(arrays, num_items):
try:<EOL><INDENT>first = next(arrays)<EOL><DEDENT>except StopIteration:<EOL><INDENT>return np.array([], dtype=np.uint64)<EOL><DEDENT>arrays = itertools.chain([first], arrays)<EOL>mult = np.uint64(<NUM_LIT>)<EOL>out = np.zeros_like(first) + np.uint64(<NUM_LIT>)<EOL>for i, a in enumerate(arrays):<EOL><INDENT>inverse_i = num_items - i<EOL>out ^= a<EOL>out *= mult<EOL>mult += np.uint64(<NUM_LIT> + inverse_i + inverse_i)<EOL><DEDENT>assert i + <NUM_LIT:1> == num_items, '<STR_LIT>'<EOL>out += np.uint64(<NUM_LIT>)<EOL>return out<EOL>
Parameters
----------
arrays : generator
num_items : int

Should be the same as CPython's tupleobject.c