Return feature_names and coef_scale (if with_coef_scale is True),
    calling .get_feature_names for invhashing vectorizers.

def handle_hashing_vec(vec, feature_names, coef_scale, with_coef_scale=True):
    """ Return feature_names and coef_scale (if with_coef_scale is True),
    calling .get_feature_names for invhashing vectorizers.
    """
    needs_coef_scale = with_coef_scale and coef_scale is None
    if is_invhashing(vec):
        if feature_names is None:
            feature_names = vec.get_feature_names(always_signed=False)
        if needs_coef_scale:
            coef_scale = vec.column_signs_
    elif (isinstance(vec, FeatureUnion) and
              any(is_invhashing(v) for _, v in vec.transformer_list) and
              (needs_coef_scale or feature_names is None)):
        _feature_names, _coef_scale = _invhashing_union_feature_names_scale(vec)
        if feature_names is None:
            feature_names = _feature_names
        if needs_coef_scale:
            coef_scale = _coef_scale
    return (feature_names, coef_scale) if with_coef_scale else feature_names