def METHOD_NAME(self, draw):
    in_shape = draw(
        st.lists(
            st.integers(
                min_value=1, max_value=64), min_size=0, max_size=3))
    in_shape.insert(0, draw(st.integers(min_value=1, max_value=10)))
    input_axis = draw(st.sampled_from([0, 1, 2, 3, -1]))
    assume(len(in_shape) > 1 and input_axis < len(in_shape))
    in_shape = draw(st.sampled_from([in_shape, []]))
    if in_shape == []:
        input_axis = -1
    def generate_input(*args, **kwargs):
        return np.random.random(in_shape).astype(np.float32)
    ops_config = OpConfig(
        type="softmax",
        inputs={"X": ["input_data"]},
        outputs={"Out": ["output_data"]},
        attrs={"axis": input_axis})
    program_config = ProgramConfig(
        ops=[ops_config],
        weights={},
        inputs={
            "input_data": TensorConfig(data_gen=partial(generate_input))
        },
        outputs=["output_data"])
    return program_config