tracinginsights commited on
Commit
7eaac64
·
1 Parent(s): f5980e9

Update main.py

Browse files
Files changed (1) hide show
  1. main.py +5 -84
main.py CHANGED
@@ -1,89 +1,20 @@
1
  import fastf1
2
  import pandas as pd
3
  from fastapi import FastAPI
4
- from fastapi.responses import FileResponse, HTMLResponse
5
- from pydantic import BaseModel
6
 
7
- app = FastAPI()
8
-
9
-
10
- # class Laps(BaseModel):
11
- # Time: pd.Timedelta
12
- # Driver: str
13
- # DriverNumber: str
14
- # LapTime: pd.Timedelta
15
- # LapNumber: int
16
- # Stint: int
17
- # PitOutTime: pd.Timedelta
18
- # PitInTime: pd.Timedelta
19
- # Sector1Time: pd.Timedelta
20
- # Sector2Time: pd.Timedelta
21
- # Sector3Time: pd.Timedelta
22
- # Sector1SessionTime: pd.Timedelta
23
- # Sector2SessionTime: pd.Timedelta
24
- # Sector3SessionTime: pd.Timedelta
25
- # SpeedI1: float
26
- # SpeedI2: float
27
- # SpeedFL: float
28
- # SpeedST: float
29
- # IsPersonalBest: bool
30
- # Compound: str
31
- # TyreLife: float
32
- # FreshTyre: bool
33
- # Team: str
34
- # LapStartTime: pd.Timedelta
35
- # LapStartDate: pd.Timestamp
36
- # TrackStatus: str
37
- # IsAccurate: bool
38
- # # https://stackoverflow.com/questions/65412984/using-pandas-data-frame-as-a-type-in-pydantic
39
 
40
- # class Config:
41
- # arbitrary_types_allowed = True
42
 
43
-
44
- class Laps(BaseModel):
45
- Time: pd.core.frame.DataFrame
46
- Driver: pd.core.frame.DataFrame
47
- DriverNumber: pd.core.frame.DataFrame
48
- LapTime: pd.core.frame.DataFrame
49
- LapNumber: pd.core.frame.DataFrame
50
- Stint: pd.core.frame.DataFrame
51
- PitOutTime: pd.core.frame.DataFrame
52
- PitInTime: pd.core.frame.DataFrame
53
- Sector1Time: pd.core.frame.DataFrame
54
- Sector2Time: pd.core.frame.DataFrame
55
- Sector3Time: pd.core.frame.DataFrame
56
- Sector1SessionTime: pd.core.frame.DataFrame
57
- Sector2SessionTime: pd.core.frame.DataFrame
58
- Sector3SessionTime: pd.core.frame.DataFrame
59
- SpeedI1: pd.core.frame.DataFrame
60
- SpeedI2: pd.core.frame.DataFrame
61
- SpeedFL: pd.core.frame.DataFrame
62
- SpeedST: pd.core.frame.DataFrame
63
- IsPersonalBest: pd.core.frame.DataFrame
64
- Compound: pd.core.frame.DataFrame
65
- TyreLife: pd.core.frame.DataFrame
66
- FreshTyre: pd.core.frame.DataFrame
67
- Team: pd.core.frame.DataFrame
68
- LapStartTime: pd.core.frame.DataFrame
69
- LapStartDate: pd.core.frame.DataFrame
70
- TrackStatus: pd.core.frame.DataFrame
71
- IsAccurate: pd.core.frame.DataFrame
72
- # https://stackoverflow.com/questions/65412984/using-pandas-data-frame-as-a-type-in-pydantic
73
-
74
- class Config:
75
- arbitrary_types_allowed = True
76
 
77
 
78
  @app.get("/")
79
  async def root():
80
  return {"message": "Hello World"}
81
 
82
-
83
- # create a function that returns laps dataframe given year, race ,session from fastf1
84
-
85
  @app.get("/{year}/{race}/{session}", response_model=None)
86
  async def get_data(year: int, race: int, session: str) -> any:
 
 
87
 
88
  f1session = fastf1.get_session(year, race, session)
89
  f1session.load(telemetry=False, weather=False, messages=False)
@@ -93,16 +24,6 @@ async def get_data(year: int, race: int, session: str) -> any:
93
  laps['Sector2Time'] = laps['Sector2Time'].dt.total_seconds()
94
  laps['Sector3Time'] = laps['Sector3Time'].dt.total_seconds()
95
  laps['LapTime_in_seconds'] = laps['LapTime'].dt.total_seconds()
96
- laps['laptime_sum_sectortimes'] = laps.Sector1Time + laps.Sector2Time + laps.Sector3Time
97
-
98
- # # convert laps to csv
99
- # laps.to_csv('laps.csv', index=False)
100
- # return laps
101
-
102
- # in laps replace NaN with ""
103
- laps = laps.fillna(" ")
104
 
105
- return {"laps": laps.to_dict(orient='records')}
106
-
107
- # return FileResponse(path='laps.csv', filename='laps.csv')
108
- # return HTMLResponse(content=laps.to_html(), status_code=200)
 
1
  import fastf1
2
  import pandas as pd
3
  from fastapi import FastAPI
 
 
4
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
5
 
 
 
6
 
7
+ app = FastAPI()
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
8
 
9
 
10
  @app.get("/")
11
  async def root():
12
  return {"message": "Hello World"}
13
 
 
 
 
14
  @app.get("/{year}/{race}/{session}", response_model=None)
15
  async def get_data(year: int, race: int, session: str) -> any:
16
+
17
+ fastf1.Cache.enable_cache('/Cache')
18
 
19
  f1session = fastf1.get_session(year, race, session)
20
  f1session.load(telemetry=False, weather=False, messages=False)
 
24
  laps['Sector2Time'] = laps['Sector2Time'].dt.total_seconds()
25
  laps['Sector3Time'] = laps['Sector3Time'].dt.total_seconds()
26
  laps['LapTime_in_seconds'] = laps['LapTime'].dt.total_seconds()
27
+ laps['laptime_sum_sectortimes'] = laps.Sector1Time + laps.Sector2Time + laps.Sector3Time
 
 
 
 
 
 
 
28
 
29
+ return {"laps": laps.to_json(orient='records')}