code: def _init_parquet_index(
      self,
      hf_token: Optional[str],
      parquet_metadata_directory: StrPath,
      max_arrow_data_in_memory: int,
      unsupported_features: list[FeatureType] = [],
  ) -> ParquetIndexWithMetadata:
      with StepProfiler(
          method="rows_index._init_parquet_index", step="all"
      ):
          # get the list of parquet files
          with StepProfiler(
              method="rows_index._init_parquet_index",
              step="get list of parquet files for split",
          ):
              result = get_previous_step_or_raise(
                  kinds=CONFIG_PARQUET_METADATA_KINDS,
                  dataset=self.dataset,
                  config=self.config,
                  split=None,
              )
              self.revision = result.response["dataset_git_revision"]
              content = result.response["content"]
              if content.get(
                  "features"
              ):  # config-parquet-metadata version<2 didn't have features
                  features = Features.from_dict(content["features"])
              else:
                  features = None
          logging.info(
              f"Create ParquetIndexWithMetadata for dataset={self.dataset}, config={self.config}, split={self.split}"
          )
          return ParquetIndexWithMetadata.from_parquet_metadata_items(
              [
                  parquet_item
                  for parquet_item in content["parquet_files_metadata"]
                  if parquet_item["split"] == self.split
                  and parquet_item["config"] == self.config
              ],
              features=features,
              parquet_metadata_directory=parquet_metadata_directory,
              httpfs=self.httpfs,
              hf_token=hf_token,
              max_arrow_data_in_memory=max_arrow_data_in_memory,
              unsupported_features=unsupported_features,
          )
  
imports: import asyncio
  import logging
  import os
  from dataclasses import dataclass, field
  from functools import lru_cache
  from typing import Literal, Optional, TypedDict, Union
  import numpy
  import pyarrow
  import pyarrow.parquet
  from datasets import Features
  from datasets.features.features import FeatureType
  from datasets.utils.py_utils import size_str
  from fsspec.implementations.http import HTTPFile, HTTPFileSystem
  from huggingface_hub import HfFileSystem
  from pyarrow.lib import ArrowInvalid
  from libcommon.constants import CONFIG_PARQUET_METADATA_KINDS
  from libcommon.prometheus import StepProfiler
  from libcommon.simple_cache import get_previous_step_or_raise
  from libcommon.storage import StrPath
  from libcommon.viewer_utils.features import get_supported_unsupported_columns
label_desc: Use image node_id 2 for calling the RowsIndex obj's underlying member method code with example usage: obj._init_parquet_index(hf_token, parquet_metadata_directory, max_arrow_data_in_memory, unsupported_features) and returns: ParquetIndexWithMetadata