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: Resolves and returns block metadata for files of a single dataset block.
  
  Args:
      paths: The file paths for a single dataset block.
      schema: The user-provided or inferred schema for the given file
          paths, if any.
      num_fragments: The number of Parquet file fragments derived from the input
          file paths.
      prefetched_metadata: Metadata previously returned from
          `prefetch_file_metadata()` for each file fragment, where
          `prefetched_metadata[i]` contains the metadata for `fragments[i]`.
  
  Returns:
      BlockMetadata aggregated across the given file paths.
docstr_tok: ["Resolves","and","returns","block","metadata","for","files","of","a","single","dataset","block",".","Args",":","paths",":","The","file","paths","for","a","single","dataset","block",".","schema",":","The","user-provided","or","inferred","schema","for","the","given","file","paths",",","if","any",".","num_fragments",":","The","number","of","Parquet","file","fragments","derived","from","the","input","file","paths",".","prefetched_metadata",":","Metadata","previously","returned","from","`","prefetch_file_metadata","(",")","`","for","each","file","fragment",",","where","`","prefetched_metadata","[","i","]","`","contains","the","metadata","for","`","fragments","[","i","]","`",".","Returns",":","BlockMetadata","aggregated","across","the","given","file","paths","."]
code: def _get_block_metadata(
      self,
      paths: List[str],
      schema: Optional[Union[type, "pyarrow.lib.Schema"]],
      *,
      num_fragments: int,
      prefetched_metadata: Optional[List[Any]],
  ) -> BlockMetadata:
      """Resolves and returns block metadata for files of a single dataset block.
  
      Args:
          paths: The file paths for a single dataset block.
          schema: The user-provided or inferred schema for the given file
              paths, if any.
          num_fragments: The number of Parquet file fragments derived from the input
              file paths.
          prefetched_metadata: Metadata previously returned from
              `prefetch_file_metadata()` for each file fragment, where
              `prefetched_metadata[i]` contains the metadata for `fragments[i]`.
  
      Returns:
          BlockMetadata aggregated across the given file paths.
      """
      raise NotImplementedError
  
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 1 for calling the ParquetMetadataProvider obj's underlying member method code with example usage: obj._get_block_metadata(paths, schema) without return types