Coverage for adrs/execution/metadata.py: 40%
15 statements
« prev ^ index » next coverage.py v7.15.2, created at 2026-08-29 04:28 +0800
« prev ^ index » next coverage.py v7.15.2, created at 2026-08-29 04:28 +0800
1import json
2import polars as pl
3from typing import TypedDict
5from pathlib import Path
8class Metadata(TypedDict):
9 id: str
10 base_asset: str
11 price_shift: int
12 fees: float
15def contruct_metadata_df(file_path: Path) -> pl.DataFrame | None:
16 metadata_df: pl.DataFrame | None = None
17 metadata_json = json.load(open(file_path))
18 alphas = metadata_json["bot_info"]
20 for value in alphas.values():
21 metadata = Metadata(
22 id=value["custom_id"],
23 base_asset=value["base_asset"],
24 price_shift=value["shift_backtest_candle_minute"],
25 fees=value["fees"],
26 )
27 if metadata_df is None:
28 metadata_df = pl.DataFrame(metadata)
29 else:
30 metadata_df = metadata_df.vstack(pl.DataFrame(metadata))
32 return metadata_df