All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
0.2.0 - 2026-06-17
- Polars Integration: Optional
[polars]extra withpyopenf1.ext.polars.to_polars()for blazing-fast DataFrames. - TUI Dashboard: Interactive terminal UI (
pyopenf1 dashboard) using Textual (requires[tui]extra). - Analytics Helpers: New
pyopenf1.analytics.Analyticsclass with helper methods for fastest laps and pit strategies. - Jupyter Cookbooks: Added F1 track mapping tutorials in
examples/cookbooks/. - Dynamic
User-Agentreading from__version__.
0.1.3 - 2026-04-27
- Removed all residual
ge=andle=restriction bounds (onspeed,n_gear,rpm,brake,throttle, andposition) to prevent validation crashes from raw sensor noise mapping.
0.1.2 - 2026-04-27
- Removed
le=100Pydantic bounds onbrakeandthrottleinCarDatato prevent validation errors from F1 telemetry sensor noise returning values like104.
0.1.1 - 2026-04-27
- Fixed author metadata on PyPI showing incorrect placeholder name.
0.1.0 - 2026-04-27
- Initial release of
pyopenf1. AsyncOpenF1Client— fully async client withasync withcontext manager support.OpenF1Client— synchronous wrapper for non-async usage.- Full coverage of all 18 OpenF1 API endpoints:
- Car data, Location (telemetry)
- Sessions, Meetings
- Drivers
- Laps, Intervals, Positions (timing)
- Race control, Pit stops, Stints, Overtakes (race)
- Drivers championship, Teams championship
- Session results, Starting grid
- Weather
- Team radio
- Pydantic V2 models with frozen immutability for all endpoints.
- Automatic retry with exponential backoff on 429/5xx errors via
tenacity. - Client-side rate limiter (token-bucket) to preempt 429 responses.
- Optional in-memory TTL cache for responses.
- Structured logging via
logging.getLogger("pyopenf1"). - Custom exception hierarchy:
PyOpenF1Error→APIError→RateLimitError,AuthenticationError,NotFoundError,ServerError. - CLI tool:
pyopenf1 <endpoint> --driver N --session N. - Optional pandas DataFrame integration via
pyopenf1.ext.pandas.to_dataframe(). - PEP 561 typed package (
py.typedmarker). - GitHub Actions CI (Ruff, mypy, pytest) and PyPI publish workflows.
- Pre-commit hooks configuration.
- mkdocs-material documentation site.