def METHOD_NAME(draw):
    in_shape = draw(
        st.lists(
            st.integers(
                min_value=1, max_value=8), min_size=1, max_size=4))
    bias = draw(st.floats(min_value=-5, max_value=5))
    bias_after_scale = draw(st.booleans())
    scale = draw(st.floats(min_value=-5, max_value=5))
    input_type = draw(st.sampled_from(["int8", "int32", "int64", "float32"]))
    has_scale_tensor = draw(st.booleans())
    def generate_input_int8(*args, **kwargs):
        return np.random.randint(1, 10, in_shape).astype(np.int8)
    def generate_input_int32(*args, **kwargs):
        return np.random.randint(-10, 10, in_shape).astype(np.int32)
    def generate_input_int64(*args, **kwargs):
        return np.random.randint(-10, 10, in_shape).astype(np.int64)
    def generate_input_float32(*args, **kwargs):
        return np.random.random(in_shape).astype(np.float32)
    input_dict = {"X": ["input_data"]}
    if has_scale_tensor:
        input_dict["ScaleTensor"] = "scale_tensor_data"
    scale_op = OpConfig(
        type="scale",
        inputs=input_dict,
        outputs={"Out": ["output_data"]},
        attrs={
            "bias": bias,
            "bias_after_scale": bias_after_scale,
            "scale": scale
        })
    if input_type == "int8":
        if has_scale_tensor:
            program_config = ProgramConfig(
                ops=[scale_op],
                weights={},
                inputs={
                    "input_data":
                    TensorConfig(data_gen=partial(generate_input_int8)),
                    "scale_tensor_data": TensorConfig(shape=[1, ])
                },
                outputs=["output_data"])
        else:
            program_config = ProgramConfig(
                ops=[scale_op],
                weights={},
                inputs={
                    "input_data":
                    TensorConfig(data_gen=partial(generate_input_int8))
                },
                outputs=["output_data"])
    elif input_type == "int32":
        if has_scale_tensor:
            program_config = ProgramConfig(
                ops=[scale_op],
                weights={},
                inputs={
                    "input_data":
                    TensorConfig(data_gen=partial(generate_input_int32)),
                    "scale_tensor_data": TensorConfig(shape=[1, ])
                },
                outputs=["output_data"])
        else:
            program_config = ProgramConfig(
                ops=[scale_op],
                weights={},
                inputs={
                    "input_data":
                    TensorConfig(data_gen=partial(generate_input_int32))
                },
                outputs=["output_data"])
    elif input_type == "int64":
        if has_scale_tensor:
            program_config = ProgramConfig(
                ops=[scale_op],
                weights={},
                inputs={
                    "input_data":
                    TensorConfig(data_gen=partial(generate_input_int64)),
                    "scale_tensor_data": TensorConfig(shape=[1, ])
                },
                outputs=["output_data"])
        else:
            program_config = ProgramConfig(
                ops=[scale_op],
                weights={},
                inputs={
                    "input_data":
                    TensorConfig(data_gen=partial(generate_input_int64))
                },
                outputs=["output_data"])
    elif input_type == "float32":
        if has_scale_tensor:
            program_config = ProgramConfig(
                ops=[scale_op],
                weights={},
                inputs={
                    "input_data":
                    TensorConfig(data_gen=partial(generate_input_float32)),
                    "scale_tensor_data": TensorConfig(shape=[1, ])
                },
                outputs=["output_data"])
        else:
            program_config = ProgramConfig(
                ops=[scale_op],
                weights={},
                inputs={
                    "input_data":
                    TensorConfig(data_gen=partial(generate_input_float32))
                },
                outputs=["output_data"])
    return program_config