human
I wrote the below code

    accepted_methods = ('auto', 'empirical', 'diagonal_fixed', 'ledoit_wolf', 'shrunk', 'pca', 'factor_analysis')
    msg = ('Invalid    method    ({method}).    Accepted    values    (individually    or    in    a    list)    are    "%s"    or    None.' % '"    or    "'.join(accepted_methods))
    scalings = _check_scalings_user(scalings)
    _method_params = {'empirical': {'store_precision': False, 'assume_centered': True}, 'diagonal_fixed': {'grad': 0.01, 'mag': 0.01, 'eeg': 0.0, 'store_precision': False, 'assume_centered': True}, 'ledoit_wolf': {'store_precision': False, 'assume_centered': True}, 'shrunk': {'shrinkage': np.logspace((-4), 0, 30), 'store_precision': False, 'assume_centered': True}, 'pca': {'iter_n_components': None}, 'factor_analysis': {'iter_n_components': None}}
    if isinstance(method_params, dict):
        for (key, values) in method_params.items():
            if (key not in _method_params):
                raise ValueError(('key    (%s)    must    be    "%s"' % (key, '"    or    "'.join(_method_params))))
            _method_params[key].update(method_params[key])
    def _unpack_epochs(epochs):
        if (len(epochs.event_id) > 1):
            epochs = [epochs[k] for k in epochs.event_id]
        else:
            epochs = [epochs]
        return epochs
    if (not isinstance(epochs, list)):
        epochs = _unpack_epochs(epochs)
    else:
        epochs = sum([_unpack_epochs(epoch) for epoch in epochs], [])
    if any((((epochs_t.baseline is None) and (epochs_t.info['highpass'] < 0.5) and keep_sample_mean) for epochs_t in epochs)):
        warn('Epochs    are    not    baseline    corrected,    covariance    matrix    may    be    inaccurate')
    orig = epochs[0].info['dev_head_t']
    if ((not isinstance(on_mismatch, string_types)) or (on_mismatch not in ['raise', 'warn', 'ignore'])):
        raise ValueError(('on_mismatch    must    be    "raise",    "warn",    or    "ignore",    got    %s' % on_mismatch))
    for (ei, epoch) in enumerate(epochs):
       ...

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

@verbose
def compute_covariance(epochs, keep_sample_mean=True, tmin=None, tmax=None, projs=None, method='empirical', method_params=None, cv=3, scalings=None, n_jobs=1, return_estimators=False, on_mismatch='raise', verbose=None):