code: def image_dl_estimator_for_attack(
      framework, image_dl_estimator, image_dl_estimator_defended
  ):
      def _image_dl_estimator_for_attack(
          attack, defended=False, **kwargs
      ):
          if defended:
              potential_classifier, _ = image_dl_estimator_defended(
                  **kwargs
              )
          else:
              potential_classifier, _ = image_dl_estimator(**kwargs)
          image_dl_estimator_for_attack
          classifier_list = [potential_classifier]
          classifier_tested = [
              potential_classifier
              for potential_classifier in classifier_list
              if all(
                  t in type(potential_classifier).__mro__
                  for t in attack._estimator_requirements
              )
          ]
  
          if len(classifier_tested) == 0:
              raise ARTTestFixtureNotImplemented(
                  "no estimator available",
                  image_dl_estimator_for_attack.__name__,
                  framework,
                  {"attack": attack},
              )
          return classifier_tested[0]
  
      return _image_dl_estimator_for_attack
  
imports: import importlib
  import json
  import logging
  import os
  import shutil
  import tempfile
  from typing import Dict, List, TYPE_CHECKING, Union
  import warnings
  import numpy
  import pytest
  import requests
  from art.data_generators import KerasDataGenerator, MXDataGenerator, PyTorchDataGenerator, TensorFlowDataGenerator, TensorFlowV2DataGenerator
  from art.defences.preprocessor import FeatureSqueezing, JpegCompression, SpatialSmoothing
  from art.estimators.classification import KerasClassifier
  from tests.utils import ARTTestFixtureNotImplemented, get_attack_classifier_pt, get_image_classifier_kr, get_image_classifier_kr_functional, get_image_classifier_kr_tf, get_image_classifier_kr_tf_functional, get_image_classifier_kr_tf_with_wildcard, get_image_classifier_mxnet_custom_ini, get_image_classifier_pt, get_image_classifier_pt_functional, get_image_classifier_tf, get_image_classifier_hf, get_image_gan_tf_v2, get_image_generator_tf_v2, get_tabular_classifier_kr, get_tabular_classifier_pt, get_tabular_classifier_scikit_list, get_tabular_classifier_tf, load_dataset, master_seed
label_desc: Use image node_id 4 for calling a global function with example usage: image_dl_estimator_for_attack(framework, image_dl_estimator, image_dl_estimator_defended) and returns: _image_dl_estimator_for_attack, classifier_tested