code: def test_debug_limit_shuffle_execution_to_num_blocks(
      ray_start_regular,
      restore_data_context,
      use_push_based_shuffle,
      shuffle_op,
  ):
      DataContext.get_current().use_push_based_shuffle = (
          use_push_based_shuffle
      )
      shuffle_fn = shuffle_op
  
      parallelism = 100
      ds = ray.data.range(1000, parallelism=parallelism)
      shuffled_ds = shuffle_fn(ds).materialize()
      shuffled_ds = shuffled_ds.materialize()
      assert shuffled_ds.num_blocks() == parallelism
  
      DataContext.get_current().set_config(
          "debug_limit_shuffle_execution_to_num_blocks", 1
      )
      shuffled_ds = shuffle_fn(ds).materialize()
      shuffled_ds = shuffled_ds.materialize()
      assert shuffled_ds.num_blocks() == 1
  
imports: import random
  from collections import defaultdict
  import numpy
  import pandas
  import pyarrow
  import pytest
  import ray
  from ray.data import Dataset
  from ray.data._internal.planner.exchange.push_based_shuffle_task_scheduler import PushBasedShuffleTaskScheduler
  from ray.data._internal.sort import SortKey
  from ray.data.block import BlockAccessor
  from ray.data.context import DataContext
  from ray.data.tests.conftest import *
  from ray.data.tests.util import extract_values
  from ray.tests.conftest import *
label_desc: Use image node_id 16 for calling a global function with example usage: test_debug_limit_shuffle_execution_to_num_blocks(ray_start_regular, restore_data_context, use_push_based_shuffle, shuffle_op) without return types