code: def drop_keys(self, keys, candidate_classes=None):
          
          # Make sure keys is iterable
          keys = keys if isinstance(keys, (list, tuple)) else [keys]
  
          # Make sure candidate_classes is iterable
          if candidate_classes:
              candidate_classes = (
                  candidate_classes
                  if isinstance(candidate_classes, (list, tuple))
                  else [candidate_classes]
              )
  
              # Ensure only candidate classes associated with the featurizer
              # are used.
              candidate_classes = [
                  _.__tablename__
                  for _ in candidate_classes
                  if _ in self.candidate_classes
              ]
  
              if len(candidate_classes) == 0:
                  logger.warning(
                      "You didn't specify valid candidate classes for this featurizer."
                  )
                  return
          # If unspecified, just use all candidate classes
          else:
              candidate_classes = [_.__tablename__ for _ in self.candidate_classes]
  
          # build dict for use by utils
          key_map = dict()
          for key in keys:
              key_map[key] = set(candidate_classes)
  
          drop_keys(self.session, FeatureKey, key_map)
docs: Drop the specified keys from FeatureKeys.
  
          :param keys: A list of FeatureKey names to delete.
          :type keys: list, tuple
          :param candidate_classes: A list of the Candidates to drop the key for.
              If None, drops the keys for all candidate classes associated with
              this Featurizer.
          :type candidate_classes: list, tuple