class_docstr: The elastic net attack of Pin-Yu Chen et al. (2018).
  
  | Paper link: https://arxiv.org/abs/1709.04114
code: def _check_params(self) -> None:
      if (
          not isinstance(self.binary_search_steps, int)
          or self.binary_search_steps < 0
      ):
          raise ValueError(
              "The number of binary search steps must be a non-negative integer."
          )
  
      if not isinstance(self.max_iter, int) or self.max_iter < 0:
          raise ValueError(
              "The number of iterations must be a non-negative integer."
          )
  
      if not isinstance(self.batch_size, int) or self.batch_size < 1:
          raise ValueError(
              "The batch size must be an integer greater than zero."
          )
  
      if not isinstance(
          self.decision_rule, six.string_types
      ) or self.decision_rule not in ["EN", "L1", "L2"]:
          raise ValueError(
              "The decision rule only supports `EN`, `L1`, `L2`."
          )
  
      if not isinstance(self.verbose, bool):
          raise ValueError(
              "The argument `verbose` has to be of type bool."
          )
  
imports: from __future__ import absolute_import, division, print_function, unicode_literals
  import logging
  from typing import Optional, Tuple, TYPE_CHECKING
  import numpy
  import six
  from tqdm.auto import trange
  from art.config import ART_NUMPY_DTYPE
  from art.attacks.attack import EvasionAttack
  from art.estimators.estimator import BaseEstimator
  from art.estimators.classification.classifier import ClassGradientsMixin
  from art.utils import compute_success, get_labels_np_array, check_and_transform_label_format
label_desc: Use image node_id 10 for calling the ElasticNet obj's underlying member method code with example usage: obj._check_params() without return types