code: def _construct_test_bucketization_parameters():
      args_without_dtype = (
          (range(1, 10), [4, 7], False, None, False, False),
          (range(1, 100), [25, 50, 75], False, None, False, False),
          # The following is similar to range(1, 100) test above, except that
          # only odd numbers are in the input; so boundaries differ (26 -> 27 and
          # 76 -> 77).
          (range(1, 100, 2), [24, 50, 75], False, None, False, False),
          # Test some inversely sorted inputs, and with different strides, and
          # boundaries/buckets.
          (range(9, 0, -1), [4, 7], False, None, False, False),
          (range(19, 0, -1), [10], False, None, False, False),
          (range(99, 0, -1), [50], False, None, False, False),
          (range(99, 0, -1), [34, 67], False, None, False, False),
          (range(99, 0, -2), [33, 67], False, None, False, False),
          (
              range(99, 0, -1),
              range(10, 100, 10),
              False,
              None,
              False,
              False,
          ),
          # These tests do a random shuffle of the inputs, which must not affect the
          # boundaries (or the computed buckets).
          (
              range(99, 0, -1),
              range(10, 100, 10),
              True,
              None,
              False,
              False,
          ),
          (range(1, 100), range(10, 100, 10), True, None, False, False),
          # The following test is with multiple batches (3 batches with default
          # batch of 1000).
          (range(1, 3000), [1500], False, None, False, False),
          (range(1, 3000), [1000, 2000], False, None, False, False),
          # Test with specific error for bucket boundaries. This is same as the test
          # above with 3 batches and a single boundary, but with a stricter error
          # tolerance (0.001) than the default error (0.01).
          (range(1, 3000), [1500], False, 0.001, False, False),
          # Tests for tft.apply_buckets.
          (range(1, 100), [25, 50, 75], False, 0.00001, True, False),
          (range(1, 100), [25, 50, 75], False, 0.00001, True, True),
      )
      dtypes = (tf.int32, tf.int64, tf.float32, tf.float64, tf.double)
  
      args_with_dtype = [
          # Tests for handling np.nan input values.
          (
              list(range(1, 100)) + [np.nan] * 10,
              [25, 50, 75],
              False,
              0.01,
              True,
              True,
              tf.float32,
          ),
          (
              list(range(1, 100)) + [np.nan] * 10,
              [25, 50, 75],
              False,
              0.01,
              False,
              True,
              tf.float32,
          ),
          (
              list(range(1, 100)) + [np.nan] * 10,
              [25, 50, 75],
              False,
              0.01,
              False,
              False,
              tf.float32,
          ),
      ]
      return [
          x + (dtype,) for x in args_without_dtype for dtype in dtypes
      ] + args_with_dtype
  
imports: import contextlib
  import random
  import numpy
  import tensorflow
  import tensorflow_transform
  from tensorflow_transform import analyzers
  from tensorflow_transform.beam import impl
  from tensorflow_transform.beam import tft_unit
  from tensorflow_metadata.proto.v0 import schema_pb2
label_desc: Use image node_id 2 for calling a global function with example usage: _construct_test_bucketization_parameters() and returns: unknown