code: def test_read_parquet_head(prepare_data, setup):
      tempdir, pdf = prepare_data
      dirname = os.path.join(tempdir, "test_parquet")
      os.makedirs(dirname)
      for i in range(3):
          file_path = os.path.join(dirname, f"test{i}.parquet")
          pdf[i * 40 : (i + 1) * 40].to_parquet(file_path, index=False)
  
      df1 = md.read_parquet(dirname)
      df2 = df1.head(5)
      graph = TileableGraph([df2.data])
      next(TileableGraphBuilder(graph).build())
      records = optimize(graph)
      assert records.get_optimization_result(df1.data) is None
      opt_df2 = records.get_optimization_result(df2.data)
      assert opt_df2.op.nrows == 5
      assert len(graph) == 1
      assert opt_df2 in graph.results
  
      result = df2.execute(
          extra_config={"operand_executors": _iloc_operand_executors}
      ).fetch()
      expected = pdf.head(5)
      pd.testing.assert_frame_equal(result, expected)
  
file_path: mars/mars/optimization/logical/tileable/tests/test_head.py
imports: import os
  import tempfile
  import pandas
  import numpy
  import pytest
  from .....None import dataframe
  from .....core import TileableGraph, TileableGraphBuilder, enter_mode
  from .....dataframe.indexing.iloc import DataFrameIlocGetItem, SeriesIlocGetItem
  from ..None import optimize
label_desc: Use image node_id 4 for calling a global function with example usage: test_read_parquet_head(prepare_data, setup) without return types