code: def test_serialization(pd_es):
      value = IdentityFeature(pd_es["log"].ww["value"])
      zipcode = IdentityFeature(pd_es["log"].ww["zipcode"])
      primitive = CumSum()
      groupby = feature_base.GroupByTransformFeature(
          value, primitive, zipcode
      )
  
      dictionary = {
          "name": "CUM_SUM(value) by zipcode",
          "base_features": [value.unique_name()],
          "primitive": primitive,
          "groupby": zipcode.unique_name(),
      }
  
      assert dictionary == groupby.get_arguments()
      dependencies = {
          value.unique_name(): value,
          zipcode.unique_name(): zipcode,
      }
      assert (
          groupby
          == feature_base.GroupByTransformFeature.from_dictionary(
              dictionary,
              pd_es,
              dependencies,
              primitive,
          )
      )
  
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 13 for calling a global function with example usage: test_serialization(pd_es) without return types