code: def _tile_partitioned(cls, op: "DataFrameReadParquet"):
      out_df = op.outputs[0]
      shape = (np.nan, out_df.shape[1])
      dtypes = cls._to_arrow_dtypes(out_df.dtypes, op)
      dataset = pq.ParquetDataset(op.path, use_legacy_dataset=False)
  
      path_prefix = _parse_prefix(op.path)
  
      chunk_index = 0
      out_chunks = []
      first_chunk_row_num, first_chunk_raw_bytes = None, None
      for i, fragment in enumerate(dataset.fragments):
          chunk_op = op.copy().reset_key()
          chunk_op.path = chunk_path = path_prefix + fragment.path
          relpath = os.path.relpath(chunk_path, op.path)
          partition_keys = dict(
              tuple(s.split("=")) for s in relpath.split(os.sep)[:-1]
          )
          chunk_op.partition_keys = partition_keys
          chunk_op.partitions = dict(
              zip(
                  dataset.partitioning.schema.names,
                  dataset.partitioning.dictionaries,
              )
          )
          if i == 0:
              first_row_group = fragment.row_groups[0]
              first_chunk_raw_bytes = first_row_group.total_byte_size
              first_chunk_row_num = first_row_group.num_rows
          chunk_op.first_chunk_row_num = first_chunk_row_num
          chunk_op.first_chunk_raw_bytes = first_chunk_raw_bytes
          new_chunk = chunk_op.new_chunk(
              None,
              shape=shape,
              index=(chunk_index, 0),
              index_value=out_df.index_value,
              columns_value=out_df.columns_value,
              dtypes=dtypes,
          )
          out_chunks.append(new_chunk)
          chunk_index += 1
  
      new_op = op.copy()
      nsplits = ((np.nan,) * len(out_chunks), (out_df.shape[1],))
      return new_op.new_dataframes(
          None,
          out_df.shape,
          dtypes=dtypes,
          index_value=out_df.index_value,
          columns_value=out_df.columns_value,
          chunks=out_chunks,
          nsplits=nsplits,
      )
  
imports: import os
  from typing import Dict
  from urllib.parse import urlparse
  import numpy
  import pandas
  from ...None import opcodes
  from ...config import options
  from ...lib.filesystem import file_size, get_fs, glob, open_file, FileSystem
  from ...serialization.serializables import AnyField, BoolField, DictField, ListField, StringField, Int32Field, Int64Field
  from ...utils import is_object_dtype, lazy_import
  from ..arrays import ArrowStringDtype
  from ..operands import OutputType
  from ..utils import parse_index, to_arrow_dtypes, contain_arrow_dtype
  from .core import IncrementalIndexDatasource, ColumnPruneSupportedDataSourceMixin, IncrementalIndexDataSourceMixin, merge_small_files
label_desc: Use image node_id 4 for calling the DataFrameReadParquet obj's underlying member method code with example usage: obj._tile_partitioned(cls, op) and returns: new_op