docstr: Checking that if any dev data is provided, all are provided.
  
  Will also auto-set tune_logistic_regression to False if no dev data
  is available.
  
  If tune_confidence is set to True (user choice) and no dev data is
  provided, will raise an error.
docstr_tok: ["Checking","that","if","any","dev","data","is","provided",",","all","are","provided",".","Will","also","auto-set","tune_logistic_regression","to","False","if","no","dev","data","is","available",".","If","tune_confidence","is","set","to","True","(","user","choice",")","and","no","dev","data","is","provided",",","will","raise","an","error","."]
code: def __post_init__(self):
      """Checking that if any dev data is provided, all are provided.
  
      Will also auto-set tune_logistic_regression to False if no dev data
      is available.
  
      If tune_confidence is set to True (user choice) and no dev data is
      provided, will raise an error.
      """
      num_dev_data = 0
      for ensemble_cfg in self.ensemble:
          num_dev_data += ensemble_cfg.dev_manifest is not None
      if num_dev_data == 0:
          if self.tune_confidence:
              raise ValueError(
                  "tune_confidence is set to True, but no dev data is provided"
              )
          LOG.info(
              "Setting tune_logistic_regression = False since no dev data is provided"
          )
          self.tune_logistic_regression = False
          return
  
      if num_dev_data < len(self.ensemble):
          raise ValueError(
              "Some ensemble configs specify dev data, but some don't. Either all have to specify it or none!"
          )
  
imports: import atexit
  import logging
  import os
  import random
  import sys
  import tempfile
  from copy import deepcopy
  from dataclasses import dataclass, field
  from pathlib import Path
  from typing import Dict, List, Optional, Tuple
  import joblib
  import numpy
  import pytorch_lightning
  from omegaconf import MISSING, DictConfig, OmegaConf
  from sklearn.linear_model import LogisticRegression
  from sklearn.metrics import confusion_matrix
  from sklearn.pipeline import Pipeline, make_pipeline
  from sklearn.preprocessing import StandardScaler
  from tqdm import tqdm
  from nemo.collections.asr.models.confidence_ensemble import ConfidenceEnsembleModel, ConfidenceSpec, compute_confidence, get_filtered_logprobs
  from nemo.collections.asr.parts.utils.asr_confidence_utils import ConfidenceConfig, ConfidenceMethodConfig, get_confidence_aggregation_bank, get_confidence_measure_bank
  from nemo.collections.asr.parts.utils.rnnt_utils import Hypothesis
  from nemo.core.config import hydra_runner
label_desc: Use image node_id 1 for calling the BuildEnsembleConfig obj's underlying member method code with example usage: obj.__post_init__() without return types