class_docstr: Abstract callable that provides block metadata for Arrow Parquet file fragments.
  
  All file fragments should belong to a single dataset block.
  
  Supports optional pre-fetching of ordered metadata for all file fragments in
  a single batch to help optimize metadata resolution.
  
  Current subclasses:
      - :class:`~ray.data.datasource.file_meta_provider.DefaultParquetMetadataProvider`
docstr: Pre-fetches file metadata for all Parquet file fragments in a single batch.
  
  Subsets of the metadata returned will be provided as input to
  subsequent calls to :meth:`~FileMetadataProvider._get_block_metadata` together
  with their corresponding Parquet file fragments.
  
  Implementations that don't support pre-fetching file metadata shouldn't
  override this method.
  
  Args:
      fragments: The Parquet file fragments to fetch metadata for.
  
  Returns:
      Metadata resolved for each input file fragment, or `None`. Metadata
      must be returned in the same order as all input file fragments, such
      that `metadata[i]` always contains the metadata for `fragments[i]`.
docstr_tok: ["Pre-fetches","file","metadata","for","all","Parquet","file","fragments","in","a","single","batch",".","Subsets","of","the","metadata","returned","will","be","provided","as","input","to","subsequent","calls","to",":","meth",":","`","~FileMetadataProvider._get_block_metadata","`","together","with","their","corresponding","Parquet","file","fragments",".","Implementations","that","do","n't","support","pre-fetching","file","metadata","shouldn't","override","this","method",".","Args",":","fragments",":","The","Parquet","file","fragments","to","fetch","metadata","for",".","Returns",":","Metadata","resolved","for","each","input","file","fragment",",","or","`","None","`",".","Metadata","must","be","returned","in","the","same","order","as","all","input","file","fragments",",","such","that","`","metadata","[","i","]","`","always","contains","the","metadata","for","`","fragments","[","i","]","`","."]
code: def prefetch_file_metadata(
      self,
      fragments: List["pyarrow.dataset.ParquetFileFragment"],
      **ray_remote_args,
  ) -> Optional[List[Any]]:
      """Pre-fetches file metadata for all Parquet file fragments in a single batch.
  
      Subsets of the metadata returned will be provided as input to
      subsequent calls to :meth:`~FileMetadataProvider._get_block_metadata` together
      with their corresponding Parquet file fragments.
  
      Implementations that don't support pre-fetching file metadata shouldn't
      override this method.
  
      Args:
          fragments: The Parquet file fragments to fetch metadata for.
  
      Returns:
          Metadata resolved for each input file fragment, or `None`. Metadata
          must be returned in the same order as all input file fragments, such
          that `metadata[i]` always contains the metadata for `fragments[i]`.
      """
      return None
  
imports: import itertools
  import logging
  import os
  import pathlib
  import re
  from typing import TYPE_CHECKING, Any, Callable, Iterator, List, Optional, Tuple, TypeVar, Union
  import numpy
  from ray.data._internal.progress_bar import ProgressBar
  from ray.data._internal.remote_fn import cached_remote_fn
  from ray.data.block import BlockMetadata
  from ray.data.datasource.partitioning import Partitioning
  from ray.util.annotations import DeveloperAPI
label_desc: Use image node_id 2 for calling the ParquetMetadataProvider obj's underlying member method code with example usage: obj.prefetch_file_metadata(fragments) and returns: None