def in_query(expression):
    """Match any of the values that exist in an array specified in query."""
    def _in(index, expression=expression):
        """Return store key for documents that satisfy expression."""
        ev = expression() if callable(expression) else expression
        try:
            iter(ev)
        except __HOLE__:
            raise AttributeError('$in argument must be an iterable!')
        hashed_ev = [index.get_hash_for(v) for v in ev]
        store_keys = set()

        for value in hashed_ev:
            store_keys |= set(index.get_keys_for(value))

        return list(store_keys)

    return _in
dataset/ETHPy150Open adewes/blitzdb/blitzdb/backends/file/queries.py/in_query