code: def test_metadata(es, tmp_path):
      identity_feature_descriptions = {
          "sessions: device_name": "the name of the device used for each session",
          "customers: id": "the customer's id",
      }
      agg_feat = AggregationFeature(
          IdentityFeature(es["sessions"].ww["device_name"]),
          "customers",
          NumUnique,
      )
      agg_description = (
          "The number of unique elements in the name of the device used for each "
          'session of all instances of "sessions" for each customer\'s id.'
      )
      assert (
          describe_feature(
              agg_feat,
              feature_descriptions=identity_feature_descriptions,
          )
          == agg_description
      )
  
      transform_feat = GroupByTransformFeature(
          IdentityFeature(es["log"].ww["value"]),
          CumMean,
          IdentityFeature(es["log"].ww["session_id"]),
      )
      transform_description = (
          'The running average of the "value" for each "session_id".'
      )
      primitive_templates = {"cum_mean": "the running average of {}"}
      assert (
          describe_feature(
              transform_feat, primitive_templates=primitive_templates
          )
          == transform_description
      )
  
      custom_agg = AggregationFeature(
          IdentityFeature(es["log"].ww["zipcode"]),
          "sessions",
          Mode,
      )
      auto_description = 'The most frequently occurring value of the "zipcode" of all instances of "log" for each "id" in "sessions".'
      custom_agg_description = "the most frequently used zipcode"
      custom_feature_description = (
          custom_agg_description[0].upper()
          + custom_agg_description[1:]
          + "."
      )
      feature_description_dict = {
          "sessions: MODE(log.zipcode)": custom_agg_description
      }
      assert describe_feature(custom_agg) == auto_description
      assert (
          describe_feature(
              custom_agg, feature_descriptions=feature_description_dict
          )
          == custom_feature_description
      )
  
      metadata = {
          "feature_descriptions": {
              **identity_feature_descriptions,
              **feature_description_dict,
          },
          "primitive_templates": primitive_templates,
      }
      metadata_path = os.path.join(
          tmp_path, "description_metadata.json"
      )
      with open(metadata_path, "w") as f:
          json.dump(metadata, f)
      assert (
          describe_feature(agg_feat, metadata_file=metadata_path)
          == agg_description
      )
      assert (
          describe_feature(transform_feat, metadata_file=metadata_path)
          == transform_description
      )
      assert (
          describe_feature(custom_agg, metadata_file=metadata_path)
          == custom_feature_description
      )
  
file_path: featuretools/featuretools/tests/primitive_tests/test_feature_descriptions.py
imports: import json
  import os
  import pytest
  from woodwork.column_schema import ColumnSchema
  from featuretools import describe_feature
  from featuretools.feature_base import AggregationFeature, DirectFeature, GroupByTransformFeature, IdentityFeature, TransformFeature
  from featuretools.primitives import Absolute, AggregationPrimitive, CumMean, EqualScalar, Mean, Mode, NMostCommon, NumUnique, PercentTrue, Sum, TransformPrimitive
label_desc: Use image node_id 11 for calling a global function with example usage: test_metadata(es, tmp_path) without return types