Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/TracingInsights/tif1/llms.txt

Use this file to discover all available pages before exploring further.

The tif1.types module provides comprehensive type definitions for all data structures used in the library, including TypedDicts for DataFrame schemas and Literal types for enumerations.

DataFrame Union Type

DataFrame

DataFrame = Union[pd.DataFrame, pl.DataFrame]
Union type that supports both pandas and polars DataFrames. Falls back to pd.DataFrame if polars is not installed.

TypedDict Definitions

LapDataDict

class LapDataDict(TypedDict):
    """Type definition for lap data dictionary."""
Defines the structure of lap data returned by Session.laps and related methods.

Required Fields

FieldTypeDescription
DriverstrDriver identifier (3-letter code)
DriverNumberstrDriver racing number
TeamstrTeam name
Timedatetime.timedeltaSession time from session start

Optional Fields - Lap Timing

FieldTypeDescription
LapTimetimedelta | NoneTotal lap time
LapNumberfloat | NoneLap number
Stintfloat | NoneStint number
PitOutTimetimedelta | NoneTime when driver exited pit
PitInTimetimedelta | NoneTime when driver entered pit
Sector1Timetimedelta | NoneSector 1 time
Sector2Timetimedelta | NoneSector 2 time
Sector3Timetimedelta | NoneSector 3 time
Sector1SessionTimetimedelta | NoneSession time at sector 1
Sector2SessionTimetimedelta | NoneSession time at sector 2
Sector3SessionTimetimedelta | NoneSession time at sector 3
LapStartTimetimedelta | NoneLap start time (from session start)
LapStartDatedatetime | NoneAbsolute lap start datetime
LapTimeSecondsfloat | NoneLap time in seconds (derived)

Optional Fields - Speed Traps

FieldTypeDescription
SpeedI1float | NoneSpeed at intermediate 1 (km/h)
SpeedI2float | NoneSpeed at intermediate 2 (km/h)
SpeedFLfloat | NoneSpeed at finish line (km/h)
SpeedSTfloat | NoneSpeed at speed trap (km/h)

Optional Fields - Tyre Information

FieldTypeDescription
Compoundstr | NoneTyre compound name
TyreLifefloat | NoneLaps on current tyres
FreshTyreboolWhether tyres are fresh

Optional Fields - Session Metadata

FieldTypeDescription
TrackStatusstr | NoneTrack status code
Positionfloat | NonePosition in race/session
IsPersonalBestboolWhether lap is driver’s personal best
Deletedbool | NoneWhether lap was deleted
DeletedReasonstr | NoneReason for lap deletion
FastF1GeneratedboolWhether lap is generated by FastF1
IsAccurateboolWhether lap data is accurate

Optional Fields - Weather Data

FieldTypeDescription
WeatherTimetimedelta | NoneWeather data timestamp
AirTempfloat | NoneAir temperature (°C)
Humidityfloat | NoneHumidity (%)
Pressurefloat | NoneAir pressure (mbar)
RainfallboolWhether it’s raining
TrackTempfloat | NoneTrack temperature (°C)
WindDirectionint | NoneWind direction (degrees)
WindSpeedfloat | NoneWind speed (km/h)

TelemetryDataDict

class TelemetryDataDict(TypedDict):
    """Type definition for telemetry data dictionary."""
Defines the structure of telemetry data returned by Lap.telemetry and Driver.telemetry.

Required Fields

FieldTypeDescription
TimefloatTimestamp in seconds

Optional Fields

FieldTypeDescription
RPMint | NoneEngine RPM
Speedfloat | NoneSpeed (km/h)
nGearint | NoneGear number
Throttlefloat | NoneThrottle position (0-100)
Brakeint | NoneBrake status (0 or 1)
DRSint | NoneDRS status (0-14)
Distancefloat | NoneDistance travelled (meters)
RelativeDistancefloat | NoneRelative distance on track
DriverAheadstr | NoneDriver ahead identifier
DistanceToDriverAheadfloat | NoneDistance to driver ahead (meters)
Xfloat | NoneX coordinate position
Yfloat | NoneY coordinate position
Zfloat | NoneZ coordinate position
AccelerationXfloat | NoneX-axis acceleration (g)
AccelerationYfloat | NoneY-axis acceleration (g)
AccelerationZfloat | NoneZ-axis acceleration (g)
DataKeystr | NoneData source key

DriverInfoDict

class DriverInfoDict(TypedDict):
    """Type definition for driver info dictionary."""
Defines the structure of driver information data.
FieldTypeDescription
driverstrDriver identifier (3-letter code)
teamstrTeam name
dnstrDriver number
fnstrFirst name
lnstrLast name
tcstrTeam color code
urlstrDriver profile URL

RaceControlDataDict

class RaceControlDataDict(TypedDict):
    """Type definition for race control data dictionary."""
Defines the structure of race control messages.

Required Fields

FieldTypeDescription
TimefloatMessage timestamp in seconds

Optional Fields

FieldTypeDescription
Categorystr | NoneMessage category
Messagestr | NoneMessage text
Statusstr | NoneSession status
Flagstr | NoneFlag type
Scopestr | NoneMessage scope
Sectorint | str | NoneAffected sector
RacingNumberstr | NoneAffected driver number
Lapint | NoneLap number

WeatherDataDict

class WeatherDataDict(TypedDict):
    """Type definition for weather data dictionary."""
Defines the structure of weather data returned by Session.weather.

Required Fields

FieldTypeDescription
TimetimedeltaTimestamp from session start

Optional Fields

FieldTypeDescription
AirTempfloat | NoneAir temperature (°C)
Humidityfloat | NoneHumidity (%)
Pressurefloat | NoneAir pressure (mbar)
Rainfallbool | NoneWhether it’s raining
TrackTempfloat | NoneTrack temperature (°C)
WindDirectionint | NoneWind direction (degrees)
WindSpeedfloat | NoneWind speed (km/h)

Literal Types

SessionType

SessionType = Literal[
    "Practice 1",
    "Practice 2",
    "Practice 3",
    "Qualifying",
    "Sprint",
    "Sprint Qualifying",
    "Sprint Shootout",
    "Race",
]
Valid session type identifiers for F1 sessions. Values:
  • "Practice 1" - First practice session
  • "Practice 2" - Second practice session
  • "Practice 3" - Third practice session
  • "Qualifying" - Qualifying session
  • "Sprint" - Sprint race
  • "Sprint Qualifying" - Sprint qualifying session
  • "Sprint Shootout" - Sprint shootout session
  • "Race" - Main race

BackendType

BackendType = Literal["pandas", "polars"]
Available DataFrame backend types. Values:
  • "pandas" - Use pandas DataFrames (default)
  • "polars" - Use polars DataFrames (requires polars installation)

CompoundType

CompoundType = Literal[
    "SOFT",
    "MEDIUM",
    "HARD",
    "INTERMEDIATE",
    "WET",
    "UNKNOWN",
    "TEST_UNKNOWN",
]
Tyre compound identifiers. Values:
  • "SOFT" - Soft compound (red)
  • "MEDIUM" - Medium compound (yellow)
  • "HARD" - Hard compound (white)
  • "INTERMEDIATE" - Intermediate wet weather tyre (green)
  • "WET" - Full wet weather tyre (blue)
  • "UNKNOWN" - Unknown compound
  • "TEST_UNKNOWN" - Unknown test compound

TrackStatusType

TrackStatusType = Literal["1", "2", "4", "5", "6", "7"]
Track status codes used in F1. Values:
  • "1" - Track clear (green flag)
  • "2" - Yellow flag
  • "4" - Safety car
  • "5" - Red flag
  • "6" - Virtual safety car
  • "7" - VSC ending

Protocol Types

DataFrameProtocol

class DataFrameProtocol(Protocol):
    """Protocol for DataFrame-like objects."""
A protocol defining the minimum interface for DataFrame-like objects. Used for type checking compatibility with both pandas and polars DataFrames. Required Attributes:
  • shape: tuple[int, int] - DataFrame dimensions (rows, columns)
  • columns: list[str] - Column names
Required Methods:
  • head(n: int = 5) - Return first n rows
  • __len__() - Return number of rows
  • __getitem__(key) - Support indexing and slicing

Usage Examples

Type Hints with LapDataDict

from tif1.types import LapDataDict
import tif1

session = tif1.get_session(2024, "Monaco", "Race")
session.load()

# Access lap data with proper type hints
lap: LapDataDict = session.laps.iloc[0].to_dict()  # type: ignore
print(f"Driver: {lap['Driver']}")
print(f"Lap Time: {lap.get('LapTime')}")

Backend Type Selection

from tif1.types import BackendType
import tif1

backend: BackendType = "polars"
tif1.set_backend(backend)

Session Type Validation

from tif1.types import SessionType

def get_qualifying_data(year: int, event: str) -> None:
    session_type: SessionType = "Qualifying"
    session = tif1.get_session(year, event, session_type)
    session.load()

Build docs developers (and LLMs) love