'NB. This does *not* evict any cache because the one use for this
removes most of the entries subsequently anyway so it would be
pointless. Use flush_user separately.'

def user_set_password_hash(self, user_id, password_hash):

    def user_set_password_hash_txn(txn):
        self._simple_update_one_txn(txn, 'users', {'name': user_id}, {'password_hash': password_hash})
        self._invalidate_cache_and_stream(txn, self.get_user_by_id, (user_id,))
    return self.runInteraction('user_set_password_hash', user_set_password_hash_txn)
