class_docstr: Implementation of the `AutoAttack` attack.
  
  | Paper link: https://arxiv.org/abs/2003.01690
class_docstr_tok: ["Implementation","of","the","`","AutoAttack","`","attack",".","|","Paper","link",":","https",":","\/\/arxiv.org\/abs\/2003.01690"]
docstr: This method returns a summary of the best performing (lowest perturbation in the parallel case) attacks
  per image passed to the AutoAttack class.
docstr_tok: ["This","method","returns","a","summary","of","the","best","performing","(","lowest","perturbation","in","the","parallel","case",")","attacks","per","image","passed","to","the","AutoAttack","class","."]
code: def __repr__(self) -> str:
      """
      This method returns a summary of the best performing (lowest perturbation in the parallel case) attacks
      per image passed to the AutoAttack class.
      """
      if self.parallel:
          best_attack_meta = "\n".join(
              [
                  f"image {i+1}: {str(self.args[idx][3])}"
                  if idx != 0
                  else f"image {i+1}: n/a"
                  for i, idx in enumerate(self.best_attacks)
              ]
          )
          auto_attack_meta = f"AutoAttack(targeted={self.targeted}, parallel={self.parallel}, num_attacks={len(self.args)})"
          return f"{auto_attack_meta}\nBestAttacks:\n{best_attack_meta}"
  
      best_attack_meta = "\n".join(
          [
              f"image {i+1}: {str(self.attacks[idx])}"
              if idx != -2
              else f"image {i+1}: n/a"
              for i, idx in enumerate(self.best_attacks)
          ]
      )
      auto_attack_meta = f"AutoAttack(targeted={self.targeted}, parallel={self.parallel}, num_attacks={len(self.attacks)})"
      return f"{auto_attack_meta}\nBestAttacks:\n{best_attack_meta}"
  
file_path: adversarial-robustness-toolbox/art/attacks/evasion/auto_attack.py
imports: import logging
  from copy import deepcopy
  from typing import TYPE_CHECKING, List, Optional, Tuple, Union
  import numpy
  from art.attacks.attack import EvasionAttack
  from art.attacks.evasion.auto_projected_gradient_descent import AutoProjectedGradientDescent
  from art.attacks.evasion.deepfool import DeepFool
  from art.attacks.evasion.square_attack import SquareAttack
  from art.config import ART_NUMPY_DTYPE
  from art.estimators.classification.classifier import ClassifierMixin
  from art.estimators.estimator import BaseEstimator
  from art.utils import check_and_transform_label_format, get_labels_np_array
label_desc: Use image node_id 4 for calling the AutoAttack obj's underlying member method code with example usage: obj.__repr__() and returns: auto_attack_meta, str, best_attack_meta, auto_attack_meta, str, best_attack_meta