docstr: Make sure excluded features are properly removed from a composite
  distance specification.
docstr_tok: ["Make","sure","excluded","features","are","properly","removed","from","a","composite","distance","specification","."]
code: def test_composite_feature_scrub(self):
      """
      Make sure excluded features are properly removed from a composite
      distance specification.
      """
      dist = [
          [("a", "b", "c", "goat"), "euclidean", 1],
          [("d", "horse", "goat"), "manhattan", 2],
          [("e", "ibex", "ibex"), "jaccard", 1.5],
          [("f",), "levenshtein", 0.3],
      ]
  
      ## Test basic functionality
      feature_denylist = ["goat", "horse", "ibex"]
      ans = tc.distances._util._scrub_composite_distance_features(
          dist, feature_denylist
      )
  
      for d, d_ans in zip(self.dist, ans):
          self.assertSequenceEqual(d[0], d_ans[0])
  
      # Test removal of an entire distance component
      feature_denylist.append(
          "f"
      )  # should remove the entire last component
      ans = tc.distances._util._scrub_composite_distance_features(
          dist, feature_denylist
      )
      self.assertEqual(len(ans), 3)
      self.assertItemsEqual(
          tc.distances._util._get_composite_distance_features(ans),
          ["a", "b", "c", "d", "e"],
      )
  
imports: from __future__ import print_function
  from __future__ import division
  from __future__ import absolute_import
  import copy
  import unittest
  import numpy
  import turicreate
  from turicreate.toolkits._main import ToolkitError
  from collections import Counter
  import sys
label_desc: Use image node_id 3 for calling the DistanceUtilsTest obj's underlying member method code with example usage: obj.test_composite_feature_scrub() without return types