code: def read_table(
      source,
      *,
      columns=None,
      use_threads=True,
      schema=None,
      use_pandas_metadata=False,
      read_dictionary=None,
      memory_map=False,
      buffer_size=0,
      partitioning="hive",
      filesystem=None,
      filters=None,
      use_legacy_dataset=None,
      ignore_prefixes=None,
      pre_buffer=True,
      coerce_int96_timestamp_unit=None,
      decryption_properties=None,
      thrift_string_size_limit=None,
      thrift_container_size_limit=None,
      page_checksum_verification=False,
  ):
      if use_legacy_dataset is not None:
          warnings.warn(
              "Passing 'use_legacy_dataset' is deprecated as of pyarrow 15.0.0 "
              "and will be removed in a future version.",
              FutureWarning,
              stacklevel=2,
          )
  
      try:
          dataset = ParquetDataset(
              source,
              schema=schema,
              filesystem=filesystem,
              partitioning=partitioning,
              memory_map=memory_map,
              read_dictionary=read_dictionary,
              buffer_size=buffer_size,
              filters=filters,
              ignore_prefixes=ignore_prefixes,
              pre_buffer=pre_buffer,
              coerce_int96_timestamp_unit=coerce_int96_timestamp_unit,
              thrift_string_size_limit=thrift_string_size_limit,
              thrift_container_size_limit=thrift_container_size_limit,
              page_checksum_verification=page_checksum_verification,
          )
      except ImportError:
          # fall back on ParquetFile for simple cases when pyarrow.dataset
          # module is not available
          if filters is not None:
              raise ValueError(
                  "the 'filters' keyword is not supported when the "
                  "pyarrow.dataset module is not available"
              )
          if partitioning != "hive":
              raise ValueError(
                  "the 'partitioning' keyword is not supported when the "
                  "pyarrow.dataset module is not available"
              )
          if schema is not None:
              raise ValueError(
                  "the 'schema' argument is not supported when the "
                  "pyarrow.dataset module is not available"
              )
          filesystem, path = _resolve_filesystem_and_path(
              source, filesystem
          )
          if filesystem is not None:
              source = filesystem.open_input_file(path)
          # TODO test that source is not a directory or a list
          dataset = ParquetFile(
              source,
              read_dictionary=read_dictionary,
              memory_map=memory_map,
              buffer_size=buffer_size,
              pre_buffer=pre_buffer,
              coerce_int96_timestamp_unit=coerce_int96_timestamp_unit,
              decryption_properties=decryption_properties,
              thrift_string_size_limit=thrift_string_size_limit,
              thrift_container_size_limit=thrift_container_size_limit,
              page_checksum_verification=page_checksum_verification,
          )
  
      return dataset.read(
          columns=columns,
          use_threads=use_threads,
          use_pandas_metadata=use_pandas_metadata,
      )
  
imports: from collections import defaultdict
  from contextlib import nullcontext
  from functools import reduce
  import inspect
  import json
  import os
  import re
  import operator
  import warnings
  import pyarrow
  from pyarrow._parquet import ParquetReader, Statistics, FileMetaData, RowGroupMetaData, ColumnChunkMetaData, ParquetSchema, ColumnSchema, ParquetLogicalType, FileEncryptionProperties, FileDecryptionProperties, SortingColumn
  from pyarrow.fs import LocalFileSystem, FileSystem, FileType, _resolve_filesystem_and_path, _ensure_filesystem
  from pyarrow import filesystem
  from pyarrow.util import guid, _is_path_like, _stringify_path, _deprecate_api
label_desc: Use image node_id 9 for calling a global function with example usage: read_table(source) and returns: dataset