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

1import json 

2import polars as pl 

3from typing import TypedDict 

4 

5from pathlib import Path 

6 

7 

8class Metadata(TypedDict): 

9 id: str 

10 base_asset: str 

11 price_shift: int 

12 fees: float 

13 

14 

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"] 

19 

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)) 

31 

32 return metadata_df