Filtering

Pyrox supports high-signal filtering at read time, so you can load only the rows you need.

Gender and division

These filters are applied server-side for efficiency.

race = client.get_race(
    season=7,
    location="london",
    gender="male",      # "male" | "female" | "mixed"
    division="open",   # "open" | "pro" | "pro_doubles"
)

Notes: - Values are case-sensitive in the underlying parquet filter; prefer lowercase. - If the filtered dataset has no rows, Pyrox raises RaceNotFound.

Total time windows

total_time is expressed in minutes. You can pass a single value or an open interval.

# Under 60 minutes
sub_60 = client.get_race(season=7, location="london", total_time=60)

# Open interval: 50 < total_time < 60
mid_pack = client.get_race(season=7, location="london", total_time=(50, 60))

# Only lower bound
slow = client.get_race(season=7, location="london", total_time=(70, None))

Notes: - Bounds are strict (> and <), not inclusive. - Filtering happens after time columns are converted to minutes.