human
I wrote the below code

    def func(ax, x, y):
        pass
    def func_args(ax, x, y, *args):
        pass
    def func_kwargs(ax, x, y, **kwargs):
        pass
    def func_no_ax_args(*args, **kwargs):
        pass
    _preprocess_data(replace_names=['x', 'y'])(func)
    _preprocess_data(replace_names=['x', 'y'])(func_kwargs)
    _preprocess_data(replace_names=['x', 'y'])(func_args)
    with pytest.raises(AssertionError):
        _preprocess_data(replace_names=['x', 'y', 'z'])(func_args)
    with pytest.raises(AssertionError):
        _preprocess_data(replace_names=['x', 'y'])(func_no_ax_args)
    _preprocess_data(replace_names=[], label_namer=None)(func)
    _preprocess_data(replace_names=[], label_namer=None)(func_args)
    _preprocess_data(replace_names=[], label_namer=None)(func_kwargs)
    _preprocess_data(replace_names=[], label_namer=None)(func_no_ax_args)
    with pytest.raises(AssertionError):
        _preprocess_data(label_namer='z')(func)
    with pytest.raises(AssertionError):
        _preprocess_data(label_namer='z')(func_args)
    _preprocess_data(label_namer='z')(func_kwargs)
    _preprocess_data(label_namer='z')(func_no_ax_args)

What's a good function header?
 Here's a good function header?
assistant
#Here's a good function header.

def test_compiletime_checks():