microsoft/qlib · error · TypeError
Unsupported order file type: {order_file}
Error message
Unsupported order file type: {order_file} What it means
read_order_file (qlib/rl/contrib/utils.py:22) loads an order list for RL backtests. It accepts an already-built pd.DataFrame directly, or a path whose suffix is .pkl (read via pd.read_pickle + reset_index) or .csv (read via pd.read_csv). Any other suffix (.parquet, .txt, .json, no suffix) raises TypeError('Unsupported order file type: <path>').
Source
Thrown at qlib/rl/contrib/utils.py:22
from __future__ import annotations
from pathlib import Path
import pandas as pd
def read_order_file(order_file: Path | pd.DataFrame) -> pd.DataFrame:
if isinstance(order_file, pd.DataFrame):
return order_file
order_file = Path(order_file)
if order_file.suffix == ".pkl":
order_df = pd.read_pickle(order_file).reset_index()
elif order_file.suffix == ".csv":
order_df = pd.read_csv(order_file)
else:
raise TypeError(f"Unsupported order file type: {order_file}")
if "date" in order_df.columns:
# legacy dataframe columns
order_df = order_df.rename(columns={"date": "datetime", "order_type": "direction"})
order_df["datetime"] = order_df["datetime"].astype(str)
return order_df
View on GitHub (pinned to 79633dd950)
Solutions
- Save orders as .csv or .pkl and pass that path
- Load the data yourself and pass the pd.DataFrame directly, which bypasses the suffix check
- Convert parquet/json orders to CSV: df.to_csv('orders.csv', index=False)
Example fix
# before
order_df = read_order_file('orders.parquet') # TypeError
# after
order_df = read_order_file(pd.read_parquet('orders.parquet'))
# or convert once:
# pd.read_parquet('orders.parquet').to_csv('orders.csv', index=False) Defensive patterns
Strategy: type-guard
Validate before calling
from pathlib import Path
if not isinstance(order_file, pd.DataFrame):
assert Path(order_file).suffix in ('.pkl', '.csv'), f'order file must be .pkl/.csv or DataFrame: {order_file}' Type guard
def is_supported_order_source(src) -> bool:
return isinstance(src, pd.DataFrame) or Path(src).suffix in ('.pkl', '.csv') Try / catch
try:
df = read_order_file(order_file)
except TypeError as e:
df = read_order_file(pd.read_parquet(order_file)) # manual load fallback Prevention
- Export order lists as CSV or pickle
- Pass DataFrames directly in programmatic pipelines
When it happens
Trigger: Calling read_order_file('orders.parquet'), read_order_file('orders.json'), or passing a Path with an unexpected/empty suffix; also triggered by files whose name merely contains '.csv' not at the end.
Common situations: Users exporting orders from their own systems as parquet/json; renaming exported order files; passing a directory-like Path with no suffix.
Related errors
- Only py/yml/yaml/json type are supported now!
- This type of `limit_threshold` is not supported
- stock data from resam_ts_data must be a number, pd.Series or
- provider_uri does not support {type(provider_uri)}
- Unsupported data type: {type(data)}.
AI-assisted analysis of microsoft/qlib@79633dd950 (2026-08-15).
Data as JSON: /api/errors/fd88cffd45ecffd6.
Report an issue: GitHub.