code: def __init__(
      self,
      job_info: JobInfo,
      app_config: AppConfig,
      statistics_cache_directory: StrPath,
  ):
      super().__init__(
          job_info=job_info,
          app_config=app_config,
          cache_directory=Path(statistics_cache_directory),
      )
      self.descriptive_statistics_config = (
          app_config.descriptive_statistics
      )
  
imports: import enum
  import logging
  import os
  from pathlib import Path
  from typing import Any, Optional, TypedDict, Union
  import numpy
  import polars
  from datasets import ClassLabel, Features
  from huggingface_hub import hf_hub_download
  from libcommon.exceptions import CacheDirectoryNotInitializedError, NoSupportedFeaturesError, ParquetResponseEmptyError, PreviousStepFormatError, SplitWithTooBigParquetError, StatisticsComputationError
  from libcommon.simple_cache import get_previous_step_or_raise
  from libcommon.storage import StrPath
  from libcommon.utils import JobInfo
  from requests.exceptions import ReadTimeout
  from tqdm import tqdm
  from worker.config import AppConfig, DescriptiveStatisticsConfig
  from worker.dtos import CompleteJobResult
  from worker.job_runners.split.split_job_runner import SplitJobRunnerWithCache
  from worker.utils import HF_HUB_HTTP_ERROR_RETRY_SLEEPS, retry
label_desc: Use image node_id 1 to create a new SplitDescriptiveStatisticsJobRunner object from inherited base classes: SplitJobRunnerWithCache with example: obj = SplitDescriptiveStatisticsJobRunner(job_info, app_config, statistics_cache_directory)