Skip to content

Latest commit

 

History

History
68 lines (54 loc) · 3.02 KB

File metadata and controls

68 lines (54 loc) · 3.02 KB

Changelog

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

Added

  • Polars Integration: Optional [polars] extra with pyopenf1.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.Analytics class with helper methods for fastest laps and pit strategies.
  • Jupyter Cookbooks: Added F1 track mapping tutorials in examples/cookbooks/.
  • Dynamic User-Agent reading from __version__.

0.1.3 - 2026-04-27

Fixed

  • Removed all residual ge= and le= restriction bounds (on speed, n_gear, rpm, brake, throttle, and position) to prevent validation crashes from raw sensor noise mapping.

0.1.2 - 2026-04-27

Fixed

  • Removed le=100 Pydantic bounds on brake and throttle in CarData to prevent validation errors from F1 telemetry sensor noise returning values like 104.

0.1.1 - 2026-04-27

Fixed

  • Fixed author metadata on PyPI showing incorrect placeholder name.

0.1.0 - 2026-04-27

Added

  • Initial release of pyopenf1.
  • AsyncOpenF1Client — fully async client with async with context 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: PyOpenF1ErrorAPIErrorRateLimitError, 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.typed marker).
  • GitHub Actions CI (Ruff, mypy, pytest) and PyPI publish workflows.
  • Pre-commit hooks configuration.
  • mkdocs-material documentation site.