mirror of
https://github.com/OpenBB-finance/OpenBB.git
synced 2026-10-28 13:01:38 +00:00
* perf(core): vectorize the date conversion in basemodel_to_df basemodel_to_df ran three per-element Python passes over the date column of every payload it converted. Series.apply(to_datetime) calls pandas.to_datetime once per row, and because each call receives a lone scalar with no format hint, pandas also re-runs its datetime format guesser on every row. Parse the column in one call instead, and use vectorized comparisons for the all-midnight test and the reduction to datetime.date. The element-wise parse is kept as a fallback for one case that the vectorized path cannot represent: a column mixing UTC offsets, such as a series crossing a daylight-savings boundary. Parsing per element lets each value keep its own offset and yields an object column of tz-aware Timestamps, whereas a single to_datetime call over that column raises "Mixed timezones detected". That behaviour is covered by test_to_df_daylight_savings and is preserved exactly. Measured on a payload built through EquityHistoricalData, median of 9 under an exclusive CPU lock: 250 daily bars 8.92 ms -> 1.46 ms 1,000 daily bars 32.93 ms -> 3.13 ms 5,000 daily bars 162.25 ms -> 12.23 ms * fix a broken test - unrelated to this PR... --------- Co-authored-by: Danglewood <85772166+deeleeramone@users.noreply.github.com> Co-authored-by: deeleeramone <> Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>