in core/maxframe/dataframe/datasource/read_odps_table.py [0:0]
def __call__(self, shape, chunk_bytes=None, chunk_size=None):
if is_empty(self.index_columns):
if np.isnan(shape[0]):
index_value = parse_index(pd.RangeIndex(0))
else:
index_value = parse_index(pd.RangeIndex(shape[0]))
elif len(self.index_columns) == 1:
index_value = parse_index(
pd.Index([], name=self.index_columns[0]).astype(
self.index_dtypes.iloc[0]
)
)
else:
idx = pd.MultiIndex.from_frame(
pd.DataFrame([], columns=self.index_columns).astype(self.index_dtypes)
)
index_value = parse_index(idx)
if self.output_types[0] == OutputType.dataframe:
columns_value = parse_index(self.dtypes.index, store_data=True)
return self.new_tileable(
[],
None,
shape=shape,
dtypes=self.dtypes,
index_value=index_value,
columns_value=columns_value,
chunk_bytes=chunk_bytes,
chunk_size=chunk_size,
)
elif self.output_types[0] == OutputType.series:
return self.new_tileable(
[],
None,
shape=shape[:1],
name=self.dtypes.index[0],
dtype=self.dtypes.iloc[0],
index_value=index_value,
chunk_bytes=chunk_bytes,
chunk_size=chunk_size,
)
elif self.output_types[0] == OutputType.index:
return self.new_tileable(
[],
None,
shape=shape[:1],
name=getattr(index_value, "name", None),
names=getattr(index_value, "names", None),
dtype=self.index_dtypes.iloc[0],
index_value=index_value,
chunk_bytes=chunk_bytes,
chunk_size=chunk_size,
)