code: def test_feature_trie_with_needs_full_dataframe_direct(es):
      value = IdentityFeature(es["log"].ww["value"])
      agg = AggregationFeature(
          value, "sessions", primitive=primitives.Mean
      )
      agg_of_agg = AggregationFeature(
          agg, "customers", primitive=primitives.Sum
      )
      direct = DirectFeature(agg_of_agg, "sessions")
      trans = TransformFeature(direct, primitives.CumSum)
  
      features = [trans, agg]
      feature_set = FeatureSet(features)
      trie = feature_set.feature_trie
  
      assert trie.value == (
          True,
          {direct.unique_name(), trans.unique_name()},
          {agg.unique_name()},
      )
  
      assert trie.get_node(agg.relationship_path).value == (
          False,
          set(),
          {value.unique_name()},
      )
  
      parent_node = trie.get_node(direct.relationship_path)
      assert parent_node.value == (
          True,
          {agg_of_agg.unique_name()},
          set(),
      )
  
      child_through_parent_node = parent_node.get_node(
          agg_of_agg.relationship_path
      )
      assert child_through_parent_node.value == (
          True,
          {agg.unique_name()},
          set(),
      )
  
      assert child_through_parent_node.get_node(
          agg.relationship_path
      ).value == (
          True,
          {value.unique_name()},
          set(),
      )
  
file_path: featuretools/featuretools/tests/computational_backend/test_feature_set.py
imports: from featuretools import AggregationFeature, DirectFeature, IdentityFeature, TransformFeature, primitives
  from featuretools.computational_backends.feature_set import FeatureSet
  from featuretools.entityset.relationship import RelationshipPath
  from featuretools.tests.testing_utils import backward_path
  from featuretools.utils import Trie
label_desc: Use image node_id 3 for calling a global function with example usage: test_feature_trie_with_needs_full_dataframe_direct(es) without return types