code: def test_direct_of_multi_output_transform_feat(es):
      # TODO: Update to work with Dask and Spark
      if es.dataframe_type != Library.PANDAS:
          pytest.xfail(
              "Custom primitive is not compatible with Dask or Spark"
          )
  
      class TestTime(TransformPrimitive):
          name = "test_time"
          input_types = [ColumnSchema(logical_type=Datetime)]
          return_type = ColumnSchema(semantic_tags={"numeric"})
          number_output_features = 6
  
          def get_function(self):
              def test_f(x):
                  times = pd.Series(x)
                  units = [
                      "year",
                      "month",
                      "day",
                      "hour",
                      "minute",
                      "second",
                  ]
                  return [
                      times.apply(lambda x: getattr(x, unit))
                      for unit in units
                  ]
  
              return test_f
  
      base_feature = IdentityFeature(es["customers"].ww["signup_date"])
      join_time_split = Feature(base_feature, primitive=TestTime)
      alt_features = [
          Feature(base_feature, primitive=Year),
          Feature(base_feature, primitive=Month),
          Feature(base_feature, primitive=Day),
          Feature(base_feature, primitive=Hour),
          Feature(base_feature, primitive=Minute),
          Feature(base_feature, primitive=Second),
      ]
      fm, fl = dfs(
          entityset=es,
          target_dataframe_name="sessions",
          trans_primitives=[
              TestTime,
              Year,
              Month,
              Day,
              Hour,
              Minute,
              Second,
          ],
      )
  
      # Get column names of for multi feature and normal features
      subnames = DirectFeature(
          join_time_split, "sessions"
      ).get_feature_names()
      altnames = [
          DirectFeature(f, "sessions").get_name() for f in alt_features
      ]
  
      # Check values are equal between
      for col1, col2 in zip(subnames, altnames):
          assert (fm[col1] == fm[col2]).all()
  
imports: import numpy
  import pandas
  import pytest
  from woodwork.column_schema import ColumnSchema
  from woodwork.logical_types import Datetime
  from featuretools.computational_backends.feature_set import FeatureSet
  from featuretools.computational_backends.feature_set_calculator import FeatureSetCalculator
  from featuretools.feature_base import DirectFeature, Feature, IdentityFeature
  from featuretools.primitives import AggregationPrimitive, Day, Hour, Minute, Month, NMostCommon, Second, TransformPrimitive, Year
  from featuretools.primitives.utils import PrimitivesDeserializer
  from featuretools.synthesis import dfs
  from featuretools.tests.testing_utils import to_pandas
  from featuretools.utils.gen_utils import Library
label_desc: Use image node_id 6 for calling a global function with example usage: test_direct_of_multi_output_transform_feat(es) and returns: test_f, unknown