Does ds.read_file() download the entire file into memory before returning, or does it return a handle that supports lazy row-group-level access

Hi,

I’m experiencing Out of Memory (OOM) errors in my Dash Enterprise app when reading large Parquet files from an S3 data source. My current code looks like this:

**from dash_enterprise_libraries import data_sources as ds
import pyarrow.parquet as pq

file_handle = ds.read_file(path, DATA_SOURCE)
table = pq.read_table(file_handle, columns=columns, filters=filter_expr)**

I noticed that the code does a file_handle.seek(0) before the second read, which suggests ds.read_file() returns an in-memory buffer (like BytesIO) rather than a lazy/streaming file handle.

My question: Does ds.read_file() download the entire file into memory before returning, or does it return a handle that supports lazy row-group-level access — so that pyarrow’s filters= can push down predicates and avoid downloading unnecessary data from S3?