class_docstr: Implementation of Label-Only Inference Attack based on Decision Boundary.
  
  You only need to call ONE of the calibrate methods, depending on which attack you want to launch.
  
  | Paper link: https://arxiv.org/abs/2007.14321 (Choquette-Choo et al.)
  | Paper link: https://arxiv.org/abs/2007.15528 (Li and Zhang)
code: def _check_params(self) -> None:
      if self.distance_threshold_tau is not None and (
          not isinstance(self.distance_threshold_tau, (int, float))
          or self.distance_threshold_tau <= 0.0
      ):
          raise ValueError(
              "The distance threshold `distance_threshold_tau` needs to be a positive float."
          )
  
file_path: adversarial-robustness-toolbox/art/attacks/inference/membership_inference/label_only_boundary_distance.py
imports: import logging
  from typing import Optional, TYPE_CHECKING
  import numpy
  from art.attacks.attack import MembershipInferenceAttack
  from art.estimators.estimator import BaseEstimator
  from art.estimators.classification.classifier import ClassifierMixin
  from art.utils import check_and_transform_label_format
label_desc: Use image node_id 5 for calling the LabelOnlyDecisionBoundary obj's underlying member method code with example usage: obj._check_params() without return types