def boosted_trees_calculate_best_gains_per_feature_eager_fallback(node_id_range, stats_summary_list, l1, l2, tree_complexity, min_node_weight, max_splits, name=None, ctx=None):
    'This is the slowpath function for Eager mode.\n  This is for function boosted_trees_calculate_best_gains_per_feature\n  '
    _ctx = (ctx if ctx else _context.context())
    if (not isinstance(stats_summary_list, (list, tuple))):
        raise TypeError(("Expected list for 'stats_summary_list' argument to 'boosted_trees_calculate_best_gains_per_feature' Op, not %r." % stats_summary_list))
    _attr_num_features = len(stats_summary_list)
    max_splits = _execute.make_int(max_splits, 'max_splits')
    node_id_range = _ops.convert_to_tensor(node_id_range, _dtypes.int32)
    stats_summary_list = _ops.convert_n_to_tensor(stats_summary_list, _dtypes.float32)
    l1 = _ops.convert_to_tensor(l1, _dtypes.float32)
    l2 = _ops.convert_to_tensor(l2, _dtypes.float32)
    tree_complexity = _ops.convert_to_tensor(tree_complexity, _dtypes.float32)
    min_node_weight = _ops.convert_to_tensor(min_node_weight, _dtypes.float32)
    _inputs_flat = (([node_id_range] + list(stats_summary_list)) + [l1, l2, tree_complexity, min_node_weight])
    _attrs = ('max_splits', max_splits, 'num_features', _attr_num_features)
    _result = _execute.execute(b'BoostedTreesCalculateBestGainsPerFeature', ((((_attr_num_features + _attr_num_features) + _attr_num_features) + _attr_num_features) + _attr_num_features), inputs=_inputs_flat, attrs=_attrs, ctx=_ctx, name=name)
    _execute.record_gradient('BoostedTreesCalculateBestGainsPerFeature', _inputs_flat, _attrs, _result, name)
    _result = ([_result[:_attr_num_features]] + _result[_attr_num_features:])
    _result = ((_result[:1] + [_result[1:(1 + _attr_num_features)]]) + _result[(1 + _attr_num_features):])
    _result = ((_result[:2] + [_result[2:(2 + _attr_num_features)]]) + _result[(2 + _attr_num_features):])
    _result = ((_result[:3] + [_result[3:(3 + _attr_num_features)]]) + _result[(3 + _attr_num_features):])
    _result = (_result[:4] + [_result[4:]])
    _result = _BoostedTreesCalculateBestGainsPerFeatureOutput._make(_result)
    return _result
This is the slowpath function for Eager mode.
This is for function boosted_trees_calculate_best_gains_per_feature
def boosted_trees_calculate_best_gains_per_feature_eager_fallback(node_id_range, stats_summary_list, l1, l2, tree_complexity, min_node_weight, max_splits, name=None, ctx=None):
    'This is the slowpath function for Eager mode.\n  This is for function boosted_trees_calculate_best_gains_per_feature\n  '
    _ctx = (ctx if ctx else _context.context())
    if (not isinstance(stats_summary_list, (list, tuple))):
        raise TypeError(("Expected list for 'stats_summary_list' argument to 'boosted_trees_calculate_best_gains_per_feature' Op, not %r." % stats_summary_list))
    _attr_num_features = len(stats_summary_list)
    max_splits = _execute.make_int(max_splits, 'max_splits')
    node_id_range = _ops.convert_to_tensor(node_id_range, _dtypes.int32)
    stats_summary_list = _ops.convert_n_to_tensor(stats_summary_list, _dtypes.float32)
    l1 = _ops.convert_to_tensor(l1, _dtypes.float32)
    l2 = _ops.convert_to_tensor(l2, _dtypes.float32)
    tree_complexity = _ops.convert_to_tensor(tree_complexity, _dtypes.float32)
    min_node_weight = _ops.convert_to_tensor(min_node_weight, _dtypes.float32)
    _inputs_flat = (([node_id_range] + list(stats_summary_list)) + [l1, l2, tree_complexity, min_node_weight])
    _attrs = ('max_splits', max_splits, 'num_features', _attr_num_features)
    _result = _execute.execute(b'BoostedTreesCalculateBestGainsPerFeature', ((((_attr_num_features + _attr_num_features) + _attr_num_features) + _attr_num_features) + _attr_num_features), inputs=_inputs_flat, attrs=_attrs, ctx=_ctx, name=name)
    _execute.record_gradient('BoostedTreesCalculateBestGainsPerFeature', _inputs_flat, _attrs, _result, name)
    _result = ([_result[:_attr_num_features]] + _result[_attr_num_features:])
    _result = ((_result[:1] + [_result[1:(1 + _attr_num_features)]]) + _result[(1 + _attr_num_features):])
    _result = ((_result[:2] + [_result[2:(2 + _attr_num_features)]]) + _result[(2 + _attr_num_features):])
    _result = ((_result[:3] + [_result[3:(3 + _attr_num_features)]]) + _result[(3 + _attr_num_features):])
    _result = (_result[:4] + [_result[4:]])
    _result = _BoostedTreesCalculateBestGainsPerFeatureOutput._make(_result)
    return _result