Spaces:
Runtime error
Runtime error
import fastf1 | |
import pandas as pd | |
from fastapi import FastAPI | |
from fastapi.responses import FileResponse, HTMLResponse | |
from pydantic import BaseModel | |
app = FastAPI() | |
# class Laps(BaseModel): | |
# Time: pd.Timedelta | |
# Driver: str | |
# DriverNumber: str | |
# LapTime: pd.Timedelta | |
# LapNumber: int | |
# Stint: int | |
# PitOutTime: pd.Timedelta | |
# PitInTime: pd.Timedelta | |
# Sector1Time: pd.Timedelta | |
# Sector2Time: pd.Timedelta | |
# Sector3Time: pd.Timedelta | |
# Sector1SessionTime: pd.Timedelta | |
# Sector2SessionTime: pd.Timedelta | |
# Sector3SessionTime: pd.Timedelta | |
# SpeedI1: float | |
# SpeedI2: float | |
# SpeedFL: float | |
# SpeedST: float | |
# IsPersonalBest: bool | |
# Compound: str | |
# TyreLife: float | |
# FreshTyre: bool | |
# Team: str | |
# LapStartTime: pd.Timedelta | |
# LapStartDate: pd.Timestamp | |
# TrackStatus: str | |
# IsAccurate: bool | |
# # https://stackoverflow.com/questions/65412984/using-pandas-data-frame-as-a-type-in-pydantic | |
# class Config: | |
# arbitrary_types_allowed = True | |
class Laps(BaseModel): | |
Time: pd.core.frame.DataFrame | |
Driver: pd.core.frame.DataFrame | |
DriverNumber: pd.core.frame.DataFrame | |
LapTime: pd.core.frame.DataFrame | |
LapNumber: pd.core.frame.DataFrame | |
Stint: pd.core.frame.DataFrame | |
PitOutTime: pd.core.frame.DataFrame | |
PitInTime: pd.core.frame.DataFrame | |
Sector1Time: pd.core.frame.DataFrame | |
Sector2Time: pd.core.frame.DataFrame | |
Sector3Time: pd.core.frame.DataFrame | |
Sector1SessionTime: pd.core.frame.DataFrame | |
Sector2SessionTime: pd.core.frame.DataFrame | |
Sector3SessionTime: pd.core.frame.DataFrame | |
SpeedI1: pd.core.frame.DataFrame | |
SpeedI2: pd.core.frame.DataFrame | |
SpeedFL: pd.core.frame.DataFrame | |
SpeedST: pd.core.frame.DataFrame | |
IsPersonalBest: pd.core.frame.DataFrame | |
Compound: pd.core.frame.DataFrame | |
TyreLife: pd.core.frame.DataFrame | |
FreshTyre: pd.core.frame.DataFrame | |
Team: pd.core.frame.DataFrame | |
LapStartTime: pd.core.frame.DataFrame | |
LapStartDate: pd.core.frame.DataFrame | |
TrackStatus: pd.core.frame.DataFrame | |
IsAccurate: pd.core.frame.DataFrame | |
# https://stackoverflow.com/questions/65412984/using-pandas-data-frame-as-a-type-in-pydantic | |
class Config: | |
arbitrary_types_allowed = True | |
async def root(): | |
return {"message": "Hello World"} | |
# create a function that returns laps dataframe given year, race ,session from fastf1 | |
async def get_data(year: int, race: int, session: str) -> any: | |
f1session = fastf1.get_session(year, race, session) | |
f1session.load(telemetry=False, weather=False, messages=False) | |
# Load all laps with telemetry | |
laps = f1session.laps | |
laps['Sector1Time'] = laps['Sector1Time'].dt.total_seconds() | |
laps['Sector2Time'] = laps['Sector2Time'].dt.total_seconds() | |
laps['Sector3Time'] = laps['Sector3Time'].dt.total_seconds() | |
laps['LapTime_in_seconds'] = laps['LapTime'].dt.total_seconds() | |
laps['laptime_sum_sectortimes'] = laps.Sector1Time + \ | |
laps.Sector2Time + laps.Sector3Time | |
# # convert laps to csv | |
# laps.to_csv('laps.csv', index=False) | |
# return laps | |
# in laps replace NaN with "" | |
laps = laps.fillna(" ") | |
return {"laps": laps.to_dict(orient='records')} | |
# return FileResponse(path='laps.csv', filename='laps.csv') | |
# return HTMLResponse(content=laps.to_html(), status_code=200) | |