code: def test_groupby_with_multioutput_primitive_custom_names(pd_es):
      class MultiCumSum(TransformPrimitive):
          name = "multi_cum_sum"
          input_types = [ColumnSchema(semantic_tags={"numeric"})]
          return_type = ColumnSchema(semantic_tags={"numeric"})
          number_output_features = 3
  
          def get_function(self):
              def multi_cum_sum(x):
                  return x.cumsum(), x.cummax(), x.cummin()
  
              return multi_cum_sum
  
          def generate_names(primitive, base_feature_names):
              return ["CUSTOM_SUM", "CUSTOM_MAX", "CUSTOM_MIN"]
  
      fm, _ = dfs(
          entityset=pd_es,
          target_dataframe_name="customers",
          trans_primitives=[],
          agg_primitives=[],
          groupby_trans_primitives=[
              MultiCumSum,
              CumSum,
              CumMax,
              CumMin,
          ],
      )
  
      answer_cols = [
          ["CUM_SUM(age) by cohort", "CUM_SUM(age) by région_id"],
          ["CUM_MAX(age) by cohort", "CUM_MAX(age) by région_id"],
          ["CUM_MIN(age) by cohort", "CUM_MIN(age) by région_id"],
      ]
  
      expected_names = [
          ["CUSTOM_SUM by cohort", "CUSTOM_SUM by région_id"],
          ["CUSTOM_MAX by cohort", "CUSTOM_MAX by région_id"],
          ["CUSTOM_MIN by cohort", "CUSTOM_MIN by région_id"],
      ]
  
      for i in range(3):
          f = expected_names[i][0]
          assert f in fm.columns
          for x, y in zip(fm[f].values, fm[answer_cols[i][0]].values):
              assert x == y
          f = expected_names[i][1]
          assert f in fm.columns
          for x, y in zip(fm[f].values, fm[answer_cols[i][1]].values):
              assert x == y
  
imports: import numpy
  import pandas
  from woodwork.column_schema import ColumnSchema
  from woodwork.logical_types import Datetime
  from featuretools import Feature, GroupByTransformFeature, IdentityFeature, calculate_feature_matrix, feature_base
  from featuretools.computational_backends.feature_set import FeatureSet
  from featuretools.computational_backends.feature_set_calculator import FeatureSetCalculator
  from featuretools.primitives import CumCount, CumMax, CumMean, CumMin, CumSum, Last
  from featuretools.primitives.base import TransformPrimitive
  from featuretools.synthesis import dfs
  from featuretools.tests.testing_utils import feature_with_name
label_desc: Use image node_id 15 for calling a global function with example usage: test_groupby_with_multioutput_primitive_custom_names(pd_es) and returns: multi_cum_sum, list, x,  x,  x